Ошибки шаблона C ++ с разными типами

Мне нужно найти все возможные, как минимум три, ошибки из следующего.

template<typename A, typename B, typename C>
C myfunction(const A& a, const B& b)
{
if ( a < b )  return (C) a;
else return (C) b;
}

Мой ответ был

  1. Типы A и B могут иметь различные типы, которые допускают ошибки, еще хуже оператор < не определен в функции.

  2. имя типа C может отличаться от A и B, тогда оно вносит изменения в объекты a, b, которые определены как const

  3. имя типа A может быть целочисленным, но мы не используем постоянную ссылку для целочисленного типа, мы используем его только для объектов.

Мой третий ответ был неверным ….

Кто-нибудь может объяснить, почему мои ответы были неправильными и все возможные ошибки, которые могут возникнуть из этого шаблона? Я получил кредит за первые два ответа, но они мне не очень нравятся. У кого-нибудь есть лучшие решения для этого?

Спасибо,

0

Решение

Приведение от A к C или от B к C должно быть полиморфным или совместимым типом. Вы можете использовать const с целочисленной ссылкой.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]