С моим компилятором
typedef const double&(*fT)(const double&, const double&);
typedef std::function<const double&(const double&, const double&)> std_func;
fT f1 = std::max<double>; //(1)
std_func f2 = static_cast<fT>(std::max<double>); //(2)
std_func f3 = f1; //(3)
(1, 2, 3) работают, но
auto f4 = std::max<double>; //(4)
std_func f5 = std::max<double>; //(5)
(4, 5) не работают.Компилятор жалуется на неспособность выбрать перегрузку для случая 5.
Это поведение нормально?
Какой самый портативный и правильный способ написать это?