compiler error : get_if<> with a variant enum ?

Patrick Williams patrick at
Tue Oct 18 10:37:15 AEDT 2022

On Mon, Oct 17, 2022 at 08:13:20AM +0000, Francine Sauvage wrote:
> const auto* flexible_module_type = std::get_if<sdbusplus::xyz::openbmc_project::Inventory::Item::server::FlexibleModule::ModuleTypes>(&flexible_prop_map_iterator->second);
> ** I tried to replace auto with sdbusplus::xyz::openbmc_project::Inventory::Item::server::FlexibleModule::ModuleTypes>
> No success.
> Error is :
> bmcweb/1.0+git1.0-r0/recipe-sysroot/usr/include/c++/10.2.0/variant:1150:42: error: static assertion failed: T must occur exactly once in alternatives
> static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,

What type is `flexible_prop_map_iterator->second`?  It seems likely it
is a variant that doesn't have the enumeration type in the list of
contained types.  "T must occur exactly one in alternatives" seems to be
saying that `ModuleTypes` wasn't part of the underlying variant types.

Patrick Williams
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <>

More information about the openbmc mailing list