diff options
Diffstat (limited to 'libcxx/include')
| -rw-r--r-- | libcxx/include/__config | 4 | ||||
| -rw-r--r-- | libcxx/include/atomic | 6 |
2 files changed, 9 insertions, 1 deletions
diff --git a/libcxx/include/__config b/libcxx/include/__config index 211b5e9ff5a..ec44f763910 100644 --- a/libcxx/include/__config +++ b/libcxx/include/__config @@ -472,7 +472,9 @@ namespace std { #endif // GCC 5 will support variable templates +#if !defined(__cpp_variable_templates) || __cpp_variable_templates < 201304L #define _LIBCPP_HAS_NO_VARIABLE_TEMPLATES +#endif #define _NOEXCEPT throw() #define _NOEXCEPT_(x) @@ -494,7 +496,6 @@ namespace std { #else // __GXX_EXPERIMENTAL_CXX0X__ -#define _LIBCPP_HAS_NO_TRAILING_RETURN #define _LIBCPP_HAS_NO_ALWAYS_INLINE_VARIADICS #if _GNUC_VER < 403 @@ -508,6 +509,7 @@ namespace std { #if _GNUC_VER < 404 #define _LIBCPP_HAS_NO_DECLTYPE #define _LIBCPP_HAS_NO_DELETED_FUNCTIONS +#define _LIBCPP_HAS_NO_TRAILING_RETURN #define _LIBCPP_HAS_NO_UNICODE_CHARS #define _LIBCPP_HAS_NO_VARIADICS #define _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS diff --git a/libcxx/include/atomic b/libcxx/include/atomic index b5d5a27b041..abec2a0b565 100644 --- a/libcxx/include/atomic +++ b/libcxx/include/atomic @@ -552,6 +552,12 @@ typedef enum memory_order namespace __gcc_atomic { template <typename _Tp> struct __gcc_atomic_t { + +#if _GNUC_VER >= 501 + static_assert(is_trivially_copyable<_Tp>::value, + "std::atomic<Tp> requires that 'Tp' be a trivially copyable type"); +#endif + _LIBCPP_INLINE_VISIBILITY #ifndef _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS __gcc_atomic_t() _NOEXCEPT = default; |

