https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120255
Jonathon Reinhart <jonathon.reinhart at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jonathon.reinhart at gmail dot com --- Comment #3 from Jonathon Reinhart <jonathon.reinhart at gmail dot com> --- I just discovered this also, with the following: class Foo { template <typename Write> void WriteNestedMessage(uint32_t field_number, Write write_message); protected: void Write(); }; template <typename Write> void Foo::WriteNestedMessage(uint32_t field_number, Write write_message) {} results in <source>:12:53: error: 'Write' is not a type 12 | void Foo::WriteNestedMessage(uint32_t field_number, Write write_message) {} | ^~~~~ https://stackoverflow.com/questions/79706653 https://godbolt.org/z/hrE3YEzPd Clang previously got this wrong also and it was fixed in Clang 11: https://github.com/llvm/llvm-project/commit/d1446017f3fdc2f6a9efba222008d20afa1e26cc