constexpr の間違った使い方。

例えば下記の様な書き方。

[コード]

template<typename T>
struct X{
    //error: constexpr static data member 'value' must have an initializer
    static constexpr T value;
};

template<typename T>
constexpr T X<T>::value = {};


constexpr が使えるとうっかり上記のような書き方をしたくなるんですが、残念ながらこれはコンパイルエラーになります。
constexpr を使いこなすにはどこに constexpr を付けるべきなのかしっかりと見極める必要がありますね。
ちなみに Boost.TypeErasure でも同様の書き方がされていてコンパイルエラーになっていました。