gpt4 book ai didi

c++ - 编译器的大括号初始化器列表与类型 `std::initializer_list` 的耦合程度如何?

转载 作者:搜寻专家 更新时间:2023-10-31 01:16:49 25 4
gpt4 key购买 nike

我可以在没有 C++ 头文件的情况下实现相同的效果吗 <initializer_list>

是否 class initializer_list必须住在namespace std (编译器是否需要这个)?

我很满意适用于五巨头(GCC、MSVC、Intel、Clang、Comeau)的解决方案

最佳答案

它按照标准紧密耦合。它是编译器构造的数组的包装器(尽管标准没有说明精确度——GCC 使用带指针和大小的构造函数,MSVC 使用带两点的构造函数)。是的,它必须在命名空间 std 中,并在 header 中 <initializer_list> .

您必须查看它们在您想要支持的每个编译器中使用的构造函数,并将其复制到您的版本中,但是老实说,我没有明白这一点。

The template std::initializer_list is not predefined; if the header <initializer_list> is not included prior to a use of std::initializer_list — even an implicit use in which the type is not named (7.1.6.4) — the program is ill-formed.

An object of type std::initializer_list<E> is constructed from an initializer list as if the implementation allocated an array of N elements of type E, where N is the number of elements in the initializer list. Each element of that array is copy-initialized with the corresponding element of the initializer list, and the std::initializer_list<E> object is constructed to refer to that array.

关于c++ - 编译器的大括号初始化器列表与类型 `std::initializer_list` 的耦合程度如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8762459/

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