Код: Выделить всё
#include
struct Base {};
struct Middle : public Base {};
struct Derived : public Middle {};
void foo(Base*);
void foo(Middle*);
void test_1(Derived* p)
{
foo(p); // (1)
}
void bar(std::shared_ptr);
void bar(std::shared_ptr);
void test_2(std::shared_ptr p)
{
bar(p); // (2)
}
Однако это не соответствует определению пользователя, и, как отмечает, и обозначал, что отмечает, и обозначал. Неоднозначные, потому что оба bar () перегрузки являются жизнеспособными, и ни одна из них не лучше, чем другие.
Мой вопрос: Есть ли какой-то метод для ранжирования пользовательских конверсий, так что строка (2) выбирала бы одну и ту же «близкое совпадение» перегрузки, что и Line (1) ? Дерево ".>
Подробнее здесь: https://stackoverflow.com/questions/797 ... s-mirror-t
Мобильная версия