std::aligned_union

定义于头文件 <type_traits>
template< std::size_t Len, class... Types >
struct aligned_union;
(C++11 起)

提供嵌套类型 type ,它是平凡类型,且其大小和对齐适合用作任何列于 Types 的类型的一个对象的未初始化存储。存储的大小至少为 Lenstd::aligned_union 亦确定所有 Types 中最严格(最大)的对齐要求,使之可用作常量 alignment_value

sizeof...(Types) == 0 ,则行为未定义。

是否支持任何扩展对齐是实现定义的。

目录

成员类型

名称 定义
type 适用于存储来自 Types 的任何类型的平凡类型

辅助类型

template< std::size_t Len, class... Types >
using aligned_union_t = typename aligned_union<Len,Types...>::type;
(C++14 起)

成员常量

alignment_value
[静态]
所有 Types 的最严格对齐
(公开静态成员常量)

可能的实现

#include <algorithm>
template <std::size_t Len, class... Types>
struct aligned_union
{
    static constexpr std::size_t alignment_value = std::max({alignof(Types)...});
 
    struct type
    {
      alignas(alignment_value) char _s[std::max({Len, sizeof(Types)...})];
    };
};

示例

参阅

(C++11)
获取类型的最小对齐字节数
(类模板)
定义适用作给定大小的类型的未初始化存储的类型
(类模板)

版本历史

  • (当前 | 先前 2017年11月24日 (五) 18:34Fruderica讨论 | 贡献 . . (1,735字节) (+1). . (撤销)
  • 当前 | 先前 2017年11月24日 (五) 18:34Fruderica讨论 | 贡献 . . (1,734字节) (+99). . (p0767r1 POD -> 平凡) (撤销)
  • 当前 | 先前 2017年7月22日 (六) 21:26Fruderica讨论 | 贡献. . (1,635字节) (-227). . (撤销)
  • 当前 | 先前 2014年10月26日 (日) 18:11P12bot讨论 | 贡献 . . (1,862字节) (0). . (Fix some translations) (撤销)
  • 当前 | 先前 2013年7月2日 (二) 11:38P12bot讨论 | 贡献 . . (1,862字节) (-122). . (Use {{lc}}. Update links. Various fixes.) (撤销)
  • 当前 | 先前 2012年11月2日 (五) 17:27P12bot讨论 | 贡献 . . (1,984字节) (+249). . (r2.7.3) (机器人添加:de, en, es, fr, it, ja, pt, ru) (撤销)
  • 当前 | 先前 2012年10月27日 (六) 11:35P12讨论 | 贡献 . . (1,735字节) (0). . (1个修订: Translate from the English version) (撤销)
  • 当前 | 先前 2012年10月26日 (五) 06:00TranslationBot讨论 | 贡献. . (1,735字节) (-45). . (Translated from the English version using Google Translate) (撤销)
  • 当前 | 先前 2012年10月26日 (五) 03:33P12讨论 | 贡献 . . (1,780字节) (0). . (1个修订: Translate from the English version) (撤销)
  • 当前 | 先前) 2012年10月25日 (四) 12:00TranslationBot讨论 | 贡献. . (1,780字节) (+1,780). . (Translated from the English version using Google Translate)