Come negli stati delle domande, so che ci saranno degli attributi per gli spazi dei nomi e gli enumeratori in C++ 17. In che modo questo influenzerà il nostro codice? Quali sono questi attributi e cosa ci permetteranno di fare? Non sono riuscito a trovare alcuna buona risorsa per comprendere questa nuova funzionalità.Perché C++ 17 aggiunge attributi a domini ed enumeratori?
8
A
risposta
10
Attualmente, se si stesse per svalutare un particolare valore enum, è necessario fare affidamento sulle estensioni del compilatore. Per esempio, in clang, è necessario specificare enum deprecato Valori seguente modo:
enum OperationMode {
OM_Invalid,
OM_Normal,
OM_Terrified __attribute__((deprecated)),
OM_AbortOnError __attribute__((deprecated)) = 4
};
Una volta che gli attributi enumerazioni e spazi dei nomi di supporto, ci sarà un modo cross-compilatore standard di implementare una funzionalità simile:
enum OperationMode {
OM_Invalid,
OM_Normal,
OM_Terrified [[deprecated("re-named to invalid")]],
OM_AbortOnError [[deprecated("exceptions are used instead")]] = 4
};
Altri attributi uno giorno potrebbero trovare rilevanza per gli spazi dei nomi e dei valori enumerati, ma come lo scrittore proposta afferma:
Questo documento propone di risolvere questi problemi, consentendo attributi a essere specificato su enumeratori e spazi dei nomi ed estende l'attributo [[deprecato]] da applicare a queste entità, come era originariamente previsto per .
Problemi correlati
- 1. Rails - aggiunge gli attributi e aggiunge all'array
- 2. Perché operator() cambia per std :: function in C++ 17?
- 3. C++ 17 make_optional constexpr-ness
- 4. Dove posso imparare i dettagli degli enumeratori in C#?
- 5. Perché il preprocessore C/C++ aggiunge uno spazio qui?
- 6. Attributi invertiti in oggetto certificato ed emittente
- 7. C++ 11 Accesso agli enumeratori senza ambito con nome qualificato
- 8. Resa F #! operatore - Implementazione ed eventuali equivalenti C#
- 9. C# aggiunge un livello a un'immagine
- 10. Aggiunge dinamicamente proprietà C# a Runtime
- 11. design, repository ed entità miste gestite da domini
- 12. Il C# trarrebbe vantaggio dalle distinzioni tra tipi di enumeratori, come gli iteratori C++?
- 13. Come funzionano gli enumeratori in Ruby 1.9.1?
- 14. Manipolazione con più domini a Flask
- 15. Convertire un formato di data stringa da "17-Nov-2011" a "11/17/11"
- 16. C# Do-Loop che non aggiunge caratteri a una stringa
- 17. Perché esiste una proposta di libreria di rete per C++ 14/17?
- 18. Perché gcc aggiunge simboli a build non di debug?
- 19. Perché non si aggiunge dinamicamente un metodo `__call__` a un'istanza?
- 20. Perché PHP aggiunge "\ r \ n" a una stringa vuota?
- 21. Perché F # non consente più attributi in cui C# fa?
- 22. Perché jQuery non aggiunge automaticamente il callback JSONP?
- 23. C# ottimizzazioni ed effetti collaterali
- 24. Esegui script SQL dall'applicazione C# su domini
- 25. Bash: Perché echo aggiunge spazio extra?
- 26. C# ed Excel interop
- 27. Erlang - C ed Erlang
- 28. Informazioni su C# ed Eredità
- 29. ordinazione 01:17 da Perfect coppie quadrati
- 30. Etichetta C# AutoSize aggiunge padding
Bene, ora è possibile deprecare uno spazio dei nomi o enum con attributi. Questi attributi sono gli stessi che esistono ora. – chris
E questo è tutto? Sarà disponibile solo la deprecazione di namespace/enum? – DawidPi
Se vuoi standardizzare nuovi attributi, vai a proporli. I compilatori come GCC e Clang supportano più dei pochi standard. Ad ogni modo, puoi leggere la [proposta] (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4196.html) per motivi di motivazione. Devo anche modificare il mio commento precedente; Ho detto enumerazioni, ma avrei dovuto dire degli enumeratori. – chris