www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 586] New: Cannot index tuple with non-type elements

reply d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=586

           Summary: Cannot index tuple with non-type elements
           Product: D
           Version: 0.174
          Platform: PC
        OS/Version: Windows
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: bugzilla digitalmars.com
        ReportedBy: kirklin.mcdonald gmail.com


Take the following code:

template Tu(T ...) {
    alias T[1] Tu; // Line 2
}

void foo() { }

void main() {
    alias Tu!(real, int) T; // Works, no problem.
    alias Tu!(4, int) U;    // Results in error.
    alias Tu!(foo, int) V;  // Results in error.
    alias Tu!("a", int) W;  // Results in error.
}

The error in all three cases is:

test.d(2): tuple T is used as a type
test.d(X): template instance test.Tu!(<whatever>, int) error instantiating

Any tuple containing elements which are not types cannot be indexed. This
limits certain kinds of advanced template code.

Bug 533 is a consequence of this bug. Bug 582 is essentially the same bug, but
refers to slicing tuples rather than indexing them.


-- 
Nov 23 2006
next sibling parent Thomas Kuehne <thomas-dloop kuehne.cn> writes:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

d-bugmail puremagic.com schrieb am 2006-11-23:
 http://d.puremagic.com/issues/show_bug.cgi?id=586
 Take the following code:

 template Tu(T ...) {
     alias T[1] Tu; // Line 2
 }

 void foo() { }

 void main() {
     alias Tu!(real, int) T; // Works, no problem.
     alias Tu!(4, int) U;    // Results in error.
     alias Tu!(foo, int) V;  // Results in error.
     alias Tu!("a", int) W;  // Results in error.
 }

 The error in all three cases is:

 test.d(2): tuple T is used as a type
 test.d(X): template instance test.Tu!(<whatever>, int) error instantiating

 Any tuple containing elements which are not types cannot be indexed. This
 limits certain kinds of advanced template code.

 Bug 533 is a consequence of this bug. Bug 582 is essentially the same bug, but
 refers to slicing tuples rather than indexing them.
Added to DStress as http://dstress.kuehne.cn/compile/t/tuple_04_A.d http://dstress.kuehne.cn/compile/t/tuple_04_B.d http://dstress.kuehne.cn/compile/t/tuple_04_C.d http://dstress.kuehne.cn/compile/t/tuple_04_D.d http://dstress.kuehne.cn/compile/t/tuple_04_E.d http://dstress.kuehne.cn/compile/t/tuple_04_F.d http://dstress.kuehne.cn/compile/t/tuple_04_G.d Thomas -----BEGIN PGP SIGNATURE----- iD8DBQFFaI9YLK5blCcjpWoRAh5gAJoCHpGLGO1LRaQL9+xe0x4YhOgYxgCfVpYg CkX8VYBKc4X7fOVmS6zcHkw= =NTfb -----END PGP SIGNATURE-----
Nov 25 2006
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=586






This is even true for the perhaps simpler version, with a pure expression
tuple:
int F;

template A(T...)
{
    alias T[0] B; // Fails here
}

alias A!(F) C;

aliases.d(5): tuple T is used as a type
aliases.d(8): template instance aliases.A!(F) error instantiating


-- 
Apr 08 2007
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=586


thomas-dloop kuehne.cn changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         OS/Version|Windows                     |All





Fixed DMD 1.013


-- 
Apr 27 2007
prev sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=586


bugzilla digitalmars.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |WORKSFORME





Works in dmd 2.015 too.


-- 
Jun 29 2008