Ermittelt den Typ eines Typenamens oder Ausdrucks

7

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?

    
Matteo Monti 19.07.2016, 14:58
quelle

1 Antwort

19
%Vor%

In diesem Code kann (x) * detail_typeOrName::probe{} auf zwei Arten geparst werden:

  • Wenn x eine Variable ist, wird x mit der Instanz von probe multipliziert.
  • Wenn 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.

Live auf Coliru

    
Quentin 19.07.2016, 15:18
quelle

Tags und Links