Re: [c++-concepts] constrained friends redux

2013-10-04 Thread Andrew Sutton
+ // Do not permit the declaration of constrained friend + // function declarations. They cannot be instantiated since + // the resulting declaration would never match the definition, + // which must be a non-template and cannot be constrained. You're in

Re: [c++-concepts] constrained friends redux

2013-10-04 Thread Jason Merrill
On 10/04/2013 09:20 AM, Andrew Sutton wrote: Perhaps you mean that it must match a fully-instantiated function, so any constraints on the templates were considered during determine_specialization. This seems like a simple comment fix, but there's a longer explanation of what I want (see

Re: [c++-concepts] constrained friends redux

2013-10-04 Thread Andrew Sutton
Perhaps you mean that it must match a fully-instantiated function, so any constraints on the templates were considered during determine_specialization. This seems like a simple comment fix, but there's a longer explanation of what I want (see below). Would this be more appropriate?

Re: [c++-concepts] constrained friends redux

2013-10-04 Thread Jason Merrill
OK. Jason

Re: [c++-concepts] constrained friends redux

2013-10-04 Thread Paolo Carlini
Hi Andrew, On 10/04/2013 07:36 PM, Andrew Sutton wrote: + if (!check_template_constraints (tmpl, args)) +{ + location_t loc = DECL_SOURCE_LOCATION (function); + error (%qD is not a viable candidate, function); + diagnose_constraints

[c++-concepts] constrained friends redux

2013-10-02 Thread Andrew Sutton
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

Re: [c++-concepts] constrained friends redux

2013-10-02 Thread Jason Merrill
On 10/02/2013 09:05 AM, Andrew Sutton wrote: + // Do not permit the declaration of constrained friend + // function declarations. They cannot be instantiated since + // the resulting declaration would never match the definition, + // which must be a