Blame view

3rdparty/boost_1_81_0/boost/json/detail/align.hpp 1.37 KB
63e88f80   Hu Chunming   提交三方库
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
  //
  // 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