有没有办法让这段代码工作,就像用点符号调用静态函数一样?
struct A{
static void f(){ }
typedef int t;
};
template<typename T> void f(){}
int main(){
A a;
a.f(); //legit
f<a.t>(); //‘a’ cannot appear in a constant-expression, ‘.’ cannot appear in a constant-expression
a.t somevar; //invalid use of ‘A::t’
f<a::t>(); //‘a’ cannot appear in a constant-expression
a::t somevar; //‘a’ is not a class, namespace, or enumeration
}
编辑:伙计们,请在发布之前阅读问题并测试您的代码。这里的重点不是使用,而是通过 的实例“A::t
调用” ,就像您可以使用静态方法一样。t
A