根据本页https://en.cppreference.com/w/cpp/language/value_initialization中描述的值初始化
如果 T 是一个没有默认构造函数但有一个构造函数采用 std::initializer_list 的类类型,则执行列表初始化。
所以我期待在下面的代码片段中初始化类时会调用Myclass(const std::initializer_list<int> &l)
,但编译器说
> the default constructor of "Myclass" cannot be referenced -- it is a deleted function
这是为什么?这是代码,我在 windows 上用 Mingw64 C++11 编译。
#include <iostream>
class Myclass {
public:
Myclass() = delete;
Myclass(Myclass &&m) {}
Myclass(const Myclass &m) {}
Myclass(const std::initializer_list<int> &l) { std::cout << "initializer list"; }
};
int main(int argc, char const *argv[]) {
Myclass m2 {};
Myclass m1={};
}