Was ist declltype und wie wird es verwendet?

9

Ich konnte keine gute Erklärung für decltype finden. Bitte erzähle mir als Anfänger, was es macht und warum es nützlich ist.

Zum Beispiel lese ich ein Buch, das die folgende Frage stellte. Kann mir jemand die Antwort erklären und warum, neben einigen guten (Anfänger-) Beispielen?

  

Was wäre der Typ jeder Variablen und welcher Wert hätte jede Variable, wenn der Code beendet ist?

%Vor%

Eine Zeile-für-Zeile-Erklärung wäre sehr hilfreich.

    
Olpers 15.09.2013, 17:19
quelle

1 Antwort

19

decltype ist eine Möglichkeit, einen Typ anzugeben: Sie geben ihm einen Ausdruck , und decltype gibt Ihnen einen Typ zurück, der dem Typ des Ausdrucks entspricht. Insbesondere ist decltype(e) der folgende Typ:

  • Wenn e der Name einer Variablen ist, d. h. ein "id-Ausdruck", dann ist der resultierende Typ der Typ der Variablen.

  • Andernfalls, wenn e zu einem Lvalue vom Typ T ausgewertet wird, ist der resultierende Typ T & , und wenn e zu einem rvalue vom Typ T ausgewertet wird, dann der resultierende Typ ist T .

Wenn Sie diese Regeln mit Regeln für kollabierende Referenzen kombinieren, können Sie decltype(e) && , das immer eine "geeignete" Referenz ist, sinnvoll einsetzen. (C ++ 14 fügt auch decltype(auto) hinzu, um Ihnen den Typabzug von auto kombiniert mit der Wertkategoriesemantik von decltype zu geben.)

Beispiele:

%Vor%

Es lohnt sich vielleicht, den Unterschied zwischen auto und decltype : auto bei Typen und decltype bei Ausdrücken zu betonen.

Sie sollten decltype in der "täglichen" Programmierung nicht sehen oder verwenden. Es ist am nützlichsten in generischem (templated) Bibliothekscode, wo der fragliche Ausdruck nicht bekannt ist und von einem Parameter abhängt. (Im Gegensatz dazu kann auto großzügig überall verwendet werden.) Kurz gesagt, wenn Sie neu in der Programmierung sind, werden Sie wahrscheinlich decltype für einige Zeit nicht brauchen.

    
Kerrek SB 15.09.2013, 17:33
quelle

Tags und Links