https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117889

--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Semi reduced:
```
#include <optional>

struct LayoutUnit {
constexpr LayoutUnit();
  template <typename IntegerType>
  constexpr explicit LayoutUnit(IntegerType value);
  constexpr explicit LayoutUnit(unsigned long value);
    constexpr explicit LayoutUnit(float value);
    constexpr explicit LayoutUnit(double value);
      operator int() const = delete;
  operator unsigned() const = delete;

  constexpr operator double() const;
  constexpr operator float() const;
  constexpr operator bool() const;
};

std::optional<LayoutUnit> a;

std::optional<LayoutUnit> b = a;
```

Reply via email to