多くの人と同様に、私はかなりC++0xに興奮しています。私は新しいプロジェクトで新しい機能を学び、それを使用しようとしているので、最も簡単で維持しやすいコードを書くことができます。C++ 0x均一初期化 "oddity"
言うまでもなく、新しいイニシャライザの背後にあるアイデアが大好きです。だから私は彼らを見ていて、これらは、私には意味をなさない:奇妙な
T x{1, 2, 3};
それだけで感じている...:
T x = { 1, 2, 3 }; // like a struct or native array
T x({1, 2, 3}); // copy construct something like an "object literal" in other languages... cool!
return {1, 2, 3}; // similar to above, but returning it, even cooler!
は何私には意味がないことは、このです。私は、これが模倣していることを人々がどのような構文で使用したいのか分かりません。ただ正しいとは思われません。
この構文の背景には何がありますか?
違いを作るように思える唯一の例では、このようなものです:
std::vector<int> the_vec = {4};
:初期化子リストのコンストラクタを呼び出すが、なぜただ、その後これを書いていないでしょう
std::vector<int> the_vec{4};
誰もがすでに快適にしていることをしてください。
を検討し、彼らは**だけ**最も厄介なパースを「修正」するために、初期化のために全く新しい構文を追加していない私に教えてください: - /。 –
まあ、統一された初期化構文を持っているのは本当にいいです(または、それは本当にクールだと思いますが、私はまだそれを使用する機会はありませんでした:-P)。様々な厄介な構文解析( 'T x()'とその厄介な友人 'T x(T)')のために、一様な初期化構文のための括弧として括弧を使うことはできません。ブレースにはこの問題はありません。 –
@エヴァン:_uniform_ initializationと呼ばれる理由があります。それはどこでも同じように働くからです。 '{}'は "初期化"を意味します。それはその背後にある考えです。 –