Yes, I've removed everything unnecessary to make the error show up, to not confound the problem.
a) yes, but it doesn't declare a member function and then implement it in the middle of the diamond
b) In my actual code, I'm using diamond inheritance of course, but it's not needed to make the code fail to compile.
c) It fails to compile on both apple LLVM 8.0.0 on osx, and on gcc 4.9 on ubuntu 12.04
d) not in the example, but in my project I need it to actually export. Removing the export makes the code compile, but that doesn't help me, since I want to do serialization
Note that I don't actually need to instantiate anything. I can remove `int main` entirely, and only compile an object file and it generates the same error.
To make the code compile, I can do multiple things: remove the text_oarchive include, remove the export directive, remove the virtual inheritance for `struct B`, remove the implementation of `void foo`, remove the serialization of base_object<B> from struct C...
That makes the example compile, but doesn't tell me how to serialize an object with diamond inheritance, where a pure virtual method from the virtual base class is implemented by one of the classes in the middle.