https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93951
--- Comment #7 from Martin Liška <marxin at gcc dot gnu.org> --- There's a reduced test-case: $ cat pr93951.ii # 2 "" 3 namespace std { template <typename _Tp> struct A {}; template <typename, typename _Visitor> struct __gen_vtable { using _Func_ptr = _Visitor; using _Array_type = A<_Func_ptr>; static _Array_type m_fn1() {} static constexpr auto _S_vtable = m_fn1; }; template <typename _Visitor> visit(_Visitor) { using _Result_type = decltype(0); __gen_vtable<_Result_type, _Visitor>::_S_vtable; } } // namespace std struct V { m_fn2() { auto visitor = [] {}; std::visit(visitor); } }; Fails with: $ g++ pr93951.ii -c -g -flto -femit-struct-debug-baseonly -std=c++17 -fno-eliminate-unused-debug-symbols -c Will you take a look Richi?