ambiguous
Why is this ambiguous:
------------------------------------------------
#include <boost/shared_ptr.hpp>
class base {};
class derived: public base {};
class other {};
void do_something(const boost::shared_ptr<other> dev) {}
void do_something(const boost::shared_ptr<base> scope) {}
int main()
{
boost::shared_ptr<base> b(new base());
boost::shared_ptr<derived> d(new derived());
do_something(b);
do_something(d);
return 0;
}
------------------------------------------------
but this is not
------------------------------------------------
class base {};
class derived: public base {};
class other {};
void do_something(const other *dev) {}
void do_something(const base *scope) {}
int main()
{
base *b = new base();
derived *d = new derived();
do_something(b);
do_something(d);
return 0;
}
-------------------------------------------------------
and this is also allowed
------------------------------------------------------
#include <boost/shared_ptr.hpp>
class base {};
class derived: public base {};
class other {};
void do_something(const boost::shared_ptr<base> scope) {}
int main()
{
boost::shared_ptr<base> b(new base());
boost::shared_ptr<derived> d(new derived());
do_something(b);
do_something(d);
return 0;
}
--------------------------------------------------------------------
Thanks!
Tim