
"David Bergman" <davidb@home.se> writes:
You may argue that by making additional specification we are essentially defining new model: House with doors and windows. But I do not see why should we? smart_ptr is still smart_ptr even though you added statement that it is dereferenceable. It was dereferenceble by definition, you just did not have means to ask it before.
This extra-typical "adornments" are part of what I would call a Feature Model. So, those stated relations constitute part of the Concept's definition. This is what Andy mentioned as well, and I think a few of us see here, the traits being used to define the Concept.
Yes, associated types are an essential element of Concepts, and the associated types and a method to reach them (often traits) is part of the Concept definition. C++ types, however, are not Concepts, and trait specializations are not part of the definitions of those C++ types. -- Dave Abrahams Boost Consulting www.boost-consulting.com