+/**
+Convenience class for loading derived objects. Inherits from the base class
+loader and shadows its members with ones for the derived type.
+*/
+template<typename O, typename B>
+class DerivedObjectLoader: public B
+{
+public:
+ typedef O Object;
+
+protected:
+ O &obj;
+
+ template<typename... Args>
+ DerivedObjectLoader(O &o, Args &&... a): B(o, std::forward<Args>(a)...), obj(o) { }
+
+public:
+ O &get_object() const { return obj; }
+};
+
+