Можно ли объявить с инициализацией static переменную типа double/float и производных внутри класса?
Если да, то каким способом? Если нет, то почему?
Ответ
Вы можете создавать константные статически члены класса со спецификатором constexpr и инициализировать их внутри определения класса.
Например
#include
struct A
{
static constexpr double d = 10.15;
};
constexpr double A::d;
int main()
{
A a;
std::cout << a.d << std::endl;
return 0;
}
Ранее этого нельзя было делать, так как тип double разными компиляторами представлялся по-разному и более того было расхождение между препроцессорами и компиляторами, как они представляют тип double
Вот, что, например, пишет Страуструп в своем предложении по включению в стандарт спецификатора constexpr
Traditionally, evaluation of floating-point constant expression at
compile-time is a thorny issue
Комментариев нет:
Отправить комментарий