如何将默认构造函数绑定到std::function<T*()>,无需编写专用分配函数?
问题
我有一个用于分配对象的类模板Foo<T>,它的构造函数需要接受std::function<T*()>类型的allocate参数,以此支持使用特定(非默认)构造函数创建对象。
此前我通过实现专用的分配函数,再用std::bind绑定参数的方式满足需求,示例代码如下:
Foo<MyClass> foo( std::bind(&MyClassAllocFunction,parameter) );
其中MyClassAllocFunction的实现为:
MyClass *MyClassAllocFunction( int parameter ) { return new MyClass(parameter); }
现在我希望使用默认构造函数创建对象,但不想编写专用的分配函数,有没有办法直接绑定一个能返回默认构造对象指针的“默认构造分配器”?
解决方案
@MarekR提供的解决方案如下:
Foo<MyClass> foo( []() { return new MyClass {}; } );
内容的提问来源于stack exchange,提问作者Mika
相关产品推荐
相关产品推荐

