Есть ли способ частичной специализации всегда предпочтительнее, чем основной шаблон? - PullRequest
3 голосов
/ 15 октября 2011

Я спрашиваю себя

Можете ли вы написать шаблон класса и соответствующую частичную специализацию так, чтобы для любого набора аргументов шаблона для параметров частичная специализация была взята компилятором?

Например

template<typename T>
struct A { };

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

Кажется, я помню, что прочитал, что это как-то возможно, но я забыл точный алгоритм, чтобы заставить это работать.

Ответы [ 2 ]

4 голосов
/ 15 октября 2011

Моя версия GCC рада принять:

template<typename T>
struct A;

template<typename... Pack>
struct A<Pack...> {};
2 голосов
/ 15 октября 2011

Если вы разрешите трюк 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;
};

Демо .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...