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

How do I bind arguments to a constructor?

如上所述,我想使用 std::bind 创建一个函数,当被调用时,returns 一个使用构造函数构建的对象,默认参数如下:

#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();   
}

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

error: qualified reference to 'X' is a constructor name rather than a type in this context

error: expected '(' for function-style cast or type construction In reference to this line:

auto fun = std::bind(&X::X, 1, 2);

评论回答了这个问题。显然 std::bind 不能与构造函数和析构函数一起使用,因为它们的地址不能被占用。感谢 Eugene、The Philomath 和 molbdnilo。