Oh, and I just invented a most *lovely* cast: :P auto noThrow(T)(scope T function() t) nothrow { return (cast(T function() nothrow)t)(); } auto noThrow(T)(scope T delegate() t) nothrow { return (cast(T delegate() nothrow)t)(); }