]> granicus.if.org Git - clang/commit
Do not inherit default arguments for friend function in class template.
authorSerge Pavlov <sepavloff@gmail.com>
Thu, 8 Jun 2017 06:31:19 +0000 (06:31 +0000)
committerSerge Pavlov <sepavloff@gmail.com>
Thu, 8 Jun 2017 06:31:19 +0000 (06:31 +0000)
commitff4214ddcfab9fd92c15cc01c9c2e17a8f6217ad
treeb0321360528a81c7305019fb8d1f1d145c6dd4a5
parent14318c6aa40d7c68c4341f43fbc3d0980f6d21a8
Do not inherit default arguments for friend function in class template.

A function declared in a friend declaration may have declarations prior
to the containing class definition. If such declaration defines default
argument, the friend function declaration inherits them. This behavior
causes problems if the class where the friend is declared is a template:
during the class instantiation the friend function looks like if it had
default arguments, so error is triggered.

With this change friend functions declared in class templates do not
inherit default arguments. Actual set of them will be defined at the
point where the containing class is instantiated.

This change fixes PR12724.

Differential Revision: https://reviews.llvm.org/D30393

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@304965 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Sema/SemaDeclCXX.cpp
test/CXX/dcl.decl/dcl.meaning/dcl.fct.default/p4.cpp