Author: ericwf Date: Thu Nov 17 14:08:43 2016 New Revision: 287255 URL: http://llvm.org/viewvc/llvm-project?rev=287255&view=rev Log: Workaround compilers w/o C++1z inline variables
Modified: libcxx/trunk/include/__config libcxx/trunk/include/utility Modified: libcxx/trunk/include/__config URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/__config?rev=287255&r1=287254&r2=287255&view=diff ============================================================================== --- libcxx/trunk/include/__config (original) +++ libcxx/trunk/include/__config Thu Nov 17 14:08:43 2016 @@ -796,6 +796,11 @@ template <unsigned> struct __static_asse #define _LIBCPP_CONSTEXPR_AFTER_CXX14 #endif +// FIXME: Remove all usages of this macro once compilers catch up. +#if !defined(__cpp_inline_variables) || (__cpp_inline_variables < 201606L) +# define _LIBCPP_HAS_NO_INLINE_VARIABLES +#endif + #ifdef _LIBCPP_HAS_NO_RVALUE_REFERENCES # define _LIBCPP_EXPLICIT_MOVE(x) _VSTD::move(x) #else Modified: libcxx/trunk/include/utility URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/utility?rev=287255&r1=287254&r2=287255&view=diff ============================================================================== --- libcxx/trunk/include/utility (original) +++ libcxx/trunk/include/utility Thu Nov 17 14:08:43 2016 @@ -897,21 +897,30 @@ _T1 exchange(_T1& __obj, _T2 && __new_va struct _LIBCPP_TYPE_VIS in_place_t { explicit in_place_t() = default; }; -inline constexpr in_place_t in_place{}; +#ifndef _LIBCPP_HAS_NO_INLINE_VARIABLES +inline +#endif +constexpr in_place_t in_place{}; template <class _Tp> struct _LIBCPP_TYPE_VIS in_place_type_t { explicit in_place_type_t() = default; }; template <class _Tp> -inline constexpr in_place_type_t<_Tp> in_place_type{}; +#ifndef _LIBCPP_HAS_NO_INLINE_VARIABLES +inline +#endif +constexpr in_place_type_t<_Tp> in_place_type{}; template <size_t _Idx> struct _LIBCPP_TYPE_VIS in_place_index_t { explicit in_place_index_t() = default; }; template <size_t _Idx> -inline constexpr in_place_index_t<_Idx> in_place_index{}; +#ifndef _LIBCPP_HAS_NO_INLINE_VARIABLES +inline +#endif +constexpr in_place_index_t<_Idx> in_place_index{}; template <class _Tp> struct __is_inplace_type_imp : false_type {}; template <class _Tp> struct __is_inplace_type_imp<in_place_type_t<_Tp>> : true_type {}; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits