diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVisitor.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVisitor.java index 6f13aa060cb..2ed292cd169 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVisitor.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVisitor.java @@ -2178,8 +2178,15 @@ public class CPPVisitor extends ASTQueries { placeholderKind); } if (declarator.getParent() instanceof ICPPASTParameterDeclaration) { - return createAutoParameterType(declSpec, declarator, - (ICPPASTParameterDeclaration) declarator.getParent(), placeholderKind); + if (declarator.getParent().getParent() instanceof ICPPASTFunctionDeclarator) { + // 'auto' used as the type of a function parameter. + return createAutoParameterType(declSpec, declarator, + (ICPPASTParameterDeclaration) declarator.getParent(), placeholderKind); + } else { + // 'auto' used as the type of a template parameter. + // This is a C++17 feature we don't yet support. + return ProblemType.CANNOT_DEDUCE_AUTO_TYPE; + } } ICPPASTInitializerClause autoInitClause= null; IASTNode parent = declarator.getParent().getParent();