最終更新日時:
が更新

履歴 編集

sizeof演算子にクラスの非静的メンバを、オブジェクトを作らずに指定できるようにする(C++11)

概要

クラスの非静的メンバ変数のサイズを取得したい場合、そのクラスのオブジェクトを生成してからsizeof演算子にメンバを指定する必要があった。その制限が外され、クラスと非静的メンバ変数を、スコープ解決演算子 :: 区切りでsizeof演算子に指定できるようになった:

#include <iostream>

struct X {
  int m;
};

int main()
{
  const std::size_t size = sizeof(X::m);
  std::cout << size << std::endl;
}

これができなかったバージョンでは、sizeof(((X*)0)->m)のような回避策がとられていた。

参照