是否可以专门化在模板类中声明的内部类?或多或少像以下示例(不起作用):
template<unsigned N>
class Outer {
struct Inner {
typedef int Value;
};
typedef typename Inner::Value Value;
};
template<>
struct Outer<0>::Inner {
typedef float Value;
};
答案 0 :(得分:3)
可以做到,但不像你想的那样。你必须专注于整个外部类型:
template<>
struct Outer<0>
{
struct Inner {
typedef float Value;
};
typedef float Value;
};
答案 1 :(得分:0)
我找到的最佳解决方案是将Inner
移到外面。
template<unsigned N>
struct Inner {
typedef int Value;
};
template<>
struct Inner<0> {
typedef float Value;
};
template<unsigned N>
class Outer {
typedef typename Inner<N>::Value Value;
};