
MB <mb2act@yahoo.co.jp> writes:
Hi,
David Abrahams wrote:
MB <mb2act@yahoo.co.jp> writes:
Hi,
This proposal is somewhat beyond the current Boost.Range. I have been looking for "how to define compile-time polymorphism", which Boost.Range and Boost.Serialization etc are combating.
Motivation: There is no conforming way of customization if you cannot open namespaces that contain types you customize.
New Implementation: Provide a namespace for customization by using a type named 'overloaded' that triggers intentional ADL on 2nd-phase lookup. (This idea comes from Boost.Serialization.)
It was considered already. Look for the use of the phrase "domain tag" in http://lists.boost.org/boost-users/2005/03/10346.php and following messages.
Mr.Dimov wrote at http://lists.boost.org/boost-users/2005/03/10349.php
Maybe I'll just bite the bullet and start putting overloads in std instead one day.
I've fallen into the same situation. As I'm afraid of opening namespaces like 'ATL', the customization way is missing.
Question4: This technique that triggers intentional ADL is famous? What do they call? Who is the inventor? Should I call "Ramey Lookup"?
I think I may have invented the technique you're showing.
I call it "Abrahams Lookup" :-)
It's not original enough to warrant putting my name on it, and it isn't good enough for me to be proud of. So maybe "MB Lookup?"
I thought the combination of your Lookup and Ramey Trick could workaround broken compilers without users' burden. But Boost.Range has metafunctions that require 'class template partial specialization'. I have missed the point. I admit that the combination is not generalized enough to bear with the extra parameter.
You might see also http://lists.boost.org/Archives/boost/2005/03/83124.php -- Dave Abrahams Boost Consulting www.boost-consulting.com