我想编写一些可用于 C++ 单元的模板化代码。例如,如果我计算一个浮点数的平方,我会得到一个浮点数,但为了使代码更通用并为单位做好准备,我认为我应该使用 auto 作为返回类型,以便将米作为输入变成米的平方作为输出,即
template<typename type_base>
auto squared(type_base const vin){
return vin * vin;
}
我的问题是,如果我想使用“arg out”API,应该怎么做?我尝试了以下,但我的编译器抱怨。这是预期的吗?我应该做些什么来让我的编译器满意吗?这样做的首选方法是什么?
这个例子:
template<typename type_base>
void squared_2(type_base const & vin, auto & vout){
vout = vin * vin;
}
更一般地说,在编译时有一种方法可以说自动输出(示例 1)或自动 vout(示例 2)的类型应该是 的类型type_base * type_base
,这样事情就会受到更多的限制,并且我会检测到可能的实现问题在编译时函数的核心?
当然,在这种情况下并没有真正需要使用 arg_out,但我真正的用户案例具有更重的类型(它们是可能是单位的基本类型的模板)。