The good thing about CAMP is that the minimum required to make it work is standard C++ code, but nothing prevents you from using third-party tools on top of it like a precompiler, to automate the declaration step.
Yes completely.
I'd be very insterested to hear about your experience with boost.mirror, and the one you wrote
My experience : I needed only the attributes of the classes to be reflected in the projects I used them (no functions/constructors).
boost.mirror : mirror does 'too perfect reflection' IMO. I mean, it's useful if you want to know for each class, its namespace (which might be a good thing if you are into grouping things for a GUI designing system..), and too much informations : there are more lines to write if you want something reflected.
On the other hand, the completely external system is interesting, but its more a curiosity for me.
my system : the first I did was like camp, but with less features : only reflected attributes. It was design to allow fake classes, but I never used this functionnality in the end. The internals were quite like CAMP (from what I have seen of it, which is only a little part). It was template based : there was a class that represent a class, one that represent objects, few functions to complete (eg : get the name of the class as string, get the attributes informations), then you got one main class to register all the classes and their parents in the main.
It worked well, until I had to produce several classes in my projects, with tons of attributes (11 engins!! mocap, graphic, physic...), and made the classes able to talk to each other over the network.
In the first time, I used doxygen (with automatic test/fail compilation) to produce the code, this was unfortunately(!) working so I stuck with a it some times.
I was not happy with all the 'registering system', separates classes and overall performances (creation/destruction of class representing elements etc...). I decided to do my code much more high level and pure C++ (1 declaration only). I did it with macros and that was pretty cool. You can get a glimpse of it here :
http://www.ogre3d.org/forums/viewtopic. ... 75#p377757.
Later I decided that it was not easy to maintain, and not has simple to use as I wanted.
But it was definitely more powerful than the first thing, because I could even add many aspects to a class in one word (networkable, serializable, guiable...). I rolled in 2 days a parser with spirit (boost spirit) for a language of my own. That language is used only in the .h, and is closed to java/c++ things. Then generates only .h. Its extremely cool, because very readable, simple to use, and I can add my own caracateristics to attributes, functions and classes very easily. I want to propose something equivalent in my so3dtools project (but before that I have to finish the wiki and a few demos).
Could it be you are the main creator of the camp library?