模板参数推断不能按预期工作

时间:2012-12-13 21:58:31

标签: c++ template-meta-programming

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

}

1 个答案:

答案 0 :(得分:5)

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