Prior to C++11, only static const data members of
integral or enumeration type could have initializers
in the class definition. C++11 extends that to
floating point types (float, double) as well.
However, in order for such members to be initialized
in the class defintion, such members must either be
constexpr or non-static.