为什么以下打印“Generic”而不是“const A&amp;”?我推测,dynamic_cast<>
可以完成调用第一个f
的技巧,但事实并非如此。这是为什么?
struct A {}; struct B : A {};
template <const A &> void f() { std::cout << "const A &"; }
template <typename T> void f(T) { std::cout << "Generic"; }
int main() {
B b;
f(dynamic_cast<const A &>(b)); // "Generic"
}
答案 0 :(得分:5)
第一个f()
不接受参数,只留下f(T)
作为匹配。