10 #ifndef META_UTIL_CLONABLE_H_ 
   11 #define META_UTIL_CLONABLE_H_ 
   27 template <
class Root, 
class Base, 
class Derived>
 
   40     virtual std::unique_ptr<Root> 
clone()
 const 
   42         return make_unique<Derived>(
static_cast<const Derived&
>(*this));
 
   51 template <
class Base, 
class Derived>