<分区>
为什么依赖于参数的查找不考虑 Foo::dynamicCast
,它不应该考虑 namespace Foo 因为基类在这个 namespace 中吗?
#include <memory>
using namespace std;
namespace Foo
{
template<typename P, typename T> P*
dynamicCast(T* t)
{
return dynamic_cast<P*>(t);
}
class Base
{
public:
virtual ~Base() = default;
};
}
namespace Test
{
class Derived : public Foo::Base
{
};
}
shared_ptr<Foo::Base> b = make_shared<Test::Derived>();
auto d = dynamicCast<Test::Derived>(b.get());