@nogc deduction for templated functions

Jonathan M Davis newsgroup.d at jmdavisprog.com
Sat Nov 18 17:46:09 UTC 2017


On Saturday, November 18, 2017 17:28:14 David Zhang via Digitalmars-d-learn 
wrote:
> Hi,
>
> Is there a way for a templated function to deduce or apply the
> @safe/@nogc attributes automaticaly? I feel like I remember dmd
> doing so at one point, but it doesn't appear to work anymore. In
> particular, I need to call a function belonging to a templated
> type, but do not know what attributes are applied.
>
> eg.
>
> void func(T)(T t)
> {
>      //Don't know if safe or nogc
>      t.someFunc();
> }
>
> Thanks.

pure, nothrow, @safe, and @nogc are infered for templated functions. So,
whether those attributes apply when they're not explicitly marked on a
templated function deponds on the contents of the function. You can test it
with a unit test. e.g.

@nogc unittest
{
    ...
    foo.func();
}

will give a compiler error if func wasn't infered as @nogc.

- Jonathan M Davis



More information about the Digitalmars-d-learn mailing list