Zwrócenie większego typu z szablonu (decltype?)

0

Witam,
zastanawiam się jak zwrócić z funkcji typ o większym rozmiarze.

Mam funkcję:

template  <typename T, typename Y> 
auto add(T a ,Y b) -> decltype(T|Y)
{
	return (a+b);
};

int main() 
{
	std::cout << add(1, 2);
}

Niestety przy próbie kompilacji pojawiają się błędy.

4

Powinieneś zwracać typ zwracany przez funkcję, a nie ten o "większym rozmiarze"

template  <typename T, typename Y> 
auto add(T a ,Y b) -> decltype(a+b)
{
    return (a+b);
};

Bezpośrednią odpowiedzią na pytanie (ale złym kodem) będzie:

template  <typename T, typename Y> 
auto add(T a ,Y b) -> std::conditional_t<sizeof(Y) > sizeof(T), Y, T>
{
    return (a+b);
};

1 użytkowników online, w tym zalogowanych: 0, gości: 1