File tree 3 files changed +46
-3
lines changed
3 files changed +46
-3
lines changed Original file line number Diff line number Diff line change @@ -19,7 +19,7 @@ decltype(return_T<B<int>>())* b;
19
19
#endif
20
20
} // namespace cwg1110
21
21
22
- namespace cwg1111 { // cwg1111: 3.2
22
+ namespace cwg1111 { // cwg1111: partial
23
23
namespace example1 {
24
24
template <typename > struct set ; // #cwg1111-struct-set
25
25
@@ -57,6 +57,48 @@ void baz() {
57
57
a.operator A ();
58
58
}
59
59
} // namespace example2
60
+
61
+ namespace example3 {
62
+ struct A {
63
+ operator int ();
64
+ } a;
65
+ void foo () {
66
+ typedef int T;
67
+ a.operator T (); // T is found using unqualified lookup
68
+ // after qualified lookup in A fails.
69
+ }
70
+ } // namespace example3
71
+
72
+ namespace example4 {
73
+ struct A {
74
+ typedef int T; // #cwg1111-A-T
75
+ operator T ();
76
+ };
77
+ struct B : A {
78
+ operator T ();
79
+ } b;
80
+ void foo () {
81
+ b.A ::operator T (); // FIXME: qualified lookup should find T in A.
82
+ // expected-error@-1 {{unknown type name 'T'}}
83
+ // expected-note@#cwg1111-A-T {{'A::T' declared here}}
84
+ }
85
+ } // namespace example4
86
+
87
+ namespace example5 {
88
+ template <class T1 > struct A {
89
+ operator T1 ();
90
+ };
91
+ template <class T2 > struct B : A<T2> {
92
+ operator T2 ();
93
+ void foo () {
94
+ // In both cases, during instantiation, qualified lookup for T2 wouldn't be able
95
+ // to find anything, so T2 has to be found by unqualified lookup.
96
+ // After that, 'operator T2()' is found in A<T2> by qualfied lookup.
97
+ T2 a = A<T2>::operator T2 ();
98
+ T2 b = ((A<T2> *)this )->operator T2 ();
99
+ }
100
+ };
101
+ } // namespace example5
60
102
} // namespace cwg1111
61
103
62
104
namespace cwg1113 { // cwg1113: partial
Original file line number Diff line number Diff line change @@ -922,6 +922,7 @@ namespace cwg155 { // cwg155: dup 632
922
922
// expected-warning@-1 {{braces around scalar initializer}}
923
923
}
924
924
925
+ // cwg156: sup 1111
925
926
// cwg158 is in cwg158.cpp
926
927
927
928
namespace cwg159 { // cwg159: 3.5
Original file line number Diff line number Diff line change @@ -981,7 +981,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
981
981
<td><a href="https://cplusplus.github.io/CWG/issues/156.html">156</a></td>
982
982
<td>NAD</td>
983
983
<td>Name lookup for conversion functions</td>
984
- <td class="unknown " align="center">Unknown </td>
984
+ <td class="partial-superseded " align="center">Superseded by <a href="#1111">1111</a> </td>
985
985
</tr>
986
986
<tr class="open" id="157">
987
987
<td><a href="https://cplusplus.github.io/CWG/issues/157.html">157</a></td>
@@ -6485,7 +6485,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
6485
6485
<td><a href="https://cplusplus.github.io/CWG/issues/1111.html">1111</a></td>
6486
6486
<td>C++11</td>
6487
6487
<td>Remove dual-scope lookup of member template names</td>
6488
- <td class="full " align="center">Clang 3.2 </td>
6488
+ <td class="partial " align="center">Partial </td>
6489
6489
</tr>
6490
6490
<tr id="1112">
6491
6491
<td><a href="https://cplusplus.github.io/CWG/issues/1112.html">1112</a></td>
You can’t perform that action at this time.
0 commit comments