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://wg21.link/p1787>: CWG607 is resolved by looking up unqualified names in a mem-initializer-id from outside the parameter scope. Wording: Lookup for an unqualified name in a mem-initializer-id ignores the constructor’s function parameter scope. ([class.base.init]/2) Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D147590 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 @@ -3683,7 +3683,7 @@ <td><a href="https://wg21.link/cwg607">607</a></td> <td>CD6</td> <td>Lookup of <I>mem-initializer-id</I>s</td> - <td class="none" align="center">Unknown</td> + <td class="full" align="center">Yes</td> </tr> <tr id="608"> <td><a href="https://wg21.link/cwg608">608</a></td> Index: clang/test/CXX/drs/dr6xx.cpp =================================================================== --- clang/test/CXX/drs/dr6xx.cpp +++ clang/test/CXX/drs/dr6xx.cpp @@ -100,6 +100,34 @@ #endif } +namespace dr607 { // dr607: yes +namespace example1 { +struct Y {}; + +template <typename T> struct X : public virtual Y {}; + +template <typename T> class A : public X<T> { + template <typename S> A(S) : S() {} +}; + +template A<int>::A(Y); +} // namespace example1 + +namespace example2 { +namespace N { +struct B { + B(int); +}; +typedef B typedef_B; +struct D : B { + D(); +}; +} // namespace N + +N::D::D() : typedef_B(0) {} +} // namespace example2 +} // namespace dr607 + namespace dr608 { // dr608: yes struct A { virtual void f(); }; struct B : A {};
Index: clang/www/cxx_dr_status.html =================================================================== --- clang/www/cxx_dr_status.html +++ clang/www/cxx_dr_status.html @@ -3683,7 +3683,7 @@ <td><a href="https://wg21.link/cwg607">607</a></td> <td>CD6</td> <td>Lookup of <I>mem-initializer-id</I>s</td> - <td class="none" align="center">Unknown</td> + <td class="full" align="center">Yes</td> </tr> <tr id="608"> <td><a href="https://wg21.link/cwg608">608</a></td> Index: clang/test/CXX/drs/dr6xx.cpp =================================================================== --- clang/test/CXX/drs/dr6xx.cpp +++ clang/test/CXX/drs/dr6xx.cpp @@ -100,6 +100,34 @@ #endif } +namespace dr607 { // dr607: yes +namespace example1 { +struct Y {}; + +template <typename T> struct X : public virtual Y {}; + +template <typename T> class A : public X<T> { + template <typename S> A(S) : S() {} +}; + +template A<int>::A(Y); +} // namespace example1 + +namespace example2 { +namespace N { +struct B { + B(int); +}; +typedef B typedef_B; +struct D : B { + D(); +}; +} // namespace N + +N::D::D() : typedef_B(0) {} +} // namespace example2 +} // namespace dr607 + namespace dr608 { // dr608: yes struct A { virtual void f(); }; struct B : A {};
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits