Boost logo

Boost :

Subject: Re: [boost] [OT][RFC] standardized compile-time reflection
From: Julien Nitard (julien.nitard_at_[hidden])
Date: 2012-04-24 10:17:16


Hi again,

[MC] Personally I don't have anything against "mirror" I just didn't want
to put any shameless plugs there :) since Mirror is also the name of the
library
that I'm working on. But I'll go with anything the community here suggests
or the Committee decides (if the proposal manages to go that far).

[JN] I guess the proposal should mention the name it thinks is more
appropriate. Your library is one of many using that name for that purpose,
so no shameless plugs ;) I guess that "mirror" is the proper name since the
objects don't reflect themselves, but just my 2 cts.

[MC] [About metadata generation] Actually, this is one of my primary
concerns. I also think that the way
to go is not to reflect everything automatically, but to let the user
to (somehow) choose what should be reflected. But i think that
the process of "marking" namespaces, classes, etc. that should
be reflected, should be decoupled from the declaration of the namespace,
class, etc. because that would allow greater flexibility and also
would allow to cherry-pick, what parts of 3rd-party libraries should be
reflected in concrete applications based on their needs.

 [JN] I think there's a problem in this. If I summarize, the reflection
info is (should) be stored in an immutable global object. That means that
it must (should) be declared in a CPP, not a header, like other global
(/static) variables. If it is, then the compiler must make sure that is
present only once accross various libraries. It may be possible, but I am
not sure. If the declaration of the metadata is not linked to the
declaration of the object, then the compiler has no way to know whether
that info exists and will suppose it does. If it doesn't you'll get a link
error. On the other hand if you force the declaration of the metadata at
the same time as the type, then the compiler knows whether the metadata
exists or not and will result in an earlier error that is probably easier
to analyze.
Now, if the metadata is only type information it *may* be possible to
generate it at will anywhere without linking problem.

I guess the proposal should explicit more how all that should work and
probably requires some compiler expertise I am far from having.

Regards,

Julien


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk