struct iterator{
struct first_leg {
iterator& it_;
first_leg(const iterator& it) : it_(it) {} Range operator.(const iterator &end) { return Range(it_, end); };
}
first_leg operator.() { return first_leg(*this); }}
iterator a = c.begin();
iterator b = c.end()
Range x = a..b; // dot operator twice ?
for ( auto i : x ) {
// code...
}