Мне нужно найти все возможные, как минимум три, ошибки из следующего.
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;
}
Мой ответ был
Типы A и B могут иметь различные типы, которые допускают ошибки, еще хуже оператор < не определен в функции.
имя типа C может отличаться от A и B, тогда оно вносит изменения в объекты a, b, которые определены как const
имя типа A может быть целочисленным, но мы не используем постоянную ссылку для целочисленного типа, мы используем его только для объектов.
Мой третий ответ был неверным ….
Кто-нибудь может объяснить, почему мои ответы были неправильными и все возможные ошибки, которые могут возникнуть из этого шаблона? Я получил кредит за первые два ответа, но они мне не очень нравятся. У кого-нибудь есть лучшие решения для этого?
Спасибо,
Приведение от A к C или от B к C должно быть полиморфным или совместимым типом. Вы можете использовать const с целочисленной ссылкой.
Других решений пока нет …