
Hi Stefan,
- is there a default implementation of the traits classes? I haven't found one in code/coordinate_dimension. this would simplify writing concept models in many cases, especially with 5 different traits for a Point.
But there are registration macro's. They support different use cases. So most people will not have problems adapting their classes to the concepts.
I think these macros are unnecessary.
You can do without if you don't like them. Besides that, Boost has many macro's. Personally I also don't like them too much, but for registration purposes they make sense.
they do not hide implementation details, or simplify type registration beyond what would be possible without macros. it is always my intention to avoid macros in public interfaces when possible. if you agree with that, you could replace them with something like this:
template<typename Geometry> struct tag{ typedef typename geometry_traits<Geometry>::tag tag; };
I understand and we've considered that. But this way, you'll lose MPL compatibility. The way how it is now was discussed by this Boost list before.
these changes could also be implemented easily, since the metafunctions, accessed by algorithms, stay the same.
I agree, but we preferred to not create large trait classes... Regards, Barend