论显性专门化的语法
明确-专门化: 模板<>声明声明:
声明可以是语法上的任何有效声明。考虑一下这个例子
template<class T>
struct A{
template<class Y>
struct B{};
};
template<>
template struct A<int>::B<int>; //declaration: explicit-instantiationGCC和Clang都不认识语法。限制声明的规则在哪里不能是显式实例化?
发布于 2021-08-16 03:52:33
正如您提到的,显式专门化的语法需要在template<>之后声明。然而,仅仅因为某些语法满足语法生成规则,它就不一定是有效的代码。
在显式专门化的情况下,可以使用此语法显式专门化的实体在temp.expl.spec#1中列出。
下列任何一种明确的专门化: (1.1)函数模板 (1.2)类模板 ..。可以通过
template<>引入的声明声明.
语法template struct A<int>::B<int>;是一个显式实例化,这里没有列出它,因为它不是一个可以显式专门化的实体。
https://stackoverflow.com/questions/68796960
复制相似问题