diff --git a/src/ASBeautifier.cpp b/src/ASBeautifier.cpp index 9eaf53f..3adcb3a 100644 --- a/src/ASBeautifier.cpp +++ b/src/ASBeautifier.cpp @@ -2871,6 +2871,18 @@ void ASBeautifier::parseCurrentLine(const string& line) && ASBeautifier::peekNextChar(line, i + (*newHeader).length() - 1) != '(') newHeader = NULL; + // The "template" disambiguator for dependent names should not be + // recognized as an actual template header. For example: + // T::template foo() + // s.template foo(); + // this->template foo(); + if (newHeader == &AS_TEMPLATE + && (prevNonSpaceCh == ':' || prevNonSpaceCh == '.' + || prevNonSpaceCh == '-')) + { + newHeader = NULL; + } + if (newHeader != NULL) { // if we reached here, then this is a header...