C++1z テンプレートテンプレートパラメータにtypenameキーワードの使用を許可

C++14まで、テンプレート関係で使用するキーワードとしてclasstypenameのどちらを使用するかをユーザーが選択できました。しかし、一部の状況ではどちらかしか使えません。

テンプレートテンプレートパラメータはC++14までclassキーワードしか使えませんでしたが、C++1zではtypenameも使用できるようになります。

#include <vector>
#include <list>

template <template <class...> typename Container>
class X {
    Container<int> cont;
};

int main()
{
    X<std::vector> x1;
    X<std::list> x2;
}

このコードでの、typename Containerの部分が、今回許可されるところです。

参照

お断り

この記事の内容は、C++1zが正式リリースされる際には変更される可能性があります。正式リリース後には、C++日本語リファレンスサイトcpprefjpの以下の階層の下に解説ページを用意する予定です。