如何将参数绑定到构造函数?

GHJ*_*JHG 5 c++ stdbind

如上所述,我想用来std::bind创建一个函数,该函数在调用时返回一个使用带有默认参数的构造函数构建的对象,如下所示:

#include <functional>

class X
{
    int x_, y_;
    public:
    X(int x, int y): x_(x), y_(y)
    {
    }
};

int main() {
    auto fun = std::bind(&X::X, 1, 2);
    X x = fun();   
}
Run Code Online (Sandbox Code Playgroud)

相反,我收到以下编译器错误:

错误:在此上下文中,对“X”的限定引用是构造函数名称而不是类型

错误:函数式转换或类型构造需要“(”参考此行:

auto fun = std::bind(&X::X, 1, 2);
Run Code Online (Sandbox Code Playgroud)

GHJ*_*JHG 3

评论回答了这个问题。显然std::bind不能与构造函数和析构函数一起使用,因为它们无法获取其地址。感谢尤金、The Philomath 和 molbdnilo。

  • @MM 或 lambda `const auto fun = []() { return X{ 1, 2 }; };` (3认同)