https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102163
Bug ID: 102163 Summary: std::variant rejects valid constant expression Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: hewillk at gmail dot com Target Milestone: --- #include <variant> struct O { O() = default; O(O&&) = default; O(const O&) = default; O& operator=(const O&) = default; O& operator=(O&&) = default; ~O() = default; constexpr O(int x) {} }; constexpr std::variant<float, O> v{42}; https://godbolt.org/z/PdEx4z7rf GCC-trunk rejected it under -std=c++20, it seems to be a language feature bug.