decltype
decltype(expression) で式の型を得ることができる。
利用シーン
- プロトタイプ宣言の型指定
- 関数の戻り値の型を得る
typeinfoを併用して使い方を見てみる。typeinfoは実行時型情報(RTTI RunTimeTypeIdentification)を取得する機能である。
また、C++のコンパイラが名前マングルした(シンボルがuniqueな名前となるように)文字列を閲覧するのではなく、デマングルして宣言した型であることを確認する。
libstdc++のcxxapi abi::__cxa_demangle()関数を利用する。
また、C++のコンパイラが名前マングルした(シンボルがuniqueな名前となるように)文字列を閲覧するのではなく、デマングルして宣言した型であることを確認する。
libstdc++のcxxapi abi::__cxa_demangle()関数を利用する。
type traits
型の特徴を調べたり、型の特徴を操作する関数C++11では、type_traitsをインポートして enable_if が使える。
template <bool B, Class T = void>enable_ifは、Bがtrueの時にtypedef T type;をもち、Bがfalseであればtypeをもたない。
struct enable_if;
SFINAE(Substitution Failure Is Not An Error)用途に使われる。
SFINAEは置き換え失敗はエラーにあらず、という意味で関数をオーバーライドする際、型変換がうまくいかなければオーバーライドの候補から自動ではずすことができる記述である。
ていうかいろんな書き方があってC++レベルが足りてない。以下の様な書き方があるってことを認識しておこう。
0 件のコメント:
コメントを投稿