C++ Templates : Вопрос 1 : 20

Какой из приведенных ниже вариантов подходит больше всего?

#include <iostream> 
 
//... 
 
// 1 
inline int const& max(int const& a, int const& b) 
{ 
    return a < b ? b : a; 
} 
 
// 2 
template<typename T>  
inline T const& max (T const& a, T const& b) 
{ 
    return a < b ? b : a; 
} 
 
//... 
int main()  
{  
    //... 
    std::cout << ::max('a', 42.7) << std::endl; //3 
    //... 
     
    return 0;  
}  

Варианты ответов:

1) В строке //3 будет вызвана перегрузка функции //2.

2) В строке //3 будет вызвана перегрузка функции //1.

3) Чтобы код скомпилировался, в строке //3 необходимо явно указать тип: max<int>(...).

4) Чтобы код скомплировался, в строке //3 необходимо указать пустой тип: max<>(...).

5) Произойдет ошибка компиляции потому, что нету подходящей перегрузки для функции max().
1 балл


© Copyright © 2017 - 2019 Все права защищены. Бесплатное онлайн образование.