On Saturday, 31 August 2013 at 12:53:17 UTC, ilya-stromberg wrote:
On Saturday, 31 August 2013 at 12:19:17 UTC, monarch_dodra wrote:
While we are at it, this is also the way to "force" attribute inference on a function.

Can you print any code example, please?

//This function is @system, not pure, and throws.
void foo()
{}

//This function is @safe, pure and nothrow.
void bar()()


It's a trick that is useful when doing non-template functions inside a templated struct. EG:

struct S(T)
{
    T t;
    T foo()
    {
        return t;
    }
}

Here, we don't know if foo is nothrow, as the postblit could throw, for example. If we make it a template, then the compiler deduces it for us.

Although arguably, since foo is already in a parameterized context, *ideally* it should already be infered (but that is not the case today).

Reply via email to