C++ ヘッダーなしで同じ効果を達成できます<initializer_list>
か?
class initializer_list
住む必要がありますかnamespace std
(コンパイラはこれを必要としますか)?
ビッグ ファイブ (GCC、MSVC、Intel、Clang、Comeau) で動作するソリューションで問題ありません
C++ ヘッダーなしで同じ効果を達成できます<initializer_list>
か?
class initializer_list
住む必要がありますかnamespace std
(コンパイラはこれを必要としますか)?
ビッグ ファイブ (GCC、MSVC、Intel、Clang、Comeau) で動作するソリューションで問題ありません
標準に従って密結合されています。これは、コンパイラで構築された配列のラッパーです (ただし、標準では正確に述べられていません — GCC はポインターとサイズでコンストラクターを使用しますが、MSVC は 2 つのポイントでコンストラクターを使用します)。std
はい、それは namespaceと header にある必要があります<initializer_list>
。
サポートする各コンパイラで使用されているコンストラクターを確認し、それをバージョンで複製する必要がありますが、TBH、要点がわかりません。
テンプレート
std::initializer_list
は事前定義されていません。を使用する前にヘッダー<initializer_list>
が含まれていない場合std::initializer_list
(型に名前が付けられていない暗黙の使用 (7.1.6.4) であっても)、プログラムの形式は正しくありません。型のオブジェクトは
std::initializer_list<E>
、実装が型 E の N 個の要素の配列を割り当てたかのように、初期化子リストから構築されます。ここで、N は初期化子リスト内の要素の数です。その配列の各要素は、初期化子リストの対応する要素でコピー初期化され、std::initializer_list<E>
オブジェクトはその配列を参照するように構築されます。