¿Podemos tener una función con múltiples tipos de retorno?(en C++ 11 y superior)
function c++11 (2)
Aquí hay una solución de ejemplo con
std:: variant
template < typename T, typename X>
std::variant<T, X> Max_Number ( T valueA, X valueB )
{
std::variant<T, X> res;
if ( valueA > valueB )
res = valueA;
else
res = valueB;
return res;
}
Estoy tratando de escribir una función genérica que tome la entrada como
uint8
,
uint16
,
uint32
,
uint64
, .... y devuelva el valor máximo con el tipo de datos del elemento más grande.
Por ejemplo:
template < typename T, typename X>
auto Max_Number(T valueA, X valueB)
{
if (valueA > valueB)
return valueA;
else
return valueB;
}
PD: este ejemplo supone que el elemento más grande es del tipo de datos más grande.
El retorno final con un operador condicional es otra forma de hacerlo, que está disponible desde c ++ 11 .
template <typename T, typename X>
constexpr auto Max_Number(T valueA, X valueB)-> decltype(valueA > valueB ? valueA : valueB)
{
return valueA > valueB ? valueA : valueB;
}
Vea algunas ventajas de usar el tipo de retorno final aquí: Ventaja de usar el tipo de retorno final en las funciones de C ++ 11