名前空間
変種
操作

std::is_sufficiently_aligned

From cppreference.com
< cpp‎ | memory
 
 
メモリ管理ライブラリ
(説明用*)
未初期化メモリのアルゴリズム
(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-修飾を無視する)を指していない場合、未定義の動作となります。

目次

[編集] 戻り値

true: ptrがアライメントがN以上であるオブジェクトを指している場合。それ以外の場合は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 の要素へのアラインメントされたアクセスのための型
(class template) [編集]
English 日本語 中文(简体) 中文(繁體)