C++11 で新しい統一初期化構文をいつ、どのように使用すればよいかわかりません。
たとえば、次のようになります。
std::string a{"hello world"}; // OK
std::string b{a}; // NOT OK
2番目のケースで機能しないのはなぜですか? エラーは次のとおりです。
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};