正在从带有参数的new_ptr的boost::lambda::bind中获取boost::函数



我正试图获得一个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上。

最新更新