【发布时间】:2015-11-17 13:33:44
【问题描述】:
我正在尝试创建一个模板类的部分专用成员,其中内部类的模板类型是来自外部类的模板类型......如下:
template<typename T>
struct Num
{
template <T n>
struct VH
{
enum { value = n };
T v = value;
};
};
template <typename T> struct Num<T>::VH<0>
{
enum {value = 1};
T v = value;
};
template <typename T> struct Num<T>::VH<1>
{
enum {value = 0};
T v = value;
};
失败
error: too few template-parameter-lists
template <typename T> struct Num<T>::VH<0>
以及以下内容:
template <typename T> struct Num<T>::template<> VH<0>
{
enum {value = 0};
T v = value;
};
template <typename T> struct Num<T>::template<> VH<1>
{
enum {value = 1};
T v = value;
};
感觉不对劲 (error: expected template-id before '<' token
template <typename T> struct Num<T>::template<> VH<0>)
读完之后 explicit specialization of template class member function 以下
template <typename T> template<> struct Num<T>::VH<0>
{
enum {value = 0};
T v = value;
};
template <typename T> template <> struct Num<T>::VH<1>
{
enum {value = 1};
T v = value;
};
给出错误:
error: invalid explicit specialization before '>' token
template <typename T> template<> struct Num<T>::VH<0>
^
error: enclosing class templates are not explicitly specialized
error: template parameters not used in partial specialization:
template <typename T> template<> struct Num<T>::VH<0>
^
error: 'T'
谁能告诉我正确的语法,我现在似乎无法弄清楚......?
【问题讨论】: