
AMDG On 12/14/2010 4:41 AM, Matt Calabrese wrote:
Actually, since this thread has started going again, I've hit some complicated issues regarding concept maps that I'd hope someone could help out with. In particular, there is one very troubling situation I've encountered. Imagine three concept types: a "base" concept, a "left" concept which is a refinement of "base", and a "right" concept, which is also a refinement of "base". A programmer creates a type called "foo" and wishes to make a concept map for "left" and also a concept map for "right". Because "left" is a refinement of "base", making a concept map for "left" implicitly makes a concept map for "base". Similarly, since "right" is a refinement of "base", the same thing happens. So the issue is, if someone now writes a function that requires a "base", which concept map is to be used? Should this be a compile-time error? If so, how could this possibly be safely resolved (does anyone know how this was handled in concept proposals)?
I believe that it wasn't an issue for the C++0x concept proposals, because the concept maps for both left and right would depend on being able to find a concept map for base. In Christ, Steven Watanabe