Boost/endian: арифметические типы не могут быть упакованы (не POD)? ⇐ 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?
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?
Мобильная версия