4
的C++ 11程序在C++標準中,它是否聲明在複製構造函數被刪除時不會生成默認構造函數?
struct Foo {
Foo(Foo const &) = delete;
};
int main() {
Foo foo;
}
生成錯誤
$ g++ -std=c++11 junk.cpp -o junk
junk.cpp: In function 'int main()':
junk.cpp:6:9: error: no matching function for call to 'Foo::Foo()'
junk.cpp:6:9: note: candidate is:
junk.cpp:2:5: note: Foo::Foo(const Foo&) <deleted>
junk.cpp:2:5: note: candidate expects 1 argument, 0 provided
現在,它看起來像的產生,因爲拷貝構造被刪除被阻止默認構造。我將假設這是預期的行爲,但是在C++標準中它是否指定在複製構造函數被刪除時不應該生成默認構造函數?