Boost/endian: арифметические типы не могут быть упакованы (не POD)?C++

Программы на C++. Форум разработчиков
Ответить
Гость
 Boost/endian: арифметические типы не могут быть упакованы (не POD)?

Сообщение Гость »


Boost/endian определяет макросы, которые гарантируют, что его арифметические типы соответствуют POD, как описано в документации. Однако, сколько бы я ни старался, этот MWE

#define BOOST_ENDIAN_NO_CTORS #define BOOST_ENDIAN_FORCE_PODNESS #include struct __attribute__((упаковано)) Foo{ boost::endian::little_uint32_t a; }; выдает это предупреждение (с использованием g++ 11.3):

предупреждение: игнорирование упакованного атрибута из-за распакованного поля, не относящегося к POD, ‘boost::endian::little_uint32_t Foo::a’ 5 | boost::endian::little_uint32_t a; | ^ Как сделать boost::endian::little_uint32_t действительно POD?
Ответить

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

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

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

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

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