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>();
}