C++ Logo

std-proposals

Advanced search

Re: Fwd: Re: "Union types" syntactic sugar

From: Michał Piotr Gawron <mcvsama_at_[hidden]>
Date: Wed, 4 Mar 2020 18:18:42 +0100
Thanks again. I actually tried the version with 'auto', but it didn't
compile with gcc-9.2.1. Didn't try other compilers, but if it works,
then I'll be happy. ;-)

I now see that even
  void f (any_of<char, uint8_t> auto x);
doesn't compile yet on my gcc.

Maybe in future any_of (perhaps with a different name) could make its
way to std::.

std::best_regards();

On 04.03.2020 18:09, Sebastian Büttner via Std-Proposals wrote:
> Sure! You can do this (you were missing the "auto" of the
> placeholder-type-specifier):
> voidf(std::basic_string<any_of<char, uint8_t> auto> x);
>
> This works because "type-constraint auto" is a valid
> placeholder-type-specifier (which is a simple-type-specifier) and those
> are permitted as type-ids for a template type parameter (which is this
> case):
>
> For completness: type-id <- type-specifier-seq <- type-specifier <-
> simple-type-specifier <- placeholder-type-specifier <-
> type-constraint_opt auto
>
> https://eel.is/c++draft/temp.arg.type#1
> https://eel.is/c++draft/dcl.type#nt:type-specifier-seq
> https://eel.is/c++draft/dcl.type#nt:type-specifier
> https://eel.is/c++draft/dcl.type#nt:simple-type-specifier
> https://eel.is/c++draft/dcl.type#nt:placeholder-type-specifier
>
> On 04.03.20 17:29, Michał Piotr Gawron via Std-Proposals wrote:
>> On 04.03.2020 15:23, Sebastian Büttner via Std-Proposals wrote:
>>> What's wrong with that (sorry for the terrible name):
>>>
>>> template<typenameT, typename... Us>
>>> conceptany_of = (std::is_same_v<T, Us> || ...);
>>>
>>> voidf(any_of<char, uint8_t> autox);
>>>
>>> template<any_of<char, uint8_t> T>
>>> voidf(std::basic_string<T> x);
>> Ah, it looks like I could use this, it's quite readable to me. (I'm not
>> very familiar with concepts yet.)
>>
>> Is there a way to have the std::basic_string<> version that would be
>> more similar to this?
>>
>> void f (std::basic_string<any_of<char, uint8_t>> x);
>>
>> ?
>>
>
-- 
Michał Gawron
mcv.mulabs.org

Received on 2020-03-04 11:21:29