std_returntype
时间: 2023-05-10 08:02:46 浏览: 488
std_returntype是一个宏,其作用是定义一个函数返回类型,这个返回类型是由其他宏实现的。std_returntype的主要作用是简化函数模板的定义和声明。在模板编程中,函数的返回类型通常是由函数参数类型推导出来的,因此在函数模板定义时,要使用auto作为函数返回类型,这会导致代码看起来不够清晰。而使用std_returntype,我们可以通过其他宏的方式,以更加清晰的方式来定义函数模板的返回类型。
std_returntype内部通过宏定义来实现,如下所示:
#define std_returntype(...) \
typename std_enable_if< \
!std::is_void<decltype(__VA_ARGS__)>::value, \
decltype(__VA_ARGS__) \
>::type
这个宏定义了一个typename,其返回类型由std_enable_if和std::is_void决定。如果参数不是void类型,则通过decltype获取参数类型,并将返回类型设为参数类型;如果参数是void类型,则返回空类型。
通过std_returntype,我们可以更加方便地定义函数模板的返回类型。例如,我们可以定义一个函数模板,计算两个数之和:
template <typename T1, typename T2>
std_returntype(T1() + T2()) add(T1 a, T2 b) {
return a + b;
}
在上面的代码中,我们使用了std_returntype来定义函数模板的返回类型。它通过参数推导得到了T1和T2的类型,并使用T1() + T2()来计算它们的和,再通过std_returntype宏来定义函数的返回类型。
总之,std_returntype是一个用于简化函数模板定义和声明的宏,能够方便地计算函数返回类型,使代码更加清晰易读。
阅读全文