[Issue 4918] New: tuples in eponymous template have default values only

d-bugmail at puremagic.com d-bugmail at puremagic.com
Thu Sep 23 01:11:29 PDT 2010


http://d.puremagic.com/issues/show_bug.cgi?id=4918

           Summary: tuples in eponymous template have default values only
           Product: D
           Version: unspecified
          Platform: Other
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nobody at puremagic.com
        ReportedBy: jmdavisProg at gmx.com


--- Comment #0 from Jonathan M Davis <jmdavisProg at gmx.com> 2010-09-23 01:10:49 PDT ---
This code

import std.stdio;
import std.typecons;

template mytemp(T...)
{
    static if(T.length == 1)
        enum mytemp = tuple(T[0]);
    else
        enum mytemp = tuple(T[0], mytemp!(T[1..$]).expand);
}

void main()
{
    writeln(mytemp!(5));
    writeln(mytemp!(5, 10, 7));
    writeln(mytemp!(true));
    writeln(mytemp!(true, false, true));
    writeln(mytemp!("hello"));
    writeln(mytemp!("hello", "world"));
}


results in this output

Tuple!(int)(0)
Tuple!(int,int,int)(0, 0, 0)
Tuple!(bool)(false)
Tuple!(bool,bool,bool)(false, false, false)
Tuple!(string)()
Tuple!(string,string)(, )


If I change it to

import std.stdio;
import std.typecons;

template mytemp(T...)
{
    enum mytemp = T[0];
}

void main()
{
    writeln(mytemp!(5));
    writeln(mytemp!(true));
    writeln(mytemp!("hello"));
}


I get

5
true
hello


So obviously, there's something wrong with tuple here. And it's pretty
crippling for my current project actually.

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


More information about the Digitalmars-d-bugs mailing list