1

次のように「constA&」ではなく「Generic」と表示されるのはなぜですか?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"

}
4

1 に答える 1

5

最初のf()ものは引数を受け入れずf(T)、一致としてのみを残します。

于 2012-12-13T22:01:44.407 に答える