std :: initializer_listと参照型

user1095108

std::initializer_listは参照型(右辺値と左辺値の両方)を含めることができますか?または、ポインタまたは参照ラッパー(などstd::refを使用する必要がありますか?

編集:

おそらく、より明確にする必要があります:

::std::vector<std::function<void()> >ラムダオブジェクトを転送したいメンバー変数、があります。これは通常、で実行さemplace_backれますが、コンストラクターの初期化リストで実行したかったのです。悲しいかな、私が読んだように、これは転送を不可能にするでしょう。

0x499602D2

std::initializer_listは参照型(右辺値と左辺値の両方)を含めることができますか?

std::initializer_list<T>その要素への参照を保持していません。値をオブジェクトとして保持することにより、コピーセマンティクスを使用constます。

18.9 イニシャライザリスト [support.initlist]

タイプのオブジェクトは、タイプのオブジェクトのinitializer_list<E>配列へのアクセスを提供しますconst E

initializer_listiternallyポインタはイテレータのために使用されているので参照のは、コンパイルエラーが発生します。

#include <initializer_list>
int main()
{
    int x;
    std::initializer_list<int&> l = {x};

    // In instantiation of 'class std::initializer_list<int&>':
    // error: forming pointer to reference type 'int&'

    // typedef const _E*  iterator;
}

またinitializer_listconstオブジェクトはから移動できないため、移動セマンティクスもサポートしていませんstd::reference_wrapper<T>参照セマンティクスを維持したい場合は、オブジェクトをに保持することが最も実行可能なソリューションです。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Implementation of std::initializer_list

分類Dev

なぜstd :: initializer_listを右辺値参照と値で取るのですか?

分類Dev

std :: initializer_listが割り当てパラメーターとして使用されている場合、なぜそれが参照型ではないのですか?

分類Dev

std :: initializer_listの実装

分類Dev

std :: initializer_listの実装

分類Dev

constexpr-std :: initializer_list :: size()とstd :: array :: size()の性質

分類Dev

C ++-std :: initializer_list vs std :: span

分類Dev

std :: vector vs std :: initializer_list issue:undefined bahevior

分類Dev

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

分類Dev

clangでstd :: initializer_listを返す

分類Dev

Constructing a std::map from initializer_list error

分類Dev

C ++ std :: initializer_listの使用法

分類Dev

Why does std::min only support initializer_list?

分類Dev

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

分類Dev

関数パラメーターとしての配列とstd :: initializer_list

分類Dev

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

分類Dev

std :: initializer_listオブジェクトとしての抽象クラス

分類Dev

std :: initializer_list constを作成すると、何かが変わりますか?

分類Dev

std :: initializer_listをメンバー変数として使用する

分類Dev

直接初期化とstd :: initializer_listを使用する場合の異なる命令

分類Dev

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

分類Dev

std :: initializer_list <std :: string_view>の初期化

分類Dev

std :: stringsのstd :: initializer_listの奇妙な動作

分類Dev

constexpr-ness of std::initializer_list::size() vs std::array::size()

分類Dev

std :: initializer_list <char const *>からstd :: vector <std :: string>を構築する方法

分類Dev

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

分類Dev

initializer_listエラーからstd :: mapを構築する

分類Dev

C++11: when does compiler consider {} as std::initializer_list, and when doesn't?

分類Dev

std :: initializer_listコンストラクター

Related 関連記事

  1. 1

    Implementation of std::initializer_list

  2. 2

    なぜstd :: initializer_listを右辺値参照と値で取るのですか?

  3. 3

    std :: initializer_listが割り当てパラメーターとして使用されている場合、なぜそれが参照型ではないのですか?

  4. 4

    std :: initializer_listの実装

  5. 5

    std :: initializer_listの実装

  6. 6

    constexpr-std :: initializer_list :: size()とstd :: array :: size()の性質

  7. 7

    C ++-std :: initializer_list vs std :: span

  8. 8

    std :: vector vs std :: initializer_list issue:undefined bahevior

  9. 9

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

  10. 10

    clangでstd :: initializer_listを返す

  11. 11

    Constructing a std::map from initializer_list error

  12. 12

    C ++ std :: initializer_listの使用法

  13. 13

    Why does std::min only support initializer_list?

  14. 14

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

  15. 15

    関数パラメーターとしての配列とstd :: initializer_list

  16. 16

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

  17. 17

    std :: initializer_listオブジェクトとしての抽象クラス

  18. 18

    std :: initializer_list constを作成すると、何かが変わりますか?

  19. 19

    std :: initializer_listをメンバー変数として使用する

  20. 20

    直接初期化とstd :: initializer_listを使用する場合の異なる命令

  21. 21

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

  22. 22

    std :: initializer_list <std :: string_view>の初期化

  23. 23

    std :: stringsのstd :: initializer_listの奇妙な動作

  24. 24

    constexpr-ness of std::initializer_list::size() vs std::array::size()

  25. 25

    std :: initializer_list <char const *>からstd :: vector <std :: string>を構築する方法

  26. 26

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

  27. 27

    initializer_listエラーからstd :: mapを構築する

  28. 28

    C++11: when does compiler consider {} as std::initializer_list, and when doesn't?

  29. 29

    std :: initializer_listコンストラクター

ホットタグ

アーカイブ