pure and custom new / delete
David Nadlinger
see at klickverbot.at
Tue Jun 26 12:54:43 PDT 2012
On Tuesday, 26 June 2012 at 18:35:31 UTC, Jonathan M Davis wrote:
> You could try std.traits.SetFunctionAttributes (it was recently
> added and is
> not in 2.59 IIRC). David Nadlinger created it specifically for
> being able to
> create easily add function attributes such as pure to a
> function. I haven't
> messed around with it yet, but it looks very easy to use.
I created it specifically for a related use case, but on its own,
SetFunctionAttributes is strictly for manipulating
function/delegate _types_ in terms of linkage. This is helpful
because the D grammar for function types is quite clumsy.
For example, the following is not valid D code, and can't
trivially be corrected (in the first case, creating a separate
alias for the function type would work, but that's clumsy
especially in generic and/or generated code):
---
void foo(extern(C) void function() nothrow cb);
auto assumePure(T)(T t) { return cast(pure T)(t); }
---
As mentioned in
https://github.com/D-Programming-Language/phobos/pull/555, it
would be easy to add »high-level primitives« on top of
SetFunctionAttributes; assumePure and ExternC templates are
included as examples its the documentation. Specifically for
declaring »trusted pure« functions, making »alias
assumePure!funcImpl func;« work would not be hard either.
I just was not sure which of those tools are needed frequently
enough to warrant inclusion in Phobos, if any.
David
More information about the Digitalmars-d
mailing list