2016-11-15 3 views
-1

Я пытаюсь реализовать шаблон функцииОшибка: Функциональные шаблоны, не может конвертировать из «межд» до «двойной»

template <class T> 
T max(T& t1, T& t2) 
{ 
    return t1 < t2 ? t2 : t1; 
} 

и я называю это как max<double>(33, 44.2), поэтому я ожидал, что это будет конвертировать Int удвоить и дать мне результат в два раза, а я получаю сообщение об ошибке:

не может конвертировать из «межд» до «двойной»

+1

Изменить параметры шаблона для 'сопзЬ T &'. Ссылки, отличные от 'const', не могут быть привязаны к временным. –

+0

Это не ошибка, которую вы получаете. Вы пытаетесь передать константу как lvalue. Используйте 'T const & tn'. –

ответ

2

Она будет работать без ссылок (или с константными ссылками) :

template <class T> 
T max(T t1, T t2) 
{ 
    return t1 < t2 ? t2 : t1; 
} 

, а затем

max<double>(33, 44.2) 
+0

[доказательство] (http://coliru.stacked-crooked.com/a/2e498db6586762fd). Вы ответили ниндзя: P –

Смежные вопросы