std::is_sufficiently_aligned
来自 cppreference.cn
定义于头文件 <memory> |
||
template< std::size_t N, class T > bool is_sufficiently_aligned( T* ptr ); |
(since C++26) | |
检查指针 ptr 是否指向一个对象,该对象的对齐方式的值至少为 N。
如果 ptr 没有指向类型为 T
的对象(忽略所有级别的 cv 限定),则行为未定义。
目录 |
[编辑] 返回值
true 如果 ptr 指向一个对齐方式至少为 N 的对象;否则 false。
[编辑] 异常
不抛出任何异常。
[编辑] 注释
std::is_sufficiently_aligned
可以用作 std::assume_aligned 的前提条件。
特性测试 宏 | 值 | Std | 特性 |
---|---|---|---|
__cpp_lib_is_sufficiently_aligned |
202411L |
(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) |
查询类型的对齐要求 (运算符) |
alignas (C++11) |
指定变量的存储应按特定量对齐 (说明符) |
(since C++11)(deprecated in C++23) |
定义适合用作给定大小类型的未初始化存储的类型 (类模板) |
(C++11) |
在缓冲区中对齐指针 (函数) |
(C++26) |
用于对齐访问 mdspan 元素的类型 (类模板) |