Почему преобразование в int выбрано вместо преобразования в вектор [дубликат]C++

Программы на C++. Форум разработчиков
Ответить
Гость
 Почему преобразование в int выбрано вместо преобразования в вектор [дубликат]

Сообщение Гость »

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

struct A
{
A(std::vector x):
x_(std::move(x)) {}

inline operator std::vector()
{
return x_;
}

inline operator int()
{
return x_[0];
}
std::vector x_;
};

A add()
{
return A({1,2,3,4});
}

int main()
{
std::vector b{add()};
}
В приведенном выше коде b будет иметь только 1 элемент, что означает, что преобразование A->int выбирается вместо A->vector< /код>. Почему?
Это потому, что при формировании инициализатора_list оба преобразования работают, поэтому выбирается одно A->int?

Подробнее здесь: https://stackoverflow.com/questions/781 ... -vectorint
Ответить

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

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

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

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

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