
At Tue, 28 Sep 2010 15:36:30 -0400, Daniel Walker wrote:
Was there something unsatisfying about the solution I posted in http://permalink.gmane.org/gmane.comp.lib.boost.devel/209012 ?
Nope, I just missed it.
Oh wait! I think I have another example that's more truthy. :) I'll use Boost.ConceptCheck to flesh it out. Let's define the concept of an AdditivePair to represent the arguments to binary addition. To model the concept a type needs to support first(x), second(x) and add(x) for an object x where all three functions have integer values.
<snip>
We can now adapt std::pair<int,int> to model the AdditivePair concept.
<snip>
And we can also adapt int to model the AdditivePair concept; i.e. int is an additive pair where the second member is 0.
<snip>
That seems pretty natural to me.
Do you honestly think it's as truthy as the solution I offered? IMO it's a slight improvement over the list's previous offering, but making int model AdditivePair is still an odd contortion. AdditivePair still doesn't represent a real abstraction that you'd use anywhere else. By contrast, you could make int model ComplexNumber; that would make real sense and be useful outside of this toy problem. Are you just exploring, or is there another reason we keep heading down this path? -- Dave Abrahams BoostPro Computing http://www.boostpro.com