.. _traits: Traits ====== 概要 ---- 型特性(type traits)を提供する。 * ヘッダ .. code-block:: cpp #include クラス一覧 ---------- いずれも\ ``tlnc``\ 名前空間に属する。 is_*系 ^^^^^^ ``is_``\ で始まるクラステンプレートは、ある条件を満たす時に\ ``std::true_type``\ を継承し、 条件を満たさない時は\ ``std::false_type``\ を継承する。 .. cpp:class:: is_ublas_vector ``T``\ が\ ``boost::numeric::ublas::vector_expression``\ から派生しているかを判定する。 .. cpp:class:: is_ublas_matrix ``T``\ が\ ``boost::numeric::ublas::matrix_expression``\ から派生しているかを判定する。 .. cpp:class:: is_expression ``T``\ が\ ``tlnc::expressions``\ 名前空間内で定義され、数式内に記述できる型かどうかを判定する。 .. cpp:class:: is_callable 関数または関数オブジェクトを表す型\ ``T``\ のインスタンスに対して、 ``U...``\ を型とするオブジェクトを引数として与えて呼び出しが行えるかどうかを判定する。 .. cpp:class:: is_value ``T``\ が\ :cpp:class:`constant`\ のテンプレートパラメータとなることができるかどうかを判定する。 詳細は\ :cpp:class:`constant`\ に記載する。 その他 ^^^^^^ .. cpp:class:: value_type .. cpp:type:: type ``T``\ が\ :cpp:class:`is_ublas_vector`\ か\ :cpp:class:`is_ublas_matrix` を満たす場合は\ ``T::value_type``\ 、そうでなければ\ ``T``\ となる。 エイリアス\ ``value_type_t``\ が存在する。 .. _constant_traits: .. cpp:class:: constant_traits * 宣言 .. code-block:: cpp template struct constant_traits; :cpp:class:`expressions::constant`\ から様々な情報を取得するためのtraits。 .. cpp:member:: static constexpr bool is_constant ``T``\ が\ :cpp:class:`expressions::constant`\ で、 :cpp:class:`expressions::constant`\ に渡されているテンプレートパラメータが :cpp:class:`is_value`\ を満たす時に\ ``true``\ 、 それ以外の時に\ ``false``\ となる。 .. cpp:member:: static constexpr bool is_zero ``is_constant``\ が\ ``false``\ の時は常に\ ``false``\ となる。 ``is_constant``\ が\ ``true``\ で、 かつ\ :cpp:class:`expressions::constant`\ に渡されているテンプレートパラメータが ちょうど\ ``0.0``\ を表す場合に\ ``true``\ となる。 .. cpp:member:: static constexpr bool is_one ``is_constant``\ が\ ``false``\ の時は常に\ ``false``\ となる。 ``is_constant``\ が\ ``true``\ で、 かつ\ :cpp:class:`expressions::constant`\ に渡されているテンプレートパラメータが ちょうど\ ``1.0``\ を表す場合に\ ``true``\ となる。 .. cpp:type:: zero_type ``is_constant``\ が\ ``false``\ の時は定義されない。 ``is_constant``\ が\ ``true``\ の時は、 :cpp:class:`expressions::constant`\ が保持する値の型のコンストラクタに ``0.0``\ を渡した時の値を表現する型を保持する。 .. cpp:type:: one_type ``is_constant``\ が\ ``false``\ の時は定義されない。 ``is_constant``\ が\ ``true``\ の時は、 :cpp:class:`expressions::constant`\ が保持する値の型のコンストラクタに ``1.0``\ を渡した時の値を表現する型を保持する。