struct some_struct
{
std::list<some_struct> nested;
};
IIUCこれまで、標準コンテナは完全な型でのみインスタンス化する必要があったため、UBを呼び出すことになりました。不完全な型のリストのイテレータを使用できますか?
は今、しかし、我々はここから進んできたとhttp://open-std.org/JTC1/SC22/WG21/docs/papers/2015/n4510.htmlごとに、私たちは、不完全な型をstd::list
、std::forward_list
とstd::vector
をインスタンス化することができますので、上記のコードが有効です。
しかし、しかし、私はさらに少しと書き込みを行くことがあります。
struct some_struct
{
std::list<some_struct>::iterator it;
};
?
コンテナのインスタンス化とそのメンバー型の使用は同じではありません...たとえば、不完全な型のboostコンテナをインスタンス化できると言われましたが、テンプレート引数が完全型でない限り、value_type
は使用できません。上記のコードスニペットが有効かどうかはわかりません。
ですか?
本当にできます(少なくとも* libC++ *と* libstdC++ *)。しかし、それは移植性がなく、不適合である。 – Orient