このコードを意図したとおりに動作させる方法はありますか?クラステンプレートの静的関数をその(部分)特殊化から呼び出す
#include <iostream>
using namespace std;
template<typename T> class templated{
public:
static void f(){
cout<<"doing something generically"<<endl;
}
};
template<> class templated<int>{
public:
static void g(){
cout<<"doing something else, but specific to int"<<endl;
f();
}
};
int main(){
templated<int>::g();
}
G ++は、スコープ内でfが宣言されていないと文句を言います。私はf()
(templated<int>::f()
、ダミー宣言をtemplated
に入れ、クラス定義の外で宣言を移動するなど)を呼び出す可能性のあるすべてのバリエーションを試しましたが、すべて失敗しましたのでここでは省略します。
をそして、あなたをしました'テンプレート :: f()'を試してみてください。私は本当にそれを取得しません。 –
ypnos
プライマリクラステンプレート 'template class templated'はあなたが呼び出せるスタティックメンバの型ではありません。それをする目的は何ですか? –
@ypnos確かに私はやった。しかし答えは明らかに私が望むことをすることができないと主張するようです。 –