Как правильно написать шаблонную функцию для нахождения максимума двух чисел?
Я бы делал примерно так
template<typename T, typename U>
typename std::common_type<T, U>::type max(const T& a, const U& b)
{
if (a > b) return a;
return b;
}
Не буду утверждать, что это наилучший идеальный вариант :)
P.S. Появилась минутка, чтоб не долго мучиться, построил вариативный вариант на основе уже имеющегося:
template<typename T, typename U>
typename common_type<T,U>::type max(const T& a, const U& b)
{
return (a > b) ? a : b;
}
template<typename T, typename U, typename ...Args>
auto max(const T& a, const U& b, Args... arg)
{
if constexpr (sizeof...(arg) == 0)
return max(a,b);
return max(max(a,b),arg...);
}
Вот так std max:
template<class T>
const T& max(const T& a, const T& b)
{
return (a < b) ? b : a;
}
В моей системе, в заголовнике algorithm сделано так.
namespace std {
...
template<typename _Tp, typename _Compare>
_GLIBCXX14_CONSTEXPR
inline const _Tp&
max(const _Tp& __a, const _Tp& __b, _Compare __comp)
{
//return __comp(__a, __b) ? __b : __a;
if (__comp(__a, __b))
return __b;
return __a;
}
Например, так:
template<typename TA, typename TB, typename TR = std::common_type_t<TA, TB>>
TR max(TA a, TB b) {
return (a > b) ? a : b;
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Пытаюсь вытащить X509Certificate из файла подписиsig чтобы эту подпись проверить
При создании проекта, просто ничего не происходитВ отладке netbeans вываливаются сообщения, но разобрать я их не могу