On Saturday, 1 September 2018 at 22:38:46 UTC, Ali Çehreli wrote:
You can strip off any attribute with SetFunctionAttributes:import std.stdio; // Adapted from std.traits.SetFunctionAttributes documentation import std.traits; auto assumeNoGC(T)(T t) if (isFunctionPointer!T || isDelegate!T) { enum attrs = functionAttributes!T | FunctionAttribute.nogc;return cast(SetFunctionAttributes!(T, functionLinkage!T, attrs)) t;} void f(T)(auto ref T) { writeln("yo"); } @nogc void main() { assumeNoGC(() => f(3)); // or assumeNoGC( { writeln("yo"); }); } Ali
Ah this works! Can define a debugWriteln then that can be used from anywhere without having to re attribute all the functions.
Thanks!
