From dd096d888b04c192b3bd8e0fd6ba7966c667f2d8 Mon Sep 17 00:00:00 2001 From: Anders Carlsson <andersca@mac.com> Date: Fri, 5 Jun 2009 02:12:32 +0000 Subject: [PATCH] Fix a case when the TemplateArgs vector can be empty. llvm-svn: 72911 --- clang/lib/Sema/SemaTemplate.cpp | 2 +- clang/test/SemaTemplate/default-arguments.cpp | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/clang/lib/Sema/SemaTemplate.cpp b/clang/lib/Sema/SemaTemplate.cpp index dede3bba7502..c9277aab7525 100644 --- a/clang/lib/Sema/SemaTemplate.cpp +++ b/clang/lib/Sema/SemaTemplate.cpp @@ -2271,7 +2271,7 @@ Sema::ActOnExplicitInstantiation(Scope *S, SourceLocation TemplateLoc, // template. llvm::SmallVector<TemplateArgument, 16> ConvertedTemplateArgs; if (CheckTemplateArgumentList(ClassTemplate, TemplateNameLoc, LAngleLoc, - &TemplateArgs[0], TemplateArgs.size(), + TemplateArgs.data(), TemplateArgs.size(), RAngleLoc, ConvertedTemplateArgs)) return true; diff --git a/clang/test/SemaTemplate/default-arguments.cpp b/clang/test/SemaTemplate/default-arguments.cpp index 572227cb61de..0e4c36609dc1 100644 --- a/clang/test/SemaTemplate/default-arguments.cpp +++ b/clang/test/SemaTemplate/default-arguments.cpp @@ -10,3 +10,6 @@ X<> *x3; // expected-error{{too few template arguments for class template 'X'}} template<typename U = float, int M> struct X; X<> *x4; + +template<typename T = int> struct Z; +template struct Z<>;