私は以下のようにソースコードを書きました。 ----- sample.h ------g ++またはclang ++でテンプレートクラスをコンパイルできませんでした
#include <iostream>
template <typename T>
class Sample {
private:
static int foo;
public:
Sample (T number) {
foo = number;}
void display() {
std :: cout << foo << std :: endl;}
};
---- TEST.CPP --------------
#include "sample.h"
template <> int Sample <float> :: foo;
int main() {
Sample <float> test (100.9);
test.display();
return 0;
}
私はVisual Studio 2015コミュニティで正常にコンパイルされました。 しかし、g ++とclang ++(ubuntu linux 16.04 LTS)はリンク時に失敗しました。 g ++やclang ++でコンパイルしたいので、何かしたいのですが、 良いアイデアはありません。 g ++やclang ++の仕様と互換性がありませんか? コンパイラに精通している人はあなたですか?