`type t = type::get_by_name("MyStruct");
variant var = t.create(); // will invoke the previously registered ctor
constructor ctor = t.get_constructor(); // 2nd way with the constructor class
var = ctor.invoke();
std::cout << var.get_type().get_name(); // prints 'MyStruct'`
`type t = type::get_by_name("MyStruct"); variant var = t.create(); // will invoke the previously registered ctor
constructor ctor = t.get_constructor(); // 2nd way with the constructor class var = ctor.invoke(); std::cout << var.get_type().get_name(); // prints 'MyStruct'`
var.get_type().get_name() return std::shared_ptr,not 'MyStruct'.