Re: [SKETCH] Refactor implicit function template implementation and fix 58534, 58536, 58548, 58549 and 58637.

2013-11-02 Thread Adam Butcher
Hi Jason, I've got the tsubst solution for implicit parameter packs working now. I've also improved the efficiency of incremental template parameter synthesis and added some testcases. All C++14 generic lambda examples pass and no new regressions. Cheers, Adam Patch summary (3): Refactor im

Re: [SKETCH] Refactor implicit function template implementation and fix 58534, 58536, 58548, 58549 and 58637.

2013-10-17 Thread Jason Merrill
On 10/15/2013 05:21 PM, Adam Butcher wrote: On Wed, 25 Sep 2013 11:01:26 -0500, Jason Merrill wrote: 1) Build up the type as normal and use tsubst to replace the non-pack template parameter with a pack if needed. The problem I've hit with this (and other hacks I've tried that involve finishing

Re: [SKETCH] Refactor implicit function template implementation and fix 58534, 58536, 58548, 58549 and 58637.

2013-10-15 Thread Adam Butcher
On 2013-10-15 22:21, Adam Butcher wrote: On Wed, 25 Sep 2013 11:01:26 -0500, Jason Merrill wrote: > > 2) If we see 'auto', scan ahead (possibly via tentative parsing) to see if there's a ... > My current preferred option. The problem with it is that, ideally, I only want to look ahead for '...

Re: [SKETCH] Refactor implicit function template implementation and fix 58534, 58536, 58548, 58549 and 58637.

2013-10-15 Thread Adam Butcher
On Wed, 25 Sep 2013 11:01:26 -0500, Jason Merrill wrote: On 09/24/2013 02:05 AM, Adam Butcher wrote: > On the subject of on-the-fly synthesis: I haven't started yet but I'm > thinking to trigger in 'cp_parser_simple_type_specifier' when > 'current_binding_level->kind == sk_function_parms'. > Th

Re: [SKETCH] Refactor implicit function template implementation and fix 58534, 58536, 58548, 58549 and 58637.

2013-10-11 Thread Adam Butcher
On 2013-10-11 3:26, Jason Merrill wrote: Can we put this in cp_parser, invert the sense of the flag, and only set it during cp_parser_parameter_declaration_clause? Done. But it still needs a flag to disable in the case of explicit template specialization. Can't you just check processing_spe

Re: [SKETCH] Refactor implicit function template implementation and fix 58534, 58536, 58548, 58549 and 58637.

2013-10-10 Thread Jason Merrill
On 10/10/2013 04:45 PM, Adam Butcher wrote: Of course; makes sense. I had confused myself. Not that it's a function parameter pack, but presumably you would expect auto f(tuple p) to be supported? That makes sense, though it's a (further) extension. Can we put this in cp_parser, invert

Re: [SKETCH] Refactor implicit function template implementation and fix 58534, 58536, 58548, 58549 and 58637.

2013-10-10 Thread Adam Butcher
On 2013-10-09 4:37, Jason Merrill wrote: On 10/07/2013 05:14 AM, Adam Butcher wrote: + /* Forbid ambiguous implicit pack expansions by only allowing +a single generic type in such a parameter. +XXX: Maybe allow if explicitly specified temp

Re: [SKETCH] Refactor implicit function template implementation and fix 58534, 58536, 58548, 58549 and 58637.

2013-10-08 Thread Jason Merrill
On 10/07/2013 05:14 AM, Adam Butcher wrote: + /* Forbid ambiguous implicit pack expansions by only allowing +a single generic type in such a parameter. +XXX: Maybe allow if explicitly specified template +XXX: 'typename..

Re: [SKETCH] Refactor implicit function template implementation and fix 58534, 58536, 58548, 58549 and 58637.

2013-10-07 Thread Paolo Carlini
Hi, On 10/07/2013 11:14 AM, Adam Butcher wrote: + if (!cp_disable_auto_as_implicit_function_template_parm && + current_binding_level->kind == sk_function_parms) Stylistic nit: && should be on the next line. Thanks! Paolo.

[SKETCH] Refactor implicit function template implementation and fix 58534, 58536, 58548, 58549 and 58637.

2013-10-07 Thread Adam Butcher
Hi Jason, I did intend to break this up but as I've completed the first pass at refactoring implicit function templates and along the way fixed the 5 bugs submitted by Volker I thought I'd post the rolled up patch for you to peruse. It (should) support arbitrarily complex use of 'auto' in a