brace-initialization相关内容

为什么GCC 6.3在没有明确的C ++ 11支持的情况下编译这个Braced-Init-List代码?

我对花括号列表的不同含义有疑问。 我知道C ++ 03不支持C ++ 11的 initializer_list 。然而,即使没有 -std = c ++ 11 编译器标志,gcc 6.3 会正确初始化 interpolate 这个代码: map interpolate = {{“F”,“a& b& c”},{“H”,“p ^ 2 + w”},{“K”, ..
发布时间:2018-04-20 17:19:03 C/C++开发

为什么一个braced-init-list不是一个表达式?

当我正在阅读C ++ 11标准的第93页$ 5.1.2时,在这种情况下,它表示在这种情况下使用braced-init-list是非常的: auto x = [] { return {1,2}}; //错误:一个braced-init-list不是表达式 我发现了这两个主题,一个来自标准,另一个来自N3681提案。 p> $ 14.8.2.5:一个初始化器列表参数使参数被认为是非推断的 ..
发布时间:2017-10-07 17:26:51 其他开发

为什么他们特殊的初始化列表而不是一样的?

假设我有一个变量 auto x ,我想使用大括号初始化初始化为 7 / p> auto x {7}; 除非我知道x是 NOT 一个整数,本身。为什么?是否有一个具体原因,为什么委员会会决定 auto 应该在单个自动值的情况下抓取初始化列表,或者他们希望我们只是实现这些“ t一起使用。 我似乎没有想到一个可能的原因,我想要一个初始化列表存储到自动而不是值 解决方案 ..
发布时间:2016-11-06 01:15:26 C/C++开发

等号是否在大括号初始化中有所不同?

这里有两种方法来初始化C ++ 11中的变量: T a {something} T a = {something}; 我测试了这两个在我能想到的情况,我没有注意到一个区别。 此回答表明两者之间存在细微差别: T t = {init}; 或 T t { init}; styles,我发现它的区别是小的,并且在最坏的情况下,只会导致一个有用的编译器消息,关于一 ..
发布时间:2016-10-14 10:24:20 C/C++开发

哪些贪婪的初始化列表示例潜伏在标准库中?

由于C ++ 11,标准库容器和 std :: string 有构造函数采用初始化列表。这个构造函数优先于其他构造函数(甚至,如评论中的@ JohannesSchaub-litb所指出的,甚至忽略其他“最佳匹配”标准)。当将所有括号()形式的构造函数转换为其支撑版本 {}时,会导致一些已知的陷阱 #include #include #i ..
发布时间:2016-10-13 11:24:40 C/C++开发

初始化标量用大括号

在C和C ++,可以初始化数组,并使用大括号结构: int类型的[] = {2,3,5,7}; 进入E = {“答案”,42}; 不过,在从2007年谈话,Bjarne的提到这个语法也适用标量。我试了一下: INT I = {7}; 和它的实际工作!什么是落后,允许标量的初始化用大括号什么道理呢? 请注意:我是专门的不的谈论C ++ 11均匀初始化。这是好老C89和C ++ 98。 ..