Почему статический член constexpr (типа class) требует определения?

==> Смотрите полный код и компиляцию наcoliru.

у меня естьLiteralType заполнение классаconstexpr требования:

struct MyString
{
    constexpr MyString(char const* p, int s) : ptr(p), sz(s) {}
    constexpr char const* data() const { return ptr; }
    constexpr int         size() const { return sz;  }

    char const *ptr = 0;
    int  const  sz  = 0;
};

Я использую это какconstexpr static переменная-член:

struct Foo
{
    int size() { return str_.size(); }

    constexpr static MyString str_{"ABC",3};
};

int main()
{
  Foo foo;
  return ! foo.size();
}

Но компоновщик говорит:
(Clang-3.5 и GCC-4.9)

undefined reference to `Foo::str_'

Я должен определитьconstexpr static член!
(Я не указываю параметры конструктора)

constexpr MyString Foo::str_;

Однако еслиconstexpr static участник былint член не должен быть определен вне определения класса. Это мое понимание, но я не уверен ...

Вопросы:Зачемint не нужно определять вне объявления класса, ноMyString требует этого?Есть ли недостаток, чтобы определитьconstexpr static член в заголовочном файле?
(Я предоставляю свою библиотеку только в качестве заголовочных файлов)

Ответы на вопрос(1)

Ваш ответ на вопрос