如上所述,我想用来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)
评论回答了这个问题。显然std::bind
不能与构造函数和析构函数一起使用,因为它们无法获取其地址。感谢尤金、The Philomath 和 molbdnilo。