On Mon, May 30, 2011 at 7:03 PM, Gordon Woodhull <gordon@woodhull.com> wrote:
Gladly, the concepts don't need to be defined within the graph or generated from the graph (! generative concepts would get very confusing!), I just need to define them elsewhere and then refer to them within the graph.  And I'm not sure how this would work, referring to a concept and embedding it as metadata without yet knowing what types it will apply to.

Maybe it will in fact be easier with your simulation than with actual concepts, because we know how to carry metafunctions around.  But I'm also curious to know whether it works with real concepts.

Concepts, as they were proposed, could only appear at namespace scope, so you can't, for instance, have some kind of complex, metaprogrammed concept that is generated based on a compile-time graph from within a template. That would be very powerful, indeed, but is not possible. You also can't pass concepts themselves around as template parameters or alias them within types, so there technically isn't a way to store a concept as data in a compile-time graph.

However, as you have said, since I am emulating concepts with templates, I could branch off from what concepts were and actually support such features, but I'd rather avoid that and stick as close to what would have been standard as I can, at least until I implement everything that would have been standard as well as I can. Perhaps once I finish that, I will consider experimenting with further functionality, but that is a ways off.

--
-Matt Calabrese