2014-11-22 13 views
7

Tôi tin rằng đây là lỗi nhỏ nhất trong tiêu chuẩn C++ 11. Trong [dcl.dcl] ta có:Tôi tin rằng đây là lỗi nhỏ nhất trong tiêu chuẩn C++ 11

đơn giản tuyên bố:

                    decl-specifier-seq optinit-declarator- liệt kê chọn;

decl-specifier-seq không thể là tùy chọn.

Ví dụ đoạn mã dưới đây không biên dịch:

x; 

Nếu tôi đúng ở đây, sau đó đầu đoạn §8.3/1 nên cũng được thay đổi:

Từ:

Danh sách người khai báo xuất hiện sau tùy chọn (khoản 7) decl-specifier-seq (7.1).

Để:

Một danh sách các declarators xuất hiện sau khi một decl-specifier-seq (7.1).

+4

Vì chúng tôi không ở vị trí thay đổi tiêu chuẩn, bạn muốn chúng tôi làm gì về điều này? –

+1

@MikeW Tôi có thể sai. –

+2

Ai đang bỏ phiếu bầu cử này chủ yếu dựa trên ý kiến? – Columbo

Trả lời

11

Quá dài cho một lời nhận xét

Trong khoản 7, khoản 3:

Trong một đơn giản tuyên bố, các tùy chọn init-declarator-list có thể bỏ qua chỉ khi khai báo một lớp (Điều 9) hoặc điều tra (7.2), nghĩa là, khi từ chối-specifier-seq chứa đẳng cấp specifier, một xây dựng-type-specifier với một lớp-key (9.1), hoặc một enum-specifier. Trong những trường hợp này và bất cứ khi nào một đẳng cấp specifier hoặc enum-specifier hiện diện trong decl-specifier-seq, số nhận dạng trong những specifiers là một trong những cái tên được công bố bởi tờ khai (như tên lớp học, enum-name hoặc điều tra viên, tùy thuộc vào cú pháp ). Trong những trường hợp như vậy và ngoại trừ việc khai báo một trường bit không có tên là (9.6), thì decl-specifier-seq sẽ giới thiệu một hoặc tên khác vào chương trình hoặc sẽ redeclare một tên được giới thiệu bởi một tuyên bố trước đó .

Và tại khoản 7, khoản 9

Chỉ trong tờ khai chức năng cho nhà thầu, hủy, và gõ chuyển đổi mà decl-specifier-seq có thể được bỏ qua.

+3

Điều này không nói bất cứ điều gì về một loại thiếu trong một tuyên bố. –

+0

@ DieterLücking Không, bạn in đậm trong trường hợp * init-declarationator-list * có thể được bỏ qua, không phải trong trường hợp * decl-specifier-seq * có thể bị bỏ qua. – hvd

+1

Và chú thích chân trang 89 nói 'Quy tắc“ int ngầm ”của C không còn được hỗ trợ.' –

Các vấn đề liên quan