最終更新日時:
が更新

履歴 編集

function
<memory>

std::pointer_bits_available(C++29)

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

処理系

関連項目

参照