私は何か間違ったことをしているようですが、何がわかりません。これが私がやろうとしていることの最小の例です:
#include <iostream>
using std::cout;
class CallMe {
public:
void Maybe() {
cout << "A";
}
};
class TemplateValue {
public:
static CallMe call_me;
};
template<typename T>
void CallMemberMember() {
T::call_me.Maybe();
}
int main(int argc, char *argv[]) {
CallMemberMember<TemplateValue>();
}
これをビルドしようとすると、リンク エラーが発生します。
$ clang++ --std=c++11 repro_link_error.cc
Undefined symbols for architecture x86_64:
"TemplateValue::call_me", referenced from:
void CallMemberMember<TemplateValue>() in repro_link_error-9BE9gw.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
私は何を間違っていますか?