digitalmars.D - Question about template instantiation scope
- Edward Diener (22/22) Mar 22 2008 In the section about template instantiation scope, the below example is
- BCS (3/10) Mar 22 2008 Yes.
- Edward Diener (3/18) Mar 22 2008 Thanks ! As you say, I will look at mixins once I understand D templates...
In the section about template instantiation scope, the below example is given of illegality: "module a template TFoo(T) { void bar() { func(); } } module b import a; void func() { } alias TFoo!(int) f; // error: func not defined in module a" From this I assume that a template which refers to some type or object which is not in the module of the template declaration must import the module where the type or object is defined in order to be instantiated at all. For example: "module c void func() { } module a import c; template TFoo(T) { void bar() { func(); } } module b import a; void func() { } alias TFoo!(int) f; // legal" Is this correct ?
Mar 22 2008
Reply to Edward,From this I assume that a template which refers to some type or object which is not in the module of the template declaration must import the module where the type or object is defined in order to be instantiated at all. Is this correct ?Yes. The use of template mixin allows the reverse behavior. But that's for later
Mar 22 2008
BCS wrote:Reply to Edward,Thanks ! As you say, I will look at mixins once I understand D templates thoroughly, but not beforehand.From this I assume that a template which refers to some type or object which is not in the module of the template declaration must import the module where the type or object is defined in order to be instantiated at all. Is this correct ?Yes. The use of template mixin allows the reverse behavior. But that's for later
Mar 22 2008