How to check if string is available at compile time
    David Bennett 
    davidbennett at bravevision.com
       
    Thu Sep 21 12:30:15 UTC 2017
    
    
  
On Thursday, 21 September 2017 at 11:42:36 UTC, David Bennett 
wrote:
> [snip]
>
> ```
> string[] escapeCTFE(Args...)(){
>
>     static foreach (arg; Args){
>         static if(__traits(compiles, ###WHATDOIPUTHERE###)){
> [snip]
So far the best I've come up with is :
```
enum isCTstring(alias arg) = (!isAssignable!(typeof(arg)) || 
__traits(compiles, mixin(` "foo" ~ `~__traits(identifier, arg))));
string[] escapeCTFE(Args...)(){
     static foreach (arg; Args){
         static if(isCTstring!(arg)){
             pragma(msg, "Do work on string: ", arg);
         }else{
             pragma(msg, __traits(identifier, arg), " can only be 
read at runtime");
         }
     }
     return new string[32];
}
```
But this seems quite hackish... any better ideas?
    
    
More information about the Digitalmars-d-learn
mailing list