9

私は次のようなことをしようとしています:

template <typename T>
struct A
{
    template <typename U>
    struct AA
    {
    };
};

template <typename V, template <typename> class W = A<V>::AA> // Causes C3202
struct B
{
};

しかし、Visual Studio 2010 コンパイラは吐き出します:

エラー C3202: 'AA': テンプレート パラメーター '' の既定の引数が無効です。クラス テンプレートが必要です

B を次のテンプレートに置き換えると:

// Replace "T" with "int"
template <typename V, template <typename> class W = A<int>::AA>
struct B
{
};

コードは正常にコンパイルされますが、私が望むものではありません。オリジナルが正当な C++ でない場合、「B」テンプレートのユーザーに同様のインターフェイスを提供する代替手段はありますか?

4

2 に答える 2