Как я могу частично специализировать свой шаблон класса для int _ <...>, long _ <...> - PullRequest
0 голосов
/ 26 декабря 2011

может быть чем-то вроде

template <class C>
struct apply<template<> struct T<C N>>
{
    typedef typename T<N + 1>::type type;
};

, например, он возвращает следующий тип целочисленной константы.

1 Ответ

1 голос
/ 26 декабря 2011

Для любого фиксированного типа вы можете специализироваться напрямую:

template <typename> struct apply;  // primary template

template <unsigned int N>
struct apply<int_<N>>
{
    typedef int_<N + 1> type;
};

Вы также можете специализироваться на шаблонах, которые принимают один целочисленный параметр:

template <template <unsigned int> class TInt, unsigned int N>
struct apply<TInt<N>>
{
    typedef TInt<N + 1> type;
};

Последний будет соответствовать любому template <unsigned int> class, поэтому будьте осторожны.

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