Workaround compilers w/o C++1z inline variables
llvm-svn: 287255
Cr-Mirrored-From: sso://chromium.googlesource.com/_direct/external/github.com/llvm/llvm-project
Cr-Mirrored-Commit: ded7cf916f0234e0d6b33814303f6bacf7b5a18f
diff --git a/include/utility b/include/utility
index 52c062d..3642214 100644
--- a/include/utility
+++ b/include/utility
@@ -897,21 +897,30 @@
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 {};