On Saturday, 29 September 2012 at 02:57:42 UTC, David Piepgrass
wrote:
I have a feature request: "Named enum scope inference"
The idea is, that whenever a named enum value is expected, you
don't need to explicitly specify the scope of the enum value.
This would reduce redundancy in typing, just like automatic
type inference does.
Examples:
---------
enum MyDirection { forward, reverse }
struct MyIterator(MyDirection dir)
{
...
}
int forward = 42; // Doesn't interfere with the next line...
auto itr = MyIterator!forward(); // Infers MyDirection.forward
I like the spirit of this feature, but as Alex pointed out,
ambiguity is possible (which could theoretically cause errors
in existing code) and while I'm not familiar with how the
compiler is implemented, my spidey-sense thinks that what
you're asking for could be tricky to implement (in a language
that already has a very large amount of rules and features.)
Plus, I don't like the fact that when you see something like
"MyIterator!forward" by itself in code, there is no obvious
clue that forward is an enum value and not a class name or a
variable. So there is a sort of decrease in clarity of the
entire language by increasing the total number of possible
meanings that an identifier can have.
So I think this feature would need a more clear syntax,
something to indicate that the value is an enum value. I don't
currently have a really good counterproposal though....
+1