https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108833
--- Comment #9 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Better reduced testcase that doesn't emit a warning: struct input_t { template <class T> struct range_t { friend int &operator>>(int &, range_t<double> &); range_t(char); }; int read_s; void read() { range_t<double> range(':'); read_s >> range; } }; int &operator>>(int &, input_t::range_t<double> &);