我想编写一个模板,它将获取实例化函数的返回类型作为参数.
例如,假设我有一个Result模板类:
template<type T>
class Result {
T _result_value;
T& operator=( T that );
~Result( );
}
Run Code Online (Sandbox Code Playgroud)
这个类有几个专业.在析构函数中,我想记录返回类型,并且在operator=分配中我想检查并断言错误值.
理想情况下,我希望能够有这样的定义:
#define RESULT Result< /* decltype magic for type of current function */ >
Run Code Online (Sandbox Code Playgroud)
所以我可以用它:
HFILE MyOpenFile( ... ) {
RESULT result;
}
Run Code Online (Sandbox Code Playgroud)
...将被推断出来Result<HFILE>.这是一个简化的例子:编写RESULT代替Result<HFILE>并不是什么大问题,但是还有其他情况下不容易获得当前函数的返回类型.