3

私は自問しています

パラメーターのテンプレート引数の任意のセットに対して、部分的な特殊化がコンパイラによって取得されるように、クラス テンプレートと対応する部分的な特殊化を記述できますか?

例えば

template<typename T>
struct A { };

template<typename T>
struct A</* what to write!?*/> { };

これはどういうわけか可能であると読んだことを覚えているようですが、これを機能させるための正確なアルゴリズムを忘れていました。

4

2 に答える 2

4

私のバージョンの GCC は喜んで受け入れます:

template<typename T>
struct A;

template<typename... Pack>
struct A<Pack...> {};
于 2011-10-15T00:11:03.677 に答える
2

SFINAE トリックを許可すると、次のように簡単になります。

enum E { TRUE };

template<typename T, E = TRUE>
struct A
{
  static const bool value = false;
};

template<typename T>
struct A<T, TRUE>
{
  static const bool value = true;
};

デモ

于 2011-10-15T02:48:59.757 に答える