我想编写一个模板,该模板将在其中实例化它的函数的返回类型作为参数。
例如,假设我有一个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>
不是什么大不了的事,但还有其他场景,当前函数的返回类型不容易获得。