boost/python/type_id.hpp
はじめに
<boost/python/type_id.hpp> は、<typeinfo> のような実行時型識別のための型および関数を提供する。主にコンパイラのバグやプラットフォーム固有の共有ライブラリとの相互作用に対する回避策のために存在する。
クラス
type_info クラス
-
class type_info : totally_ordered<type_info>
type_infoインスタンスは型を識別する。std::type_infoが規定しているとおり(ただしコンパイラによっては異なる実装をしている場合もある)、boost::python::type_infoはトップレベルの参照や CV 指定子を表現しない(C++ 標準の 5.2.8 節を見よ)。std::type_infoと異なりboost::python::type_infoインスタンスはコピー可能であり、共有ライブラリ境界をまたいで確実に動作する。
type_info クラスの概要1
namespace boost { namespace python
{
class type_info : totally_ordered<type_info>
{
public:
// コンストラクタ
type_info(std::type_info const& = typeid(void));
// 比較
bool operator<(type_info const& rhs) const;
bool operator==(type_info const& rhs) const;
// オブザーバ
char const* name() const;
};
}}
type_info クラスのコンストラクタ
type_info クラスの比較関数
-
bool operator==(type_info const &rhs) const
- 戻り値
2 つの値が同じ型を示す場合は
true。
注釈
totally_ordered<type_info> を非公開基底クラスとして使用すると、
<=、>=、>および!=が提供される。
type_info クラスのオブザーバ関数
-
char const *name() const
- 戻り値
オブジェクトの構築に使用した引数に対して
nameを呼び出した結果。
関数
operator<<
type_id
例
以下の例は、多少醜いが type_id 機能の使用方法を示している。
#include <boost/python/type_id.hpp>
// ユーザが int の引数を渡した場合にtrueを返す
template <class T>
bool is_int(T x)
{
using boost::python::type_id;
return type_id<T>() == type_id<int>();
}