2015-01-04 25 views
7

7.1.6.1/1 chứa các tuyên bố sau (tôi nhấn mạnh):Sự liên quan của tuyên bố này trong 7.1.6.1/1 trong Tiêu chuẩn C++ là gì?

Có hai cv-vòng loại, const và bấp bênh. Nếu một cv-vòng loại xuất hiện trong một decl-specifier-seq, các init-declarator-list của việc kê khai sẽ không có sản phẩm nào.

Mức độ liên quan của tuyên bố được in đậm ở trên là gì? Nói cách khác, có thể tạo ví dụ về loại cv-unqualified trong số từ chối-specifier-seq, trong đó init-declarationator-list của khai báo trống không?

Trả lời

11

chắc, hầu hết các định nghĩa lớp và enum tận dụng nó:

struct A { }; // valid 
const struct B { }; // invalid, const would have no meaning 
const struct C { } c { }; // valid 

Có gì khác được. Một init-declarator-list chỉ được sử dụng một cách đơn giản-khai, và cho rằng, tiêu chuẩn (C++ 11) khẳng định:

7 Khai báo [dcl.dcl]

3 Trong một đơn giản tuyên bố, các tùy chọn init-declarator-list thể được bỏ qua khi khai báo một lớp (khoản 9) hoặc liệt kê (7.2), có nghĩa là, khi decl-specifier-seq chứa hoặc là một lớp-specifier, một công phu-type-specifier với khóa học (9.1) hoặc enum-specifier.

+0

Tôi đã quá nhanh với câu trả lời của tôi - tuy nhiên, bạn có thể tìm ra điều gì khác không? Tôi đang đấu tranh. – Columbo

+0

Tôi không nghĩ có bất cứ điều gì khác. Trên thực tế, tôi không nghĩ rằng điều này nói bất cứ điều gì về int ngầm hoặc. Khai báo tham số hàm không có bất kỳ danh sách init-declarationator nào, và nếu chúng đã làm, câu trả lời của bạn sẽ gợi ý rằng 'void f (const int);' là khai báo không hợp lệ. – hvd

+0

Vâng, đó là lý do tại sao tôi đã xóa câu trả lời của mình, tôi chỉ biết về những sự kiện đó sau. :) – Columbo

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