Niedawno answered a question czynienia z naruszeniem draft C++14 standard: N4140 sekcji 3.3.7
Class zakresu ust 1
reguły 2
który mówi:Czy przepis 3 w sekcji 3.3.7/1 z N3936 jest zbędny?
nazwę N stosowany w klasie S odnoszą się do tej samej deklaracji w jego kontekście i kiedy ponownie ocenione w wypełnionym zakresie S. nr diagnostyka jest wymagana w przypadku naruszenia tej zasady.
w regule czasu 3
wydawał również istotne i mówi:
przypadku zmiany kolejności zgłoszeń członków w klasie daje alternatywną ważnego programu podstawie (1) i (2), program jest chory -formułowany, nie wymaga diagnostyki .
Moja pierwsza reakcja jest taka, że zasada 3
wydaje się zbędne i jest naprawdę tylko wyjaśnienie reguły 2
i nie obejmuje żadnych przypadków dotychczas nieuwzględnione. Zmiana kolejności, która skutkuje alternatywnym ważnym programem, również musiałaby naruszać regułę 2
.
Czy zasada 3
jest zbędna, czy jest kilka przypadków skrajnych, które wymagają obu reguł?
Nie zgadzam się z twierdzeniem, że ostatni przykład kodu jest niepożądany. Może nie najlepszy styl, ale pisanie programów w dużych wymaga, aby kod lokalny był w pewnym stopniu izolowany od zmian w pozostałej części programu. Wymaganie, aby ta klasa zadeklarowała 'v' jako' char v [X :: i]; ', aby była dobrze uformowana, wydaje się być uciążliwa. Kiepski styl lub nie, oczywiście nie zgadzam się, że program powinien mieć niezdefiniowane zachowanie ("źle sformułowany, NDR"). – Casey
@Casey Czy zgadzasz się, że pierwszy przypadek jest niepożądany? –
Zgadzam się z tą odpowiedzią. –