问题标签 [uniform-initialization]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 从函数返回三元运算符的统一初始化
我不知道这是编译器错误(Arch Linux 上的 gcc 4.8)还是标准问题,但下面的代码无法编译。为什么允许 getFoo1 而不允许 getFoo2?
c++ - C ++ 0x 3d地图初始化就像在php关联数组中一样
我刚刚进入新的 c++0x 内容并实例化这样的地图:
很容易。但是我可以在 php 中做类似的事情吗?
我不熟悉语法。也许是这样的
所以我不必一直写索引:
c++ - Why uniform initialization syntax is applied only for objects?
In c++11 we have nice uniform initialization syntax for objects. Why it does not extends to initialize non-object types as well?
Is there any syntactic ambiguity for that, or is it just some stupid question I am asking?
Example:
A more useful example:
Another one :
c++ - 如何统一初始化unique_ptr的map?
我有这段代码可以将映射从 into 初始化为 unique_ptr。
我可以使用统一初始化吗?我试过了
但我得到了一个错误。
错误消息的某些部分是
c++ - 错误与否?Visual Studio 2013 预览 std::vector 初始化列表与 std::string
最后他们做到了。MSVC12 编译器现在允许统一初始化。但我发现,它的工作方式与带有-std=C++11
标志的 GNU GCC 4.8.1 不同。
考虑这段代码:
GCC 的结果(如预期的那样):
(ideone链接)
MSVC12 的结果:
像字符串还没有被初始化。
问题:
- 根据 C++11 标准,我的代码片段语法是否正确?
- GCC 行为是标准的还是某种扩展?
- MSVC 行为是标准行为还是错误?
c++ - 具有统一初始化的自动扩展为意外类型
考虑这个用 GCC 4.7.2 编译的短程序g++ -std=c++11 test.cc
编译器输出以下错误:
表示 auto 类型被扩展为初始化列表而不是std::shared_ptr<type>
; 实际上替换{...}
为= ...
使代码编译为自动扩展为正确的类型。
对于这个看似显而易见的用例未能达到预期的结果,我有点惊讶。特别是当我记得新的括号初始化语法被吹捧为初始化问题的最终解决方案时。
所以我的问题是:这是标准中的意图吗?或者它是一个疏忽甚至是 gcc 错误?还是我只是想错了?
c++ - 使用迭代器的初始化列表构造容器
可以构造一个带有迭代器范围的向量,如下所示:
但我也可以使用 C++11 统一初始化语法(注意括号)编译和运行代码,如下所示:
这里到底发生了什么?
我知道采用初始化列表的构造函数优先于其他形式的构造。编译器不应该解析为构造函数采用包含 2 个元素的初始化列表std::istream_iterator
吗?这应该是一个错误,因为std::istream_iterator
不能转换为向量值类型std::string
,对吧?
c++ - 在 c++11 中,你能总是(安全地)用空初始化器替换 memset() 初始化吗?
我经常在代码中遇到手动零初始化的 POD 结构,memset
如下所示:
我检查了 C++11 标准,它说:“初始化器是一组空括号的对象,即 (),应进行值初始化。” 其次是: “对类型 T 的 [pod 结构] 进行值初始化意味着……对象被零初始化。”
那么...这是否意味着您始终可以安全地将上述代码压缩为以下内容:
并且有一个保证初始化的结构,就好像你已经调用了memset(&foo, 0, ...)
?
如果是这样,那么一般来说,您可以使用空初始化程序安全地初始化任何东西,如下所示:
我知道这在 C++03 中并不总是可能的(在统一初始化语法之前),但现在在 C++11 中对于任何类型都有可能吗?
c++ - C++11 中的统一初始化和默认构造函数参数
我正在学习新的 C++11 功能 - 统一初始化。写了个小程序:
但是,我得到了意想不到的结果0 0
。换句话说,一切都被初始化为零。发生这种情况的唯一方法是:1. 调用了隐式默认构造函数,或者 2. 未正确完成初始化。(3.编译器???)
为什么我会得到意想不到的结果?在 C++11 中使用统一初始化的构造函数语法是否有任何更改?
编辑:使用最新的英特尔编译器: