initializer_listはいつ推定できますか?

ダルネ

initializer_listを推定できる場合には特別なルールがあることは知っていますが、次のことを発見するまで、どういうわけかそれは決してないと思いました。推論または省略してもよい場合のルールは何initializer_listですか?

次の例は論理的で、ほとんど言語不足のように感じますか?

#include <initializer_list>

void test() {
    bool reverse = true;
    const auto ascend = {1,2,3};//OK : seems to deduce to std::initializer_list<const int>

    //const auto a_or_d_AUTO = reverse ? {3,2,1} : {1,2,3};//not ok, why ?

    const auto i = reverse ? 3 : 1;// also fine

    const auto a_or_d = reverse ? std::initializer_list<const int>({3,2,1}) : std::initializer_list<const int>({1,2,3});//also OK
}

https://godbolt.org/z/1sNcu4

TC

これは控除とは何の関係もありません。の文法で?:は、3つのオペランドすべてに実際の式が必要です。

[expr.cond]

conditional-expression:
    logical-or-expression
    logical-or-expression ? expression : assignment-expression

ブレース-INIT-listは発現されず、単に一緒に使用することができません?:

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

std :: initializer_list <intconst>はstd :: initializer_list <int>から構築できません

分類Dev

auto x {3}がinitializer_listを推定するのはなぜですか?

分類Dev

std :: initializer_list変換が好ましくないのはなぜですか?

分類Dev

initializer_listで配列を初期化していますか?

分類Dev

自動型推定でg ++ 5がinitializer_listではなくオブジェクトを推定するのはなぜですか

分類Dev

C ++ 11:コンパイラが{}をstd :: initializer_listと見なすのはいつですか?

分類Dev

Clangがstd :: initializer_listを最適化できないのはなぜですか?

分類Dev

initializer_listから配列をインスタンス化できますか?

分類Dev

std :: initializer_listが言語に組み込まれていないのはなぜですか?

分類Dev

'initializer-list'から 'std :: initializer_list <Keyword>&'に変換できません

分類Dev

「initializer_list <pair>」と「initializer_list <tuple>」の動作が異なるのはなぜですか?

分類Dev

ネストされたinitializer_listがあいまいなのはいつですか。また、テンプレートがその動作に影響を与えるのはなぜですか。

分類Dev

2次元のinitializer_listで初期化するにはどうすればよいですか?

分類Dev

C ++ 11で独自のinitializer_listクラスを作成するにはどうすればよいですか?

分類Dev

initializer_list :: const_iteratorがプレーンポインターであると信頼できますか?

分類Dev

名前のないinitializer_listでADLが機能しないのはなぜですか?

分類Dev

vector <double>が整数要素を持つinitializer_listを受け入れるのはなぜですか?

分類Dev

initializer_listが「1つのクラス型変換」のルールに違反しないのはなぜですか

分類Dev

`std :: initializer_list`がリテラル型として定義されていないのはなぜですか?

分類Dev

関数テンプレートは、initializer_listがネストされた回数をどのように推測できますか?

分類Dev

std :: initializer_list <int>({1,2,3})と{1,2,3}の違いは何ですか?

分類Dev

initializer_listの値がタイプチェックされないのはなぜですか?

分類Dev

C ++ 11はstd :: initializer_listを構築することは可能ですか?

分類Dev

std :: initializer_listとcarray []の長所と短所は何ですか?

分類Dev

「initializer_list」ファイルが見つかりません

分類Dev

cbeginでinitializer_listを定義できません

分類Dev

cbeginでinitializer_listを定義できません

分類Dev

二重空の中括弧{{}}が、ゼロではなく1つの要素を持つstd :: initializer_list <double>を作成するのはなぜですか?

分類Dev

initializer_listをclass <int>に変換できません

Related 関連記事

  1. 1

    std :: initializer_list <intconst>はstd :: initializer_list <int>から構築できません

  2. 2

    auto x {3}がinitializer_listを推定するのはなぜですか?

  3. 3

    std :: initializer_list変換が好ましくないのはなぜですか?

  4. 4

    initializer_listで配列を初期化していますか?

  5. 5

    自動型推定でg ++ 5がinitializer_listではなくオブジェクトを推定するのはなぜですか

  6. 6

    C ++ 11:コンパイラが{}をstd :: initializer_listと見なすのはいつですか?

  7. 7

    Clangがstd :: initializer_listを最適化できないのはなぜですか?

  8. 8

    initializer_listから配列をインスタンス化できますか?

  9. 9

    std :: initializer_listが言語に組み込まれていないのはなぜですか?

  10. 10

    'initializer-list'から 'std :: initializer_list <Keyword>&'に変換できません

  11. 11

    「initializer_list <pair>」と「initializer_list <tuple>」の動作が異なるのはなぜですか?

  12. 12

    ネストされたinitializer_listがあいまいなのはいつですか。また、テンプレートがその動作に影響を与えるのはなぜですか。

  13. 13

    2次元のinitializer_listで初期化するにはどうすればよいですか?

  14. 14

    C ++ 11で独自のinitializer_listクラスを作成するにはどうすればよいですか?

  15. 15

    initializer_list :: const_iteratorがプレーンポインターであると信頼できますか?

  16. 16

    名前のないinitializer_listでADLが機能しないのはなぜですか?

  17. 17

    vector <double>が整数要素を持つinitializer_listを受け入れるのはなぜですか?

  18. 18

    initializer_listが「1つのクラス型変換」のルールに違反しないのはなぜですか

  19. 19

    `std :: initializer_list`がリテラル型として定義されていないのはなぜですか?

  20. 20

    関数テンプレートは、initializer_listがネストされた回数をどのように推測できますか?

  21. 21

    std :: initializer_list <int>({1,2,3})と{1,2,3}の違いは何ですか?

  22. 22

    initializer_listの値がタイプチェックされないのはなぜですか?

  23. 23

    C ++ 11はstd :: initializer_listを構築することは可能ですか?

  24. 24

    std :: initializer_listとcarray []の長所と短所は何ですか?

  25. 25

    「initializer_list」ファイルが見つかりません

  26. 26

    cbeginでinitializer_listを定義できません

  27. 27

    cbeginでinitializer_listを定義できません

  28. 28

    二重空の中括弧{{}}が、ゼロではなく1つの要素を持つstd :: initializer_list <double>を作成するのはなぜですか?

  29. 29

    initializer_listをclass <int>に変換できません

ホットタグ

アーカイブ