【发布时间】:2014-07-03 17:08:10
【问题描述】:
我不明白何时以及如何在 C++11 中使用新的统一初始化语法。
例如,我得到这个:
std::string a{"hello world"}; // OK
std::string b{a}; // NOT OK
为什么在第二种情况下不起作用?错误是:
error: no matching function for call to ‘std::basic_string<char>::basic_string(<brace enclosed initializer list>)’
使用此版本的 g++ g++ (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2。
对于原始数据,我应该使用什么语法?
int i = 5;
int i{5};
int i = {5};
【问题讨论】:
-
首先,您需要告诉我们您正在使用的 wich 编译器的哪个版本,因为它肯定是您当前设置中未实现的错误或功能。
-
这是一个演示第一个错误的 ideone,ideone.com/zXIto。
标签: c++ c++11 uniform-initialization