Не компилируется код:
class Foo
{
private:
static const double Val = 12.3;
};
int main()
{
return 0;
}
Ошибка:
'Foo::Val': a static data member with an in-class initializer must have non-volatile const integral type or be specified as 'inline'
Компилировал в VS 2019 Community со стандартом c++17 и c++14. g++ выдает тоже самое. Насколько Я знаю, начиная с C++11 ограничение на не интегральные типы было снято. В чем проблема?
Стандарт С++17, 11.3.8.2.3.
If a non-volatile non-inline const static data member is of integral or enumeration type, its declaration in the class definition can specify a brace-or-equal-initializer in which every initializer-clause that is an assignment-expression is a constant expression (7.7).
Так что - только интегральные типы.
Но вы можете написать
static constexpr double Val = 12.3;
или
static inline const double Val = 12.3;
и все получится.
"По-моему, так" (с) Пух
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Как можно подключить библиотеку SFML к Visual Studio таким образом, чтобы не приходилось подключать библиотеку к каждому проекту, а так, чтобы можно...
Я понял, что скорее всего проблема либо на стадии создания массива Pixels, то есть я как-то неправильно обращаюсь к элементам динамического массива,...
В одномерном массиве, состоящем из п целых элементов, вычислить: 1Номер максимального элемента массива; 2