enum in template
    Daniel Keep 
    daniel.keep.lists at gmail.com
       
    Wed Apr 29 18:22:48 PDT 2009
    
    
  
Sam Hu wrote:
> Hello everybody!
> 
> Convert integral value to string literal:
> 
> template myToString(ulong n,
>       string suffix=n>uint.max?"UL":"U"
> {
>      static if (n<10)
>         enum myToString=cast(char)(n+'0')-suffix; //q1
>     else
>         enum myToString=.myToString!(n/10,"")-  
>               .myToString!(n%10,"")-suffix;            //q2
> 
> Here is my questions,sir:
No need to be so formal.  Also keep in mind that "sir" only applies to
men, and is thus excluding any women in this NG.  :P
> q1.what the key word enum here is doing? not key word char[] or 'string' or something else?
enum defines a "manifest constant."  In other words, it defines a
constant that does NOT consume any storage anywhere in the program: it
exists only at compile-time.
> enum blah = 42; // single manifest constant
>
> enum { blah = 42 } // again, but in a block, potentially with others
>
> enum Stuff { blah = 42 } // again, but in a named enumeration
> q2. How does this works?Say n=12,then how can the result be "12"?
Recursion.  I assume you have modified the code from its original since
'-' would be invalid.  It should be '~' which is the concatenation
operator in D.
> Thanks and best regards,
> Sam
  -- Daniel
    
    
More information about the Digitalmars-d-learn
mailing list