Possiamo avere una classe locale definita all'interno di una funzione, ma questa classe non può essere un modello che è un po 'noioso e incoerente. C'è qualche aggiornamento su quello in C++ 0x standard?Modello di classe locale
risposta
Sì. In realtà questa modifica alle regole è ciò che rende possibili le espressioni Lambda poiché un'espressione Lambda crea un tipo locale senza nome.
Spiacente, ho letto male la tua domanda. Ho pensato che stavi parlando di usare una classe locale come parametro del template. Questo non era permesso in C++ 98 e C++ 03 ma funzionerà in C++ 0x.
Come per la tua domanda attuale, C++ 0x non cambierà nulla di tutto questo.
Sinceramente non vedo alcun motivo per consentire "modelli di classi locali della funzione". Il supporto per "modelli di classi locali di funzioni" è una funzionalità che probabilmente interessa solo a una manciata di persone. E scrivere modelli di classe al di fuori delle funzioni è un sostituto accettabile per questo. Questo ovviamente non mette abbastanza pressione sui produttori di compilatori, non importa quanto sia complicato implementare una funzione del genere. I produttori di compilatori sono probabilmente più preoccupati di implementare altre funzionalità di C++ 0x.
Ma capisco il tuo punto. Può sembrare un'irregolarità non necessaria della lingua. Se si cura fortemente di questa funzionalità, è possibile scrivere una proposta formale e inviarla al comitato di standardizzazione del C++ in circa due anni quando è probabile che accetteranno proposte per "C++ 1y".
- 1. Modello di classe nel modello di classe in C++
- 2. modello di classe costruttore
- 3. istanza modello di classe
- 4. Modello di funzione in classe non modello
- 5. Salvataggio di un modello nella memoria locale
- 6. Classe non è un modello di classe
- 7. Costruttore di copia modello C++ su modello classe
- 8. Classe locale C++ come functor
- 9. Problema di accesso nella classe locale
- 10. static_assert dipende modello di classe
- 11. Modello di ereditarietà multipla Classe
- 12. Breezejs - modello per interrogare la cache locale
- 13. Impossibile chiamare una funzione membro modello di una classe modello da un'altra classe modello
- 14. C++: modello classe polimerica
- 15. Specializzazione incompleta classe modello
- 16. restrizione classe modello
- 17. Codice Matlab per modello binario locale
- 18. Dichiarazione di un modello di classe che eredita da un modello di classe diverso in C++
- 19. Punto di istanziazione di una classe modello
- 20. Specializzazioni modello di classe di gruppo
- 21. Template Method di classe modello di specializzazione
- 22. Collegamento di istanza modello di classe esplicita
- 23. È una classe locale in un metodo di una classe un amico di questa classe?
- 24. Perché una classe modello derivata non ha accesso agli identificatori di una classe modello di base?
- 25. Implementare la classe astratta come classe locale? pro e contro
- 26. Come utilizzare un'altra classe come specializzazione del modello di classe
- 27. Accesso alla classe base typedef nel modello di classe derivata
- 28. Come abilitare la classe locale PHP
- 29. Risolvere percorso di file locale da Twig nome del modello
- 30. specializzazioni modello di classe con funzionalità condivise
Al contrario, non vedo un motivo per non consentire una classe modello locale. Non ho idea del perché sia disabilitato nello standard C++ – valdo
@valdo: hai mai scritto un compilatore? o sfogliare il codice di un compilatore? Dal punto di vista dell'usabilità, potrebbe essere bello, ma dal punto di vista di chi scrive il compilatore aggiunge una quantità di complessità empia per una funzionalità di nicchia: non ne vale la pena. –
@ Matthieu M: Probabilmente non sarebbe difficile se lo progettaste da zero, ma questo è fondamentalmente un problema precedente. L'ambito delle funzioni deriva da C e il codice è probabilmente indipendente da quello degli spazi dei nomi. Ma se aveste implementato le funzioni come una sorta di spazio dei nomi, tali funzionalità sarebbero venute gratuitamente. – MSalters