Скорее всего, это будет еще одна ошибка в реализации GCC P0135.

вая следующий код:

#include <iostream>
#include <optional>

struct foo
{
    explicit operator std::optional<int>() {
        return std::optional<int>( 1 );
    }
    explicit operator int() {
        return 0;
    }
};

int main()
{
    foo my_foo;
    std::optional<int> my_opt( my_foo );
    std::cout << "value: " << my_opt.value() << std::endl;
}

gcc 7.2.0 пишет value: 1.

MSVC 201,7 (15,3) иclang 4.0.0 однако напиши value: 0.

Какой из них правильный в соответствии со стандартом C ++?

Ответы на вопрос(1)

Ваш ответ на вопрос