On Sat, Jan 30, 2016 at 05:37:07AM +0000, Matt Elkins via Digitalmars-d-learn 
wrote:
> On Saturday, 30 January 2016 at 05:25:49 UTC, Rikki Cattermole wrote:
> >On 30/01/16 6:17 PM, Matt Elkins wrote:
> >>[...]
> >
> >templated functions have attribute inference. Meaning if it can be
> >nothrow it will be.
> >Regarding your real use case, again struct if templated so it should
> >be inferred.
> 
> Convenient! Thanks!

A common idiom that we use is to write an attributed unittest to verify
that the function itself is @safe/etc.. This way, if instantiated with
safe/etc. types, the template will also be safe/etc., but if
instantiated with an unsafe type, it will correspondingly be unsafe
(instead of failing to compile if you wrote @safe on the template). The
unittest ensures that you do not accidentally introduce un-@safe code
into the template and cause *all* instantiations to become un-@safe.

        auto mySafeCode(T)(T t) { ... }

        @safe unittest
        {
                auto x = mySafeCode(safeValue);
        }


T

-- 
Why are you blatanly misspelling "blatant"? -- Branden Robinson

Reply via email to