This needs to be fixed
ryuukk_
ryuukk.dev at gmail.com
Sat Aug 24 18:50:07 UTC 2024
On Saturday, 24 August 2024 at 17:56:21 UTC, monkyyy wrote:
> On Saturday, 24 August 2024 at 16:36:17 UTC, Manu wrote:
>> alias x = s.tupleof; // this works
>> alias y = s.tupleof[0]; // this is a compile error?!
>>
>> How can embarrassing edge cases like this still exist in the
>> language today? I'm just reacquainting myself with all the
>> reasons that I've had such a hard time trying to convince my
>> colleagues to take D seriously for such a long time.
>>
>> 😫
>
> ```d
> auto tuple(T...)(T args){
> struct Tuple{
> enum istuple=true;
> T me; alias me this;
> }
> return Tuple(args);
> }
> unittest{
> auto foo=tuple(1,"hi");
> assert(foo[0]==1);
> assert(foo[1]=="hi");
> auto bar=tuple();
> }
> auto totuple(T)(T a) if(is(typeof(a.istuple)))=>a;
> auto totuple(T)(T a) if( ! is(typeof(a.istuple)))=>tuple(a);
> auto maybetuple(T...)(T a){
> static if(T.length==1){
> return a[0];
> } else {
> return tuple(a);
> }}
> ```
>
> Could be fixed with a better std.meta
D needs native tuple, not this mess
More information about the Digitalmars-d
mailing list