Почему это не компиляция? Инициализатор участника по умолчанию требуется до окончания класса в приложенииC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему это не компиляция? Инициализатор участника по умолчанию требуется до окончания класса в приложении

Сообщение Anonymous »

class ImageMngr
{
struct ImageImportSettings
{
bool no_compression = false;
};

static inline ImageImportSettings image_rules_list;
};
< /code>
ссылка на Godbolt. < /p>
Ошибка: < /p>
error: default member initializer for 'ImageMngr::ImageImportSettings::no_compression' required before the end of its enclosing class
16 | static inline ImageImportSettingsList image_rules_list;
< /code>
Это на Clang и GCC. MSVC компилирует это. C ++ 20 флагов установлены на True на всех трех версиях. Это ... < /p>
struct ImageImportSettings
{
bool no_compression = false;
};

class ImageMngr
{
static inline ImageImportSettings image_rules_list;
};
< /code>
работает, однако. < /p>
Кроме того, если я перехожу от: < /p>
static inline ImageImportSettings image_rules_list;
< /code>
к нестатической переменной: < /p>
ImageImportSettings image_rules_list;
< /code>
это компилируется. Это проблема с тем, что предыдущий класс еще не определен? Почему не статическая переменная работает? И почему это не определено? Похоже, это полностью определено.

Подробнее здесь: https://stackoverflow.com/questions/797 ... the-end-of
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»