Index: lib/AST/Type.cpp
===================================================================
--- lib/AST/Type.cpp
+++ lib/AST/Type.cpp
@@ -2114,18 +2114,15 @@
if (hasNonTrivialObjCLifetime())
return false;
- // C++11 [basic.types]p9
+ // C++11 [basic.types]p9 - See Core 2094
// Scalar types, trivially copyable class types, arrays of such types, and
- // non-volatile const-qualified versions of these types are collectively
+ // cv-qualified versions of these types are collectively
// called trivially copyable types.
QualType CanonicalType = getCanonicalType();
if (CanonicalType->isDependentType())
return false;
- if (CanonicalType.isVolatileQualified())
- return false;
-
// Return false for incomplete types after skipping any incomplete array types
// which are expressly allowed by the standard and thus our API.
if (CanonicalType->isIncompleteType())
Index: test/CXX/drs/dr20xx.cpp
===================================================================
--- /dev/null
+++ test/CXX/drs/dr20xx.cpp
@@ -0,0 +1,30 @@
+// RUN: %clang_cc1 -std=c++98 -triple x86_64-unknown-unknown %s -verify -fexceptions -fcxx-exceptions -pedantic-errors \
+// RUN: -Wno-variadic-macros -Wno-c11-extensions
+// RUN: %clang_cc1 -std=c++11 -triple x86_64-unknown-unknown %s -verify -fexceptions -fcxx-exceptions -pedantic-errors
+// 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
+
+// expected-no-diagnostics
+
+#if __cplusplus < 201103L
+#define static_assert(...) _Static_assert(__VA_ARGS__)
+#endif
+
+namespace dr2094 { // dr2094: 5.0
+ struct A { int n; };
+ struct B { volatile int n; };
+ static_assert(__is_trivially_copyable(volatile int), "");
+ static_assert(__is_trivially_copyable(const volatile int), "");
+ static_assert(__is_trivially_copyable(const volatile int[]), "");
+ static_assert(__is_trivially_copyable(A), "");
+ static_assert(__is_trivially_copyable(volatile A), "");
+ static_assert(__is_trivially_copyable(const volatile A), "");
+ static_assert(__is_trivially_copyable(const volatile A[]), "");
+ static_assert(__is_trivially_copyable(B), "");
+
+ static_assert(__is_trivially_constructible(A, A const&), "");
+ static_assert(__is_trivially_constructible(B, B const&), "");
+
+ static_assert(__is_trivially_assignable(A, const A&), "");
+ static_assert(__is_trivially_assignable(B, const B&), "");
+}
Index: test/CXX/drs/dr4xx.cpp
===================================================================
--- test/CXX/drs/dr4xx.cpp
+++ test/CXX/drs/dr4xx.cpp
@@ -1202,16 +1202,15 @@
long n2 = s2;
}
-namespace dr496 { // dr496: no
+namespace dr496 { // dr496: sup dr2094
struct A { int n; };
struct B { volatile int n; };
int check1[ __is_trivially_copyable(const int) ? 1 : -1];
- int check2[!__is_trivially_copyable(volatile int) ? 1 : -1];
+ // This checks the dr2094 behavior, not dr496
+ int check2[ __is_trivially_copyable(volatile int) ? 1 : -1];
int check3[ __is_trivially_constructible(A, const A&) ? 1 : -1];
- // FIXME: This is wrong.
int check4[ __is_trivially_constructible(B, const B&) ? 1 : -1];
int check5[ __is_trivially_assignable(A, const A&) ? 1 : -1];
- // FIXME: This is wrong.
int check6[ __is_trivially_assignable(B, const B&) ? 1 : -1];
}
Index: test/SemaCXX/type-traits.cpp
===================================================================
--- test/SemaCXX/type-traits.cpp
+++ test/SemaCXX/type-traits.cpp
@@ -1256,7 +1256,7 @@
int t33[F(__is_trivially_copyable(ExtDefaulted))];
int t34[T(__is_trivially_copyable(const int))];
- int t35[F(__is_trivially_copyable(volatile int))];
+ int t35[T(__is_trivially_copyable(volatile int))];
}
struct CStruct {
Index: www/cxx_dr_status.html
===================================================================
--- www/cxx_dr_status.html
+++ www/cxx_dr_status.html
@@ -589,7 +589,7 @@
92 |
- WP |
+ CD4 |
Should exception-specifications be part of the type system? |
Clang 4 (C++17 onwards) |
@@ -935,11 +935,11 @@
Accessibility and ambiguity |
N/A |
-
- 150 |
- open |
+
+ 150 |
+ DR |
Template template parameters and default arguments |
- Not resolved |
+ Unknown |
151 |
@@ -1310,7 +1310,7 @@
212 |
- DR |
+ CD4 |
Implicit instantiation is not described clearly enough |
Unknown |
@@ -1466,7 +1466,7 @@
238 |
- DR |
+ CD4 |
Precision and accuracy constraints on floating point |
Unknown |
@@ -1490,7 +1490,7 @@
242 |
- DR |
+ CD4 |
Interpretation of old-style casts |
Unknown |
@@ -2019,7 +2019,7 @@
330 |
- DRWP |
+ CD4 |
Qualification conversions and pointers to arrays of pointers |
Unknown |
@@ -2397,7 +2397,7 @@
393 |
- DRWP |
+ CD4 |
Pointer to array of unknown bound in template argument list in parameter |
Unknown |
@@ -3017,7 +3017,7 @@
496 |
CD3 |
Is a volatile-qualified type really a POD? |
- No |
+ Superseded by dr2094 |
497 |
@@ -3587,7 +3587,7 @@
591 |
- DRWP |
+ CD4 |
When a dependent base class is the current instantiation |
No |
@@ -3695,7 +3695,7 @@
609 |
- DRWP |
+ CD4 |
What is a “top-level” cv-qualifier? |
Unknown |
@@ -5735,7 +5735,7 @@
987 |
- DRWP |
+ CD4 |
Which declarations introduce namespace members? |
Unknown |
@@ -5939,7 +5939,7 @@
1021 |
- DRWP |
+ CD4 |
Definitions of namespace members |
Unknown |
@@ -6509,7 +6509,7 @@
1116 |
- DRWP |
+ CD4 |
Aliasing of union members |
Unknown |
@@ -7295,7 +7295,7 @@
1247 |
- DRWP |
+ CD4 |
Restriction on alias name appearing in type-id |
Unknown |
@@ -7457,7 +7457,7 @@
1274 |
- DRWP |
+ CD4 |
Common nonterminal for expression and braced-init-list |
Unknown |
@@ -7517,7 +7517,7 @@
1284 |
- DR |
+ CD4 |
Should the lifetime of an array be independent of that of its elements? |
Unknown |
@@ -7565,7 +7565,7 @@
1292 |
- DRWP |
+ CD4 |
Dependent calls with braced-init-lists containing a pack expansion |
Unknown |
@@ -7667,7 +7667,7 @@
1309 |
- DRWP |
+ CD4 |
Incorrect note regarding lookup of a member of the current instantiation |
Unknown |
@@ -7703,7 +7703,7 @@
1315 |
- DR |
+ CD4 |
Restrictions on non-type template arguments in partial specializations |
Partial |
@@ -7841,7 +7841,7 @@
1338 |
- DRWP |
+ CD4 |
Aliasing and allocation functions |
Unknown |
@@ -7870,8 +7870,8 @@
Not resolved |
- 1343 |
- tentatively ready |
+ 1343 |
+ DR |
Sequencing of non-class initialization |
Unknown |
@@ -7919,7 +7919,7 @@
1351 |
- DRWP |
+ CD4 |
Problems with implicitly-declared exception-specifications |
Unknown |
@@ -7949,7 +7949,7 @@
1356 |
- DRWP |
+ CD4 |
Exception specifications of copy assignment operators with virtual bases |
Unknown |
@@ -8159,7 +8159,7 @@
1391 |
- DRWP |
+ CD4 |
Conversions to parameter types with non-deduced template arguments |
Partial |
@@ -8182,8 +8182,8 @@
Unknown |
- 1395 |
- ready |
+ 1395 |
+ DR |
Partial ordering of variadic templates reconsidered |
Unknown |
@@ -8195,7 +8195,7 @@
1397 |
- DRWP |
+ CD4 |
Class completeness in non-static data member initializers |
Unknown |
@@ -8489,7 +8489,7 @@
1446 |
- DRWP |
+ CD4 |
Member function with no ref-qualifier and non-member function with rvalue reference |
Unknown |
@@ -8603,7 +8603,7 @@
1465 |
- DRWP |
+ CD4 |
noexcept and std::bad_array_new_length |
Unknown |
@@ -8615,7 +8615,7 @@
1467 |
- DRWP |
+ CD4 |
List-initialization of aggregate from same-type object |
Clang 3.7 (C++11 onwards) |
@@ -8717,7 +8717,7 @@
1484 |
- DRWP |
+ CD4 |
Unused local classes of function templates |
Unknown |
@@ -8753,7 +8753,7 @@
1490 |
- DRWP |
+ CD4 |
List-initialization from a string literal |
Clang 3.7 (C++11 onwards) |
@@ -8765,7 +8765,7 @@
1492 |
- DRWP |
+ CD4 |
Exception specifications on template destructors |
Unknown |
@@ -8789,7 +8789,7 @@
1496 |
- DR |
+ CD4 |
Triviality with deleted and missing default constructors |
Unknown |
@@ -8921,7 +8921,7 @@
1518 |
- DRWP |
+ CD4 |
Explicit default constructors and copy-list-initialization |
Clang 4 |
@@ -9125,7 +9125,7 @@
1552 |
- DRWP |
+ CD4 |
exception-specifications and defaulted special member functions |
Unknown |
@@ -9161,7 +9161,7 @@
1558 |
- DRWP |
+ CD4 |
Unused arguments in alias template specializations |
Unknown |
@@ -9201,11 +9201,11 @@
Template argument deduction from an initializer list |
Unknown |
-
- 1565 |
- drafting |
+
+ 1565 |
+ NAD |
Copy elision and lifetime of initializer_list underlying array |
- Not resolved |
+ Unknown |
1566 |
@@ -9239,19 +9239,19 @@
1571 |
- DRWP |
+ CD4 |
cv-qualification for indirect reference binding via conversion function |
Unknown |
1572 |
- DRWP |
+ CD4 |
Incorrect example for rvalue reference binding via conversion function |
Unknown |
1573 |
- DRWP |
+ CD4 |
Inherited constructor characteristics |
Clang 3.9 |
@@ -9347,7 +9347,7 @@
1589 |
- DRWP |
+ CD4 |
Ambiguous ranking of list-initialization sequences |
Clang 3.7 (C++11 onwards) |
@@ -9359,7 +9359,7 @@
1591 |
- DRWP |
+ CD4 |
Deducing array bound and element type from initializer list |
Unknown |
@@ -9389,7 +9389,7 @@
1596 |
- DRWP |
+ CD4 |
Non-array objects as array[1] |
Unknown |
@@ -9413,7 +9413,7 @@
1600 |
- DRWP |
+ CD4 |
Erroneous reference initialization in example |
Unknown |
@@ -9431,7 +9431,7 @@
1603 |
- DRWP |
+ CD4 |
Errors resulting from giving unnamed namespaces internal linkage |
Unknown |
@@ -9497,13 +9497,13 @@
1614 |
- DRWP |
+ CD4 |
Address of pure virtual function vs odr-use |
Unknown |
1615 |
- DRWP |
+ CD4 |
Alignment of types, variables, and members |
Unknown |
@@ -9543,11 +9543,11 @@
Member initializers in anonymous unions |
Not resolved |
-
+
1622 |
- drafting |
+ ready |
Empty aggregate initializer for union |
- Not resolved |
+ Unknown |
1623 |
@@ -9593,13 +9593,13 @@
1630 |
- DRWP |
+ CD4 |
Multiple default constructor templates |
Unknown |
1631 |
- DRWP |
+ CD4 |
Incorrect overload resolution for single-element initializer-list |
Clang 3.7 |
@@ -9611,7 +9611,7 @@
1633 |
- DRWP |
+ CD4 |
Copy-initialization in member initialization |
Unknown |
@@ -9641,13 +9641,13 @@
1638 |
- DR |
+ CD4 |
Declaring an explicit specialization of a scoped enumeration |
Yes |
1639 |
- DRWP |
+ CD4 |
exception-specifications and pointer/pointer-to-member expressions |
Unknown |
@@ -9683,7 +9683,7 @@
1645 |
- DRWP |
+ CD4 |
Identical inheriting constructors via default arguments |
Clang 3.9 |
@@ -9725,13 +9725,13 @@
1652 |
- DRWP |
+ CD4 |
Object addresses in constexpr expressions |
Unknown |
1653 |
- WP |
+ CD4 |
Removing deprecated increment of bool |
Clang 4 (C++17 onwards) |
@@ -9755,7 +9755,7 @@
1657 |
- WP |
+ CD4 |
Attributes for namespaces and enumerators |
Unknown |
@@ -9845,7 +9845,7 @@
1672 |
- DRWP |
+ CD4 |
Layout compatibility with multiple empty bases |
Unknown |
@@ -9873,11 +9873,11 @@
auto return type for allocation and deallocation functions |
Not resolved |
-
+
1677 |
- drafting |
+ ready |
Constant initialization via aggregate initialization |
- Not resolved |
+ Unknown |
1678 |
@@ -9911,7 +9911,7 @@
1683 |
- DRWP |
+ CD4 |
Incorrect example after constexpr changes |
Unknown |
@@ -9929,7 +9929,7 @@
1686 |
- DRWP |
+ CD4 |
Which variables are “explicitly declared const?” |
Unknown |
@@ -9977,7 +9977,7 @@
1694 |
- DRWP |
+ CD4 |
Restriction on reference to temporary as a constant expression |
Unknown |
@@ -9989,7 +9989,7 @@
1696 |
- DRWP |
+ CD4 |
Temporary lifetime and non-static data member initializers |
Unknown |
@@ -10043,7 +10043,7 @@
1705 |
- DRWP |
+ CD4 |
Unclear specification of “more specialized” |
Unknown |
@@ -10061,7 +10061,7 @@
1708 |
- DRWP |
+ CD4 |
overly-strict requirements for names with C language linkage |
Unknown |
@@ -10085,7 +10085,7 @@
1712 |
- DRWP |
+ CD4 |
constexpr variable template declarations |
Unknown |
@@ -10103,7 +10103,7 @@
1715 |
- DRWP |
+ CD4 |
Access and inherited constructor templates |
Clang 3.9 |
@@ -10127,7 +10127,7 @@
1719 |
- DRWP |
+ CD4 |
Layout compatibility and cv-qualification revisited |
Unknown |
@@ -10145,7 +10145,7 @@
1722 |
- DRWP |
+ CD4 |
Should lambda to function pointer conversion function be noexcept? |
Unknown |
@@ -10217,7 +10217,7 @@
1734 |
- DR |
+ CD4 |
Nontrivial deleted copy functions |
Unknown |
@@ -10229,7 +10229,7 @@
1736 |
- DRWP |
+ CD4 |
Inheriting constructor templates in a local class |
Clang 3.9 |
@@ -10277,7 +10277,7 @@
1744 |
- DRWP |
+ CD4 |
Unordered initialization for variable template specializations |
Unknown |
@@ -10301,7 +10301,7 @@
1748 |
- DRWP |
+ CD4 |
Placement new with a null pointer |
Clang 3.7 |
@@ -10313,25 +10313,25 @@
1750 |
- DRWP |
+ CD4 |
“Argument” vs “parameter” |
Unknown |
1751 |
- DRWP |
+ CD4 |
Non-trivial operations vs non-trivial initialization |
Unknown |
1752 |
- DRWP |
+ CD4 |
Right-recursion in mem-initializer-list |
Unknown |
1753 |
- DRWP |
+ CD4 |
decltype-specifier in nested-name-specifier of destructor |
Unknown |
@@ -10349,19 +10349,19 @@
1756 |
- DRWP |
+ CD4 |
Direct-list-initialization of a non-class object |
Clang 3.7 |
1757 |
- DRWP |
+ CD4 |
Const integral subobjects |
Unknown |
1758 |
- DRWP |
+ CD4 |
Explicit conversion in copy/move list initialization |
Clang 3.7 |
@@ -10409,7 +10409,7 @@
1766 |
- DRWP |
+ CD4 |
Values outside the range of the values of an enumeration |
Unknown |
@@ -10457,7 +10457,7 @@
1774 |
- DRWP |
+ CD4 |
Discrepancy between subobject destruction and stack unwinding |
Unknown |
@@ -10469,13 +10469,13 @@
1776 |
- DRWP |
+ CD4 |
Replacement of class objects containing reference members |
Unknown |
1777 |
- DRWP |
+ CD4 |
Empty pack expansion in dynamic-exception-specification |
Unknown |
@@ -10487,13 +10487,13 @@
1779 |
- DRWP |
+ CD4 |
Type dependency of __func__ |
Unknown |
1780 |
- DRWP |
+ CD4 |
Explicit instantiation/specialization of generic lambda operator() |
Unknown |
@@ -10505,7 +10505,7 @@
1782 |
- DRWP |
+ CD4 |
Form of initialization for nullptr_t to bool conversion |
Unknown |
@@ -10541,7 +10541,7 @@
1788 |
- DRWP |
+ CD4 |
Sized deallocation of array of non-class type |
Unknown |
@@ -10559,7 +10559,7 @@
1791 |
- DRWP |
+ CD4 |
Incorrect restrictions on cv-qualifier-seq and ref-qualifier |
Unknown |
@@ -10571,7 +10571,7 @@
1793 |
- DRWP |
+ CD4 |
thread_local in explicit specializations |
Unknown |
@@ -10583,19 +10583,19 @@
1795 |
- DRWP |
+ CD4 |
Disambiguating original-namespace-definition and extension-namespace-definition |
Unknown |
1796 |
- DRWP |
+ CD4 |
Is all-bits-zero for null characters a meaningful requirement? |
Unknown |
1797 |
- DRWP |
+ CD4 |
Are all bit patterns of unsigned char distinct numbers? |
Unknown |
@@ -10607,13 +10607,13 @@
1799 |
- DRWP |
+ CD4 |
mutable and non-explicit const qualification |
Unknown |
1800 |
- DRWP |
+ CD4 |
Pointer to member of nested anonymous union |
Unknown |
@@ -10625,7 +10625,7 @@
1802 |
- DRWP |
+ CD4 |
char16_t string literals and surrogate pairs |
Unknown |
@@ -10637,25 +10637,25 @@
1804 |
- DRWP |
+ CD4 |
Partial specialization and friendship |
Unknown |
1805 |
- DRWP |
+ CD4 |
Conversions of array operands in conditional-expressions |
Unknown |
1806 |
- DRWP |
+ CD4 |
Virtual bases and move-assignment |
Unknown |
1807 |
- DRWP |
+ CD4 |
Order of destruction of array elements after an exception |
Unknown |
@@ -10667,19 +10667,19 @@
1809 |
- DRWP |
+ CD4 |
Narrowing and template argument deduction |
Unknown |
1810 |
- DRWP |
+ CD4 |
Invalid ud-suffixes |
Unknown |
1811 |
- DRWP |
+ CD4 |
Lookup of deallocation function in a virtual destructor definition |
Unknown |
@@ -10691,25 +10691,25 @@
1813 |
- DRWP |
+ CD4 |
Direct vs indirect bases in standard-layout classes |
Unknown |
1814 |
- DRWP |
+ CD4 |
Default arguments in lambda-expressions |
Unknown |
1815 |
- DRWP |
+ CD4 |
Lifetime extension in aggregate initialization |
Unknown |
1816 |
- DRWP |
+ CD4 |
Unclear specification of bit-field values |
Unknown |
@@ -10727,7 +10727,7 @@
1819 |
- DRWP |
+ CD4 |
Acceptable scopes for definition of partial specialization |
Unknown |
@@ -10751,19 +10751,19 @@
1823 |
- DRWP |
+ CD4 |
String literal uniqueness in inline functions |
Unknown |
1824 |
- DRWP |
+ CD4 |
Completeness of return type vs point of instantiation |
Unknown |
- 1825 |
- ready |
+ 1825 |
+ DR |
Partial ordering between variadic and non-variadic function templates |
Unknown |
@@ -10793,7 +10793,7 @@
1830 |
- DRWP |
+ CD4 |
Repeated specifiers |
Unknown |
@@ -10805,7 +10805,7 @@
1832 |
- DRWP |
+ CD4 |
Casting to incomplete enumeration |
Unknown |
@@ -10817,7 +10817,7 @@
1834 |
- DRWP |
+ CD4 |
Constant initialization binding a reference to an xvalue |
Unknown |
@@ -10841,7 +10841,7 @@
1838 |
- DRWP |
+ CD4 |
Definition via unqualified-id and using-declaration |
Unknown |
@@ -10871,7 +10871,7 @@
1843 |
- DRWP |
+ CD4 |
Bit-field in conditional operator with throw operand |
Unknown |
@@ -10889,19 +10889,19 @@
1846 |
- DRWP |
+ CD4 |
Declaring explicitly-defaulted implicitly-deleted functions |
Unknown |
1847 |
- DRWP |
+ CD4 |
Clarifying compatibility during partial ordering |
Unknown |
1848 |
- DRWP |
+ CD4 |
Parenthesized constructor and destructor declarators |
Unknown |
@@ -10913,19 +10913,19 @@
1850 |
- DRWP |
+ CD4 |
Differences between definition context and point of instantiation |
Unknown |
1851 |
- DRWP |
+ CD4 |
decltype(auto) in new-expressions |
Unknown |
1852 |
- DRWP |
+ CD4 |
Wording issues regarding decltype(auto) |
Unknown |
@@ -10961,7 +10961,7 @@
1858 |
- DRWP |
+ CD4 |
Comparing pointers to union members |
Unknown |
@@ -10971,15 +10971,15 @@
UTF-16 in char16_t string literals |
Not resolved |
-
+
1860 |
- review |
+ ready |
What is a “direct member?” |
- Not resolved |
+ Unknown |
1861 |
- DRWP |
+ CD4 |
Values of a bit-field |
Unknown |
@@ -10991,7 +10991,7 @@
1863 |
- DRWP |
+ CD4 |
Requirements on thrown object type to support std::current_exception() |
Unknown |
@@ -11003,13 +11003,13 @@
1865 |
- DRWP |
+ CD4 |
Pointer arithmetic and multi-level qualification conversions |
Unknown |
1866 |
- DRWP |
+ CD4 |
Initializing variant members with non-trivial destructors |
Unknown |
@@ -11033,7 +11033,7 @@
1870 |
- DRWP |
+ CD4 |
Contradictory wording about definitions vs explicit specialization/instantiation |
Unknown |
@@ -11045,25 +11045,25 @@
1872 |
- DR |
+ CD4 |
Instantiations of constexpr templates that cannot appear in constant expressions |
Unknown |
1873 |
- DRWP |
+ CD4 |
Protected member access from derived class friends |
Unknown |
1874 |
- DRWP |
+ CD4 |
Type vs non-type template parameters with class keyword |
Unknown |
1875 |
- DRWP |
+ CD4 |
Reordering declarations in class scope |
Unknown |
@@ -11075,13 +11075,13 @@
1877 |
- DRWP |
+ CD4 |
Return type deduction from return with no operand |
Unknown |
1878 |
- DRWP |
+ CD4 |
operator auto template |
Unknown |
@@ -11099,13 +11099,13 @@
1881 |
- DRWP |
+ CD4 |
Standard-layout classes and unnamed bit-fields |
Unknown |
1882 |
- DRWP |
+ CD4 |
Reserved names without library use |
Unknown |
@@ -11123,25 +11123,25 @@
1885 |
- DRWP |
+ CD4 |
Return value of a function is underspecified |
Unknown |
1886 |
- DRWP |
+ CD4 |
Language linkage for main() |
Unknown |
1887 |
- DRWP |
+ CD4 |
Problems with :: as nested-name-specifier |
Unknown |
1888 |
- DRWP |
+ CD4 |
Implicitly-declared default constructors and explicit |
Unknown |
@@ -11159,13 +11159,13 @@
1891 |
- DRWP |
+ CD4 |
Move constructor/assignment for closure class |
Clang 4 |
1892 |
- DRWP |
+ CD4 |
Use of auto in function type |
Unknown |
@@ -11183,7 +11183,7 @@
1895 |
- DR |
+ CD4 |
Deleted conversions in conditional operator operands |
Unknown |
@@ -11207,7 +11207,7 @@
1899 |
- DRWP |
+ CD4 |
Value-dependent constant expressions |
Unknown |
@@ -11225,13 +11225,13 @@
1902 |
- DRWP |
+ CD4 |
What makes a conversion “otherwise ill-formed”? |
Clang 3.7 |
1903 |
- DRWP |
+ CD4 |
What declarations are introduced by a non-member using-declaration? |
Unknown |
@@ -11267,7 +11267,7 @@
1909 |
- DRWP |
+ CD4 |
Member class template with the same name as the class |
Yes |
@@ -11279,7 +11279,7 @@
1911 |
- DRWP |
+ CD4 |
constexpr constructor with non-literal base class |
Unknown |
@@ -11309,7 +11309,7 @@
1916 |
- DRWP |
+ CD4 |
“Same cv-unqualified type” |
Unknown |
@@ -11333,7 +11333,7 @@
1920 |
- DRWP |
+ CD4 |
Qualification mismatch in pseudo-destructor-name |
Unknown |
@@ -11345,7 +11345,7 @@
1922 |
- DRWP |
+ CD4 |
Injected class template names and default arguments |
Unknown |
@@ -11357,19 +11357,19 @@
1924 |
- drafting |
+ review |
Definition of “literal” and kinds of literals |
Not resolved |
1925 |
- DRWP |
+ CD4 |
Bit-field prvalues |
Unknown |
1926 |
- DRWP |
+ CD4 |
Potential results of subscript operator |
Unknown |
@@ -11387,13 +11387,13 @@
1929 |
- DRWP |
+ CD4 |
template keyword following namespace nested-name-specifier |
Unknown |
1930 |
- DR |
+ CD4 |
init-declarator-list vs member-declarator-list |
Unknown |
@@ -11405,7 +11405,7 @@
1932 |
- DR |
+ CD4 |
Bit-field results of conditional operators |
Unknown |
@@ -11453,19 +11453,19 @@
1940 |
- DRWP |
+ CD4 |
static_assert in anonymous unions |
Yes |
1941 |
- DRWP |
+ CD4 |
SFINAE and inherited constructor default arguments |
Clang 3.9 |
1942 |
- DRWP |
+ CD4 |
Incorrect reference to trailing-return-type |
Unknown |
@@ -11489,7 +11489,7 @@
1946 |
- WP |
+ CD4 |
exception-specifications vs pointer dereference |
Unknown |
@@ -11507,7 +11507,7 @@
1949 |
- DRWP |
+ CD4 |
“sequenced after” instead of “sequenced before” |
Unknown |
@@ -11519,13 +11519,13 @@
1951 |
- DRWP |
+ CD4 |
Cv-qualification and literal types |
Unknown |
1952 |
- DRWP |
+ CD4 |
Constant expressions and library undefined behavior |
Unknown |
@@ -11543,13 +11543,13 @@
1955 |
- DR |
+ CD4 |
#elif with invalid controlling expression |
Unknown |
1956 |
- DRWP |
+ CD4 |
Reuse of storage of automatic variables |
Unknown |
@@ -11561,13 +11561,13 @@
1958 |
- DRWP |
+ CD4 |
decltype(auto) with parenthesized initializer |
Unknown |
1959 |
- DRWP |
+ CD4 |
Inadvertently inherited copy constructor |
Clang 3.9 |
@@ -11578,8 +11578,8 @@
Unknown |
- 1961 |
- ready |
+ 1961 |
+ DR |
Potentially-concurrent actions within a signal handler |
Unknown |
@@ -11591,7 +11591,7 @@
1963 |
- DRWP |
+ CD4 |
Implementation-defined identifier characters |
Unknown |
@@ -11609,13 +11609,13 @@
1966 |
- DRWP |
+ CD4 |
Colon following enumeration elaborated-type-specifier |
Unknown |
1967 |
- DRWP |
+ CD4 |
Temporary lifetime and move-elision |
Unknown |
@@ -11639,7 +11639,7 @@
1971 |
- DRWP |
+ CD4 |
Unclear disambiguation of destructor and operator~ |
Unknown |
@@ -11663,7 +11663,7 @@
1975 |
- DRWP |
+ CD4 |
Permissible declarations for exception-specifications |
Unknown |
@@ -11681,7 +11681,7 @@
1978 |
- DRWP |
+ CD4 |
Redundant description of explicit constructor use |
Unknown |
@@ -11699,7 +11699,7 @@
1981 |
- DRWP |
+ CD4 |
Implicit contextual conversions and explicit |
Unknown |
@@ -11741,7 +11741,7 @@
1988 |
- DRWP |
+ CD4 |
Ambiguity between dependent and non-dependent bases in implicit member access |
Unknown |
@@ -11753,19 +11753,19 @@
1990 |
- DRWP |
+ CD4 |
Ambiguity due to optional decl-specifier-seq |
Unknown |
1991 |
- DRWP |
+ CD4 |
Inheriting constructors vs default arguments |
Clang 3.9 |
1992 |
- DR |
+ CD4 |
new (std::nothrow) int[N] can throw |
Unknown |
@@ -11783,7 +11783,7 @@
1995 |
- WP |
+ CD4 |
exception-specifications and non-type template parameters |
Unknown |
@@ -11807,19 +11807,19 @@
1999 |
- DRWP |
+ CD4 |
Representation of source characters as universal-character-names |
Unknown |
2000 |
- DRWP |
+ CD4 |
header-name outside #include directive |
Unknown |
2001 |
- DR |
+ CD4 |
non-directive is underspecified |
Unknown |
@@ -11837,7 +11837,7 @@
2004 |
- DRWP |
+ CD4 |
Unions with mutable members in constant expressions |
Unknown |
@@ -11849,7 +11849,7 @@
2006 |
- DRWP |
+ CD4 |
Cv-qualified void types |
Unknown |
@@ -11861,7 +11861,7 @@
2008 |
- DR |
+ CD4 |
Default template-arguments underspecified |
Unknown |
@@ -11873,7 +11873,7 @@
2010 |
- WP |
+ CD4 |
exception-specifications and conversion operators |
Unknown |
@@ -11885,7 +11885,7 @@
2012 |
- DR |
+ CD4 |
Lifetime of references |
Unknown |
@@ -11903,19 +11903,19 @@
2015 |
- DRWP |
+ CD4 |
odr-use of deleted virtual functions |
Unknown |
2016 |
- DRWP |
+ CD4 |
Confusing wording in description of conversion function |
Unknown |
2017 |
- DR |
+ CD4 |
Flowing off end is not equivalent to no-expression return |
Unknown |
@@ -11927,7 +11927,7 @@
2019 |
- DRWP |
+ CD4 |
Member references omitted from description of storage duration |
Unknown |
@@ -11945,7 +11945,7 @@
2022 |
- DRWP |
+ CD4 |
Copy elision in constant expressions |
Unknown |
@@ -11957,7 +11957,7 @@
2024 |
- DRWP |
+ CD4 |
Dependent types and unexpanded parameter packs |
Unknown |
@@ -11969,13 +11969,13 @@
2026 |
- DRWP |
+ CD4 |
Zero-initialization and constexpr |
Unknown |
2027 |
- DRWP |
+ CD4 |
Unclear requirements for multiple alignas specifiers |
Unknown |
@@ -11999,19 +11999,19 @@
2031 |
- DRWP |
+ CD4 |
Missing incompatibility for && |
Unknown |
2032 |
- DR |
+ CD4 |
Default template-arguments of variable templates |
Unknown |
2033 |
- DR |
+ CD4 |
Redundant restriction on partial specialization argument |
Unknown |
@@ -12041,25 +12041,25 @@
2038 |
- DR |
+ CD4 |
Document C++14 incompatibility of new braced deduction rule |
Unknown |
2039 |
- DR |
+ CD4 |
Constant conversions to bool |
Unknown |
2040 |
- DR |
+ CD4 |
trailing-return-type no longer ambiguous |
Unknown |
2041 |
- DR |
+ CD4 |
Namespace for explicit class template specialization |
Unknown |
@@ -12077,7 +12077,7 @@
2044 |
- DR |
+ CD4 |
decltype(auto) and void |
Unknown |
@@ -12095,7 +12095,7 @@
2047 |
- DR |
+ CD4 |
Coordinating “throws anything” specifications |
Unknown |
@@ -12125,7 +12125,7 @@
2052 |
- DRWP |
+ CD4 |
Template argument deduction vs overloaded operators |
Unknown |
@@ -12179,7 +12179,7 @@
2061 |
- DR |
+ CD4 |
Inline namespace after simplifications |
Unknown |
@@ -12191,13 +12191,13 @@
2063 |
- DR |
+ CD4 |
Type/nontype hiding in class scope |
Unknown |
2064 |
- DR |
+ CD4 |
Conflicting specifications for dependent decltype-specifiers |
Unknown |
@@ -12209,7 +12209,7 @@
2066 |
- DR |
+ CD4 |
Does type-dependent imply value-dependent? |
Unknown |
@@ -12221,13 +12221,13 @@
2068 |
- DR |
+ CD4 |
When can/must a defaulted virtual destructor be defined? |
Unknown |
2069 |
- DR |
+ CD4 |
Do destructors have names? |
Unknown |
@@ -12239,7 +12239,7 @@
2071 |
- DR |
+ CD4 |
typedef with no declarator |
Unknown |
@@ -12263,13 +12263,13 @@
2075 |
- DRWP |
+ CD4 |
Passing short initializer lists to array reference parameters |
Unknown |
2076 |
- DRWP |
+ CD4 |
List-initialization of arguments for constructor parameters |
Unknown |
@@ -12287,7 +12287,7 @@
2079 |
- DR |
+ CD4 |
[[ appearing in a balanced-token-seq |
Unknown |
@@ -12305,7 +12305,7 @@
2082 |
- DR |
+ CD4 |
Referring to parameters in unevaluated operands of default arguments |
Unknown |
@@ -12317,13 +12317,13 @@
2084 |
- DR |
+ CD4 |
NSDMIs and deleted union default constructors |
Unknown |
2085 |
- DR |
+ CD4 |
Invalid example of adding special member function via default argument |
Unknown |
@@ -12359,7 +12359,7 @@
2091 |
- DRWP |
+ CD4 |
Deducing reference non-type template arguments |
Unknown |
@@ -12371,25 +12371,25 @@
2093 |
- DR |
+ CD4 |
Qualification conversion for pointer-to-member handler matching |
Unknown |
- 2094 |
- tentatively ready |
+ 2094 |
+ DR |
Trivial copy/move constructor for class with volatile member |
- Unknown |
+ Clang 5.0 |
2095 |
- DR |
+ CD4 |
Capturing rvalue references to functions by copy |
Unknown |
2096 |
- DR |
+ CD4 |
Constraints on literal unions |
Unknown |
@@ -12401,25 +12401,25 @@
2098 |
- DR |
+ CD4 |
Is uncaught_exceptions() per-thread? |
Unknown |
2099 |
- DR |
+ CD4 |
Inferring the bound of an array static data member |
Unknown |
- 2100 |
- tentatively ready |
+ 2100 |
+ DR |
Value-dependent address of static data member of class template |
Unknown |
2101 |
- DRWP |
+ CD4 |
Incorrect description of type- and value-dependence |
Unknown |
@@ -12437,7 +12437,7 @@
2104 |
- DR |
+ CD4 |
Internal-linkage constexpr references and ODR requirements |
Unknown |
@@ -12449,13 +12449,13 @@
2106 |
- DR |
+ CD4 |
Unclear restrictions on use of function-type template arguments |
Unknown |
2107 |
- DR |
+ CD4 |
Lifetime of temporaries for default arguments in array copying |
Unknown |
@@ -12467,7 +12467,7 @@
2109 |
- DR |
+ CD4 |
Value dependence underspecified |
Unknown |
@@ -12491,7 +12491,7 @@
2113 |
- DR |
+ CD4 |
Incompete specification of types for declarators |
Unknown |
@@ -12533,7 +12533,7 @@
2120 |
- DRWP |
+ CD4 |
Array as first non-static data member in standard-layout class |
Unknown |
@@ -12545,7 +12545,7 @@
2122 |
- DR |
+ CD4 |
Glvalues of void type |
Unknown |
@@ -12557,7 +12557,7 @@
2124 |
- DR |
+ CD4 |
Signature of constructor template |
Unknown |
@@ -12587,13 +12587,13 @@
2129 |
- DR |
+ CD4 |
Non-object prvalues and constant expressions |
Unknown |
2130 |
- DR |
+ CD4 |
Over-aligned types in new-expressions |
Unknown |
@@ -12635,7 +12635,7 @@
2137 |
- DRWP |
+ CD4 |
List-initialization from object of same type |
Unknown |
@@ -12653,13 +12653,13 @@
2140 |
- DR |
+ CD4 |
Lvalue-to-rvalue conversion of std::nullptr_t |
Unknown |
2141 |
- DR |
+ CD4 |
Ambiguity in new-expression with elaborated-type-specifier |
Unknown |
@@ -12670,8 +12670,8 @@
Unknown |
- 2143 |
- ready |
+ 2143 |
+ DR |
Value-dependency via injected-class-name |
Unknown |
@@ -12683,19 +12683,19 @@
2145 |
- DRWP |
+ CD4 |
Parenthesized declarator in function definition |
Unknown |
2146 |
- DR |
+ CD4 |
Scalar object vs memory location in definition of “unsequenced” |
Unknown |
2147 |
- DR |
+ CD4 |
Initializer-list arguments and pack deduction |
Unknown |
@@ -12731,31 +12731,31 @@
2153 |
- DR |
+ CD4 |
pure-specifier in friend declaration |
Unknown |
2154 |
- DR |
+ CD4 |
Ambiguity of pure-specifier |
Unknown |
- 2155 |
- ready |
+ 2155 |
+ DR |
Defining classes and enumerations via using-declarations |
Unknown |
2156 |
- DR |
+ CD4 |
Definition of enumeration declared by using-declaration |
Unknown |
2157 |
- DR |
+ CD4 |
Further disambiguation of enumeration elaborated-type-specifier |
Unknown |
@@ -12791,7 +12791,7 @@
2163 |
- DR |
+ CD4 |
Labels in constexpr functions |
Unknown |
@@ -12815,7 +12815,7 @@
2167 |
- DR |
+ CD4 |
Non-member references with lifetimes within the current evaluation |
Unknown |
@@ -12839,7 +12839,7 @@
2171 |
- DRWP |
+ CD4 |
Triviality of copy constructor with less-qualified parameter |
Unknown |
@@ -12855,21 +12855,21 @@
Partial specialization with non-deduced contexts |
Not resolved |
-
+
2174 |
- drafting |
+ ready |
Unclear rules for friend definitions in templates |
- Not resolved |
+ Unknown |
2175 |
- DR |
+ CD4 |
Ambiguity with attribute in conversion operator declaration |
Unknown |
2176 |
- DR |
+ CD4 |
Destroying the returned object when a destructor throws |
Unknown |
@@ -12893,7 +12893,7 @@
2180 |
- DR |
+ CD4 |
Virtual bases in destructors and defaulted assignment operators |
Yes |
@@ -12915,11 +12915,11 @@
Problems in description of potential exceptions |
Not resolved |
-
- 2184 |
- review |
+
+ 2184 |
+ CD4 |
Missing C compatibility entry for decrement of bool |
- Not resolved |
+ Unknown |
2185 |
@@ -12957,11 +12957,11 @@
Insufficient specification of __has_include |
Not resolved |
-
+
2191 |
- open |
+ ready |
Incorrect result for noexcept(typeid(v)) |
- Not resolved |
+ Unknown |
2192 |
@@ -12975,11 +12975,11 @@
numeric_limits<int>::radix and digits |
Not resolved |
-
+
2194 |
- open |
+ tentatively ready |
Impossible case in list initialization |
- Not resolved |
+ Unknown |
2195 |
@@ -12999,11 +12999,11 @@
Overload resolution and deleted special member functions |
Not resolved |
-
+
2198 |
- open |
+ tentatively ready |
Linkage of enumerators |
- Not resolved |
+ Unknown |
2199 |
@@ -13017,11 +13017,11 @@
Conversions in template argument deduction |
Not resolved |
-
+
2201 |
- open |
+ tentatively ready |
Cv-qualification of array types |
- Not resolved |
+ Unknown |
2202 |
@@ -13041,17 +13041,17 @@
Naming delegated constructors |
Not resolved |
-
+
2205 |
- open |
+ ready |
Restrictions on use of alignas |
- Not resolved |
+ Unknown |
-
+
2206 |
- open |
+ tentatively ready |
Composite type of object and function pointers |
- Not resolved |
+ Unknown |
2207 |
@@ -13095,11 +13095,11 @@
Forward declaration of partial specializations |
Not resolved |
-
+
2214 |
- open |
+ tentatively ready |
Missing requirement on representation of integer values |
- Not resolved |
+ Unknown |
2215 |
@@ -13119,11 +13119,11 @@
constexpr constructors for non-literal types |
Not resolved |
-
+
2218 |
- open |
+ ready |
Ambiguity and namespace aliases |
- Not resolved |
+ Unknown |
2219 |
@@ -13131,11 +13131,11 @@
Dynamically-unreachable handlers |
Not resolved |
-
+
2220 |
- open |
+ tentatively ready |
Hiding index variable in range-based for |
- Not resolved |
+ Unknown |
2221 |
@@ -13155,11 +13155,11 @@
Multiple alignas specifiers |
Not resolved |
-
+
2224 |
- open |
+ tentatively ready |
Member subobjects and base-class casts |
- Not resolved |
+ Unknown |
2225 |
@@ -13301,7 +13301,7 @@
2248 |
- open |
+ review |
Problems with sized delete |
Not resolved |
@@ -13319,7 +13319,7 @@
2251 |
- open |
+ review |
Unreachable enumeration list-initialization |
Not resolved |
@@ -13365,11 +13365,11 @@
Storage deallocation during period of destruction |
Not resolved |
-
+
2259 |
- open |
+ tentatively ready |
Unclear context describing ambiguity |
- Not resolved |
+ Unknown |
2260 |
@@ -13383,11 +13383,11 @@
Explicit instantiation of in-class friend definition |
Not resolved |
-
+
2262 |
- open |
+ tentatively ready |
Attributes for asm-definition |
- Not resolved |
+ Unknown |
2263 |
@@ -13438,11 +13438,47 @@
Not resolved |
- 2271 |
- ready |
+ 2271 |
+ DR |
Aliasing this |
Unknown |
+
+ 2272 |
+ open |
+ Implicit initialization of aggregate members of reference type |
+ Not resolved |
+
+
+ 2273 |
+ open |
+ Inheriting constructors vs implicit default constructor |
+ Not resolved |
+
+
+ 2274 |
+ open |
+ Generic lambda capture vs constexpr if |
+ Not resolved |
+
+
+ 2275 |
+ open |
+ Type-dependence of function template |
+ Not resolved |
+
+
+ 2276 |
+ open |
+ Dependent noexcept and function type-dependence |
+ Not resolved |
+
+
+ 2277 |
+ open |
+ Ambiguity inheriting constructors with default arguments |
+ Not resolved |
+