2

A のようなクラスがあり、T2 をタイプ C に設定して、このような B のようなテンプレートに適用する方法はありますか? ただし、A から継承する別のテンプレート クラスを作成する必要はありません。

template<typename T1, typename T2>
class A
{ };

template<template <typename T1> class T3>
class B
{ };
4

3 に答える 3

3

テンプレート エイリアスを使用した C++11 では、次のように動作します。

template<typename T1, typename T2>
class A
{ };

template<template <typename T1> class T3>
class B
{ };

class C
{ };

template< typename T > using A1 = A< T, C >;

int main()
{
    B< A1 > b;
}

C++11 がないと、おそらく既に知っていることが残ります。

template< typename T > class A1 : A< T, C > {};
于 2013-09-13T17:05:35.283 に答える
1

はい、C++11 のエイリアス テンプレートを使用して実行できます。

template <typename T>
using AA = A<T, C>;

B<AA> b;

実際の例

于 2013-09-13T16:56:38.227 に答える