https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66834

--- Comment #12 from Andrew Sutton <andrew.n.sutton at gmail dot com> ---
> So it seems that applying the DR 1430 tentative resolution to concepts 
> severely
> limits the usability of variadic concepts, and we should reconsider that, so
> that instead we delay normalization of template-ids with variadic arguments
> until instantiation time.
>
> The restriction on expansion arguments to non-expansion parameters initially
> applied to all variadic templates until N2555, which Eric was also involved
> with...

I don't think that's a good idea. It means the template-id would be
characterized as an atomic constraint for purposes of partial
ordering. You lose the ability to order on constraints within the
concept, which means you're no better off than using a type trait for
the definition.

I would make the following observations:

1. Variadics require meteaprogramming and pattern matching
2. The constraint are not intended to be turing complete, so we can't
reason about metaprograms
3. There may be useful logical extensions to the constraint language
for working with variadics in principled ways
4. Some variadic constraints might be useful as core language
constraints (intrinsics).

Plus, I have a feeling that I'm going to to have to re-think the
entire concept definition and requires-expression bit when we propose
concepts for C++. There were too many NB comments to ignore.

Andrew

Reply via email to