- ベストアンサー
※ 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が必要であることを示しています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
これは ・引数の型が value_type & ・返り値の型が char (&)[2] という関数を表します. 返り値の型が若干あやしいかもしれませんが, 例えば typedef char Array2[2]; static Array2 &test(value_type &); と書いてあったらわかりますか?
その他の回答 (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 が使えないはず.
質問者
お礼
ありがとうございます。動作はなんとなく理解できたように思いますが、「ここ」と書いたところの syntax が理解できないので、100% とはいきません。もしよろしければ教えてください。。。
お礼
最初は関数への参照の配列かと思ってしまいましたが、納得です。こういう syntax になるんですね。詳細に説明してくださって、ありがとうございました!