私は次のようなことをしようとしています:
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」テンプレートのユーザーに同様のインターフェイスを提供する代替手段はありますか?