【发布时间】:2013-12-12 15:25:12
【问题描述】:
bind1st 和bind2nd 的返回值是从unary_function 派生的。通过调用它们,我认为它们提供了一个接受一个参数的函数对象。但这可能是错误的。
这是我的代码。
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是一个保留标识符! -
“出现很多构建错误。”好吧,一般来说,第一个错误行真的很有帮助。您应该将它们包括在您的问题中。或者至少描述一下错误信息中写的内容...
-
你感受到一元函数和二元函数的区别了吗?
bind2nd需要最后一个。 -
请注意,这在 C++11 中已全部弃用。使用
bind代替bind1st和bind2nd,并且不要费心从unary_function或binary_function派生。