ドット表記で静的関数を呼び出すときと同じように、このコードを機能させる方法はありますか?
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