【发布时间】:2013-01-09 09:40:12
【问题描述】:
在 C 和 C++ 中,可以使用大括号初始化数组和结构:
int a[] = {2, 3, 5, 7};
entry e = {"answer", 42};
但是,在a talk from 2007 中,Bjarne 提到此语法也适用于标量。我试过了:
int i = {7};
它确实有效!允许使用大括号初始化标量的基本原理是什么?
注意:我具体不是在谈论 C++11 统一初始化。这是很好的旧 C89 和 C++98。
【问题讨论】:
-
这只是 C++ 语法的一部分。允许以这种方式初始化所有对象更加一致,并且可能会简化实现。
-
你尝试过哪个 pre C++11 编译器?
-
@rhalbersma 没什么特别的,只是 Linux 上的当前 gcc(是的,gcc,不是 g++)。还有 Visual Studio 2012,还不支持统一初始化。所以不可能是这样的。
-
我很确定你一定有,但只是为了确认,你用
-pedantic编译了吗?也许它只是一个编译器扩展。
标签: c++ c initialization language-lawyer list-initialization