cppreference说:
基础数组是类型为const T [N]的临时数组,其中 每个元素已被复制初始化(除了缩小 转换无效)) 原始的初始化程序列表。基础数组的生命周期是 与其他任何临时对象相同,除了初始化 数组中的initializer_list对象延长了 数组完全类似于将引用绑定到临时(具有相同的 异常,例如用于初始化非静态类成员)。的 基础数组可以分配在只读内存中。
此决定背后的原因是什么?为什么移动不正常?
复制省略号怎么办?
struct A { A(const A&){ std::cout << "Oh no,a copy!\n"; } };
struct B { B(std::initializer_list<A> il); };
int main()
{
B b{ A{} };
return 0;
}
我的编译器将副本删除。但是这些副本是否一定会被省略?