インスタンス化されている関数の戻り値の型をパラメーターとして取得するテンプレートを作成したいと思います。
たとえば、Result
テンプレート化されたクラスがあるとします。
template<type T>
class Result {
T _result_value;
T& operator=( T that );
~Result( );
}
このクラスにはいくつかの専門分野があります。デストラクタでは戻り値の型をログに記録し、operator=
代入内ではエラー値をチェックしてアサートしたいと考えています。
理想的には、次のような定義ができるようにしたいと考えています。
#define RESULT Result< /* decltype magic for type of current function */ >
だから私はそれを使うことができました:
HFILE MyOpenFile( ... ) {
RESULT result;
}
...これは と推定されResult<HFILE>
ます。RESULT
これは簡単な例です。代わりに書くことResult<HFILE>
は大したことではありませんが、現在の関数の戻り値の型を簡単に取得できないシナリオは他にもあります。