DIP54 : revamp of Phobos tuple types

Meta jared771 at gmail.com
Sun Dec 29 22:48:07 PST 2013


On Monday, 30 December 2013 at 04:55:41 UTC, Dicebot wrote:
> Ah I was referring to the fact that it does not seem to compile 
> even assuming normal non-template parameters as indexes (which 
> looks like a bug). Other part (which is real desired one) is 
> not allowed by spec right now indeed.
>
> struct X
> {
> 	static int opSlice(size_t a, size_t b)
> 	{
> 		return 42;
> 	}
> }
>
> static assert ( X[1..2] == 42 );
>
> // Error: cannot slice type 'X'
>
> I expected this one to work.
>
>>> Naive alias this implementation will be
>>> sliceable. Problem is without this feature it will degenerate 
>>> into raw
>>> argument list upon slicing which is not clean but not fatal 
>>> (still an
>>> improvement over existing TypeTuple)
>>
>> Questionable. Slicing is a common operation
>
> Sure and I am going to try it. But it is not a showstopper for 
> DIP in question I think.

This almost looks like something that could work, but is 
explicitly disallowed by the compiler.

	struct Test
	{
		enum opSlice(size_t a, size_t b) = 42;
	}
	
	//Error: can only slice tuple types, not Test
	Test[1..2] t2;


More information about the Digitalmars-d mailing list