PR c++/78198 - inherited template ctor with default arg

* call.c (convert_default_arg): Look through inheriting ctors.

From-SVN: r241843
This commit is contained in:
Jason Merrill 2016-11-04 08:47:01 -04:00 committed by Jason Merrill
parent 491483b026
commit 866115cd8a
3 changed files with 24 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2016-11-03 Jason Merrill <jason@redhat.com>
PR c++/78198
* call.c (convert_default_arg): Look through inheriting ctors.
2016-11-03 Jakub Jelinek <jakub@redhat.com>
Alexandre Oliva <aoliva@redhat.com>
Jason Merrill <jason@redhat.com>

View File

@ -7193,6 +7193,9 @@ convert_default_arg (tree type, tree arg, tree fn, int parmnum,
/* See through clones. */
fn = DECL_ORIGIN (fn);
/* And inheriting ctors. */
if (flag_new_inheriting_ctors)
fn = strip_inheriting_ctors (fn);
/* Detect recursion. */
FOR_EACH_VEC_SAFE_ELT (default_arg_context, i, t)

View File

@ -0,0 +1,16 @@
// { dg-do compile { target c++11 } }
class A { };
template<typename> using UniquePtr = int;
template<typename AllocPolicy> struct BufferList {
BufferList(unsigned, unsigned, unsigned, AllocPolicy = AllocPolicy());
};
class D : BufferList<A> {
using BufferList::BufferList;
};
template<typename , typename... Args> UniquePtr<D> MakeUnique(Args... aArgs)
{
D d(aArgs...);
return 0;
}
UniquePtr<D> setCloneBuffer_impl_buf = MakeUnique<D>(0, 0, 0);