Здравствуйте, rg45, Вы писали:
R>Ну это понятно почему — в цепочке присутствуют два последовательных пользовательских преобразования — оператор приведения Container и преобразующий конструктор optional, тогда как стандарт позволяет только одно. Тут нужна либо специализированная конвертирующая функция, либо явное преобразование к int:
R>R>const std::optional<int> v5(int(cont5));
R>
Ну вот мне пока не очень понятно
. Почему в той же ситуации стандартный std::optional работает как и ожидается ? Там как-то хитро объявляется преобразующий конструктор optional(U&&), если я правильно вас понял. И потом:
const std::optional<int> v5(int(cont5));
совсем не тоже самое что:
const std::optional<int> v5(cont5);