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