はい、お望みのものが可能です。 (例では、バージョン1.49.0のブーストLIB用ですが、それはまた、新しいディストリビューションのためokです)boost/iterator_facade.hpp
をご覧ください:
template <
class Derived
, class Value
, class CategoryOrTraversal
, class Reference = Value&
, class Difference = std::ptrdiff_t
>
class iterator_facade
テンプレート引数Reference
が重要です。 boost::iterator_facade
から派生する場合は、Reference
と指定してください。例えば、あなたのコードは、次のように見えることができます。
template<typename value_type>
class custom_iterator
: public boost::iterator_facade<
custom_iterator<value_type>,
value_type,
boost::forward_traversal_tag,
value_type
>
{
...
value_type dereference() const{ return value_type(...); }
...
};
は本当に私を助けて、この答えをいただき、ありがとうございます。私は、リファレンステンプレートの引数を指定する前に、値を返そうとしましたが、質問があります。これはコンパイルされましたが、私のクラスのポインタが奇妙な時にnullになるなど、私には非常に奇妙な結果がもたらされました。私は私の質問は、なぜそれはまったくコンパイルされたのでしょうか? – FlamFace