1//===----------------------------------------------------------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef _LIBCPP___NEW_ALIGN_VAL_T_H
10#define _LIBCPP___NEW_ALIGN_VAL_T_H
11
12#include <__config>
13#include <__cstddef/size_t.h>
14
15#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
16# pragma GCC system_header
17#endif
18
19// <vcruntime_exception.h> defines its own std::align_val_t type,
20// which we use in order to be ABI-compatible with other STLs on Windows.
21#if _LIBCPP_HAS_LIBRARY_ALIGNED_ALLOCATION && defined(_LIBCPP_ABI_VCRUNTIME)
22# include <vcruntime_new.h>
23#endif
24
25_LIBCPP_BEGIN_UNVERSIONED_NAMESPACE_STD
26#if _LIBCPP_HAS_LIBRARY_ALIGNED_ALLOCATION && !defined(_LIBCPP_ABI_VCRUNTIME)
27# ifndef _LIBCPP_CXX03_LANG
28enum class align_val_t : size_t {};
29# else
30enum align_val_t { __zero = 0, __max = (size_t)-1 };
31# endif
32#endif
33_LIBCPP_END_UNVERSIONED_NAMESPACE_STD
34
35#endif // _LIBCPP___NEW_ALIGN_VAL_T_H
36