Сгенерированные FlatBuffers структуры C ++ имеют явное выравнивание и заполнение, чтобы гарантировать, что они соответствуют сериализованному формату данных, а не позволяют компилятору выбирать их.
Я предполагаю, что здесь происходит, что std::optional
по сути является { T t; bool is_present; }
, и поскольку T
требует определенного выравнивания c, родительская структура теперь также требует его, и bool
требует заполнения после него.
Так что это, вероятно, доброкачественно и может вероятно, чтобы заставить замолчать. Я бы рекомендовал делать это только для этого предупреждения, хотя отключать его только для кода, который использует FlatBuffers и std::optional
.