February 04, 2007
http://d.puremagic.com/issues/show_bug.cgi?id=930

           Summary: Templates inside templates used as mixins
           Product: D
           Version: 1.004
          Platform: PC
        OS/Version: Windows
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: bugzilla@digitalmars.com
        ReportedBy: wbaxter@gmail.com


The following should work I believe, but apparently the type from the outer
template does not get propagated to the inner template.
It does work if the 'T' line is removed.

----
template ATemplate(T) {
   template ATemplate() {
       void foo() {
           T x = 2; // this line causes an error
           printf("Hi\n");
       }
   }
}

class TheClass(alias MixIt)
{
    mixin MixIt;
}


void main() {
    auto val = new TheClass!(ATemplate!(int));
    val.foo();

}


-- 

February 04, 2007
http://d.puremagic.com/issues/show_bug.cgi?id=930


wbaxter@gmail.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|normal                      |minor




------- Comment #1 from wbaxter@gmail.com  2007-02-04 02:51 -------
Addendum - At least for my purposes, it turns out this can be handled by using templated static structs instead of mixins:

struct ATemplate(T) {
static:
   T svar = 99;
   void foo() {
       T x = 2; // this line causes an error
       printf("Hi\n");
   }
}

class TheClass(MixIt)
{
    MixIt mix;
}


void main() {
    auto val = new TheClass!(ATemplate!(int));
    val.mix.foo();
}


----

This isn't holding me up in any way now, so downgrading to minor.


--