std::variant get type at index
-
Hallo.
Ist es möglich von einem Variant an einem bestimmten index den Datentypen zu ermitteln
Folgender Code liefert mir den datentyp bool& zurück.
Ganz verstehen tue ich noch nicht wieso ich nen reference type bekomme.
Ist es möglich hier irgendwie den typ bool zu ermitteln, ohne die reference?using valuetype = std::variant<bool, float, double, int>; valuetype value; using dt = decltype(std::get<0>(value));
-
Du bekommst eine Referenz, weil
decltype
in diesem Fall einfach den unmittelbaren Typen des Operanden liefert, undstd::get<..>(...)
ja eine Referenz auf das entsprechende Objekt ergibt.Schau dir std::variant_alternative an.
-
@Columbo sagte in std::variant get type at index:
Du bekommst eine Referenz, weil
decltype
in diesem Fall einfach den unmittelbaren Typen des Operanden liefert, undstd::get<..>(...)
ja eine Referenz auf das entsprechende Objekt ergibt.Schau dir std::variant_alternative an.
Habe ich auch gerade gefunden:
std::remove_reference_t<decltype(std::get<0>(value))>;
Was ist da nun besser?
-
@booster sagte in std::variant get type at index:
Was ist da nun besser?
Da
variant
keine Referenzen halten darf, ist Deine Variante wahrscheinlich korrekt. Aber viel umständlicher.
-
@Columbo
Danke würde beides funktionieren. Aber du hast recht mit std::alternative ist der code kürzer