Author: rsmith Date: Thu Sep 27 20:18:53 2018 New Revision: 343293 URL: http://llvm.org/viewvc/llvm-project?rev=343293&view=rev Log: Handle dependent class template names in class template argument deduction for new-expressions.
Modified: cfe/trunk/lib/Sema/SemaInit.cpp cfe/trunk/test/SemaCXX/cxx1z-class-template-argument-deduction.cpp Modified: cfe/trunk/lib/Sema/SemaInit.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaInit.cpp?rev=343293&r1=343292&r2=343293&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaInit.cpp (original) +++ cfe/trunk/lib/Sema/SemaInit.cpp Thu Sep 27 20:18:53 2018 @@ -9155,8 +9155,11 @@ QualType Sema::DeduceTemplateSpecializat TSInfo->getType()->getContainedDeducedType()); assert(DeducedTST && "not a deduced template specialization type"); - // We can only perform deduction for class templates. auto TemplateName = DeducedTST->getTemplateName(); + if (TemplateName.isDependent()) + return Context.DependentTy; + + // We can only perform deduction for class templates. auto *Template = dyn_cast_or_null<ClassTemplateDecl>(TemplateName.getAsTemplateDecl()); if (!Template) { Modified: cfe/trunk/test/SemaCXX/cxx1z-class-template-argument-deduction.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/cxx1z-class-template-argument-deduction.cpp?rev=343293&r1=343292&r2=343293&view=diff ============================================================================== --- cfe/trunk/test/SemaCXX/cxx1z-class-template-argument-deduction.cpp (original) +++ cfe/trunk/test/SemaCXX/cxx1z-class-template-argument-deduction.cpp Thu Sep 27 20:18:53 2018 @@ -307,6 +307,13 @@ namespace dependent { template int Var(int); template int Cast(int); template int New(int); + + template<template<typename> typename Y> void test() { + Y(0); + new Y(0); + Y y(0); + } + template void test<X>(); } namespace injected_class_name { _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits