T foo(T)(T a){ return a; } void test(inout(int[]) a = null) { static assert(is( typeof( a ) == inout(int[]) )); // OK static assert(is( typeof(foo(a)) == inout(int)[] )); // NG // Error: static assert (is(typeof(__error) == inout(int)[])) is false }
https://github.com/D-Programming-Language/dmd/pull/800