C++ 如何为阵列选择更大的数据类型?

C++ 如何为阵列选择更大的数据类型?,c++,arrays,types,C++,Arrays,Types,我的函数采用两个数组,它们以基本数据类型存储数据 我想为我的结果数组选择更大的数据类型,以防止数据丢失 将值插入数组时 例如:第一个数组存储int,第二个数组存储double。结果数组应具有双精度 template<std::size_t length, typename A1, typename A2> constexpr auto function(A1 array1, A2 array2){ //e.g array1 ints, array2 doubles /

我的函数采用两个数组,它们以基本数据类型存储数据

我想为我的
结果
数组选择更大的数据类型,以防止数据丢失 将值插入数组时

例如:第一个数组存储int,第二个数组存储double。
结果
数组应具有双精度

template<std::size_t length, typename A1, typename A2>
constexpr auto function(A1 array1, A2 array2){
    //e.g array1 ints, array2 doubles
    //do calculations and insert values into result array
    std::array< ???, length> result{};
    return array3;
}
模板
constexpr自动功能(A1阵列1、A2阵列2){
//e、 g阵列1整数,阵列2双倍
//执行计算并将值插入结果数组
std::数组<???,长度>结果{};
返回阵列3;
}
去救援。只要存在两种数组元素类型都可以转换为的类型,它就会为您提供该类型。因此,对于
int
double
std::common_type
将为您提供
double
。您可以将其用于阵列,如

std::array<std::common_type_t<A1::value_type, A2::value_type>, length> result{};
std::数组结果{};

确定所有类型T…中的通用类型,即所有类型T。。。可以隐式转换为。如果存在此类类型(根据以下规则确定),则成员类型将命名该类型。否则,不存在成员类型


作为@formerlyknownas_463035818注释,您要使用:

模板
constexpr自动功能(A1阵列1、A2阵列2){
//e、 g阵列1整数,阵列2双倍
//执行计算并将值插入结果数组
std::数组结果{};
返回阵列3;
}

一般还是仅针对预定义类型?您可以简单地比较sizeofs,我想…@BartekBanachewicz输入数组将具有一种基本数据类型。可以是任何东西,我只想拿大一点的。不需要给学分,评论已经没有了(我正在考虑很快改变我的尼克,只是等待一个好主意;)formerlyknownas(formerlyknownas)怎么样@保罗·埃文斯:我知道你在那里做了什么,递归先生。@Formerlyknowmas463035818普林斯后来被称为塔夫卡普(TAFKAP)(这位艺术家以前被称为普林斯)。也许这会让你陷入困境。
template<std::size_t length, typename A1, typename A2>
constexpr auto function(A1 array1, A2 array2){
    //e.g array1 ints, array2 doubles
    //do calculations and insert values into result array
    std::array<std::common_type<A1::value_type, A2::value_type>, length> result{};
    return array3;
}