digitalmars.D.learn - Template
- Vladimir (15/15) Aug 09 2007 I tried to use common c++ technique in D:
- Regan Heath (24/42) Aug 09 2007 I suspect it must have something to do with 'Sub' not being defined at
- Vladimir (2/53) Aug 09 2007 Thanks for quick response. Your workarrond is suitable. I wonder should...
- Regan Heath (4/58) Aug 09 2007 I think you should post it to bugzilla, if it's a bug it will get dealt
I tried to use common c++ technique in D: class Super (alias T) { alias T.Type A; >>> Error: no property 'Type' for type xxx.Sub' void test() { alias T.Type B; >>> ok } } class Sub : Super !(Sub) { alias int Type; } alias A fails to compile although alias B inside scope of function is ok. Is that intended? What is the idea behind that? Vladimir
Aug 09 2007
Vladimir wrote:I tried to use common c++ technique in D: class Super (alias T) { alias T.Type A; >>> Error: no property 'Type' for type xxx.Sub' void test() { alias T.Type B; >>> ok } } class Sub : Super !(Sub) { alias int Type; } alias A fails to compile although alias B inside scope of function is ok. Is that intended? What is the idea behind that?I suspect it must have something to do with 'Sub' not being defined at the point where you're using it as a template parameter. This compiles: class Super (T) { alias T.Type A; void test() { alias T.Type B; } } class Temp { alias int Type; } class Sub : Super !(Temp) { alias int Type; } void main() {} Incidently, notice that I'm not using 'alias' in my Super template. It doesn't seem to be required. Regan
Aug 09 2007
Regan Heath Wrote:Vladimir wrote:Thanks for quick response. Your workarrond is suitable. I wonder should it be considered as a bug and subject for future fix?I tried to use common c++ technique in D: class Super (alias T) { alias T.Type A; >>> Error: no property 'Type' for type xxx.Sub' void test() { alias T.Type B; >>> ok } } class Sub : Super !(Sub) { alias int Type; } alias A fails to compile although alias B inside scope of function is ok. Is that intended? What is the idea behind that?I suspect it must have something to do with 'Sub' not being defined at the point where you're using it as a template parameter. This compiles: class Super (T) { alias T.Type A; void test() { alias T.Type B; } } class Temp { alias int Type; } class Sub : Super !(Temp) { alias int Type; } void main() {} Incidently, notice that I'm not using 'alias' in my Super template. It doesn't seem to be required. Regan
Aug 09 2007
Vladimir wrote:Regan Heath Wrote:I think you should post it to bugzilla, if it's a bug it will get dealt with eventually, if not it will get dealt with eventually. :) ReganVladimir wrote:Thanks for quick response. Your workarrond is suitable. I wonder should it be considered as a bug and subject for future fix?I tried to use common c++ technique in D: class Super (alias T) { alias T.Type A; >>> Error: no property 'Type' for type xxx.Sub' void test() { alias T.Type B; >>> ok } } class Sub : Super !(Sub) { alias int Type; } alias A fails to compile although alias B inside scope of function is ok. Is that intended? What is the idea behind that?I suspect it must have something to do with 'Sub' not being defined at the point where you're using it as a template parameter. This compiles: class Super (T) { alias T.Type A; void test() { alias T.Type B; } } class Temp { alias int Type; } class Sub : Super !(Temp) { alias int Type; } void main() {} Incidently, notice that I'm not using 'alias' in my Super template. It doesn't seem to be required. Regan
Aug 09 2007