int k = f(U());
}
-namespace dr92 { // dr92: 4.0 c++17
+namespace dr92 { // dr92: 4 c++17
void f() throw(int, float); // expected-error 0-1{{ISO C++1z does not allow}} expected-note 0-1{{use 'noexcept}}
void (*p)() throw(int) = &f; // expected-error 0-1{{ISO C++1z does not allow}} expected-note 0-1{{use 'noexcept}}
#if __cplusplus <= 201402L
// RUN: %clang_cc1 -std=c++14 %s -verify -fexceptions -fcxx-exceptions -pedantic-errors
// RUN: %clang_cc1 -std=c++1z %s -verify -fexceptions -fcxx-exceptions -pedantic-errors
-namespace dr1213 { // dr1213: 4.0
+namespace dr1213 { // dr1213: 4
#if __cplusplus >= 201103L
using T = int[3];
int &&r = T{}[1];
};
} // dr1250
-namespace dr1295 { // dr1295: 4.0
+namespace dr1295 { // dr1295: 4
struct X {
unsigned bitfield : 4;
};
// expected-error@-1 {{type of specialized non-type template argument depends on a template parameter of the partial specialization}}
}
-namespace dr1330 { // dr1330: 4.0 c++11
+namespace dr1330 { // dr1330: 4 c++11
// exception-specifications are parsed in a context where the class is complete.
struct A {
void f() throw(T) {} // expected-error 0-1{{C++1z}} expected-note 0-1{{noexcept}}
#endif
}
-namespace dr1388 { // dr1388: 4.0
+namespace dr1388 { // dr1388: 4
template<typename A, typename ...T> void f(T..., A); // expected-note 1+{{candidate}} expected-error 0-1{{C++11}}
template<typename ...T> void g(T..., int); // expected-note 1+{{candidate}} expected-error 0-1{{C++11}}
template<typename ...T, typename A> void h(T..., A); // expected-note 1+{{candidate}} expected-error 0-1{{C++11}}
std::initializer_list<char>{"abc"}; // expected-error {{expected unqualified-id}}}
} // dr190
-namespace dr1495 { // dr1495: 4.0
+namespace dr1495 { // dr1495: 4
// Deduction succeeds in both directions.
template<typename T, typename U> struct A {}; // expected-note {{template is declared here}}
template<typename T, typename U> struct A<U, T> {}; // expected-error {{class template partial specialization is not more specialized}}
// RUN: %clang_cc1 -std=c++14 -triple x86_64-unknown-unknown %s -verify -fexceptions -fcxx-exceptions -pedantic-errors
// RUN: %clang_cc1 -std=c++1z -triple x86_64-unknown-unknown %s -verify -fexceptions -fcxx-exceptions -pedantic-errors
-namespace dr1512 { // dr1512: 4.0
+namespace dr1512 { // dr1512: 4
void f(char *p) {
if (p > 0) {} // expected-error {{ordered comparison between pointer and zero}}
#if __cplusplus >= 201103L
}
}
-namespace dr1518 { // dr1518: 4.0
+namespace dr1518 { // dr1518: 4
#if __cplusplus >= 201103L
struct Z0 { // expected-note 0+ {{candidate}}
explicit Z0() = default; // expected-note 0+ {{here}}
#endif
}
-namespace dr1653 { // dr1653: 4.0 c++17
+namespace dr1653 { // dr1653: 4 c++17
void f(bool b) {
++b;
b++;
// expected-no-diagnostics
#endif
-void dr1891() { // dr1891: 4.0
+void dr1891() { // dr1891: 4
#if __cplusplus >= 201103L
int n;
auto a = []{}; // expected-note 2{{candidate}} expected-note 2{{here}}
} f; // expected-error {{abstract}}
}
-namespace dr259 { // dr259: 4.0
+namespace dr259 { // dr259: 4
template<typename T> struct A {};
template struct A<int>; // expected-note {{previous}}
template struct A<int>; // expected-error {{duplicate explicit instantiation}}
// dr582: na
-namespace dr583 { // dr583: 4.0
+namespace dr583 { // dr583: 4
// see n3624
int *p;
bool b1 = p < 0; // expected-error {{ordered comparison between pointer and zero}}
static int n = f();
}
-namespace dr616 { // dr616: 4.0
+namespace dr616 { // dr616: 4
#if __cplusplus >= 201103L
struct S { int n; } s;
S f();
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#92">92</a></td>
<td>WP</td>
<td>Should <I>exception-specification</I>s be part of the type system?</td>
- <td class="svn" align="center">SVN (C++17 onwards)</td>
+ <td class="svn" align="center">Clang 4 (C++17 onwards)</td>
</tr>
<tr id="93">
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#93">93</a></td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#259">259</a></td>
<td>CD1</td>
<td>Restrictions on explicit specialization and instantiation</td>
- <td class="svn" align="center">SVN</td>
+ <td class="svn" align="center">Clang 4</td>
</tr>
<tr class="open" id="260">
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#260">260</a></td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#583">583</a></td>
<td>CD3</td>
<td>Relational pointer comparisons against the null pointer constant</td>
- <td class="svn" align="center">SVN</td>
+ <td class="svn" align="center">Clang 4</td>
</tr>
<tr id="584">
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#584">584</a></td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#616">616</a></td>
<td>CD3</td>
<td>Definition of “indeterminate value”</td>
- <td class="svn" align="center">SVN</td>
+ <td class="svn" align="center">Clang 4</td>
</tr>
<tr class="open" id="617">
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#617">617</a></td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1213">1213</a></td>
<td>CD3</td>
<td>Array subscripting and xvalues</td>
- <td class="svn" align="center">SVN</td>
+ <td class="svn" align="center">Clang 4</td>
</tr>
<tr id="1214">
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1214">1214</a></td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1295">1295</a></td>
<td>CD3</td>
<td>Binding a reference to an rvalue bit-field</td>
- <td class="svn" align="center">SVN</td>
+ <td class="svn" align="center">Clang 4</td>
</tr>
<tr id="1296">
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1296">1296</a></td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1330">1330</a></td>
<td>CD3</td>
<td>Delayed instantiation of <TT>noexcept</TT> specifiers</td>
- <td class="svn" align="center">SVN (C++11 onwards)</td>
+ <td class="svn" align="center">Clang 4 (C++11 onwards)</td>
</tr>
<tr class="open" id="1331">
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#1331">1331</a></td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1388">1388</a></td>
<td>CD3</td>
<td>Missing non-deduced context following a function parameter pack</td>
- <td class="svn" align="center">SVN</td>
+ <td class="svn" align="center">Clang 4</td>
</tr>
<tr id="1389">
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#1389">1389</a></td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1495">1495</a></td>
<td>CD3</td>
<td>Partial specialization of variadic class template</td>
- <td class="svn" align="center">SVN</td>
+ <td class="svn" align="center">Clang 4</td>
</tr>
<tr id="1496">
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1496">1496</a></td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1512">1512</a></td>
<td>CD3</td>
<td>Pointer comparison vs qualification conversions</td>
- <td class="svn" align="center">SVN</td>
+ <td class="svn" align="center">Clang 4</td>
</tr>
<tr class="open" id="1513">
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#1513">1513</a></td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1518">1518</a></td>
<td>DRWP</td>
<td>Explicit default constructors and copy-list-initialization</td>
- <td class="svn" align="center">SVN</td>
+ <td class="svn" align="center">Clang 4</td>
</tr>
<tr id="1519">
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#1519">1519</a></td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1653">1653</a></td>
<td>WP</td>
<td>Removing deprecated increment of <TT>bool</TT></td>
- <td class="svn" align="center">SVN (C++17 onwards)</td>
+ <td class="svn" align="center">Clang 4 (C++17 onwards)</td>
</tr>
<tr id="1654">
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#1654">1654</a></td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1891">1891</a></td>
<td>DRWP</td>
<td>Move constructor/assignment for closure class</td>
- <td class="svn" align="center">SVN</td>
+ <td class="svn" align="center">Clang 4</td>
</tr>
<tr id="1892">
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1892">1892</a></td>
<tr>
<td>Make exception specifications part of the type system</td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0012r1.html">P0012R1</a></td>
- <td class="svn" align="center">SVN</td>
+ <td class="svn" align="center">Clang 4</td>
</tr>
<tr>
<td><tt>__has_include</tt> in preprocessor conditionals</td>
<tr>
<td>Dynamic memory allocation for over-aligned data</td>
<td><a href="http://wg21.link/p0035r4">P0035R4</a></td>
- <td class="svn" align="center">SVN</td>
+ <td class="svn" align="center">Clang 4</td>
</tr>
<tr>
<td>Template argument deduction for class templates</td>
<tr>
<td>Non-type template parameters with <tt>auto</tt> type</td>
<td><a href="http://wg21.link/p0127r2">P0127R2</a></td>
- <td class="svn" align="center">SVN</td>
+ <td class="svn" align="center">Clang 4</td>
</tr>
<tr>
<td>Guaranteed copy elision</td>
<td><a href="http://wg21.link/p0135r1">P0135R1</a></td>
- <td class="svn" align="center">SVN</td>
+ <td class="svn" align="center">Clang 4</td>
</tr>
<tr>
<td rowspan=2>Stricter expression evaluation order</td>
<td><a href="http://wg21.link/p0145r3">P0145R3</a></td>
- <td class="svn" align="center" rowspan=2>SVN <a href="#p0145">(10)</a></td>
+ <td class="svn" align="center" rowspan=2>Clang 4 <a href="#p0145">(10)</a></td>
</tr>
<tr>
<td><a href="http://wg21.link/p0400r0">P0400R0</a></td>
<tr>
<td>Structured bindings</td>
<td><a href="http://wg21.link/p0217r3">P0217R3</a></td>
- <td class="svn" align="center">SVN</td>
+ <td class="svn" align="center">Clang 4</td>
</tr>
<tr>
<td>Separate variable and condition for <tt>if</tt> and <tt>switch</tt></td>
<tr>
<td>Removing deprecated dynamic exception specifications</td>
<td><a href="http://wg21.link/p0003r5">P0003R5</a></td>
- <td class="svn" align="center">SVN</td>
+ <td class="svn" align="center">Clang 4</td>
</tr>
<tr>
<td>Pack expansions in <em>using-declarations</em></td>
<td><a href="http://wg21.link/p0195r2">P0195R2</a></td>
- <td class="svn" align="center">SVN</td>
+ <td class="svn" align="center">Clang 4</td>
</tr>
</table>
</span><br>
<span id="p0522">(12): Despite being the the resolution to a Defect Report, this
feature is disabled by default in all language versions, and can be enabled
-explicitly with the flag <tt>-frelaxed-template-template-args</tt>. The change
-to the standard lacks a corresponding change for template partial ordering,
-resulting in ambiguity errors for reasonable and previously-valid code. This
-issue is expected to be rectified soon.
+explicitly with the flag <tt>-frelaxed-template-template-args</tt> in Clang 4.
+The change to the standard lacks a corresponding change for template partial
+ordering, resulting in ambiguity errors for reasonable and previously-valid
+code. This issue is expected to be rectified soon.
</span>
</p>
</details>
</td>
</tr>
<tr>
- <td class="svn" align="center">
- SVN (<a href="http://wg21.link/p0096r3">P0096R3</a>)</a>
+ <td class="full" align="center">
+ Clang 4 (<a href="http://wg21.link/p0096r3">P0096R3</a>)</a>
</td>
</tr>
<!-- FIXME: Implement latest recommendations.
if status == 'unknown':
avail = 'Unknown'
avail_style = ' class="none"'
- elif status == '4.0':
+ elif status == '5':
avail = 'SVN'
avail_style = ' class="svn"'
- elif re.match('^[0-9]+\.', status):
+ elif status == '4':
+ avail = 'Clang 4'
+ avail_style = ' class="svn"'
+ elif re.match('^[0-9]+\.?[0-9]*', status):
avail = 'Clang %s' % status
avail_style = ' class="full"'
elif status == 'yes':