From 6eef519fc8a97bb7ca6066f23d35e10f06b2c1b5 Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Mon, 14 Dec 2009 19:27:10 +0000 Subject: Improve template instantiation for object constructions in several ways: - During instantiation, drop default arguments from constructor and call expressions; they'll be recomputed anyway, and we don't want to instantiate them twice. - Rewrote the instantiation of variable initializers to cope with non-dependent forms properly. Together, these fix a handful of problems I introduced with the switch to always rebuild expressions from the source code "as written." git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91315 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/SemaTemplate/constructor-template.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'test/SemaTemplate/constructor-template.cpp') diff --git a/test/SemaTemplate/constructor-template.cpp b/test/SemaTemplate/constructor-template.cpp index 203977e9ed..0b6916fa48 100644 --- a/test/SemaTemplate/constructor-template.cpp +++ b/test/SemaTemplate/constructor-template.cpp @@ -82,3 +82,15 @@ X4 test_X4(bool Cond, X4 x4) { X4 b(x4); // okay, copy constructor return X4(); // expected-error{{no viable conversion}} } + +// Instantiation of a non-dependent use of a constructor +struct DefaultCtorHasDefaultArg { + explicit DefaultCtorHasDefaultArg(int i = 17); +}; + +template +void default_ctor_inst() { + DefaultCtorHasDefaultArg def; +} + +template void default_ctor_inst(); -- cgit v1.2.1