如何编写C++代码,该代码具有“参数外”,类型不知道编译时间? 我想编写一些C++代码单元的模板代码。例如,如果我计算一个数量的平方是一个浮点数,我将得到一个浮点数,但是为了使代码更通用,并为单位做好准备,我认为我应该使用auto作为返回类型,以便作为输入的米变成作为输出的米平方,即 样板 自动平方类型\基本常数vin{ 返回vin*vin; }

如何编写C++代码,该代码具有“参数外”,类型不知道编译时间? 我想编写一些C++代码单元的模板代码。例如,如果我计算一个数量的平方是一个浮点数,我将得到一个浮点数,但是为了使代码更通用,并为单位做好准备,我认为我应该使用auto作为返回类型,以便作为输入的米变成作为输出的米平方,即 样板 自动平方类型\基本常数vin{ 返回vin*vin; },c++,types,auto,C++,Types,Auto,我的问题是,如果我想使用argoutAPI,应该如何实现?我尝试了以下方法,但我的编译器有问题。这是预期的吗?我应该做些什么让我的编译器感到高兴吗?这样做的首选方式是什么 例如: 样板 无效平方\u 2类型\u基本常数和vin、自动和vout{ vout=vin*vin; } 更一般地说,有没有一种方法可以在编译时说,自动输出示例1或自动输出示例2的类型应该是type_base*type_base的类型,这样事情会受到更大的限制,并且我会在编译时检测到函数核心中可能存在的实现问题 当然,在这种情

我的问题是,如果我想使用argoutAPI,应该如何实现?我尝试了以下方法,但我的编译器有问题。这是预期的吗?我应该做些什么让我的编译器感到高兴吗?这样做的首选方式是什么

例如:

样板 无效平方\u 2类型\u基本常数和vin、自动和vout{ vout=vin*vin; } 更一般地说,有没有一种方法可以在编译时说,自动输出示例1或自动输出示例2的类型应该是type_base*type_base的类型,这样事情会受到更大的限制,并且我会在编译时检测到函数核心中可能存在的实现问题


当然,在这种情况下,不需要使用arg_out,但我的真实用户案例有更重的类型,它们是可以是单位的基本类型上的模板。

您可以使用decltype以如下方式确定产品的结果:

#include <iostream>

template<typename type_base>
void squared_2(type_base const & vin, decltype(vin*vin) & vout){
    vout = vin * vin;
}


int main()
{
    double a;
    squared_2(5.,a);
    std::cout<<a<<std::endl;
}


你能给出一个实际的例子,说明你最终想要如何使用它吗?现在我想在计算3D向量的范数时使用它。也就是说,与这两个例子非常相似,只是args是一些向量3,函数称为norm_平方。但我认为在问题中包含这些细节会使问题变得有点过于具体。你也可以尝试抽象它,就像你在模板定义中所做的那样?这将是理想的。让代码更通用、更适合单元意味着什么?这个上下文中的单位是什么?首先,您忘记了返回值void,其次,out参数更好。如果您仍然需要它,您需要第二个模板参数typename TResult,然后是TResult&vout.aah,谢谢,我没有意识到这一点。将查看decltype的更多详细信息:。