Скорее всего, это будет еще одна ошибка в реализации 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 ++?