Betrachten Sie das folgende Beispiel. Irgendwo in meinem Code ist ein Name x
. Ich habe keine Ahnung, ob x
ein Typ oder ein Objekt ist (es könnte beides sein). Gibt es eine Möglichkeit, den Typ von x
zu erhalten, d. H.% Co_de% selbst, wenn x
ein Typ oder x
ist, wenn decltype(x)
ein Objekt ist?
Ich habe versucht, etwas so Triviales wie
zu tun %Vor% Dies führt jedoch zu einem Fehler, da x
kein Ausdruck ist. Gibt es einen Ersatz dafür?
Ich möchte etwas wie:
%Vor%Wie kann ich das schaffen?
In diesem Code kann (x) * detail_typeOrName::probe{}
auf zwei Arten geparst werden:
x
eine Variable ist, wird x
mit der Instanz von probe
multipliziert. x
ein Typ ist, ist dies die Instanz von probe
dereferenziert und in X
umgewandelt. Durch sorgfältiges Überladen von Operatoren werden beide Interpretationen gültig gemacht, und beide geben den Typ zurück, nach dem wir suchen.