I'm not quite sure what you're asking. You either mark a function as @safe, pure, and/or nothrow - or you don't, in which case, if it's a templated function, the attributes are inferred to the best of the compiler's capabilities, and if it's not, then the function doesn't have those
attributes.

If you're asking whether we should prefer to be explicit with attributes on template functions, then the answer is no. We want the inference to be done by the compiler for the very reason that it was introduced in the first place. Without inference, if the function is marked with @safe, pure, or nothrow, then that restricts the list of valid template arguments to arguments that fulfill those requirements, and if we don't mark the templated function as @safe, pure, or nothrow, then it can't be used in other functions marked with
those attributes.

Now, prior to dmd 2.065, the attribute inference was pretty poor, but it looks
like the various bugs with regards to that were fixed:

http://dlang.org/changelog.html#attribinference2

So, attribute inference should be working much better now.

- Jonathan M Davis

That's exactly the answer I asked for and wanted to hear ;)

Thanks again,
Sifu

Reply via email to