https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100288
--- Comment #2 from Marek Polacek <mpolacek at gcc dot gnu.org> --- Reduced test that shows the ICE: class ostream; template <typename Type> concept OstreamInsertable = requires(ostream out, Type value) { out << value; }; struct FMT {}; class CSVTabIns { template <OstreamInsertable Type> friend void operator<<(CSVTabIns, Type); }; template <OstreamInsertable Type> void operator<<(CSVTabIns, Type &); void operator<<(CSVTabIns tab, FMT) { tab << 1; }