How to check if string is available at compile time
    David Bennett 
    davidbennett at bravevision.com
       
    Thu Sep 21 11:42:36 UTC 2017
    
    
  
Hi Guys,
Is there an easy way to check if the value of string passed to a 
template is available at compile time?
Here is a cut down example of that I'm doing:
```
string[] escapeCTFE(Args...)(){
     static foreach (arg; Args){
         static if(__traits(compiles, ###WHATDOIPUTHERE###)){
             pragma(msg, "Do work on string: ", arg);
         }else{
             pragma(msg, __traits(identifier, arg), " can only be 
read at runtime");
         }
     }
}
void main(){
     string a = "a";
     static string b = "b";
     enum string c = "c";
     immutable string d = "d";
     const string e = "e";
     enum escape_as_much_as_possible = escapeCTFE!(a,b,c,d,e,"f");
}
```
I know for ints I can use __traits(compiles, int[arg]) but I'm 
not sure about strings.
I believe only a and b should be hidden from pragma right?
Thanks,
David.
    
    
More information about the Digitalmars-d-learn
mailing list