Checking @nogc-ness of an Allocator.allocate()

Per Nordlöw per.nordlow at gmail.com
Thu Jan 11 12:32:54 UTC 2018


On Thursday, 11 January 2018 at 12:24:36 UTC, Nordlöw wrote:
> How do I check whether an aggregate member function (call for a 
> specific argument) is @nogc or not?
>
> I want to check whether
>
>     Allocator.allocate(1)
>
> (for a any Allocator) is @nogc or not?
>
> Is
>
> https://dlang.org/phobos/std_traits.html#hasFunctionAttributes
>
> the way to do it?

Is this an ok implementation:

enum bool isNogc(alias fun) = (isCallable!fun &&
                                (functionAttributes!fun &
                                 FunctionAttribute.nogc));

@safe pure nothrow @nogc unittest
{
     static int foo(int x) @nogc pure nothrow;
     static int goo(int x) pure nothrow;
     static assert(isNogc!foo);
     static assert(!isNogc!goo);
}



More information about the Digitalmars-d-learn mailing list