extern "C" { extern void srand (int); extern void abort (); } struct DomainBase { ~DomainBase() {} }; struct Interval : public DomainBase { Interval () {} Interval (const Interval &a) {} }; struct IntervalIterator { IntervalIterator () { val_m = 1; } int operator* () { return val_m; } IntervalIterator &operator-- () { val_m -= 1; return *this; } int val_m; Interval abrakadabra; }; struct reverse_iterator { const int &operator*() { IntervalIterator tmp = current; return *--tmp; } IntervalIterator current; }; int main () { reverse_iterator rk_pos; srand (*rk_pos); if (*rk_pos) abort (); }