This patch implements constrained friends and disallows declarations
of constrained friend template specialization.

There was a previous question about whether I was doing the right
thing in determine_specialization. I'm looking at that issue
separately.

2013-10-01  Andrew Sutton  <andrew.n.sut...@gmail.com>
        * gcc/cp/parser.c (cp_parser_member_declaration): Check that
        a constrained friend definition is valid.
        * gcc/cp/decl.c (grokfndecl): Disallow constrained friend template
        specializations.
        * gcc/cp/constraints.cc (check_constrained_friend): New.
        * gcc/cp/typeck.c (cp_build_function_call_vec): Diagnose constraints
        in the presence of the failure of a single candidate.
        * gcc/cp/cp-tree.h (check_constrained_friend): New.
        * gcc/cp/call.c (is_non_template_member_fn): Make inline.
        (is_non_template_friend), (is_constrainable_non_template_fn): New.
        (add_function_candidate): Predicate check on
        is_constrainable_non_template_fn.

Andrew Sutton

Attachment: friends-2.patch
Description: Binary data

Reply via email to