
AMDG On 05/28/2011 09:42 AM, Vicente Botet wrote:
Concepts are able to define default implementations if the type doesn't provides the specific signature. For example in 20.1.2 Comparisons the concept LessThanComparable defines a default for implementation for
bool operator>(U const& a, T const& b) { return b < a; } bool operator<=(U const& a, T const& b) { return !(b < a); } bool operator>=(T const& a, U const& b) { return !(a < b); }
In the definition of the concept less_than_comparable in Boost.Any, you define the implementation of these operators in function of operator<(), but if the types provide the specific signature the specific function is not called. I guess that the default implementation of for example operator<= should use operator< only if the the underlying types don't provide operator<=.
What do you think?
I don't think this is worth the extra complexity. Do you know of any real case where it will either a) change the behavior of a program or, b) make the program more efficient? It will definitely make the vtable larger. In Christ, Steven Watanabe