Thread overview
[Issue 1670] New: tupleof an aggregate cannot be used as a template tuple argument
Nov 15, 2007
d-bugmail
Feb 16, 2008
d-bugmail
Nov 16, 2009
Michal Minich
November 15, 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1670

           Summary: tupleof an aggregate cannot be used as a template tuple
                    argument
           Product: D
           Version: 1.023
          Platform: PC
        OS/Version: Windows
            Status: NEW
          Keywords: rejects-valid
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: bugzilla@digitalmars.com
        ReportedBy: jarrett.billingsley@gmail.com


struct S
{
        int x;
}

class C
{
        int x;
}

union U
{
        int x;
}

alias Tuple!(S.tupleof) ST;
alias Tuple!(C.tupleof) CT;
alias Tuple!(U.tupleof) UT;

All of those instantiations give the error "Error: tuple is not a valid template value argument".  No, but I'd suppose being tuples that they'd be valid _tuple_ arguments, Mr. Compiler!


-- 

February 16, 2008
http://d.puremagic.com/issues/show_bug.cgi?id=1670


andrei@metalanguage.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |andrei@metalanguage.com
             Status|NEW                         |ASSIGNED




-- 

November 16, 2009
http://d.puremagic.com/issues/show_bug.cgi?id=1670


Michal Minich <michal.minich@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |michal.minich@gmail.com


--- Comment #1 from Michal Minich <michal.minich@gmail.com> 2009-11-16 05:53:24 PST ---
struct Point { int x; int y; }

void main ()
{
    Point p;

    mixin Foo!(p.x);               // works (prints "x" at compile time)

    mixin Foo!(Point.x);           // works (prints "x" at compile time)

    mixin Foo!(p.tupleof[0]);      // Error: expression (Point).x is not a
valid template value argument (but still prints "(Point).x" at compile time)

    mixin Foo!(Point.tupleof[0]);  // Error: expression (Point).x is not a
valid template value argument (but still prints "(Point).x" at compile time)
}

template Foo (alias a)
{
    pragma (msg, a.stringof);
}

Shouldn't p.x and p.tupleof[0] work the same way ?

tested on DMD 2.036

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------