• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:boost::pointee)

boost::pointeeとは?要約して教えてください

このQ&Aのポイント
  • boost::pointeeとは、boostライブラリの一部であり、Iteratorを通じて参照される型のポインタを取得するためのヘルパークラスです。
  • implというクラスは、pointeeメンバ関数の実装に使用される内部クラスです。このクラスでは、T const&とvalue_type&を仮引数とするtest関数が定義されており、その戻り値の型によってconstが必要かどうかを判断しています。
  • 「ここ」と書かれている部分は、value_type&を引数とするオーバーロードされたtest関数で、必要な場合にヘルパークラスのis_constantメンバ変数がtrueとなり、constが必要であることを示しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

これは ・引数の型が value_type & ・返り値の型が char (&)[2] という関数を表します. 返り値の型が若干あやしいかもしれませんが, 例えば typedef char Array2[2]; static Array2 &test(value_type &); と書いてあったらわかりますか?

matvec
質問者

お礼

最初は関数への参照の配列かと思ってしまいましたが、納得です。こういう syntax になるんですね。詳細に説明してくださって、ありがとうございました!

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

const_iterator なら operator * でデリファレンスすると const 付きの型になるので, 上の template を使って test の返り値の型は char. 一方 const でない iterator だと下の test を使うことになるので返り値の型は char (&)[2]. それぞれの sizeof の値は 1 と 2 で違うので区別ができる. 下の test がないと, const でない iterator が使えないはず.

matvec
質問者

お礼

ありがとうございます。動作はなんとなく理解できたように思いますが、「ここ」と書いたところの syntax が理解できないので、100% とはいきません。もしよろしければ教えてください。。。

関連するQ&A