// PR c++/87750 // { dg-do compile { target c++11 } } template class Bar { protected: template int process(int) { return 0; } }; template class Derived : Bar { using Base = Bar; // Note applying Base::template workaround in (2) and commenting // this out then compiles. using Base::process; public: void foo() { // (1) workaround: this->template // This line only fails on gcc 8.x, works in clang/icc/msvc. process(); } template int process() { // (2) workaround: this->template or Base::template // Note clang 5 & 6 don't accept this line either, but clang 7 does. return process(1); } }; int main() { Derived x; return x.process(); }