我正试图获得一个boost::函数到一个new_ptr(带参数),该函数可以存储在哈希表中以备将来使用。一种为模块使用的构造函数注册id的方法。以下是简化的问题:
#include <boost/lambda/bind.hpp>
#include <boost/lambda/construct.hpp>
#include <boost/function.hpp>
using namespace boost::lambda;
struct TestObject
{
TestObject(int p){}
};
void doStuff()
{
boost::function<TestObject*(int)> tf1 = bind(new_ptr<TestObject>(), _1);
}
绑定本身可以工作,但boost::函数的语法必须关闭,因为它给了我:
error C2664: 'TestObject::TestObject(int)' : cannot convert parameter 1 from 'boost::lambda::lambda_functor<T>' to 'int' BOOST1.57.0boostlambdaconstruct.hpp 146 1
我以前使用过没有参数的构造函数(效果很好)。我不知道到底遗漏了什么,或者我是否在试图做一些不可能的事情。
使用boost v1.57.0和msvc 2012(v110)进行编译。
代码在独立的MSVC 2015 上编译
您可以升级VS,将Visual Studio 2012重新配置为MSVC 2015,或者将函数封装在从命令行编译的lib.dll上。