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);
}

Reply via email to