C++ Logo

std-proposals

Advanced search

Re: "Union types" syntactic sugar

From: Ville Voutilainen <ville.voutilainen_at_[hidden]>
Date: Wed, 4 Mar 2020 19:59:14 +0200
On Wed, 4 Mar 2020 at 19:50, Sebastian Büttner via Std-Proposals
<std-proposals_at_[hidden]> wrote:
>
>
> On 04.03.20 18:34, Barry Revzin wrote:
>
> On Wed, Mar 4, 2020, 11:11 AM Sebastian Büttner via Std-Proposals <std-proposals_at_[hidden]> wrote:
>>
>> Sure! You can do this (you were missing the "auto" of the placeholder-type-specifier):
>>
>> void f(std::basic_string<any_of<char, uint8_t> auto> x);
>
>
> This one is not valid in C++20, but hopefully will become valid in C++23 (although the auto would go outside the template - basic_string<Concept> auto)
>
> Barry
>
> Hi Barry,
>
> why not? At least the grammar allows for it, is there any paragraph that disallows this (I admit I did only lookup the grammar, which often allows more than the actual language)?
>
> type-id <- type-specifier-seq <- type-specifier <- simple-type-specifier <- placeholder-type-specifier <- type-constraint_opt auto

A simple-template-id's template-argument-list can't contain
placeholders. If the simple-type-specifier is a
placeholder-type-specifier,
it's either auto or decltype(auto). Things like vector<auto> don't get to play.

Received on 2020-03-04 12:02:09