8.2 バイナリファイルから変数 (ポインタ以外) を読む

次のテンプレートは,C 互換型(POD 型)のオブジェクト var をバイナリファイルの入力ストリーム istr から読み込み,成功したときに限り真を返します。

template<class T, class Traits>
bool read_var(T& var, std::basic_istream<char, Traits>& istr)
{
  return istr.read(
            const_cast<char*>(
              &reinterpret_cast<char volatile&>(var)
            ),
            sizeof(var)
          );
}

C 互換型(POD 型)以外を指定した場合の動作は未定義です。


元ネタ
このエントリーを含むはてなブックマーク