Ist es möglich, mit Auto in C ++ 0x folgendes zu tun?

8

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,

    
AraK 16.12.2010, 23:40
quelle

1 Antwort

12

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.

    
Johannes Schaub - litb 17.12.2010, 07:26
quelle

Tags und Links