It's now OK to create a new array in a nothrow function, but it seems dup is not allowed: nothrow void foo(int[] a) { a.dup; } void main() {} Errors with dmd 2.052, is this correct? test.d(2): Error: _adDupT is not nothrow test.d(1): Error: function test.foo 'foo' is nothrow yet may throw Bye, bearophile