Recentemente ho answered a question che fare con una violazione di draft C++14 standard: N4140 sezione 3.3.7
Classe portata paragrafo 1
regola 2
che dice:La regola 3 nella sezione 3.3.7/1 di N3936 è ridondante?
Un nome N utilizzato in una classe S si riferiscono alla stessa dichiarazione nel suo contesto e quando rivalutato nell'ambito di applicazione di S. No diagnostico è richiesto per una violazione di questa regola.
al momento pronunciarsi 3
sembrava anche rilevante e dice:
Se riordino dichiarazioni di membro in una classe produce un programma alternativo valido punto (1) e (2), il programma è malato -formato, nessuna diagnostica è richiesta .
La mia reazione iniziale è che regola 3
sembra ridondante ed è in realtà solo un chiarimento della regola 2
e non copre tutti i casi non ancora coperti. Un riordino che risulta in un programma valido alternativo dovrebbe anche violare la regola 2
.
Quindi la regola 3
è ridondante oppure esistono casi limite che richiedono entrambe le regole?
Non sono d'accordo con l'affermazione che l'ultimo esempio di codice non è desiderabile. Potrebbe non essere il miglior stile, ma scrivere programmi nel grande richiede che il codice locale sia isolato in una certa misura dalle modifiche al resto del programma. Richiedere a questa classe di dichiarare 'v' come' char v [X :: i]; 'essere ben formati sembra oneroso. Povero stile o no, non sono certo d'accordo sul fatto che il programma debba avere un comportamento indefinito ("malformato, NDR"). – Casey
@Casey Sei d'accordo sul fatto che il primo caso non sia desiderabile? –
Sono d'accordo con questa risposta. –