Conditional Attributes

Marcel marcelpi97 at gmail.com
Fri Feb 21 16:24:03 UTC 2020


On Thursday, 20 February 2020 at 17:41:54 UTC, Dennis wrote:
> On Tuesday, 18 February 2020 at 17:11:55 UTC, Marcel wrote:
>> Say I have a struct where every member function can either be 
>> static or not depending on a template parameter. Is there a 
>> simple way to do this?
>
> The best I can think of is:
>
> ```
> mixin template maybeStatic() {
>     void foo() {
>         // implementation
>     }
> }
>
> struct S(bool condition) {
>     static if (condition) {
>         static {
>             mixin maybeStatic;
>         }
>     } else {
>         mixin maybeStatic;
>     }
> }
> ```
>
> What do you need this for? It seems like an unusual situation 
> to me.

That will do, thank you!
I'm making an allocator library similar to what Andrei 
Alexandrescu presented at CppCon. Since some allocators may not 
have state, those that inherit* from them may need to have every 
member function marked as static.

*I'm using mixins instead of inheritance.


More information about the Digitalmars-d-learn mailing list