std::is_sufficiently_aligned

来自cppreference.com
< cpp‎ | memory
 
 
内存管理库
(仅用于阐述*)
分配器
未初始化内存算法
受约束的未初始化内存算法
内存资源
未初始化存储 (C++20 前)
(C++17 弃用)
(C++17 弃用)
垃圾收集器支持 (C++23 前)
(C++11)(C++23 前)
(C++11)(C++23 前)
(C++11)(C++23 前)
(C++11)(C++23 前)
(C++11)(C++23 前)
(C++11)(C++23 前)
 
在标头 <memory> 定义
template< std::size_t N, class T >
bool is_sufficiently_aligned( T* ptr );
(C++26 起)

检查指针 ptr 是否指向对齐值至少为 N 的对象。

如果 ptr 不指向 T 类型(忽略每一层的 cv 限定)的对象,则其行为未定义。

返回值

ptr 指向具有对齐至少为 N 的对象时返回 true;否则返回 false

异常

无抛出。

注解

std::is_sufficiently_aligned 可用作 std::assume_aligned 的前条件。

功能特性测试标准功能特性
__cpp_lib_is_sufficiently_aligned202411L(C++26)std::is_sufficiently_aligned

可能的实现

template<std::size_t N, class T>
bool is_sufficiently_aligned(T* ptr)
{
    return std::bit_cast<std::uintptr_t>(ptr) % N == 0;
}

示例

参阅

alignof (C++11)查询类型的对齐要求
(operator)
alignas (C++11)指定该变量的存储应该按指定量对齐
(specifier)
(C++11 起)(C++23 弃用)
定义适于用作给定大小的类型的未初始化存储的类型
(类模板)
(C++11)
对齐缓冲区中的指针
(函数)
提供按对齐访问 mdspan 成员的类型
(类模板)