【发布时间】:2016-02-12 23:34:19
【问题描述】:
我想对某个类的构造函数进行两次重载,如下所示:
foo(int, std::function<int(Tpoint, Tpoint)>);
foo(int, std::function<int(Tpoint, Tpoint, std::vector<Tpoint>)>);
调用它时,我遇到了歧义问题。为什么?
foo<cv::Point> bar(2,[](cv::Point const& l, cv::Point const& r){
return 5;
});
不清楚我是否需要第一个构造函数,因为它只有 std::function 的 2 个参数。
编辑:
正如Lol4t0 评论,它适用于另一个编译器。似乎是 VS.NET 的问题。 Example 1 , Example 2
我使用的是 Microsoft Visual Studio 2013。任何人都可以复制吗?
【问题讨论】:
-
我认为这两者都不适用,因为它不会返回
int。 -
对不起,我在简化时忘记编辑它
-
我觉得还可以ideone.com/qDeZKr
-
@Lol4t0:是的!我在另一个在线编译器上尝试过,它成功了!这似乎是一个 vs.net 错误?
标签: c++ c++11 visual-studio-2013 std-function compiler-bug