https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60420
--- Comment #4 from Paolo Carlini <paolo.carlini at oracle dot com> --- In case a correct reduced reproducer would be: struct MyIter { int& operator*(); }; template<typename Iterator> void foo(Iterator begin) { auto x = [](const decltype(*begin)) { }; } template void foo<MyIter>(MyIter);