Thread overview
[Issue 1714] New: Type specialization in IsExpression should work for templated types
Dec 04, 2007
d-bugmail
Nov 08, 2010
Don
Nov 08, 2010
Simen Kjaeraas
December 04, 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1714

           Summary: Type specialization in IsExpression should work for
                    templated types
           Product: D
           Version: 2.008
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Keywords: spec
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: bugzilla@digitalmars.com
        ReportedBy: dhasenan@gmail.com


class Bar (T) {}
static if (is (Bar!(int) T == T!(U), U)) // should evaluate to true, U == int,
T == ? probably Bar!(int)
{}

class Foo : Bar!(int) {}
static if (is (Foo T == T!(U), U)) // should evaluate to false
{}
static if (is (Foo T : T!(U), U)) // should evaluate to true, U == int
{}


Currently, you can do similar stuff in template specializations, but it should be extended to IsExpressions, according to the documentation. So it's implied, anyway.


-- 

November 08, 2010
http://d.puremagic.com/issues/show_bug.cgi?id=1714


Don <clugdbug@yahoo.com.au> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
                 CC|                            |clugdbug@yahoo.com.au
         Resolution|                            |FIXED


--- Comment #1 from Don <clugdbug@yahoo.com.au> 2010-11-08 04:47:03 PST ---
The syntax was slightly wrong. Using correct syntax, as shown below, it failed on all versions of DMD up to and including 2.048. It was fixed in 2.049.

class Bar (T) {}
static if (is (Bar!(int) T == W!(U), alias W, U))
{
    pragma(msg, W.stringof);
    pragma(msg, U.stringof);
} else static assert(0);

class Foo : Bar!(int) {}
static if (is (Foo T == W!(U), alias W, U))
{
    static assert(0);
}

static if (is (Foo T2 : W2!(U2), alias W2, U2))
{
    pragma(msg, W2.stringof);
    pragma(msg, U2.stringof);
} else static assert(0);

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
November 08, 2010
http://d.puremagic.com/issues/show_bug.cgi?id=1714


Simen Kjaeraas <simen.kjaras@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |simen.kjaras@gmail.com


--- Comment #2 from Simen Kjaeraas <simen.kjaras@gmail.com> 2010-11-08 05:22:16 PST ---
See also bug 3608, which is definitely related, but concerns variadic template lists.

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