Skip to content

Latest commit

 

History

History
66 lines (47 loc) · 1.81 KB

address.md

File metadata and controls

66 lines (47 loc) · 1.81 KB

address

  • memory[meta header]
  • std[meta namespace]
  • allocator[meta class]
  • function[meta id-type]
  • cpp17deprecated[meta cpp]
  • cpp20removed[meta cpp]
pointer address(reference x) const;                      // (1) C++03
pointer address(reference x) const noexcept;             // (1) C++11

const_pointer address(const_reference x) const;          // (2) C++03
const_pointer address(const_reference x) const noexcept; // (2) C++11

この関数は、C++17から非推奨となり、C++20で削除された。オブジェクトから直接アドレスを取得すること。

概要

変数のアドレスを取得する。

戻り値

  • C++03 : &x
  • C++11 : operator&がオーバーロードされていたとしても、xが参照するオブジェクトのアドレスを返す。

非推奨・削除の詳細

オブジェクトからのアドレス取得は、アロケータの実装に依存せず、オブジェクトxに対して式&xもしくはstd::addressof(x)の方法を使用すればよかった。

この関数は必要なかったため、非推奨となった。

#include <iostream>
#include <memory>

int main()
{
  std::allocator<int> alloc;

  int x = 3;

  // 変数xのアドレスを取得する
  int* p = alloc.address(x);

  std::cout << std::hex << p << std::endl;
  std::cout << std::dec << x << std::endl;
}
  • address[color ff0000]
  • std::hex[link /reference/ios/hex.md]
  • std::dec[link /reference/ios/dec.md]

出力例

0x7fff54064a7c
3

参照