std::optional<uint32_t> can be compared to uint32_t without warning, but does
not compare to the value within the optional. It needs to be prefixed *.
Wconversion does not warn about this.
bool bug(uint32_t Offset, std::optional<uint32_t> Expect) { return (Offset != Expect); } bool deref(uint32_t Offset, std::optional<uint32_t> Expect) { return (Offset != *Expect); }
Both compile without warnings. Wrote the former, intended the latter.