Thread overview | |||||||
---|---|---|---|---|---|---|---|
|
July 14, 2004 Template specialisations and 'alias' | ||||
---|---|---|---|---|
| ||||
The following code gives an error when trying to implement specialisation *** template instance SpecTest!(Dummy ,0) matches more than one template declaration ,----[ ] | | template SpecTest(alias T, int n) { | alias T X; | } | | template SpecTest(alias T, int n :0) { | alias T X; | } | | class Dummy {} | | void main() { | alias SpecTest!(Dummy, 0).X Y; | } | `---- If I remove the 'alias' keywords and substitute the Dummy class for 'int', it all compiles. Any ideas why this should be? Also, using 'alias' prevents using 'int' (and I presume other primitive types) as parameters to those templates. Is this intentional? The why's and wherefore's of using 'alias' in template parameter lists is not well defined. Cabal. |
July 14, 2004 Re: Template specialisations and 'alias' | ||||
---|---|---|---|---|
| ||||
Posted in reply to Cabal | Come on guys n gals! Someone must be using templates and specialisation. One of you must have a clue. |
July 15, 2004 Re: Template specialisations and 'alias' | ||||
---|---|---|---|---|
| ||||
Posted in reply to Cabal | I'd post this as a bug, the case can be simplified even further template Test(alias T, int n : 0) {} alias Test!(bit,0) x; The specification states "Alias parameters enable templates to be parameterized with any type of D symbol, including global names, type names, module names, template names, and template instance names." The test works if T is not an alias parameter and yet the description says that type names are valid arguments to alias parameters so I don't know what else to make of this, other than it is a bug. |
July 15, 2004 Re: Template specialisations and 'alias' | ||||
---|---|---|---|---|
| ||||
Posted in reply to Bent Rasmussen | Thanks Bent, I was beginning to wonder if anyone else was using templates at all. Your test highlights my second query regarding primitive types not being able match alias parameters. If you don't mind I'll report 2 separate bugs with your example being one of them.
Bent Rasmussen wrote:
> I'd post this as a bug, the case can be simplified even further
>
> template Test(alias T, int n : 0) {}
> alias Test!(bit,0) x;
>
> The specification states
>
> "Alias parameters enable templates to be parameterized with any type of D symbol, including global names, type names, module names, template names, and template instance names."
>
> The test works if T is not an alias parameter and yet the description says that type names are valid arguments to alias parameters so I don't know what else to make of this, other than it is a bug.
|
July 15, 2004 Re: Template specialisations and 'alias' | ||||
---|---|---|---|---|
| ||||
Posted in reply to Cabal | > Thanks Bent, I was beginning to wonder if anyone else was using templates at > all. Your test highlights my second query regarding primitive types not being able match alias parameters. If you don't mind I'll report 2 separate > bugs with your example being one of them. Well now I do, since I was wrong. :-) |
Copyright © 1999-2021 by the D Language Foundation