概念ではなくstd::initializer_list<T>::iterator
ネイキッド ポインターとして定義されるのはなぜですか?T const*
random_access_iterator
質問する
202 次
1 に答える
5
その理由は、おそらく標準からのこの小さな一口からです
セクション18.9
タイプ initializer_list のオブジェクトは、タイプ const E のオブジェクトの配列へのアクセスを提供します。initializer_list は、8.5.4 で指定されている初期化リストを実装するために使用されます。初期化子リストをコピーしても、基になる要素はコピーされません。—終わりのメモ]
これは、コピーされたときの initializer_lists が値のセマンティクスではなくポインターのセマンティクスを持つことを示しています。これがおそらく、それらのイテレーターが直接ポインターであり、「random-access-iterator」タイプにラップされていない理由です。
私の知る限り、これは値のセマンティクスではなくポインターのセマンティクスを持つ唯一の標準的な「コンテナ」です (ここで引用符に注意してください)。
于 2013-07-08T01:32:32.613 に答える