2016-07-20 6 views
5
struct some_struct 
{ 
    std::list<some_struct> nested; 
}; 

IIUCこれまで、標準コンテナは完全な型でのみインスタンス化する必要があったため、UBを呼び出すことになりました。不完全な型のリストのイテレータを使用できますか?

は今、しかし、我々はここから進んできたとhttp://open-std.org/JTC1/SC22/WG21/docs/papers/2015/n4510.htmlごとに、私たちは、不完全な型をstd::liststd::forward_liststd::vectorをインスタンス化することができますので、上記のコードが有効です。

しかし、しかし、私はさらに少しと書き込みを行くことがあります。

struct some_struct 
{ 
    std::list<some_struct>::iterator it; 
}; 

コンテナのインスタンス化とそのメンバー型の使用は同じではありません...たとえば、不完全な型のboostコンテナをインスタンス化できると言われましたが、テンプレート引数が完全型でない限り、value_typeは使用できません。上記のコードスニペットが有効かどうかはわかりません。

ですか?

+1

本当にできます(少なくとも* libC++ *と* libstdC++ *)。しかし、それは移植性がなく、不適合である。 – Orient

答えて

8

非常に紙がlistの結果として専門 の任意のメンバーが参照される前に

Tが完了しなければならないと言うこと。

+0

よろしくお願いします。私はうんざりだった... – gaazkam

関連する問題