名稱空間
變體
操作

std::is_sufficiently_aligned

來自 cppreference.com
< cpp‎ | 記憶體
 
 
記憶體管理庫
(僅作說明*)
未初始化記憶體演算法
(C++17)
(C++17)
(C++17)
受約束的未初始化
記憶體演算法
C 庫

分配器
記憶體資源
垃圾回收支援
(C++11)(直到 C++23)
(C++11)(直到 C++23)
(C++11)(直到 C++23)
(C++11)(直到 C++23)
(C++11)(直到 C++23)
(C++11)(直到 C++23)
未初始化儲存
(直到 C++20*)
(直到 C++20*)
顯式生命週期管理
 
定義於標頭檔案 <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_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) 指定變數的儲存應按特定量對齊
(說明符)[編輯]
(自 C++11)(C++23 中已棄用)
定義適合用作給定大小型別的未初始化儲存的型別
(類模板) [編輯]
(C++11)
在緩衝區中對齊指標
(函式) [編輯]
用於對 mdspan 元素進行對齊訪問的型別
(類模板) [編輯]