2016-02-12 5 views
5

Grazie a C++ 11 abbiamo enumerati con ambito e fortemente digitati.
Ma ci sono piani per ottenere anche questo allungabile?Piani per Enum estendibili

Qualcosa di simile a questo:

enum class OneTwoThree : char {one=1, two=2, three=3}; 
enum class Four : char {four=4} extends OneTwoThree; 
+0

Per quanto ne so, no. – Vitaliy

+1

Se non sbaglio, la dichiarazione 'enum class' dice solo di proibire conversioni implicite tra valori enumerati/interi/ecc., In realtà non causa l'enum che rappresenta un tipo completo come in Java/Python/eccetera. Per non parlare del fatto che la sintassi per la sottoclasse è già utilizzata per indicare il tipo di dati sottostante e 'extends' non è una parola chiave C++, e iirc al comitato standard C++ non ama aggiungere nuove parole chiave. Se hai davvero bisogno di un tipo enumerato sottoclassato in C++, è meglio usare un modello con argomenti variadici, che ti darà tutta la piacevolezza in fase di compilazione delle enumerazioni – JAB

+4

@JAB: _Complete type_ ha un significato specifico in C++ e * * ogni ** 'enum' è un tipo _complete_. 'void' è un esempio di un tipo che non è completo. – MSalters

risposta

3

Non sembra così.

Nulla in C++ avviene senza carta. Convenientemente, è possibile visualizzare tutti i documenti online here e seguire insieme una discussione più informale nei gruppi di studio per l'evoluzione della lingua sullo official forums (il gruppo "Proposte future" è probabilmente quello a cui si sarebbe interessati per le modifiche alle enumerazioni) .

Per i giornali, una ricerca sommaria dei titoli per i documenti indietro fino al 2011 rivela il seguente argomento:

Nessuno di questi documenti comprende meccanismi per l'aggiunta di valori alle enumerazioni esistenti. Allo stesso modo, una ricerca rapida di "enum" nel gruppo Future Proposals produce un mucchio di argomenti, nessuno dei quali sembra riguardare l'aggiunta di nuovi valori a un'enumerazione da qualche altra parte rispetto alla definizione iniziale dell'enumerazione.


Sono stati fatti diversi tentativi per implementare questo tipo di funzionalità senza libreria o chagnes linguistico; questions exploring the subject already exist on StackOverflow e potrebbe essere utile leggere per te.

+0

Grazie per la tua ampia risposta. – ttuna