Boost logo

Boost :

Subject: [boost] [OT][RFC] standardized compile-time reflection
From: Matus Chochlik (chochlik_at_[hidden])
Date: 2012-04-20 05:11:31


Dear members of the Boost community,

(Sorry for being slightly off-topic here)

In the last couple or years I've been working on the design
and implementation of portable reflection in C++.
I've written several reflection libraries (that are hopefuly
gradually improving). For the latest incarnation see
the Mirror reflection utilities written in C++11:

http://kifri.fri.uniza.sk/~chochlik/mirror-lib/html/

Recently I've learned that the Standardization Committee has
issued a call for proposals for additions to the standard
to the wider community, so I've decided to write down my own
ideas on how compile-time reflection should look like in C++.

Afterwards I discussed it with several people including
Dean Michael Berris, who is the co-author of n3340 "Rich pointers"
and is also interested in adding run-time (and static) reflection to C++.
We've decided that we merge the ideas from my paper into his
proposal (which has not happened yet and will probably take a while).

However, n3340 deals with more than just static reflection, so
I would like to start a discussion and ask the members
of the Boost community for their opinions about
the compile-time-specific parts that are described in the following
paper, before writing the final proposal:

http://kifri.fri.uniza.sk/~chochlik/jtc1_sc22_wg21/std_cpp_refl.pdf

It is a bit lengthy so you can skip sections 1., 2. and probably
also section 3., if you are knowledgeable about the domain.

The most important parts are: the whole section
4. "Technical specification" and also 5., 6. and 7.
Section 7. "Unresolved issues" lists several important
things that need to be worked out and 3. has some rationale for
the design decisions.

Note that the paper has the basic structure of a standard proposal,
but is not written in standardese nor is it "polished" (since it will be
merged into another paper and probably re-worded).
It is my first attempt at a standard proposal and I'm not a member
of the Committee so please bear with me :-).

Dean and I have also independently decided to write proof-of-concept
implementations - compiler extensions for clang and gcc respectivelly.

The sources for the gcc plugin are hosted here:

https://github.com/matus-chochlik/std_cpp_refl

It's in a very early stage, but if someone has some tips or hints
they'll be welcome.

Thanks in advance for any (negative or positive) feedback.

Best regards,

Matus Chochlik


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