C++14まで、テンプレート関係で使用するキーワードとしてclass
とtypename
のどちらを使用するかをユーザーが選択できました。しかし、一部の状況ではどちらかしか使えません。
テンプレートテンプレートパラメータは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の以下の階層の下に解説ページを用意する予定です。