TypeMeta¶
- class
TypeMeta
¶ The meta class for all types.
TypeMeta is commonly used for type identification:
auto meta1 = dragon::TypeMeta::Make<float>(); auto meta2 = dragon::TypeMeta::Make<float>(); std::cout << (meta1 == meta2) << std::endl; // 1 std::cout << (meta1.id() == meta2.id()) << std::endl; // 1 std::cout << meta1.Match<float>() << std::endl; // 1 std::cout << (meta1.id() == dragon::TypeMeta::Id<float>()) << std::endl; // 1
Default constructor and destructor are available for non-fundamental types:
auto meta = dragon::TypeMeta::Make<std::string>(); auto* raw_string_data = malloc(1 * meta.itemsize()); meta.ctor()(raw_string_data, 1); auto* string_data = reinterpret_cast<std::string*>(raw_string_data); std::cout << string_data[0].size(); meta.dtor()(raw_string_data, 1);