
Robert Ramey wrote:
On the other hand - I don't see the motivation for including concepts in the core language. Haven't we been able to implement concept checking with the current facilities of the library? It seems to me that the main problem these days with the C++ language these days is that its too hard to write a correct compiler for it. Making the core language fancier will only make this problem worse.
Concepts in the language allow things that aren't currently possible with C++98. For example, standard algorithms of the form: fn( Iterator first, Iterator last ) fn( Iterator first, Iterator last, Functor f ) cannot have overloads (in C++98) taking containers/ranges: fn( Iterator first, Iterator last ) fn( Iterator first, Iterator last, Functor f ) fn( Range rng ) fn( Range rng, Functor f ) as the last overload is ambiguous. Concepts will allow this to be resolved as a Functor will not match the Iterator requirements :).
While, the commitee is at it - how about re-visiting two-phase lookup. Apparently there are enough implementers skeptical about it that they've declined to implement it. (for good reason in my opinion). I believe this is related to the "export" feature - which has also failed to gain traction.
export is way too complicated to implement, including changes to the output the compiler generates and how the linker works. Two-phase lookup has been implemented by a growing number of compiler vendors. The reason why some vendors choose not to implement this is that it will break (a lot of?) existing code.
So its seems to me that there are a number of issues more important/urgent than the ones currently being focused on.
I, for one, like concepts. They also help simplify the implementation of functions like std::distance as they remove the need to use iterator_traits and the iterator categories that clutter implementations and make them harder to read. - Reece _________________________________________________________________ Express yourself instantly with MSN Messenger! Download today it's FREE! http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/