diff options
author | Douglas Gregor <dgregor@apple.com> | 2010-05-09 01:26:06 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2010-05-09 01:26:06 +0000 |
commit | 62c281a8733a9adbb5e8c1d8e65e19ac5a9ff977 (patch) | |
tree | 0f9ae9563708726635c26b310a5d3553e92cc03f /clang/lib/Sema/SemaTemplateDeduction.cpp | |
parent | e0b5b3a1c5c09535bd51eab3654ea03641fff5a5 (diff) | |
download | bcm5719-llvm-62c281a8733a9adbb5e8c1d8e65e19ac5a9ff977.tar.gz bcm5719-llvm-62c281a8733a9adbb5e8c1d8e65e19ac5a9ff977.zip |
Be more careful about picking a template parameter when we fail to substitute explicit template arguments into a function template
llvm-svn: 103369
Diffstat (limited to 'clang/lib/Sema/SemaTemplateDeduction.cpp')
-rw-r--r-- | clang/lib/Sema/SemaTemplateDeduction.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaTemplateDeduction.cpp b/clang/lib/Sema/SemaTemplateDeduction.cpp index aca820dec6e..b85f2bd422d 100644 --- a/clang/lib/Sema/SemaTemplateDeduction.cpp +++ b/clang/lib/Sema/SemaTemplateDeduction.cpp @@ -1189,8 +1189,10 @@ Sema::SubstituteExplicitTemplateArguments( ExplicitTemplateArgs, true, Builder) || Trap.hasErrorOccurred()) { - Info.Param = makeTemplateParameter(TemplateParams->getParam( - Builder.structuredSize())); + unsigned Index = Builder.structuredSize(); + if (Index >= TemplateParams->size()) + Index = TemplateParams->size() - 1; + Info.Param = makeTemplateParameter(TemplateParams->getParam(Index)); return TDK_InvalidExplicitArguments; } |