
Double check that a is polymorphic - that is, that it has at least one virtual function. Then get back to us.
Yup, the destructors are virtual (and dynamic_cast is working in both directions). However, it works now (see later comment).
nope, its correct. This is a little known quirk of C++ syntax. Your second version won't compile on the most conforming compilers.
Nifty. I swear that didn't compile when I used it on Friday, but now it does. Now that I have changed it to that format, ar.template register_type<derived_one>(), it works. Out of curiosity, what is the difference between calling it that way and calling ar.register_type<derived_one>()? I've not seen that type of format and would be interested in learning more about it. Thanks again, Jared