On Thu, 12 Mar 2015 04:51:40 +0000, amber wrote: > On Thursday, 12 March 2015 at 04:04:28 UTC, weaselcat wrote: >> On Thursday, 12 March 2015 at 03:12:15 UTC, amber wrote: >>> ... >> http://dlang.org/function.html#function-attribute-inference might be a >> good read if you haven't read it already. > > I did read it but didn't really understand it, so I've come to D.learn > for more help. > > I think it means I can just write the function like so: > > struct S(T) { > someFunc(int i) {// impl} > } > > and if possible it will be pure, nothrow, @safe and @nogc.
yes. all templated functions (and `someFunc()` is templated due to `S` being templated) are subjects of attribute inference. due to this fact people sometimes writing even free functions as argument-less templates, void freeFunc() (...) { ... } so compiler will infer attributes for `freeFunc()`. this has almost no cost, as compiler will merge all produced templates into one.
signature.asc
Description: PGP signature