Error de referencia indefinido para miembro constexpr estático

Considera este código:

#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;
}

No se puede vincular (llvm clang, gcc 4.9, ambos en 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

La pregunta es ¿qué le pasa? Se puede arreglar porstatic_cast-En gA::kDefaultValue aint. O moviéndosekDefaultValue fuera deA. Ambos casos parecen ser feos. ¿Es esta otra forma de vincularlo?

Respuestas a la pregunta(2)

Su respuesta a la pregunta