https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78442
--- Comment #2 from Eric Fiselier <eric at efcs dot ca> --- I'm sorry your right. That's a garbage reproducer. Here's an actual one: #include <tuple> #include <variant> constexpr bool test_tuple() { std::tuple<int> t(42); return std::get<0>(t) == 42; } static_assert(test_tuple(), ""); // OK constexpr bool test() { std::variant<int, void*> v(42); auto const& cv = v; return std::get<0>(v) == 42 && std::get<0>(cv) == 42; } static_assert(test(), "");