#include #include class Derived; template class Base { public: T& get() { return x_; } protected: typedef std::list DerivedList; typedef boost::indirected_range DerivedRange; DerivedRange range() { return DerivedRange(l_); } DerivedList l_; T x_; };