need help to check symbol is static variable or not

Dakota dakota at gmail.com
Tue Jul 2 05:29:41 UTC 2024


On Monday, 1 July 2024 at 11:15:46 UTC, Nick Treleaven wrote:
> On Monday, 1 July 2024 at 07:32:30 UTC, Dakota wrote:
>> this code give error:
>>
>> ```d
>> static if(  !__traits(compiles, mixin("enum v = V;")) ) {
>>    enum v = V;
>> }
>>
>> ```
>
> __traits(compiles, ...) can't check if a declaration is valid 
> directly. You have to wrap it in a function literal expression:
> ```d
> enum isStatic(alias V) = __traits(compiles, { enum v = V; });
>
> extern const float NotWorkVar;
> const float Works = 2;
>
> pragma(msg, isStatic!NotWorkVar); // false
> pragma(msg, isStatic!Works); // true
> ```

Thanks, this work for me.






More information about the Digitalmars-d-learn mailing list