1
为什么下面的print“Generic”而不是“const A &”?我猜测一个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"
}
谢谢。我仍然有这个问题,但你回答了第一个也是最重要的问题,所以我不会用后续的方法来轰炸你。 –
@typedeftypename,只是发布一个新的问题。它会得到更多的关注,我相信有人能够提供帮助。 – hmjd