Skip to content

Latest commit

 

History

History
18 lines (13 loc) · 852 Bytes

065-cpp17-lib-misc-minimal-incomplete-type-support-for-containers.md

File metadata and controls

18 lines (13 loc) · 852 Bytes

コンテナーで不完全型のサポート

注意:この説明は上級者向けだ。

C++17では以下のコードが合法になった。このコードの挙動はC++14までは実装依存であった。

struct X
{
    std::vector<X> v ;
    std::list<X> l ;
    std::forward_list<X> f ;
} ;

クラスはクラス定義の終了である}を持って完全型となる。クラススコープに注入されたクラス名は、クラス定義の中ではまだ完全型ではない。不完全型をコンテナーの要素型に指定した場合の挙動は、C++14までは規定されていなかった。

C++17では、vector, list, forward_listに限り、要素型に一時的に不完全型を許すようになった。実際にコンテナーを使う際には完全型になっていなければならない。