You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Aggregate declarations could have optional template parameters.
class C1 {}
class C2(T) {}
interface I1 {}
interface I2(T) {}
struct S1 {}
struct S2(T) {}
union U1 {}
union U2(T) {}
Similarly, parameterized enum declaration would increase language consistency.
enum E1 {}
enum E2(T) {}
enum E2(T) if (constraint) {}
enum E2(T) : T {}
enum E2(T) if (constraint) : T {}
enum E2(T) : T if (constraint) {}
The text was updated successfully, but these errors were encountered:
(In reply to comment #2)
> Are there any existing use cases that this would improve?
I don't have actual use case. I'm proposing this enhancement just for increasing language consistency.
---
Now I'm opening a compiler PR to extend DIP42 feature.
https://github.com/D-Programming-Language/dmd/pull/2467
This is necessary to support `enum bool x(T) = initializer` syntax, and looks to me it is very similar to N3651 in C++14.
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3651.pdf
After #2467 is accepted, we would could make most of declarations parameterize - aggregates, functions, and variable declarations.
And, at that time enum declaration would be remained just one declaration which cannot be parameterized. That would be inconsistent.
Kenji Hara (@9rnsr) reported this on 2013-08-13T08:49:37Z
Transferred from https://issues.dlang.org/show_bug.cgi?id=10818
CC List
Description
Aggregate declarations could have optional template parameters. class C1 {} class C2(T) {} interface I1 {} interface I2(T) {} struct S1 {} struct S2(T) {} union U1 {} union U2(T) {} Similarly, parameterized enum declaration would increase language consistency. enum E1 {} enum E2(T) {} enum E2(T) if (constraint) {} enum E2(T) : T {} enum E2(T) if (constraint) : T {} enum E2(T) : T if (constraint) {}The text was updated successfully, but these errors were encountered: