Thread overview | ||||||
---|---|---|---|---|---|---|
|
April 05, 2019 template with enum parameter doesn't compile | ||||
---|---|---|---|---|
| ||||
So the following code doesn't compile for some reason, and I can't figure out why. enum MyEnum { A, B, C } class MyClass(MyEnum myEnum) { /*...*/ } int main() { MyClass!MyEnum.A a; } The error: Error: template instance `MyClass!(MyEnum)` does not match template declaration `MyClass(MyEnum myEnum)` pops up, no matter what I do. I'm quite puzzled actually |
April 05, 2019 Re: template with enum parameter doesn't compile | ||||
---|---|---|---|---|
| ||||
Posted in reply to Sjoerd Nijboer | On Friday, 5 April 2019 at 14:47:42 UTC, Sjoerd Nijboer wrote: > So the following code doesn't compile for some reason, and I can't figure out why. > The error: Error: template instance `MyClass!(MyEnum)` does not match template declaration `MyClass(MyEnum myEnum)` > pops up, no matter what I do. > I'm quite puzzled actually You are just having a little issue with operator precedence there. Your code attempts to get the member `A` from `MyClass!MyEnum`, if you add braces around it, it'll work just fine `MyClass!(MyEnum.A)`. |
April 05, 2019 Re: template with enum parameter doesn't compile | ||||
---|---|---|---|---|
| ||||
Posted in reply to Sjoerd Nijboer | On Friday, 5 April 2019 at 14:47:42 UTC, Sjoerd Nijboer wrote: > So the following code doesn't compile for some reason, and I can't figure out why. > > enum MyEnum { A, B, C } > > class MyClass(MyEnum myEnum) > { > /*...*/ > } > > int main() > { > MyClass!MyEnum.A a; > } > > The error: Error: template instance `MyClass!(MyEnum)` does not match template declaration `MyClass(MyEnum myEnum)` > pops up, no matter what I do. You wrote: > MyClass!MyEnum.A a; Which is equivalent to > MyClass!(MyEnum).A a; What you want is MyClass!(MyEnum.A) a; |
April 05, 2019 Re: template with enum parameter doesn't compile | ||||
---|---|---|---|---|
| ||||
Posted in reply to lithium iodate | On Friday, 5 April 2019 at 14:52:05 UTC, lithium iodate wrote:
> You are just having a little issue with operator precedence there. Your code attempts to get the member `A` from `MyClass!MyEnum`, if you add braces around it, it'll work just fine `MyClass!(MyEnum.A)`.
That's really funny acutally.
It works. Thank you!
|
Copyright © 1999-2021 by the D Language Foundation