Hra*_*ant 1 c++ constructor c++11
在C++标准中std::array它说:
数组是可以使用语法初始化的聚合(8.5.1)
array a = {initializer-list};
其中initializer-list是一个逗号分隔的列表,最多包含N个元素,其类型可转换为T.
它还说它std::array是一个聚合类型,它的构造函数是隐式生成的.
要std::array使用初始化列表初始化a ,它必须有一个构造函数std::initializer_list作为参数.
是一个构造函数,它std::initializer_list也为用户定义的类型隐式生成,或者特定于std::array?
不,编译器并不能生成一个构造器服用std::initializer_list,既不支持std::array也不对任何其他聚合类型.
你在这里观察到的是与初始无关的聚合初始化std::initializer_list.
您提供的标准代码段中的术语"初始化程序列表"是指初始化程序列表,它们与此无关std::initializer_list.
您可以使用以下内容进行测试:
struct A {
int i;
std::string str;
};
int main() {
A a{1, "asdf"};
}
Run Code Online (Sandbox Code Playgroud)
这工作,但显然没有充分利用std::initializer_list,因为这只能处理一个单一的一次性类型.
| 归档时间: |
|
| 查看次数: |
619 次 |
| 最近记录: |