https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121329
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Semi reduced testcase for the ICE: ``` struct nullopt{}; struct vector { bool empty()const; struct iterator { int &operator*(); }; }; template<typename Container> auto findLargest(const Container& container) -> decltype(auto) { if (container.empty()) { return nullopt{}; } auto largestElementIt = typename Container::iterator{}; return *largestElementIt; } int main() { vector numbers = {}; auto largest = findLargest(numbers); return 0; } ```