为什么以下打印“Generic”而不是“const A &”?我推测 adynamic_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"
}