std.typecons.Tuple supports both a "slice" method and normal array slicing syntax: import std.stdio, std.typecons; void main() { Tuple!(int,float,string,ubyte) t4; t4[2] = "XXX"; t4[3] = 99; writeln(t4); writeln(typeid(typeof(t4)), "\n"); auto t2a = t4.slice!(1, 3); writeln(t2a); writeln(typeid(typeof(t2a)), "\n"); auto t2b = t4[1 .. 3]; writeln(t2b); writeln(typeid(typeof(t2b)), "\n"); } Outout with DMD 2.059head: Tuple!(int,float,string,ubyte)(0, nan, "XXX", 99) std.typecons.Tuple!(int,float,string,ubyte).Tuple Tuple!(float,string)(nan, "XXX") std.typecons.Tuple!(float,string).Tuple nanXXX (float,immutable(char)[]) But the natural syntax, using [1..3], returns a typetuple. Having two different kinds of tuples in a language is confusing, but slicing a kind tuple and see as a result the other kind of tuple is a bit too much confusing. Is it possible to modify D/Phobos to make t4[1..3] return a std.typecons.Tuple (and then deprecate the "slice" method)?
THIS ISSUE HAS BEEN MOVED TO GITHUB https://github.com/dlang/dmd/issues/18422 DO NOT COMMENT HERE ANYMORE, NOBODY WILL SEE IT, THIS ISSUE HAS BEEN MOVED TO GITHUB