【发布时间】:2016-11-15 16:19:10
【问题描述】:
考虑以下代码:
struct X
{
template <typename T>
class Y
{};
};
template<>
class X::Y<double>{
};
这里我们将 Y 类专门用于 double 类型,并且代码工作正常。问题是,如果我将代码更改为:
template<typename A>
struct X
{
template <typename T>
class Y
{};
};
template<typename A>
class X<A>::Y<double>{
};
编译器会报错:
'X::Y': 显式特化正在使用部分 特化语法,使用模板 代替!
有谁知道在这种情况下我如何专攻 Y 类?
【问题讨论】:
-
执行错误消息所说的没有帮助吗?在嵌套模板特化中使用
template<>而不是template<typename A>。 -
它不起作用!我也厌倦了这个:template class X::Y
{ };
标签: c++ metaprogramming template-specialization