Ashkan Aliabadi
Dear all,I've decided to write an ABC named BasicIterator, from which all
derived iterators are to be descended. The reason being that I have to refer to iterators inside an interface and I need a general base type as a place holder to which I can refer. Besides, I don't want to use CRTP in the interface, but I don't care if I'm forced to use it inside BasicIterator.As discussed in the interoperability section of iterator_facade (here), the euqal() function must be templatized. The problem is that I have to make equal() a pure virtual member function in order to force derived types override it, but templated virtual functions on the other hand, are not valid.So I was wondering what the best approach is. How can I achieve both of these goals? Please advise.Any ideas/suggestions are welcome.Thanks in advance You might want to take a look at any_range from oven library (http://p-stade.sourceforge.net/oven/doc/html/oven/ranges.html#oven.ranges.an...) or any_iterator from adobe opensource library (http://stlab.adobe.com/classadobe_1_1any__iterator.html). Both of them provide convenient way for declaring methods in interface classes that return or accept ranges of values. HTH, Roman Perepelitsa.