如何将我的类模板部分专门化为int_< ...>,long_< ...>

时间:2011-12-26 11:09:52

标签: c++ templates boost c++11

可能类似

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

例如它返回下一个整数常量类型。

1 个答案:

答案 0 :(得分:1)

对于任何固定类型,您可以直接专攻:

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,所以要小心。