3

これまでのところ、リストの初期化(別名、一様な初期化) の次の使用法を見つけました。

1) 導入前はリスト初期化機能

int a=3.3f;   // ouch fractional part is automatically truncated

しかしC++11では

int a{3.3f};  // compiler error no implicit narrowing conversion allowed

2) 動的配列要素は静的に初期化できます。たとえば、次のプログラムは C++03 では無効ですが、C++11 以降では有効です。

#include <iostream>
int main()
{
    int* p=new int[3]{3,4,5};
    for(int i=0;i<3;i++)
        std::cout<<p[i]<<' ';
    delete[] p;
}

3)最も厄介な構文解析の問題を解決します

リストの初期化の他の利点を教えてください。上記の 3 を除いて、リストの初期化の利点はまだありますか?

あなたの答えは高く評価されています。

4

2 に答える 2

4

あなたが言及していない重要な利点は、テンプレートを使用して何かを計算し、constexpr 関数でテンプレート データ構造を展開し、結果を配列に格納できるテンプレート メタプログラミングでの有用性です。

たとえば、ここを参照してください:コンパイル時に Constexpr を使用して配列にデータを入力する

コード内:

template<unsigned... Is>
constexpr Table MagicFunction(seq<Is...>){
  return {{ whichCategory(Is)... }};
}

C++11 より前に、そのようなことを行う方法はなかったと思います。

于 2015-09-08T17:28:11.910 に答える