相关疑难解决方法(0)

空括号调用默认构造函数或构造函数采用std :: initializer_list吗?

以下是Effective Modern C++(第55页)的引用:

"假设你使用一组空的大括号来构造一个支持默认构造函数的对象,并且还支持std :: initializer_list构造.你的空括号是什么意思?等规则是你得到默认构造."

我用std :: array尝试过这个:

std::array<int, 10> arr{};
Run Code Online (Sandbox Code Playgroud)

并得到了g ++(版本4.8.2)的警告:

警告:缺少成员'std :: array <int,10ul> :: _ M_elems'的初始值设定项

这是在尝试std::array从空构造一个时得到的警告std::initializer_list(请参阅为什么我可以从{}初始化一个常规数组,而不是std :: array来讨论此警告).

那么,为什么上面的代码行不能解释为调用默认构造函数?

c++ aggregate-initialization c++11

8
推荐指数
1
解决办法
1113
查看次数

标签 统计

aggregate-initialization ×1

c++ ×1

c++11 ×1