This patch makes global tag variables like std::allocator_arg conform to C++17 by defining them as inline constexpr variables. This is possible without creating an ODR violation now that we don't define strong definitions of those variables in the shared library anymore. Differential Revision: https://reviews.llvm.org/D145589
31 lines
1014 B
C++
31 lines
1014 B
C++
//===----------------------------------------------------------------------===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef _LIBCPP___UTILITY_PIECEWISE_CONSTRUCT_H
|
|
#define _LIBCPP___UTILITY_PIECEWISE_CONSTRUCT_H
|
|
|
|
#include <__config>
|
|
|
|
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
|
|
# pragma GCC system_header
|
|
#endif
|
|
|
|
_LIBCPP_BEGIN_NAMESPACE_STD
|
|
|
|
struct _LIBCPP_TEMPLATE_VIS piecewise_construct_t { explicit piecewise_construct_t() = default; };
|
|
|
|
#if _LIBCPP_STD_VER >= 17
|
|
inline constexpr piecewise_construct_t piecewise_construct = piecewise_construct_t();
|
|
#elif !defined(_LIBCPP_CXX03_LANG)
|
|
constexpr piecewise_construct_t piecewise_construct = piecewise_construct_t();
|
|
#endif
|
|
|
|
_LIBCPP_END_NAMESPACE_STD
|
|
|
|
#endif // _LIBCPP___UTILITY_PIECEWISE_CONSTRUCT_H
|