
Gennadyi wrote: [snip]
You must have a funny definition of "definition".
Ok. I admit using word definition is at best stretch. But let me give this imaginary example where I will try to explain what I mean.
Let say for the Project1 we defined a house model like this:
House is a big cube.
Now for the Project1 it was enough and we got away with this "incomplete" definition. For the Project2 we start working with objects has or has not windows and doors. So we added following "updates to definition"
House has windows. House has doors.
So what is above statements in regards to our House model. It's not a [part of] definition, because definition was done earlier. But it does not mean that houses we model in Project1 did not have windows or doors. So above two statements are not part of definition, but part of what House is actually is.
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.
Ok, above is most probably is just a gibberish. After all it's not that important how you look at this. You may as well consider traits as representative of the orthogonal to models definitions universe of concepts and categories. Or may be it just somewhere in intersection.
It is not gibberish. As you know, one has to be careful of using words in a non-C++ way. /David