当我们在类范围内声明变量模板时,我有一个关于clang行为的问题。标准对此的陈述是(N4296::14/1 [temp]
):
类范围内的变量模板是静态数据成员模板。
我认为任何变量模板(静态和非静态)都将被声明为静态数据成员模板。但实际上,clang
阻止声明非静态数据成员模板。
template <class U>
struct A
{
template <class T, const T& t>
int a; //non-static data member template
};
int main(){}
我的问题是该规则应该如何处理。这是否意味着编译器应该隐式地将任何数据成员模板声明为静态数据模板成员?