【发布时间】:2018-05-29 14:25:36
【问题描述】:
用我的编译器
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 选择重载。
这种行为正常吗?
什么是最便携和正确的写法?
【问题讨论】:
-
你想达到什么目的?
-
@Slava 我正在尝试在另一个编译器上修复旧代码库的编译错误。旧代码是 (5)。我通过写(3)来修复它。谢谢你的评论,欢迎回答:-)
-
我认为您应该将您的问题重新表述为如何进行 (5) 编译以及您尝试了哪些变体,因为它是写的根本不清楚
标签: c++ stl std-function overload-resolution