Eric Lippert hat einen Artikel über geschrieben Warum keine var Felder? in C #. Ich war neugierig, können wir das in C ++ 0x machen? ex.
%Vor%Ich konnte mit dem letzten Entwurf keine Antwort finden, tut mir leid.
Danke,
Leider können Sie nicht. Die Spezifikation sagt bei 7.1.6.4/3 und folgt
Andernfalls wird der Typ der Variablen von ihrem Initialisierer abgeleitet. Der Name der deklarierten Variablen darf nicht im Initialisierungsausdruck erscheinen. Diese Verwendung von Auto ist zulässig, wenn Variablen in einem Block (6.3), im Namensraumbereich (3.3.6) und in einer for-init-Anweisung (6.5.3) deklariert werden.
Der automatische Typspezifizierer kann auch dazu verwendet werden, eine Variable in der Bedingung einer Auswahlanweisung (6.4) oder einer Iterationsanweisung (6.5) zu deklarieren, in der Typ-Spezifizierer-Reihenfolge in der Typ-ID oder dem Typ -id eines new-expression (5.3.4), in einer for-range-Deklaration und in der Deklaration eines statischen Datenmembers mit einem brace-or-equal-initializer, der innerhalb der member-specification einer Klassendefinition erscheint (9.4 .2).
Ein Programm, das auto in einem Kontext verwendet, der in diesem Abschnitt nicht explizit erlaubt ist, ist schlecht ausgebildet.
Ich bin nicht sicher, warum sie auto
für nicht-statische Datenmitglieder verbieten, es wäre ziemlich praktisch.
Tags und Links class c++ c++11 type-inference