Marking a delegate as pure, nothrow, etc.

Dicebot public at dicebot.lv
Sun Apr 13 11:10:18 PDT 2014


On Sunday, 13 April 2014 at 18:02:15 UTC, Joseph Rushton Wakeling 
wrote:
> On 13/04/14 19:58, Joseph Rushton Wakeling wrote:
>> Is it possible to mark a delegate as pure, @safe, nothrow, 
>> etc.?  And if so, how?
>
> ... just answered my own question with a bit more 
> experimentation.  The declarations need to come _after_ the 
> delegate:
>
>     void foo(int delegate(int) @safe nothrow pure dg)
>     {
>         ...
>     }

I'd actually recommend to put all function attributes after 
parameter list even for normal function declarations. It is not 
widely accepted practice but helps avoid some confusion:

// `const` does not apply to return param here but to foo itself
const int* foo() { return null; }
// makes it obvious
int* foo() const { return null; }


More information about the Digitalmars-d-learn mailing list