You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将默认构造函数绑定到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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 20:40:50