parent
							
								
									0f64d66304
								
							
						
					
					
						commit
						c7f9bb1757
					
				| 
						 | 
					@ -686,6 +686,8 @@ namespace dr259 { // dr259: yes c++11
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// FIXME: When dr260 is resolved, also add tests for DR507.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace dr261 { // dr261: no
 | 
					namespace dr261 { // dr261: no
 | 
				
			||||||
#pragma clang diagnostic push
 | 
					#pragma clang diagnostic push
 | 
				
			||||||
#pragma clang diagnostic warning "-Wused-but-marked-unused"
 | 
					#pragma clang diagnostic warning "-Wused-but-marked-unused"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -14,4 +14,183 @@ namespace dr500 { // dr500: dup 372
 | 
				
			||||||
  class D : public A::B {};
 | 
					  class D : public A::B {};
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// expected-no-diagnostics
 | 
					namespace dr501 { // dr501: yes
 | 
				
			||||||
 | 
					  struct A {
 | 
				
			||||||
 | 
					    friend void f() {}
 | 
				
			||||||
 | 
					    void g() {
 | 
				
			||||||
 | 
					      void (*p)() = &f; // expected-error {{undeclared identifier}}
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace dr502 { // dr502: yes
 | 
				
			||||||
 | 
					  struct Q {};
 | 
				
			||||||
 | 
					  template<typename T> struct A {
 | 
				
			||||||
 | 
					    enum E { e = 1 };
 | 
				
			||||||
 | 
					    void q1() { f(e); }
 | 
				
			||||||
 | 
					    void q2() { Q arr[sizeof(E)]; f(arr); }
 | 
				
			||||||
 | 
					    void q3() { Q arr[e]; f(arr); }
 | 
				
			||||||
 | 
					    void sanity() { Q arr[1]; f(arr); } // expected-error {{undeclared identifier 'f'}}
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					  int f(A<int>::E);
 | 
				
			||||||
 | 
					  template<int N> int f(Q (&)[N]);
 | 
				
			||||||
 | 
					  template struct A<int>;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace dr505 { // dr505: yes
 | 
				
			||||||
 | 
					  const char *exts = "\e\(\{\[\%"; // expected-error 5{{use of non-standard escape}}
 | 
				
			||||||
 | 
					  const char *unknown = "\Q"; // expected-error {{unknown escape sequence}}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace dr506 { // dr506: yes
 | 
				
			||||||
 | 
					  struct NonPod { ~NonPod(); };
 | 
				
			||||||
 | 
					  void f(...);
 | 
				
			||||||
 | 
					  void g(NonPod np) { f(np); } // expected-error {{cannot pass}}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// FIXME: Add tests here once DR260 is resolved.
 | 
				
			||||||
 | 
					// dr507: dup 260
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// dr508: na
 | 
				
			||||||
 | 
					// dr509: na
 | 
				
			||||||
 | 
					// dr510: na
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace dr512 { // dr512: yes
 | 
				
			||||||
 | 
					  struct A {
 | 
				
			||||||
 | 
					    A(int);
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					  union U { A a; };
 | 
				
			||||||
 | 
					#if __cplusplus < 201103L
 | 
				
			||||||
 | 
					  // expected-error@-2 {{has a non-trivial constructor}}
 | 
				
			||||||
 | 
					  // expected-note@-6 {{no default constructor}}
 | 
				
			||||||
 | 
					  // expected-note@-6 {{suppressed by user-declared constructor}}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// dr513: na
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace dr514 { // dr514: yes
 | 
				
			||||||
 | 
					  namespace A { extern int x, y; }
 | 
				
			||||||
 | 
					  int A::x = y;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace dr515 { // dr515: sup 1017
 | 
				
			||||||
 | 
					  // FIXME: dr1017 reverses the wording of dr515, but the current draft has
 | 
				
			||||||
 | 
					  // dr515's wording, with a different fix for dr1017.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  struct X { int n; };
 | 
				
			||||||
 | 
					  template<typename T> struct Y : T {
 | 
				
			||||||
 | 
					    int f() { return X::n; }
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					  int k = Y<X>().f();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  struct A { int a; };
 | 
				
			||||||
 | 
					  struct B { void f() { int k = sizeof(A::a); } };
 | 
				
			||||||
 | 
					#if __cplusplus < 201103L
 | 
				
			||||||
 | 
					  // expected-error@-2 {{invalid use of non-static data member}}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// dr516: na
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace dr517 { // dr517: no
 | 
				
			||||||
 | 
					  // This is NDR, but we should diagnose it anyway.
 | 
				
			||||||
 | 
					  template<typename T> struct S {};
 | 
				
			||||||
 | 
					  template<typename T> int v = 0; // expected-error 0-1{{extension}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  template struct S<int*>;
 | 
				
			||||||
 | 
					  template int v<int*>;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  S<char&> s;
 | 
				
			||||||
 | 
					  int k = v<char&>;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // FIXME: These are both ill-formed.
 | 
				
			||||||
 | 
					  template<typename T> struct S<T*> {};
 | 
				
			||||||
 | 
					  template<typename T> int v<T*> = 0; // expected-error 0-1{{extension}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // FIXME: These are both ill-formed.
 | 
				
			||||||
 | 
					  template<typename T> struct S<T&> {};
 | 
				
			||||||
 | 
					  template<typename T> int v<T&> = 0; // expected-error 0-1{{extension}}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace dr518 { // dr518: yes c++11
 | 
				
			||||||
 | 
					  enum E { e, };
 | 
				
			||||||
 | 
					#if __cplusplus < 201103L
 | 
				
			||||||
 | 
					  // expected-error@-2 {{C++11 extension}}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace dr519 { // dr519: yes
 | 
				
			||||||
 | 
					// FIXME: Add a codegen test.
 | 
				
			||||||
 | 
					#if __cplusplus >= 201103L
 | 
				
			||||||
 | 
					#define fold(x) (__builtin_constant_p(x) ? (x) : (x))
 | 
				
			||||||
 | 
					  int test[fold((int*)(void*)0) ? -1 : 1];
 | 
				
			||||||
 | 
					#undef fold
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// dr520: na
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// dr521: no
 | 
				
			||||||
 | 
					// FIXME: The wording here is broken. It's not reasonable to expect a
 | 
				
			||||||
 | 
					// diagnostic here. Once the relevant DR gets a number, mark this as a dup.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace dr522 { // dr522: yes
 | 
				
			||||||
 | 
					  struct S {};
 | 
				
			||||||
 | 
					  template<typename T> void b1(volatile T &);
 | 
				
			||||||
 | 
					  template<typename T> void b2(volatile T * const *);
 | 
				
			||||||
 | 
					  template<typename T> void b2(volatile T * const S::*);
 | 
				
			||||||
 | 
					  template<typename T> void b2(volatile T * const S::* const *);
 | 
				
			||||||
 | 
					  // FIXME: This diagnostic isn't very good. The problem is not substitution failure.
 | 
				
			||||||
 | 
					  template<typename T> void b2a(volatile T *S::* const *); // expected-note {{substitution failure}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  template<typename T> struct Base {};
 | 
				
			||||||
 | 
					  struct Derived : Base<int> {};
 | 
				
			||||||
 | 
					  template<typename T> void b3(Base<T>);
 | 
				
			||||||
 | 
					  template<typename T> void b3(Base<T> *);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void test(int n, const int cn, int **p, int *S::*pm) {
 | 
				
			||||||
 | 
					    int *a[3], *S::*am[3]; 
 | 
				
			||||||
 | 
					    const Derived cd = Derived();
 | 
				
			||||||
 | 
					    Derived d[3];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    b1(n);
 | 
				
			||||||
 | 
					    b1(cn);
 | 
				
			||||||
 | 
					    b2(p);
 | 
				
			||||||
 | 
					    b2(pm);
 | 
				
			||||||
 | 
					    b2(a);
 | 
				
			||||||
 | 
					    b2(am);
 | 
				
			||||||
 | 
					    b2a(am); // expected-error {{no matching function}}
 | 
				
			||||||
 | 
					    b3(d);
 | 
				
			||||||
 | 
					    b3(cd);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace dr524 { // dr524: yes
 | 
				
			||||||
 | 
					  template<typename T> void f(T a, T b) { operator+(a, b); } // expected-error {{call}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  struct S {};
 | 
				
			||||||
 | 
					  void operator+(S, S);
 | 
				
			||||||
 | 
					  template void f(S, S);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  namespace N { struct S {}; }
 | 
				
			||||||
 | 
					  void operator+(N::S, N::S); // expected-note {{should be declared}}
 | 
				
			||||||
 | 
					  template void f(N::S, N::S); // expected-note {{instantiation}}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace dr525 { // dr525: yes
 | 
				
			||||||
 | 
					  namespace before {
 | 
				
			||||||
 | 
					    // Note, the example was correct prior to the change; instantiation is
 | 
				
			||||||
 | 
					    // required for cases like this:
 | 
				
			||||||
 | 
					    template <class T> struct D { operator T*(); };
 | 
				
			||||||
 | 
					    void g(D<double> ppp) {
 | 
				
			||||||
 | 
					      delete ppp;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  namespace after {
 | 
				
			||||||
 | 
					    template <class T> struct D { typename T::error e; }; // expected-error {{prior to '::'}}
 | 
				
			||||||
 | 
					    void g(D<double> *ppp) {
 | 
				
			||||||
 | 
					      delete ppp; // expected-note {{instantiation of}}
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3047,13 +3047,13 @@ of class templates</td>
 | 
				
			||||||
    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#501">501</a></td>
 | 
					    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#501">501</a></td>
 | 
				
			||||||
    <td>NAD</td>
 | 
					    <td>NAD</td>
 | 
				
			||||||
    <td>Visibility of friend declarations within the befriending class</td>
 | 
					    <td>Visibility of friend declarations within the befriending class</td>
 | 
				
			||||||
    <td class="none" align="center">Unknown</td>
 | 
					    <td class="full" align="center">Yes</td>
 | 
				
			||||||
  </tr>
 | 
					  </tr>
 | 
				
			||||||
  <tr id="502">
 | 
					  <tr id="502">
 | 
				
			||||||
    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#502">502</a></td>
 | 
					    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#502">502</a></td>
 | 
				
			||||||
    <td>C++11</td>
 | 
					    <td>C++11</td>
 | 
				
			||||||
    <td>Dependency of nested enumerations and enumerators</td>
 | 
					    <td>Dependency of nested enumerations and enumerators</td>
 | 
				
			||||||
    <td class="none" align="center">Unknown</td>
 | 
					    <td class="full" align="center">Yes</td>
 | 
				
			||||||
  </tr>
 | 
					  </tr>
 | 
				
			||||||
  <tr class="open" id="503">
 | 
					  <tr class="open" id="503">
 | 
				
			||||||
    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#503">503</a></td>
 | 
					    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#503">503</a></td>
 | 
				
			||||||
| 
						 | 
					@ -3071,37 +3071,37 @@ of class templates</td>
 | 
				
			||||||
    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#505">505</a></td>
 | 
					    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#505">505</a></td>
 | 
				
			||||||
    <td>CD1</td>
 | 
					    <td>CD1</td>
 | 
				
			||||||
    <td>Conditionally-supported behavior for unknown character escapes</td>
 | 
					    <td>Conditionally-supported behavior for unknown character escapes</td>
 | 
				
			||||||
    <td class="none" align="center">Unknown</td>
 | 
					    <td class="full" align="center">Yes</td>
 | 
				
			||||||
  </tr>
 | 
					  </tr>
 | 
				
			||||||
  <tr id="506">
 | 
					  <tr id="506">
 | 
				
			||||||
    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#506">506</a></td>
 | 
					    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#506">506</a></td>
 | 
				
			||||||
    <td>CD1</td>
 | 
					    <td>CD1</td>
 | 
				
			||||||
    <td>Conditionally-supported behavior for non-POD objects passed to ellipsis</td>
 | 
					    <td>Conditionally-supported behavior for non-POD objects passed to ellipsis</td>
 | 
				
			||||||
    <td class="none" align="center">Unknown</td>
 | 
					    <td class="full" align="center">Yes</td>
 | 
				
			||||||
  </tr>
 | 
					  </tr>
 | 
				
			||||||
  <tr id="507">
 | 
					  <tr id="507">
 | 
				
			||||||
    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#507">507</a></td>
 | 
					    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#507">507</a></td>
 | 
				
			||||||
    <td>dup</td>
 | 
					    <td>dup</td>
 | 
				
			||||||
    <td>Ambiguity assigning class object to built-in type</td>
 | 
					    <td>Ambiguity assigning class object to built-in type</td>
 | 
				
			||||||
    <td class="none" align="center">Unknown</td>
 | 
					    <td class="none" align="center">Duplicate of <a href="#260">260</a></td>
 | 
				
			||||||
  </tr>
 | 
					  </tr>
 | 
				
			||||||
  <tr id="508">
 | 
					  <tr id="508">
 | 
				
			||||||
    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#508">508</a></td>
 | 
					    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#508">508</a></td>
 | 
				
			||||||
    <td>C++11</td>
 | 
					    <td>C++11</td>
 | 
				
			||||||
    <td>Non-constructed value-initialized objects</td>
 | 
					    <td>Non-constructed value-initialized objects</td>
 | 
				
			||||||
    <td class="none" align="center">Unknown</td>
 | 
					    <td class="na" align="center">N/A</td>
 | 
				
			||||||
  </tr>
 | 
					  </tr>
 | 
				
			||||||
  <tr id="509">
 | 
					  <tr id="509">
 | 
				
			||||||
    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#509">509</a></td>
 | 
					    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#509">509</a></td>
 | 
				
			||||||
    <td>CD1</td>
 | 
					    <td>CD1</td>
 | 
				
			||||||
    <td>Dead code in the specification of default initialization</td>
 | 
					    <td>Dead code in the specification of default initialization</td>
 | 
				
			||||||
    <td class="none" align="center">Unknown</td>
 | 
					    <td class="na" align="center">N/A</td>
 | 
				
			||||||
  </tr>
 | 
					  </tr>
 | 
				
			||||||
  <tr id="510">
 | 
					  <tr id="510">
 | 
				
			||||||
    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#510">510</a></td>
 | 
					    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#510">510</a></td>
 | 
				
			||||||
    <td>CD1</td>
 | 
					    <td>CD1</td>
 | 
				
			||||||
    <td>Default initialization of POD classes?</td>
 | 
					    <td>Default initialization of POD classes?</td>
 | 
				
			||||||
    <td class="none" align="center">Unknown</td>
 | 
					    <td class="na" align="center">N/A</td>
 | 
				
			||||||
  </tr>
 | 
					  </tr>
 | 
				
			||||||
  <tr class="open" id="511">
 | 
					  <tr class="open" id="511">
 | 
				
			||||||
    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#511">511</a></td>
 | 
					    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#511">511</a></td>
 | 
				
			||||||
| 
						 | 
					@ -3113,67 +3113,67 @@ of class templates</td>
 | 
				
			||||||
    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#512">512</a></td>
 | 
					    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#512">512</a></td>
 | 
				
			||||||
    <td>NAD</td>
 | 
					    <td>NAD</td>
 | 
				
			||||||
    <td>Union members with user-declared non-default constructors</td>
 | 
					    <td>Union members with user-declared non-default constructors</td>
 | 
				
			||||||
    <td class="none" align="center">Unknown</td>
 | 
					    <td class="full" align="center">Yes</td>
 | 
				
			||||||
  </tr>
 | 
					  </tr>
 | 
				
			||||||
  <tr id="513">
 | 
					  <tr id="513">
 | 
				
			||||||
    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#513">513</a></td>
 | 
					    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#513">513</a></td>
 | 
				
			||||||
    <td>CD1</td>
 | 
					    <td>CD1</td>
 | 
				
			||||||
    <td>Non-class “most-derived” objects</td>
 | 
					    <td>Non-class “most-derived” objects</td>
 | 
				
			||||||
    <td class="none" align="center">Unknown</td>
 | 
					    <td class="na" align="center">N/A</td>
 | 
				
			||||||
  </tr>
 | 
					  </tr>
 | 
				
			||||||
  <tr id="514">
 | 
					  <tr id="514">
 | 
				
			||||||
    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#514">514</a></td>
 | 
					    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#514">514</a></td>
 | 
				
			||||||
    <td>CD1</td>
 | 
					    <td>CD1</td>
 | 
				
			||||||
    <td>Is the initializer for a namespace member in the scope of the namespace?</td>
 | 
					    <td>Is the initializer for a namespace member in the scope of the namespace?</td>
 | 
				
			||||||
    <td class="none" align="center">Unknown</td>
 | 
					    <td class="full" align="center">Yes</td>
 | 
				
			||||||
  </tr>
 | 
					  </tr>
 | 
				
			||||||
  <tr id="515">
 | 
					  <tr id="515">
 | 
				
			||||||
    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#515">515</a></td>
 | 
					    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#515">515</a></td>
 | 
				
			||||||
    <td>CD1</td>
 | 
					    <td>CD1</td>
 | 
				
			||||||
    <td>Non-dependent references to base class members</td>
 | 
					    <td>Non-dependent references to base class members</td>
 | 
				
			||||||
    <td class="none" align="center">Unknown</td>
 | 
					    <td class="none" align="center">Superseded by <a href="#1017">1017</a></td>
 | 
				
			||||||
  </tr>
 | 
					  </tr>
 | 
				
			||||||
  <tr id="516">
 | 
					  <tr id="516">
 | 
				
			||||||
    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#516">516</a></td>
 | 
					    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#516">516</a></td>
 | 
				
			||||||
    <td>CD1</td>
 | 
					    <td>CD1</td>
 | 
				
			||||||
    <td>Use of <TT>signed</TT> in bit-field declarations</td>
 | 
					    <td>Use of <TT>signed</TT> in bit-field declarations</td>
 | 
				
			||||||
    <td class="none" align="center">Unknown</td>
 | 
					    <td class="na" align="center">N/A</td>
 | 
				
			||||||
  </tr>
 | 
					  </tr>
 | 
				
			||||||
  <tr id="517">
 | 
					  <tr id="517">
 | 
				
			||||||
    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#517">517</a></td>
 | 
					    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#517">517</a></td>
 | 
				
			||||||
    <td>CD1</td>
 | 
					    <td>CD1</td>
 | 
				
			||||||
    <td>Partial specialization following explicit instantiation</td>
 | 
					    <td>Partial specialization following explicit instantiation</td>
 | 
				
			||||||
    <td class="none" align="center">Unknown</td>
 | 
					    <td class="none" align="center">No</td>
 | 
				
			||||||
  </tr>
 | 
					  </tr>
 | 
				
			||||||
  <tr id="518">
 | 
					  <tr id="518">
 | 
				
			||||||
    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#518">518</a></td>
 | 
					    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#518">518</a></td>
 | 
				
			||||||
    <td>CD1</td>
 | 
					    <td>CD1</td>
 | 
				
			||||||
    <td>Trailing comma following <I>enumerator-list</I></td>
 | 
					    <td>Trailing comma following <I>enumerator-list</I></td>
 | 
				
			||||||
    <td class="none" align="center">Unknown</td>
 | 
					    <td class="full" align="center">Yes (C++11 onwards)</td>
 | 
				
			||||||
  </tr>
 | 
					  </tr>
 | 
				
			||||||
  <tr id="519">
 | 
					  <tr id="519">
 | 
				
			||||||
    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#519">519</a></td>
 | 
					    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#519">519</a></td>
 | 
				
			||||||
    <td>CD1</td>
 | 
					    <td>CD1</td>
 | 
				
			||||||
    <td>Null pointer preservation in <TT>void*</TT> conversions</td>
 | 
					    <td>Null pointer preservation in <TT>void*</TT> conversions</td>
 | 
				
			||||||
    <td class="none" align="center">Unknown</td>
 | 
					    <td class="full" align="center">Yes</td>
 | 
				
			||||||
  </tr>
 | 
					  </tr>
 | 
				
			||||||
  <tr id="520">
 | 
					  <tr id="520">
 | 
				
			||||||
    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#520">520</a></td>
 | 
					    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#520">520</a></td>
 | 
				
			||||||
    <td>CD1</td>
 | 
					    <td>CD1</td>
 | 
				
			||||||
    <td>Old-style casts between incomplete class types</td>
 | 
					    <td>Old-style casts between incomplete class types</td>
 | 
				
			||||||
    <td class="none" align="center">Unknown</td>
 | 
					    <td class="na" align="center">N/A</td>
 | 
				
			||||||
  </tr>
 | 
					  </tr>
 | 
				
			||||||
  <tr id="521">
 | 
					  <tr id="521">
 | 
				
			||||||
    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#521">521</a></td>
 | 
					    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#521">521</a></td>
 | 
				
			||||||
    <td>CD1</td>
 | 
					    <td>CD1</td>
 | 
				
			||||||
    <td>Requirements for exceptions thrown by allocation functions</td>
 | 
					    <td>Requirements for exceptions thrown by allocation functions</td>
 | 
				
			||||||
    <td class="none" align="center">Unknown</td>
 | 
					    <td class="none" align="center">No</td>
 | 
				
			||||||
  </tr>
 | 
					  </tr>
 | 
				
			||||||
  <tr id="522">
 | 
					  <tr id="522">
 | 
				
			||||||
    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#522">522</a></td>
 | 
					    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#522">522</a></td>
 | 
				
			||||||
    <td>CD1</td>
 | 
					    <td>CD1</td>
 | 
				
			||||||
    <td>Array-to-pointer decay in template argument deduction</td>
 | 
					    <td>Array-to-pointer decay in template argument deduction</td>
 | 
				
			||||||
    <td class="none" align="center">Unknown</td>
 | 
					    <td class="full" align="center">Yes</td>
 | 
				
			||||||
  </tr>
 | 
					  </tr>
 | 
				
			||||||
  <tr class="open" id="523">
 | 
					  <tr class="open" id="523">
 | 
				
			||||||
    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#523">523</a></td>
 | 
					    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#523">523</a></td>
 | 
				
			||||||
| 
						 | 
					@ -3185,13 +3185,13 @@ of class templates</td>
 | 
				
			||||||
    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#524">524</a></td>
 | 
					    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#524">524</a></td>
 | 
				
			||||||
    <td>CD1</td>
 | 
					    <td>CD1</td>
 | 
				
			||||||
    <td>Can function-notation calls to operator functions be dependent?</td>
 | 
					    <td>Can function-notation calls to operator functions be dependent?</td>
 | 
				
			||||||
    <td class="none" align="center">Unknown</td>
 | 
					    <td class="full" align="center">Yes</td>
 | 
				
			||||||
  </tr>
 | 
					  </tr>
 | 
				
			||||||
  <tr id="525">
 | 
					  <tr id="525">
 | 
				
			||||||
    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#525">525</a></td>
 | 
					    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#525">525</a></td>
 | 
				
			||||||
    <td>CD1</td>
 | 
					    <td>CD1</td>
 | 
				
			||||||
    <td>Missing <TT>*</TT> in example</td>
 | 
					    <td>Missing <TT>*</TT> in example</td>
 | 
				
			||||||
    <td class="none" align="center">Unknown</td>
 | 
					    <td class="full" align="center">Yes</td>
 | 
				
			||||||
  </tr>
 | 
					  </tr>
 | 
				
			||||||
  <tr id="526">
 | 
					  <tr id="526">
 | 
				
			||||||
    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#526">526</a></td>
 | 
					    <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#526">526</a></td>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue