私はイニシャライザリストについて少し混乱しています。STL独立したイニシャライザリスト
私はその初期化子リストは、C++の一部であり、どのようなものだと思う:、アレイと類推
struct Something { char c0, c1; };
Something something = { 'H', 'W' };
などと(私の目で)接続されている何かが(ヘッダ<initializer_list>
中)STLであり、std::initializer_list<T>
と呼ばれますイニシャライザリストと一致するものメソッドのパラメータ、など
std::initializer_list<char> list = { 'H', 'e', 'l', 'l', 'o' };
今私の混乱:私は(MSVC 2015年)auto
解釈が何であるかを見てみると
auto match = { 'H', 'e', 'l', 'l', 'o' };
、それはstd::initializer_list<char>
です。
は、だから私の質問は以下のとおりです。
あるラインとの間のC++言語とSTLライブラリ?
イニシャライザリスト(C++の意味で)の解釈方法を指定するディレクティブがありますか?
たとえば、解釈を変更することができます。 std::initializer_list<T>
からT[]
に?
言語と標準ライブラリが連携して動作します。コンパイラは、例えばオブジェクトを作成し渡すことができる。必要に応じて 'std :: initializer_list'を呼び出します。しかし、最初の例では、構造体を初期化するときに、 'std :: initializer_list'は作成されません。それは構造の直接の初期化です。 –
「STL」と書いたときに「標準ライブラリ」を意味すると仮定しています。 – MSalters
@MSalters https://en.wikipedia.org/wiki/Standard_Template_Library – user4663214