Tuple indexing and slicing
Jonathan M Davis
jmdavisProg at gmx.com
Wed Jul 10 18:16:33 PDT 2013
On Wednesday, July 10, 2013 18:10:42 Timothee Cour wrote:
> On Wed, Jul 10, 2013 at 5:49 PM, Artur Skawina <art.08.09 at gmail.com> wrote:
> > On 07/11/13 00:52, Timothee Cour wrote:
> > > Why not support Tuple indexing and slicing with [] syntax?
> > >
> > > (see below for a way to index/slice a tuple)
> >
> > Not sure I understand the question.
> > I guess you'd like this to work for some library pseudo-tuple type
> > - I've not looked at those, somebody else may give you a better answer.
> >
> > "Native" tuples already support what you're asking for:
> > template Tuple(A...) { alias Tuple = A; }
> >
> > void main(){
> >
> > alias T=Tuple!(int,double);
> > pragma(msg,T[0].stringof);
> > pragma(msg,T[0..2].stringof);
> > pragma(msg,typeof(T.init[0]).stringof);
> > pragma(msg,typeof(Tuple!(T.init[0..$])).stringof);
> >
> > }
> >
> > artur
>
> I know native tuples do, I am aksing about std.typecons.Tuple.
> Is there any way to support this in library code ?
> If not, how about changing compiler to allow this?
>
> I'd like that:
> static assert(is(Tuple!(int,double)[0]==int));
> static assert(is(Tuple!(int,double)[0..$]==Tuple!(int,double)));
Do you want to slice the _type_ or the object? Adding slicing of the value
should be trivial enough if Tuple doesn't support it already. But slicing the
type would require that the compiler understand Tuple or that some means of
overloading opSlice on the types themselves (rather the objects of those
types) be provided. And I wouldn't expect either of those to happen.
- Jonathan M Davis
More information about the Digitalmars-d-learn
mailing list