Endill created this revision. Endill added a reviewer: clang-language-wg. Herald added a project: All. Endill requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits.
P1787 <https://reviews.llvm.org/P1787>: //CWG600 is resolved by explaining that accessibility affects naming a member in the sense of the ODR.// Wording: see changes to [class.access] p1 and p4. Additional references: basic.def.odr/8 <http://eel.is/c++draft/basic.def.odr#8.sentence-2>: //A function is odr-used if it is named by a potentially-evaluated expression or conversion.// Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D139173 Files: clang/test/CXX/drs/dr6xx.cpp clang/www/cxx_dr_status.html Index: clang/www/cxx_dr_status.html =================================================================== --- clang/www/cxx_dr_status.html +++ clang/www/cxx_dr_status.html @@ -3642,7 +3642,7 @@ <td><a href="https://wg21.link/cwg600">600</a></td> <td>CD6</td> <td>Does access control apply to members or to names?</td> - <td class="none" align="center">Unknown</td> + <td class="full" align="center">Yes</td> </tr> <tr id="601"> <td><a href="https://wg21.link/cwg601">601</a></td> Index: clang/test/CXX/drs/dr6xx.cpp =================================================================== --- clang/test/CXX/drs/dr6xx.cpp +++ clang/test/CXX/drs/dr6xx.cpp @@ -3,6 +3,21 @@ // RUN: %clang_cc1 -std=c++14 %s -verify -fexceptions -fcxx-exceptions -pedantic-errors -fno-spell-checking // RUN: %clang_cc1 -std=c++17 %s -verify -fexceptions -fcxx-exceptions -pedantic-errors -fno-spell-checking // RUN: %clang_cc1 -std=c++20 %s -verify -fexceptions -fcxx-exceptions -pedantic-errors -fno-spell-checking +// RUN: %clang_cc1 -std=c++2b %s -verify -fexceptions -fcxx-exceptions -pedantic-errors -fno-spell-checking + +namespace dr600 { // dr600: yes +struct S { + void f(int); + +private: + void f(double); // expected-note {{declared private here}} +}; + +void g(S *sp) { + sp->f(2); + sp->f(2.2); // expected-error {{is a private member}} +} +} // namespace dr600 namespace std { struct type_info {};
Index: clang/www/cxx_dr_status.html =================================================================== --- clang/www/cxx_dr_status.html +++ clang/www/cxx_dr_status.html @@ -3642,7 +3642,7 @@ <td><a href="https://wg21.link/cwg600">600</a></td> <td>CD6</td> <td>Does access control apply to members or to names?</td> - <td class="none" align="center">Unknown</td> + <td class="full" align="center">Yes</td> </tr> <tr id="601"> <td><a href="https://wg21.link/cwg601">601</a></td> Index: clang/test/CXX/drs/dr6xx.cpp =================================================================== --- clang/test/CXX/drs/dr6xx.cpp +++ clang/test/CXX/drs/dr6xx.cpp @@ -3,6 +3,21 @@ // RUN: %clang_cc1 -std=c++14 %s -verify -fexceptions -fcxx-exceptions -pedantic-errors -fno-spell-checking // RUN: %clang_cc1 -std=c++17 %s -verify -fexceptions -fcxx-exceptions -pedantic-errors -fno-spell-checking // RUN: %clang_cc1 -std=c++20 %s -verify -fexceptions -fcxx-exceptions -pedantic-errors -fno-spell-checking +// RUN: %clang_cc1 -std=c++2b %s -verify -fexceptions -fcxx-exceptions -pedantic-errors -fno-spell-checking + +namespace dr600 { // dr600: yes +struct S { + void f(int); + +private: + void f(double); // expected-note {{declared private here}} +}; + +void g(S *sp) { + sp->f(2); + sp->f(2.2); // expected-error {{is a private member}} +} +} // namespace dr600 namespace std { struct type_info {};
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits