【发布时间】:2017-07-04 17:29:45
【问题描述】:
考虑这个程序:
template<typename T>
struct Foo
{
void foo(const T&) {}
void foo(T&) {}
};
int main()
{
Foo<double&> f;
double d = 3.14;
f.foo(d); //complains that foo() is ambigous
}
在上面,如果 Foo 被实例化为 Foo<double> ,那么一切都很好,但如果它被实例化为 Foo<double&>,那么对 foo 的调用就会变得模棱两可。在推导 foo 的参数类型时,ref 是否在此处崩溃?如果是这样,为什么会忽略 constness?
【问题讨论】:
-
constness 被忽略是什么意思?你在哪里使用constness ? -
好的,我在这里找到了答案 - stackoverflow.com/a/27728034/150365
-
@bolov 重复项似乎不相关。因为,在这种情况下,OP 指的是函数模板而不是类模板。
-
@101010 是的,但适用相同的规则/原则。无论如何,我不知道发生了什么,我现在看到问题已被 T.C. 关闭
标签: c++ c++14 type-deduction