假设我们有一个带有类的结构模板,以及一个指向该类成员的指针:
struct A<A,&A::a>
我无法宣布这样的模板
template<class T,class U>
struct{};
我得写
template<class T,typename T::type var>
struct{};
为什么 &A::a
无法绑定到简单的 typename T
语法?在成为成员的指针之前, &A::a
是一个类型,所以我们可以期望一个简单的类型名称T工作,但事实并非如此
1 回答
&A::a
是一个值,而不是一个类型 . 所以模板声明没有任何意义 .以下是它的工作原理:
或者,更一般地说,