
"Andy Little" <andy@servocomm.freeserve.co.uk> writes:
"David Abrahams" writes
The result of the transform is only required to be "concept-identical" to the result you're looking for.
IMO that behaviour is sloppy. I see no reason why (at least)
boost::is_same < plus< int_<1> ,int_<1> >::type, int_<2> > shouldnt be true.
Patches welcome, and all that. If you can figure out how to do it without greatly complicating the library, I'm sure Aleksey would be glad to adopt your code. Until then, I'll thank you not to sling words like "sloppy" around so blithely.
mpl models itself on runtime C++ but in this case it deviates from following runtime behaviour for no real benefit. Note also that tightening the behaviour wouldnt break any conforming code ;-)
In the user's case, the real benefit is that it drastically reduces the number of lines of implementation code in the library, which has a real impact on the library's usability. vector<int_<1>, int_<2> > vector<integral_c<int,1>, integral_c<int,2> > vector_c<int, 1, 2> are all different types, and they always will be. There's nothing we can do about that, period. Arranging it so that you always get the exact type you expect would require a great deal more code than we're using now, and may not even be possible. -- Dave Abrahams Boost Consulting www.boost-consulting.com