In C++ 17, ich bin ein Spielzeug vm implementieren. Ich verwende eine std :: variant() als Elemente des VM-Stacks. Ich brauche Saiten auf den Stapel zu schieben, die verschiedenen Arten von Operanden darstellen, nämlich:std :: Variante speichern mehrere String-Typen und sagen, sie auseinander
- ein Variablenname
- eine Kennung
- eine Zeichenfolge in Anführungszeichen
Alle drei Arten von Operanden sein können vom Typ std :: string_view. Die Variante wird wie so definiert:
std::variant<bool, int, double, std::string_view>;
Um über die tatsächliche Art der String-Ansicht zu unterscheiden, ist der richtige Weg, so etwas zu tun?
Oder ist es möglich, die String-Art direkt bei der Variante zu codieren. Einer der Vorteile, es auf der Variantenebene zu tun, besteht darin, dass der Typ durch Aufrufen von std :: variant :: index() erhalten werden kann. Ansonsten muss ich für .index überprüfen() == 3 std :: get < 3> (var) und dann den Typ überprüfen, ob seine Schnur, Symbol zu sehen, oder var.