Giriş
Şu satırı dahil ederiz.
Örnek
custom type_index
boost örneği şöyle.
Şu satırı dahil ederiz.
#include <boost/type_index.hpp>
BOOST_TYPE_INDEX_REGISTER_CLASSÖrnek
Kalıtım varsa şöyle yaparız.
type_id Sınıfı
hash_code metodu
Bu metodun sonucu portable olmak zorunda değil.
pretty_name metodu
T tipi için şöyle yaparız.
pretty_name metodu
class A {
public:
BOOST_TYPE_INDEX_REGISTER_CLASS
virtual ~A(){}
};
struct B: public A {
BOOST_TYPE_INDEX_REGISTER_CLASS
};
hash_code metodu
Bu metodun sonucu portable olmak zorunda değil.
pretty_name metodu
T tipi için şöyle yaparız.
boost::typeindex::type_id<T>().pretty_name();std::string için biraz tuhaf bir çıktı veriyor. Şunu alırız.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >type_id _with_cvr Sınıfı
pretty_name metodu
Şöyle yaparız
#include <boost/type_index.hpp>
cout << boost::typeindex::type_id_with_cvr<decltype(v)::value_type>().pretty_name();
Çıktı olarak şunu alırız// when compiled with gcc:
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >
Diğercustom type_index
boost örneği şöyle.
namespace my_namespace { namespace detail {
template <class T> struct typenum;
template <> struct typenum<void>{ enum {value = 0}; };
template <> struct typenum<std::string>{ enum {value = 1}; };
struct my_typeinfo {const char* const type_;};
const my_typeinfo infos[2] = {
{"void"}, {"std::string"}
};
...
}
Hiç yorum yok:
Yorum Gönder