namespace std {
constexpr unsigned int pointer_bits_available(size_t alignment); // (1) C++29
}
概要
指定したアライメントを持つオブジェクトを指すポインタにおいて、ポインタタギングに使用できるビット数を取得する。
pointer_tag_pair<Ptr>のBitsRequestedのデフォルト値は、この関数に指す先の型のアライメントを渡した結果として定義される。
事前条件
alignmentが2のべき乗であること
戻り値
アライメントalignmentを持つ仮想的なオブジェクトを指すポインタ内の、使用されないビット数(処理系定義)を返す。
定数式に評価される条件
事前条件を満たしていること。
備考
alignmentが1より大きい場合、結果は非0であることが推奨される- 多くのプラットフォームでは、結果は
countr_zero(alignment)とmax_pointer_bits_availableの小さい方となる
例
#include <memory>
#include <iostream>
int main()
{
// 8バイトアライメントのオブジェクトへのポインタで使えるタグのビット数
std::cout << std::pointer_bits_available(8) << std::endl;
}
出力例
3
バージョン
言語
- C++29
処理系
- Clang: ??
- GCC: ??
- Visual C++: ??