libcarla/include/system/boost/json/detail/align.hpp
2024-10-18 13:19:59 +08:00

65 lines
1.4 KiB
C++

//
// Copyright (c) 2019 Vinnie Falco (vinnie.falco@gmail.com)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
// Official repository: https://github.com/boostorg/json
//
#ifndef BOOST_JSON_DETAIL_ALIGN_HPP
#define BOOST_JSON_DETAIL_ALIGN_HPP
#include <boost/align/align.hpp>
BOOST_JSON_NS_BEGIN
namespace detail {
using boost::alignment::align;
// VFALCO workaround until Boost.Align has the type
struct class_type {};
enum unscoped_enumeration_type { };
enum class scoped_enumeration_type { };
// [support.types] p5: The type max_align_t is a trivial
// standard-layout type whose alignment requirement
// is at least as great as that of every scalar type.
struct max_align_t
{
// arithmetic types
char a;
char16_t b;
char32_t c;
bool d;
short int e;
int f;
long int g;
long long int h;
wchar_t i;
float j;
double k;
long double l;
// enumeration types
unscoped_enumeration_type m;
scoped_enumeration_type n;
// pointer types
void* o;
char* p;
class_type* q;
unscoped_enumeration_type* r;
scoped_enumeration_type* s;
void(*t)();
// pointer to member types
char class_type::* u;
void (class_type::*v)();
// nullptr
std::nullptr_t w;
};
} // detail
BOOST_JSON_NS_END
#endif