C++ 直接从bind1st和bind2nd调用返回函子
bind1st和bind2nd的返回值来自一元函数。通过调用它们,我认为它们提供了一个接受一个参数的函数对象。但这可能是错误的 这是我的密码C++ 直接从bind1st和bind2nd调用返回函子,c++,functor,bind2nd,C++,Functor,Bind2nd,bind1st和bind2nd的返回值来自一元函数。通过调用它们,我认为它们提供了一个接受一个参数的函数对象。但这可能是错误的 这是我的密码 template<typename _T> class fun: public std::unary_function<_T, _T> { public: _T operator()(_T arg1, _T arg2) const {return arg1 + arg2;} }; int main() { bind
template<typename _T>
class fun: public std::unary_function<_T, _T>
{
public:
_T operator()(_T arg1, _T arg2) const {return arg1 + arg2;}
};
int main() {
bind2nd(fun<int>(),10)(10); //My intention is to directly call the results of bind2nd
}
模板
类乐趣:公共标准::一元函数
{
公众:
_T运算符()(_targ1,_targ2)常量{返回arg1+arg2;}
};
int main(){
bind2nd(fun(),10)(10);//我的意图是直接调用bind2nd的结果
}
出现了很多构建错误。为什么这是错误的?我认为一元函数对一个参数进行操作,而二元函数对两个参数进行操作。 比如说
T operator()(T arg1, T arg2) const {return arg1 + arg2;}
是一个二进制函数
更改模板(并考虑不使用引导下标):
模板
类乐趣:公共std::二进制函数
//^^^^^---嗯,它需要两个参数
{
公众:
T运算符()(T arg1,T arg2)常量{返回arg1+arg2;}
};
所以,
fun
是一个二进制函子。绑定它的一个参数后,例如,通过调用std::bind2nd(func(),10)
将获得一元函数。这不会改变bind2nd调用的输入类型。我相信一元函数对一个参数进行操作,而二元函数对两个参数进行操作。
比如说
T operator()(T arg1, T arg2) const {return arg1 + arg2;}
是一个二进制函数
更改模板(并考虑不使用引导下标):
模板
类乐趣:公共std::二进制函数
//^^^^^---嗯,它需要两个参数
{
公众:
T运算符()(T arg1,T arg2)常量{返回arg1+arg2;}
};
所以,
fun
是一个二进制函子。绑定它的一个参数后,例如,通过调用std::bind2nd(func(),10)
将获得一元函数。这不会改变bind2nd调用的输入类型。我相信一元函数对一个参数进行操作,而二元函数对两个参数进行操作。
比如说
T operator()(T arg1, T arg2) const {return arg1 + arg2;}
是一个二进制函数
更改模板(并考虑不使用引导下标):
模板
类乐趣:公共std::二进制函数
//^^^^^---嗯,它需要两个参数
{
公众:
T运算符()(T arg1,T arg2)常量{返回arg1+arg2;}
};
所以,
fun
是一个二进制函子。绑定它的一个参数后,例如,通过调用std::bind2nd(func(),10)
将获得一元函数。这不会改变bind2nd调用的输入类型。我相信一元函数对一个参数进行操作,而二元函数对两个参数进行操作。
比如说
T operator()(T arg1, T arg2) const {return arg1 + arg2;}
是一个二进制函数
更改模板(并考虑不使用引导下标):
模板
类乐趣:公共std::二进制函数
//^^^^^---嗯,它需要两个参数
{
公众:
T运算符()(T arg1,T arg2)常量{返回arg1+arg2;}
};
所以,
fun
是一个二进制函子。绑定它的一个参数后,例如,通过调用std::bind2nd(func(),10)
将获得一元函数。这不会改变bind2nd
调用的输入类型。注意\u T
是一个保留标识符!“发生了很多构建错误。”一般来说,第一个错误行非常有用。你应该把它们包括在你的问题中。或者至少描述一下错误信息中写的内容……你感觉到一元函数和二元函数的区别了吗bind2nd
需要最后一个。请注意,这在C++11中都是不推荐的。使用bind
而不是bind1st
和bind2nd
,并且不要麻烦从一元函数
或二元函数
派生。请注意\t
是一个保留标识符!“发生了很多构建错误。”一般来说,第一个错误行非常有用。你应该把它们包括在你的问题中。或者至少描述一下错误信息中写的内容……你感觉到一元函数和二元函数的区别了吗bind2nd
需要最后一个。请注意,这在C++11中都是不推荐的。使用bind
而不是bind1st
和bind2nd
,并且不要麻烦从一元函数
或二元函数
派生。请注意\t
是一个保留标识符!“发生了很多构建错误。”一般来说,第一个错误行非常有用。你应该把它们包括在你的问题中。或者至少描述一下错误信息中写的内容……你感觉到一元函数和二元函数的区别了吗bind2nd
需要最后一个。请注意,这在C++11中都是不推荐的。使用bind
而不是bind1st
和bind2nd
,并且不要麻烦从一元函数
或二元函数
派生。请注意\t
是一个保留标识符!“发生了很多构建错误。”一般来说,第一个错误行非常有用。你应该把它们包括在你的问题中。或者至少描述一下错误信息中写的内容……你感觉到一元函数和二元函数的区别了吗bind2nd
需要最后一个。请注意,这在C++11中都是不推荐的。使用bind
而不是bind1st
和bind2nd
,并且不必费心从一元函数
或二元函数
派生。