On Monday, 26 November 2012 at 12:46:10 UTC, Manu wrote:
On 26 November 2012 14:39, Andrej Mitrovic <[email protected]>wrote:

On 11/26/12, Manu <[email protected]> wrote:
> 1.
>
> enum i = 10;
> pragma(msg, is(i == enum) || is(typeof(i) == enum)); // <- > false?!
>
> I can't find a way to identify that i is an enum, not a > variable; can not
> be assigned, has no address, etc.

It's not an enum, it's a manifest constant.


Well that's certainly not intuitive. I've never even heard that term before. It looks awfully like an enum, with the whole 'enum' keyword and
all ;)
How do I detect that then?

The term enum (AFAIK) is comes from an old C++ hack, where you'd create an actual enum to represent variable that's useable compile-time.

Anyways, when you declare an actual enumerate, you have to declare:
1) The enum type
2) The enum values
3) The enum variable

So in your case, it would have to be:
--------
enum Enumerate
{
   state1 = 10,
   state2
}
Enumerate i = Enumerate.state1;
-----

Reply via email to