C++ 函数定义与使用全解析
1. 尾返回类型语法
在某些情况下,函数的返回类型可能依赖于函数参数的类型。例如,下面的模板函数尝试计算两个向量对应元素乘积的和:
template <typename T1, typename T2>
auto vector_product(const std::vector<T1>& data1, const std::vector<T2>& data2)
-> decltype(data1[0]*data2[0])
{
if(data1.size() != data2.size()) return 0; // Gaurd against unequal vectors
decltype(data1[0]*data2[0]) sum {};
for(size_t i {} ; i<count ; ++i) sum += v1[i]*v2[i];
return sum;
}
这里使用了尾返回类型语法, auto 关键字在函数名之前,告诉编译器返回类型的指定在函数模板头的末尾。返回类型通过 decltype(data1[0]*data2[0]) 指定,它表示 data1 和 data2 第一个元素乘积的类型。
尾返回类型语法也可用于普通非模板
超级会员免费看
订阅专栏 解锁全文
2221

被折叠的 条评论
为什么被折叠?



