Есть ли способ оценки пользовательских конверсий между шаблонами классов отражает рейтинг конверсий их аргументов шаблонC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Есть ли способ оценки пользовательских конверсий между шаблонами классов отражает рейтинг конверсий их аргументов шаблон

Сообщение Anonymous »

Рассмотрим следующий код (живой пример): < /p>

Код: Выделить всё

#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)
}
function call foo (p) at line marked (1) однозначно, потому что стандартная последовательность преобразования*-> middle* лучше, чем производство*-> База*.
Однако это не соответствует определению пользователя, и, как отмечает, и обозначал, что отмечает, и обозначал. Неоднозначные, потому что оба bar () перегрузки являются жизнеспособными, и ни одна из них не лучше, чем другие.
Мой вопрос: Есть ли какой-то метод для ранжирования пользовательских конверсий, так что строка (2) выбирала бы одну и ту же «близкое совпадение» перегрузки, что и Line (1) ? Дерево ".>

Подробнее здесь: https://stackoverflow.com/questions/797 ... s-mirror-t
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»