1

为什么以下打印“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"

}
4

1 回答 1

5

第一个f()不接受参数,只留下f(T)作为匹配项。

于 2012-12-13T22:01:44.407 回答