Неопределенная ошибка ссылки для статического члена constexpr
Рассмотрим этот код:
#include <vector>
struct A {
static constexpr int kDefaultValue = -1;
std::vector<int> v;
A(int n): v(n, A::kDefaultValue) {}
};
int main() {
A(10);
return 0;
}
Это не в состоянии связать (llvm clang, gcc 4.9, оба на OS X):
Undefined symbols for architecture x86_64:
"A::kDefaultValue", referenced from:
A::(int) in main.cpp.o
ld: symbol(s) not found for architecture x86_64
Вопрос в том, что с ним не так? Это может быть исправленоstatic_cast
-нуюA::kDefaultValue
вint
, Или двигаяkDefaultValue
снаружиA
, Оба случая кажутся безобразными. Это еще один способ сделать ссылку?