From 2d832d24292aea3925b4c2ae105988f5cbe3e88f Mon Sep 17 00:00:00 2001 From: Marshall Clow Date: Tue, 17 Mar 2015 15:30:22 +0000 Subject: [PATCH] Define a new macro: _LIBCPP_HAS_NO_VARIABLE_TEMPLATES and use it. No functionality change. llvm-svn: 232493 --- libcxx/include/__config | 8 ++++++++ libcxx/include/experimental/chrono | 4 ++-- libcxx/include/experimental/ratio | 4 ++-- libcxx/include/experimental/system_error | 4 ++-- libcxx/include/experimental/type_traits | 4 ++-- 5 files changed, 16 insertions(+), 8 deletions(-) diff --git a/libcxx/include/__config b/libcxx/include/__config index 88ea441..33c386b 100644 --- a/libcxx/include/__config +++ b/libcxx/include/__config @@ -336,6 +336,10 @@ typedef __char32_t char32_t; #define _LIBCPP_HAS_NO_CXX14_CONSTEXPR #endif +#if !(__has_feature(cxx_variable_templates)) +#define _LIBCPP_HAS_NO_VARIABLE_TEMPLATES +#endif + #if __ISO_C_VISIBLE >= 2011 || __cplusplus >= 201103L #if defined(__FreeBSD__) #define _LIBCPP_HAS_QUICK_EXIT @@ -415,6 +419,8 @@ namespace std { // No version of GCC supports relaxed constexpr rules #define _LIBCPP_HAS_NO_CXX14_CONSTEXPR +// GCC 5 will support variable templates +#define _LIBCPP_HAS_NO_VARIABLE_TEMPLATES #define _NOEXCEPT throw() #define _NOEXCEPT_(x) @@ -486,6 +492,7 @@ using namespace _LIBCPP_NAMESPACE __attribute__((__strong__)); #define _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER #define _LIBCPP_HAS_NO_CONSTEXPR #define _LIBCPP_HAS_NO_CXX14_CONSTEXPR +#define _LIBCPP_HAS_NO_VARIABLE_TEMPLATES #define _LIBCPP_HAS_NO_UNICODE_CHARS #define _LIBCPP_HAS_NO_DELETED_FUNCTIONS #define _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS @@ -528,6 +535,7 @@ namespace std { #define _LIBCPP_HAS_NO_NULLPTR #define _LIBCPP_HAS_NO_UNICODE_CHARS #define _LIBCPP_HAS_IS_BASE_OF +#define _LIBCPP_HAS_NO_VARIABLE_TEMPLATES #if defined(_AIX) #define __MULTILOCALE_API diff --git a/libcxx/include/experimental/chrono b/libcxx/include/experimental/chrono index 738ded8..ca9e5f8 100644 --- a/libcxx/include/experimental/chrono +++ b/libcxx/include/experimental/chrono @@ -45,12 +45,12 @@ inline namespace fundamentals_v1 { _LIBCPP_BEGIN_NAMESPACE_CHRONO_LFTS -#if __has_feature(cxx_variable_templates) +#ifndef _LIBCPP_HAS_NO_VARIABLE_TEMPLATES template _LIBCPP_CONSTEXPR bool treat_as_floating_point_v = treat_as_floating_point<_Rep>::value; -#endif /* __has_feature(cxx_variable_templates) */ +#endif /* _LIBCPP_HAS_NO_VARIABLE_TEMPLATES */ _LIBCPP_END_NAMESPACE_CHRONO_LFTS diff --git a/libcxx/include/experimental/ratio b/libcxx/include/experimental/ratio index a393cef..a00a253 100644 --- a/libcxx/include/experimental/ratio +++ b/libcxx/include/experimental/ratio @@ -48,7 +48,7 @@ inline namespace fundamentals_v1 { _LIBCPP_BEGIN_NAMESPACE_LFTS -#if __has_feature(cxx_variable_templates) +#ifndef _LIBCPP_HAS_NO_VARIABLE_TEMPLATES template _LIBCPP_CONSTEXPR bool ratio_equal_v = ratio_equal<_R1, _R2>::value; @@ -68,7 +68,7 @@ template _LIBCPP_CONSTEXPR bool ratio_greater_v template _LIBCPP_CONSTEXPR bool ratio_greater_equal_v = ratio_greater_equal<_R1, _R2>::value; -#endif /* __has_feature(cxx_variable_templates) */ +#endif /* _LIBCPP_HAS_NO_VARIABLE_TEMPLATES */ _LIBCPP_END_NAMESPACE_LFTS diff --git a/libcxx/include/experimental/system_error b/libcxx/include/experimental/system_error index 9b9ab33..2ec2385 100644 --- a/libcxx/include/experimental/system_error +++ b/libcxx/include/experimental/system_error @@ -46,7 +46,7 @@ inline namespace fundamentals_v1 { _LIBCPP_BEGIN_NAMESPACE_LFTS -#if __has_feature(cxx_variable_templates) +#ifndef _LIBCPP_HAS_NO_VARIABLE_TEMPLATES template _LIBCPP_CONSTEXPR bool is_error_code_enum_v = is_error_code_enum<_Tp>::value; @@ -54,7 +54,7 @@ template _LIBCPP_CONSTEXPR bool is_error_code_enum_v template _LIBCPP_CONSTEXPR bool is_error_condition_enum_v = is_error_condition_enum<_Tp>::value; -#endif /* __has_feature(cxx_variable_templates) */ +#endif /* _LIBCPP_HAS_NO_VARIABLE_TEMPLATES */ _LIBCPP_END_NAMESPACE_LFTS diff --git a/libcxx/include/experimental/type_traits b/libcxx/include/experimental/type_traits index 35cdada..ae49fc17 100644 --- a/libcxx/include/experimental/type_traits +++ b/libcxx/include/experimental/type_traits @@ -190,7 +190,7 @@ inline namespace fundamentals_v1 { _LIBCPP_BEGIN_NAMESPACE_LFTS -#if __has_feature(cxx_variable_templates) +#ifndef _LIBCPP_HAS_NO_VARIABLE_TEMPLATES // C++14 20.10.4.1, primary type categories @@ -397,7 +397,7 @@ template _LIBCPP_CONSTEXPR bool is_base_of_v template _LIBCPP_CONSTEXPR bool is_convertible_v = is_convertible<_Tp, _Up>::value; -#endif /* __has_feature(cxx_variable_templates) */ +#endif /* _LIBCPP_HAS_NO_VARIABLE_TEMPLATES */ // 3.3.2, Other type transformations /* -- 2.7.4