为什么删除的默认构造函数没有捕获此内容?

Why doesn't a deleted default constructor catch this?

本文关键字:删除 默认 构造函数 为什么      更新时间:2023-10-16

我注意到,尽管删除了默认构造函数,但用显式()声明类的实例并不会引发错误,这是为什么?

class Foo {
public:
    Foo() = delete;
};
int main() {
    //Foo foo; // Throws an error as expected
    Foo bar(); // Does not throw an error
    return 0;
}

编译调用g++ -std=c++14 foo.cpp

不幸的是,Foo bar()是函数的声明,它返回Foo,不接受任何参数。

请参阅最麻烦的解析