Author: marshall
Date: Tue Mar 20 17:36:05 2018
New Revision: 328064

URL: http://llvm.org/viewvc/llvm-project?rev=328064&view=rev
Log:
Implement LWG3034: P0767R1 breaks previously-standard-layout types

Added:
    libcxx/trunk/test/std/strings/basic.string/char.bad.fail.cpp
    libcxx/trunk/test/std/strings/string.view/char.bad.fail.cpp
Modified:
    libcxx/trunk/include/string
    libcxx/trunk/include/string_view
    libcxx/trunk/test/std/depr/depr.c.headers/stddef_h.pass.cpp
    libcxx/trunk/test/std/language.support/support.types/max_align_t.pass.cpp
    
libcxx/trunk/test/std/utilities/meta/meta.trans/meta.trans.other/aligned_storage.pass.cpp
    
libcxx/trunk/test/std/utilities/meta/meta.trans/meta.trans.other/aligned_union.pass.cpp
    libcxx/trunk/www/cxx2a_status.html

Modified: libcxx/trunk/include/string
URL: 
http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/string?rev=328064&r1=328063&r2=328064&view=diff
==============================================================================
--- libcxx/trunk/include/string (original)
+++ libcxx/trunk/include/string Tue Mar 20 17:36:05 2018
@@ -658,10 +658,12 @@ public:
     typedef typename __alloc_traits::pointer             pointer;
     typedef typename __alloc_traits::const_pointer       const_pointer;
 
-    static_assert(is_trivial<value_type>::value, "Character type of 
basic_string must be trivial");
-    static_assert((is_same<_CharT, typename traits_type::char_type>::value),
+    static_assert((!is_array<value_type>::value), "Character type of 
basic_string must not be an array");
+    static_assert(( is_standard_layout<value_type>::value), "Character type of 
basic_string must be standard-layout");
+    static_assert(( is_trivial<value_type>::value), "Character type of 
basic_string must be trivial");
+    static_assert(( is_same<_CharT, typename traits_type::char_type>::value),
                   "traits_type::char_type must be the same type as CharT");
-    static_assert((is_same<typename allocator_type::value_type, 
value_type>::value),
+    static_assert(( is_same<typename allocator_type::value_type, 
value_type>::value),
                   "Allocator::value_type must be same type as value_type");
 #if defined(_LIBCPP_RAW_ITERATORS)
     typedef pointer                                      iterator;

Modified: libcxx/trunk/include/string_view
URL: 
http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/string_view?rev=328064&r1=328063&r2=328064&view=diff
==============================================================================
--- libcxx/trunk/include/string_view (original)
+++ libcxx/trunk/include/string_view Tue Mar 20 17:36:05 2018
@@ -208,7 +208,9 @@ public:
     typedef ptrdiff_t                                  difference_type;
     static _LIBCPP_CONSTEXPR const size_type npos = -1; // size_type(-1);
 
-    static_assert(is_trivial<value_type>::value, "Character type of 
basic_string_view must be trivial");
+    static_assert((!is_array<value_type>::value), "Character type of 
basic_string_view must not be an array");
+    static_assert(( is_standard_layout<value_type>::value), "Character type of 
basic_string_view must be standard-layout");
+    static_assert(( is_trivial<value_type>::value), "Character type of 
basic_string_view must be trivial");
     static_assert((is_same<_CharT, typename traits_type::char_type>::value),
                   "traits_type::char_type must be the same type as CharT");
 

Modified: libcxx/trunk/test/std/depr/depr.c.headers/stddef_h.pass.cpp
URL: 
http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/depr/depr.c.headers/stddef_h.pass.cpp?rev=328064&r1=328063&r2=328064&view=diff
==============================================================================
--- libcxx/trunk/test/std/depr/depr.c.headers/stddef_h.pass.cpp (original)
+++ libcxx/trunk/test/std/depr/depr.c.headers/stddef_h.pass.cpp Tue Mar 20 
17:36:05 2018
@@ -48,6 +48,8 @@ int main()
 //   P0767
     static_assert(std::is_trivial<max_align_t>::value,
                   "std::is_trivial<max_align_t>::value");
+    static_assert(std::is_standard_layout<max_align_t>::value,
+                  "std::is_standard_layout<max_align_t>::value");
 #else
     static_assert(std::is_pod<max_align_t>::value,
                   "std::is_pod<max_align_t>::value");

Modified: 
libcxx/trunk/test/std/language.support/support.types/max_align_t.pass.cpp
URL: 
http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/language.support/support.types/max_align_t.pass.cpp?rev=328064&r1=328063&r2=328064&view=diff
==============================================================================
--- libcxx/trunk/test/std/language.support/support.types/max_align_t.pass.cpp 
(original)
+++ libcxx/trunk/test/std/language.support/support.types/max_align_t.pass.cpp 
Tue Mar 20 17:36:05 2018
@@ -10,18 +10,21 @@
 #include <cstddef>
 #include <type_traits>
 
-// max_align_t is a POD type whose alignment requirement is at least as
-//   great as that of every scalar type
+// max_align_t is a trivial standard-layout type whose alignment requirement 
+//   is at least as great as that of every scalar type
 
 #include <stdio.h>
 #include "test_macros.h"
 
 int main()
 {
+
 #if TEST_STD_VER > 17
 //  P0767
     static_assert(std::is_trivial<std::max_align_t>::value,
                   "std::is_trivial<std::max_align_t>::value");
+    static_assert(std::is_standard_layout<std::max_align_t>::value,
+                  "std::is_standard_layout<std::max_align_t>::value");
 #else
     static_assert(std::is_pod<std::max_align_t>::value,
                   "std::is_pod<std::max_align_t>::value");

Added: libcxx/trunk/test/std/strings/basic.string/char.bad.fail.cpp
URL: 
http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/strings/basic.string/char.bad.fail.cpp?rev=328064&view=auto
==============================================================================
--- libcxx/trunk/test/std/strings/basic.string/char.bad.fail.cpp (added)
+++ libcxx/trunk/test/std/strings/basic.string/char.bad.fail.cpp Tue Mar 20 
17:36:05 2018
@@ -0,0 +1,53 @@
+//===----------------------------------------------------------------------===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <string>
+//   ... manipulating sequences of any non-array trivial standard-layout types.
+
+#include <string>
+#include "test_traits.h"
+
+struct NotTrivial {
+    NotTrivial() : value(3) {}
+    int value;
+};
+
+struct NotStandardLayout {
+public:
+    NotStandardLayout() : one(1), two(2) {}
+    int sum() const { return one + two; } // silences "unused field 'two' 
warning"
+    int one;
+private:
+    int two;
+};
+
+int main()
+{
+    {
+//  array
+    typedef char C[3];
+    static_assert(std::is_array<C>::value, "");
+    std::basic_string<C, test_traits<C> > s;
+//  expected-error-re@string:* {{static_assert failed{{.*}} "Character type of 
basic_string must not be an array"}}
+    }
+
+    {
+//  not trivial
+    static_assert(!std::is_trivial<NotTrivial>::value, "");
+    std::basic_string<NotTrivial, test_traits<NotTrivial> > s;
+//  expected-error-re@string:* {{static_assert failed{{.*}} "Character type of 
basic_string must be trivial"}}
+    }
+
+    {
+//  not standard layout
+    static_assert(!std::is_standard_layout<NotStandardLayout>::value, "");
+    std::basic_string<NotStandardLayout, test_traits<NotStandardLayout> > s;
+//  expected-error-re@string:* {{static_assert failed{{.*}} "Character type of 
basic_string must be standard-layout"}}
+    }
+}

Added: libcxx/trunk/test/std/strings/string.view/char.bad.fail.cpp
URL: 
http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/strings/string.view/char.bad.fail.cpp?rev=328064&view=auto
==============================================================================
--- libcxx/trunk/test/std/strings/string.view/char.bad.fail.cpp (added)
+++ libcxx/trunk/test/std/strings/string.view/char.bad.fail.cpp Tue Mar 20 
17:36:05 2018
@@ -0,0 +1,53 @@
+//===----------------------------------------------------------------------===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <string_view>
+//   ... manipulating sequences of any non-array trivial standard-layout types.
+
+#include <string>
+#include "../basic.string/test_traits.h"
+
+struct NotTrivial {
+    NotTrivial() : value(3) {}
+    int value;
+};
+
+struct NotStandardLayout {
+public:
+    NotStandardLayout() : one(1), two(2) {}
+    int sum() const { return one + two; } // silences "unused field 'two' 
warning"
+    int one;
+private:
+    int two;
+};
+
+int main()
+{
+    {
+//  array
+    typedef char C[3];
+    static_assert(std::is_array<C>::value, "");
+    std::basic_string_view<C, test_traits<C> > sv;
+//  expected-error-re@string_view:* {{static_assert failed{{.*}} "Character 
type of basic_string_view must not be an array"}}
+    }
+
+    {
+//  not trivial
+    static_assert(!std::is_trivial<NotTrivial>::value, "");
+    std::basic_string_view<NotTrivial, test_traits<NotTrivial> > sv;
+//  expected-error-re@string_view:* {{static_assert failed{{.*}} "Character 
type of basic_string_view must be trivial"}}
+    }
+
+    {
+//  not standard layout
+    static_assert(!std::is_standard_layout<NotStandardLayout>::value, "");
+    std::basic_string_view<NotStandardLayout, test_traits<NotStandardLayout> > 
sv;
+//  expected-error-re@string_view:* {{static_assert failed{{.*}} "Character 
type of basic_string_view must be standard-layout"}}
+    }
+}

Modified: 
libcxx/trunk/test/std/utilities/meta/meta.trans/meta.trans.other/aligned_storage.pass.cpp
URL: 
http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/utilities/meta/meta.trans/meta.trans.other/aligned_storage.pass.cpp?rev=328064&r1=328063&r2=328064&view=diff
==============================================================================
--- 
libcxx/trunk/test/std/utilities/meta/meta.trans/meta.trans.other/aligned_storage.pass.cpp
 (original)
+++ 
libcxx/trunk/test/std/utilities/meta/meta.trans/meta.trans.other/aligned_storage.pass.cpp
 Tue Mar 20 17:36:05 2018
@@ -10,6 +10,9 @@
 // type_traits
 
 // aligned_storage
+//
+//  Issue 3034 added:
+//  The member typedef type shall be a trivial standard-layout type.
 
 #include <type_traits>
 #include <cstddef>       // for std::max_align_t
@@ -28,6 +31,8 @@ int main()
 #else
     static_assert(std::is_pod<T1>::value, "" );
 #endif
+    static_assert(std::is_trivial<T1>::value, "");
+    static_assert(std::is_standard_layout<T1>::value, "");
     static_assert(std::alignment_of<T1>::value == 1, "");
     static_assert(sizeof(T1) == 10, "");
     }
@@ -42,6 +47,8 @@ int main()
 #else
     static_assert(std::is_pod<T1>::value, "" );
 #endif
+    static_assert(std::is_trivial<T1>::value, "");
+    static_assert(std::is_standard_layout<T1>::value, "");
     static_assert(std::alignment_of<T1>::value == 2, "");
     static_assert(sizeof(T1) == 10, "");
     }
@@ -56,6 +63,8 @@ int main()
 #else
     static_assert(std::is_pod<T1>::value, "" );
 #endif
+    static_assert(std::is_trivial<T1>::value, "");
+    static_assert(std::is_standard_layout<T1>::value, "");
     static_assert(std::alignment_of<T1>::value == 4, "");
     static_assert(sizeof(T1) == 12, "");
     }
@@ -70,6 +79,8 @@ int main()
 #else
     static_assert(std::is_pod<T1>::value, "" );
 #endif
+    static_assert(std::is_trivial<T1>::value, "");
+    static_assert(std::is_standard_layout<T1>::value, "");
     static_assert(std::alignment_of<T1>::value == 8, "");
     static_assert(sizeof(T1) == 16, "");
     }
@@ -84,6 +95,8 @@ int main()
 #else
     static_assert(std::is_pod<T1>::value, "" );
 #endif
+    static_assert(std::is_trivial<T1>::value, "");
+    static_assert(std::is_standard_layout<T1>::value, "");
     static_assert(std::alignment_of<T1>::value == 16, "");
     static_assert(sizeof(T1) == 16, "");
     }
@@ -98,6 +111,8 @@ int main()
 #else
     static_assert(std::is_pod<T1>::value, "" );
 #endif
+    static_assert(std::is_trivial<T1>::value, "");
+    static_assert(std::is_standard_layout<T1>::value, "");
     static_assert(std::alignment_of<T1>::value == 32, "");
     static_assert(sizeof(T1) == 32, "");
     }
@@ -112,6 +127,8 @@ int main()
 #else
     static_assert(std::is_pod<T1>::value, "" );
 #endif
+    static_assert(std::is_trivial<T1>::value, "");
+    static_assert(std::is_standard_layout<T1>::value, "");
     static_assert(std::alignment_of<T1>::value == 32, "");
     static_assert(sizeof(T1) == 32, "");
     }
@@ -126,6 +143,8 @@ int main()
 #else
     static_assert(std::is_pod<T1>::value, "" );
 #endif
+    static_assert(std::is_trivial<T1>::value, "");
+    static_assert(std::is_standard_layout<T1>::value, "");
     static_assert(std::alignment_of<T1>::value == 32, "");
     static_assert(sizeof(T1) == 64, "");
     }
@@ -140,6 +159,8 @@ int main()
 #else
     static_assert(std::is_pod<T1>::value, "" );
 #endif
+    static_assert(std::is_trivial<T1>::value, "");
+    static_assert(std::is_standard_layout<T1>::value, "");
     static_assert(std::alignment_of<T1>::value == 16, "");
     static_assert(sizeof(T1) == 16, "");
     }
@@ -154,6 +175,8 @@ int main()
 #else
     static_assert(std::is_pod<T1>::value, "" );
 #endif
+    static_assert(std::is_trivial<T1>::value, "");
+    static_assert(std::is_standard_layout<T1>::value, "");
     static_assert(std::alignment_of<T1>::value == 1, "");
     static_assert(sizeof(T1) == 1, "");
     }
@@ -168,6 +191,8 @@ int main()
 #else
     static_assert(std::is_pod<T1>::value, "" );
 #endif
+    static_assert(std::is_trivial<T1>::value, "");
+    static_assert(std::is_standard_layout<T1>::value, "");
     static_assert(std::alignment_of<T1>::value == 2, "");
     static_assert(sizeof(T1) == 2, "");
     }
@@ -182,6 +207,8 @@ int main()
 #else
     static_assert(std::is_pod<T1>::value, "" );
 #endif
+    static_assert(std::is_trivial<T1>::value, "");
+    static_assert(std::is_standard_layout<T1>::value, "");
     static_assert(std::alignment_of<T1>::value == 2, "");
     static_assert(sizeof(T1) == 4, "");
     }
@@ -196,6 +223,8 @@ int main()
 #else
     static_assert(std::is_pod<T1>::value, "" );
 #endif
+    static_assert(std::is_trivial<T1>::value, "");
+    static_assert(std::is_standard_layout<T1>::value, "");
     static_assert(std::alignment_of<T1>::value == 4, "");
     static_assert(sizeof(T1) == 4, "");
     }
@@ -210,6 +239,8 @@ int main()
 #else
     static_assert(std::is_pod<T1>::value, "" );
 #endif
+    static_assert(std::is_trivial<T1>::value, "");
+    static_assert(std::is_standard_layout<T1>::value, "");
     static_assert(std::alignment_of<T1>::value == 4, "");
     static_assert(sizeof(T1) == 8, "");
     }
@@ -218,6 +249,8 @@ int main()
 #if TEST_STD_VER > 11
     static_assert(std::is_same<std::aligned_storage_t<7>, T1>::value, "" );
 #endif
+    static_assert(std::is_trivial<T1>::value, "");
+    static_assert(std::is_standard_layout<T1>::value, "");
     static_assert(std::alignment_of<T1>::value == 4, "");
     static_assert(sizeof(T1) == 8, "");
     }
@@ -232,6 +265,8 @@ int main()
 #else
     static_assert(std::is_pod<T1>::value, "" );
 #endif
+    static_assert(std::is_trivial<T1>::value, "");
+    static_assert(std::is_standard_layout<T1>::value, "");
     static_assert(std::alignment_of<T1>::value == 8, "");
     static_assert(sizeof(T1) == 8, "");
     }
@@ -246,6 +281,8 @@ int main()
 #else
     static_assert(std::is_pod<T1>::value, "" );
 #endif
+    static_assert(std::is_trivial<T1>::value, "");
+    static_assert(std::is_standard_layout<T1>::value, "");
     static_assert(std::alignment_of<T1>::value == 8, "");
     static_assert(sizeof(T1) == 16, "");
     }
@@ -260,6 +297,8 @@ int main()
 #else
     static_assert(std::is_pod<T1>::value, "" );
 #endif
+    static_assert(std::is_trivial<T1>::value, "");
+    static_assert(std::is_standard_layout<T1>::value, "");
     static_assert(std::alignment_of<T1>::value == 8, "");
     static_assert(sizeof(T1) == 16, "");
     }
@@ -274,6 +313,8 @@ int main()
 #if TEST_STD_VER > 11
     static_assert(std::is_same<std::aligned_storage_t<16>, T1>::value, "" );
 #endif
+    static_assert(std::is_trivial<T1>::value, "");
+    static_assert(std::is_standard_layout<T1>::value, "");
     static_assert(std::alignment_of<T1>::value == alignof(std::max_align_t),
                   "");
     static_assert(sizeof(T1) == 16, "");
@@ -283,6 +324,8 @@ int main()
 #if TEST_STD_VER > 11
     static_assert(std::is_same<std::aligned_storage_t<17>, T1>::value, "" );
 #endif
+    static_assert(std::is_trivial<T1>::value, "");
+    static_assert(std::is_standard_layout<T1>::value, "");
     static_assert(std::alignment_of<T1>::value == alignof(std::max_align_t),
                   "");
     static_assert(sizeof(T1) == 16 + alignof(std::max_align_t), "");
@@ -292,6 +335,8 @@ int main()
 #if TEST_STD_VER > 11
     static_assert(std::is_same<std::aligned_storage_t<10>, T1>::value, "" );
 #endif
+    static_assert(std::is_trivial<T1>::value, "");
+    static_assert(std::is_standard_layout<T1>::value, "");
     static_assert(std::alignment_of<T1>::value == 8, "");
     static_assert(sizeof(T1) == 16, "");
     }

Modified: 
libcxx/trunk/test/std/utilities/meta/meta.trans/meta.trans.other/aligned_union.pass.cpp
URL: 
http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/utilities/meta/meta.trans/meta.trans.other/aligned_union.pass.cpp?rev=328064&r1=328063&r2=328064&view=diff
==============================================================================
--- 
libcxx/trunk/test/std/utilities/meta/meta.trans/meta.trans.other/aligned_union.pass.cpp
 (original)
+++ 
libcxx/trunk/test/std/utilities/meta/meta.trans/meta.trans.other/aligned_union.pass.cpp
 Tue Mar 20 17:36:05 2018
@@ -13,6 +13,9 @@
 
 // aligned_union<size_t Len, class ...Types>
 
+//  Issue 3034 added:
+//  The member typedef type shall be a trivial standard-layout type.
+
 #include <type_traits>
 
 #include "test_macros.h"
@@ -24,6 +27,8 @@ int main()
 #if TEST_STD_VER > 11
     static_assert(std::is_same<std::aligned_union_t<10, char>, T1>::value, "" 
);
 #endif
+    static_assert(std::is_trivial<T1>::value, "");
+    static_assert(std::is_standard_layout<T1>::value, "");
     static_assert(std::alignment_of<T1>::value == 1, "");
     static_assert(sizeof(T1) == 10, "");
     }
@@ -32,6 +37,8 @@ int main()
 #if TEST_STD_VER > 11
     static_assert(std::is_same<std::aligned_union_t<10, short>, T1>::value, "" 
);
 #endif
+    static_assert(std::is_trivial<T1>::value, "");
+    static_assert(std::is_standard_layout<T1>::value, "");
     static_assert(std::alignment_of<T1>::value == 2, "");
     static_assert(sizeof(T1) == 10, "");
     }
@@ -40,6 +47,8 @@ int main()
 #if TEST_STD_VER > 11
     static_assert(std::is_same<std::aligned_union_t<10, int>, T1>::value, "" );
 #endif
+    static_assert(std::is_trivial<T1>::value, "");
+    static_assert(std::is_standard_layout<T1>::value, "");
     static_assert(std::alignment_of<T1>::value == 4, "");
     static_assert(sizeof(T1) == 12, "");
     }
@@ -48,6 +57,8 @@ int main()
 #if TEST_STD_VER > 11
     static_assert(std::is_same<std::aligned_union_t<10, double>, T1>::value, 
"" );
 #endif
+    static_assert(std::is_trivial<T1>::value, "");
+    static_assert(std::is_standard_layout<T1>::value, "");
     static_assert(std::alignment_of<T1>::value == 8, "");
     static_assert(sizeof(T1) == 16, "");
     }
@@ -56,6 +67,8 @@ int main()
 #if TEST_STD_VER > 11
     static_assert(std::is_same<std::aligned_union_t<10, short, char>, 
T1>::value, "" );
 #endif
+    static_assert(std::is_trivial<T1>::value, "");
+    static_assert(std::is_standard_layout<T1>::value, "");
     static_assert(std::alignment_of<T1>::value == 2, "");
     static_assert(sizeof(T1) == 10, "");
     }
@@ -64,6 +77,8 @@ int main()
 #if TEST_STD_VER > 11
     static_assert(std::is_same<std::aligned_union_t<10, char, short>, 
T1>::value, "" );
 #endif
+    static_assert(std::is_trivial<T1>::value, "");
+    static_assert(std::is_standard_layout<T1>::value, "");
     static_assert(std::alignment_of<T1>::value == 2, "");
     static_assert(sizeof(T1) == 10, "");
     }
@@ -72,6 +87,8 @@ int main()
 #if TEST_STD_VER > 11
     static_assert(std::is_same<std::aligned_union_t<2, int, char, short>, 
T1>::value, "" );
 #endif
+    static_assert(std::is_trivial<T1>::value, "");
+    static_assert(std::is_standard_layout<T1>::value, "");
     static_assert(std::alignment_of<T1>::value == 4, "");
     static_assert(sizeof(T1) == 4, "");
     }
@@ -80,6 +97,8 @@ int main()
 #if TEST_STD_VER > 11
     static_assert(std::is_same<std::aligned_union_t<2, char, int, short >, 
T1>::value, "" );
 #endif
+    static_assert(std::is_trivial<T1>::value, "");
+    static_assert(std::is_standard_layout<T1>::value, "");
     static_assert(std::alignment_of<T1>::value == 4, "");
     static_assert(sizeof(T1) == 4, "");
     }
@@ -88,6 +107,8 @@ int main()
 #if TEST_STD_VER > 11
     static_assert(std::is_same<std::aligned_union_t<2, char, short, int >, 
T1>::value, "" );
 #endif
+    static_assert(std::is_trivial<T1>::value, "");
+    static_assert(std::is_standard_layout<T1>::value, "");
     static_assert(std::alignment_of<T1>::value == 4, "");
     static_assert(sizeof(T1) == 4, "");
     }

Modified: libcxx/trunk/www/cxx2a_status.html
URL: 
http://llvm.org/viewvc/llvm-project/libcxx/trunk/www/cxx2a_status.html?rev=328064&r1=328063&r2=328064&view=diff
==============================================================================
--- libcxx/trunk/www/cxx2a_status.html (original)
+++ libcxx/trunk/www/cxx2a_status.html Tue Mar 20 17:36:05 2018
@@ -166,10 +166,10 @@
        <tr><td><a 
href="https://wg21.link/LWG3020";>3020</a></td><td>[networking.ts] Remove 
spurious nested <tt>value_type</tt> buffer sequence 
requirement</td><td>Jacksonville</td><td></td></tr>
        <tr><td><a 
href="https://wg21.link/LWG3026";>3026</a></td><td><tt>filesystem::weakly_canonical</tt>
 still defined in terms of <tt>canonical(p, 
base)</tt></td><td>Jacksonville</td><td></td></tr>
        <tr><td><a href="https://wg21.link/LWG3030";>3030</a></td><td>Who shall 
meet the requirements of 
<tt>try_lock</tt>?</td><td>Jacksonville</td><td><i>Nothing to do</i></td></tr>
-       <tr><td><a href="https://wg21.link/LWG3034";>3034</a></td><td>P0767R1 
breaks previously-standard-layout types</td><td>Jacksonville</td><td></td></tr>
-       <tr><td><a 
href="https://wg21.link/LWG3035";>3035</a></td><td><tt>std::allocator</tt>'s 
constructors should be 
<tt>constexpr</tt></td><td>Jacksonville</td><td></td></tr>
-       <tr><td><a 
href="https://wg21.link/LWG3039";>3039</a></td><td>Unnecessary <tt>decay</tt> in 
<tt>thread</tt> and 
<tt>packaged_task</tt></td><td>Jacksonville</td><td></td></tr>
-       <tr><td><a 
href="https://wg21.link/LWG3041";>3041</a></td><td>Unnecessary <tt>decay</tt> in 
<tt>reference_wrapper</tt></td><td>Jacksonville</td><td></td></tr>
+       <tr><td><a href="https://wg21.link/LWG3034";>3034</a></td><td>P0767R1 
breaks previously-standard-layout 
types</td><td>Jacksonville</td><td>Complete</td></tr>
+       <tr><td><a 
href="https://wg21.link/LWG3035";>3035</a></td><td><tt>std::allocator</tt>'s 
constructors should be 
<tt>constexpr</tt></td><td>Jacksonville</td><td>Complete</td></tr>
+       <tr><td><a 
href="https://wg21.link/LWG3039";>3039</a></td><td>Unnecessary <tt>decay</tt> in 
<tt>thread</tt> and 
<tt>packaged_task</tt></td><td>Jacksonville</td><td>Complete</td></tr>
+       <tr><td><a 
href="https://wg21.link/LWG3041";>3041</a></td><td>Unnecessary <tt>decay</tt> in 
<tt>reference_wrapper</tt></td><td>Jacksonville</td><td>Complete</td></tr>
        <tr><td><a 
href="https://wg21.link/LWG3042";>3042</a></td><td><tt>is_literal_type_v</tt> 
should be inline</td><td>Jacksonville</td><td>Complete</td></tr>
        <tr><td><a href="https://wg21.link/LWG3043";>3043</a></td><td>Bogus 
postcondition for <tt>filesystem_error</tt> 
constructor</td><td>Jacksonville</td><td></td></tr>
        <tr><td><a 
href="https://wg21.link/LWG3045";>3045</a></td><td><tt>atomic&lt;<i>floating-point</i>&gt;</tt>
 doesn't have <tt>value_type</tt> or 
<tt>difference_type</tt></td><td>Jacksonville</td><td></td></tr>
@@ -180,7 +180,7 @@
 <!--   <tr><td></td><td></td><td></td><td></td></tr> -->
   </table>
 
-  <p>Last Updated: 18-Mar-2018</p>
+  <p>Last Updated: 20-Mar-2018</p>
 </div>
 </body>
 </html>


_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to