gpt4 book ai didi

c++ - 隐式生成的初始化列表构造函数

转载 作者:行者123 更新时间:2023-11-30 00:35:27 25 4
gpt4 key购买 nike

std::array 的 C++ 标准中它说:

An array is an aggregate (8.5.1) that can be initialized with the syntax

array a = { initializer-list };

where initializer-list is a comma-separated list of up to N elements whose types are convertible to T.

它还说 std::array 是一个聚合类型,它的构造函数是隐式生成的。

要使用初始化列表初始化 std::array,它必须有一个以 std::initializer_list 作为参数的构造函数。

采用 std::initializer_list 的构造函数是否也为用户定义类型隐式生成,或者它特定于 std::array

最佳答案

不,编译器不会生成采用std::initializer_list 的构造函数,既不为std::array 也不为任何其他聚合类型。

你在这里观察到的是aggregate initialization这与 std::initializer_list 完全无关。

您提供的标准代码段中的术语“initializer-list”指的是初始化器列表,这又与 std::initializer_list 无关。

你可以用这样的东西来测试它:

struct A {
int i;
std::string str;
};

int main() {
A a{1, "asdf"};
}

这行得通,但显然没有使用 std::initializer_list,因为它一次只能处理一个类型。

关于c++ - 隐式生成的初始化列表构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32521974/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com