Index: include/__config =================================================================== --- include/__config +++ include/__config @@ -801,6 +801,12 @@ # define _LIBCPP_HAS_NO_INLINE_VARIABLES #endif +#if !defined(_LIBCPP_HAS_NO_INLINE_VARIABLES) +# define _LIBCPP_INLINE_VARIABLE inline +#else +# define _LIBCPP_INLINE_VARIABLE +#endif + #ifdef _LIBCPP_HAS_NO_RVALUE_REFERENCES # define _LIBCPP_EXPLICIT_MOVE(x) _VSTD::move(x) #else Index: include/utility =================================================================== --- include/utility +++ include/utility @@ -897,9 +897,7 @@ struct _LIBCPP_TYPE_VIS in_place_t { explicit in_place_t() = default; }; -#ifndef _LIBCPP_HAS_NO_INLINE_VARIABLES -inline -#endif +_LIBCPP_INLINE_VARIABLE constexpr in_place_t in_place{}; template @@ -907,9 +905,7 @@ explicit in_place_type_t() = default; }; template -#ifndef _LIBCPP_HAS_NO_INLINE_VARIABLES -inline -#endif +_LIBCPP_INLINE_VARIABLE constexpr in_place_type_t<_Tp> in_place_type{}; template @@ -917,9 +913,7 @@ explicit in_place_index_t() = default; }; template -#ifndef _LIBCPP_HAS_NO_INLINE_VARIABLES -inline -#endif +_LIBCPP_INLINE_VARIABLE constexpr in_place_index_t<_Idx> in_place_index{}; template struct __is_inplace_type_imp : false_type {};