我编写了一个boost :: function的测试。这些代码有效。
#include <iostream>
#include <boost/lambda/lambda.hpp>
#include <boost/bind.hpp>
//#include <boost/function.hpp>
#include <boost/ref.hpp>
using namespace std;
using namespace boost;
template<typename FUN,typename T>
T fun( FUN function, T lhs, T rhs ){
cout << typeid(function).name() << endl;
return function(lhs,rhs);
}
int add4(int a, int b, int c){
return a + b + c;
}
int main(){
cout << fun(bind(add4,2,_1,_2),1,4) << endl;
system("pause");
}
但是,当我添加头文件“ boost / funcation”时,VS2012提示我。
error C2668: 'std::bind' : ambiguous call to overloaded function.
不要将名称空间std
和boost
名称空间都导入全局名称空间,以免产生歧义。
而是指定完全限定的名称(如boost::function
)boost::bind
,或导入特定的符号:using boost::function;
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句