0

簡潔にするために、明示的なインスタンス化でテンプレート引数に 1 回だけ名前を付けたいと思いますが、コンパイラ エラーが発生します。の下の cppreference で説明されているように、C++ 構文を使用しようとしていますType alias, alias template。ここに私のサンプルコードがあります:

struct M {};

template< typename T1 >
struct S {};

template< typename T2, typename T3 > 
struct N {};

// type alias used to hide a template parameter (from cppreference under 'Type alias, alias template')
//template< typename U1, typename U2 >
//using NN = N< U1, U2< U1 > >; // error: attempt at applying alias syntax: error C2947: expecting '>' to terminate template-argument-list, found '<'

int main()
{
  N< M, S< M > > nn1; // OK: explicit instantiation with full declaration, but would like to not have to use M twice
  // NN< M, S > nn2; // desired declaration, error: error C2947: expecting '>' to terminate template-argument-list, found '<'

  return 0;
}

ここで何が問題なのですか?

4

1 に答える 1