别名模板不像 class 模板那样工作
Alias template doesn't work like class template
我正在从 C++ Primer 第 5 版学习 C++ 模板。例如,我了解到我们可以执行以下操作:
template<typename T>
struct Custom
{
};
template<>
struct Custom<int>
{
int a = 0;
};
然后我才知道C++11还增加了别名模板的特性。所以我对它们进行了相同的尝试,如下所示:
template<typename T>
using var = std::stack<T>;
template<>
using var<double> = double;
但上面显示的片段 doesn't work。这里有什么问题,为什么第二个片段不起作用。
问题是我们无法专门化别名模板。
Because an alias-declaration cannot declare a template-id, it is not possible to partially or explicitly specialize an alias template.
我正在从 C++ Primer 第 5 版学习 C++ 模板。例如,我了解到我们可以执行以下操作:
template<typename T>
struct Custom
{
};
template<>
struct Custom<int>
{
int a = 0;
};
然后我才知道C++11还增加了别名模板的特性。所以我对它们进行了相同的尝试,如下所示:
template<typename T>
using var = std::stack<T>;
template<>
using var<double> = double;
但上面显示的片段 doesn't work。这里有什么问题,为什么第二个片段不起作用。
问题是我们无法专门化别名模板。
Because an alias-declaration cannot declare a template-id, it is not possible to partially or explicitly specialize an alias template.