https://issues.dlang.org/show_bug.cgi?id=15145
Issue ID: 15145 Summary: Array initializers for SIMD not working inside functions. Product: D Version: D2 Hardware: x86_64 OS: Linux Status: NEW Keywords: rejects-valid, SIMD Severity: minor Priority: P1 Component: dmd Assignee: nob...@puremagic.com Reporter: marco.le...@gmx.de Practically this compiles: import core.simd, std.range, std.array; ubyte[16] a = ubyte(16).iota.array; ubyte16 b = ubyte(16).iota.array; But simply moving the definition inside a function does not work: void main() { import core.simd, std.range, std.array; ubyte16 b = ubyte(16).iota.array; } Error: cannot implicitly convert expression (array(iota(cast(ubyte)16u))) of type ubyte[] to __vector(ubyte[16]) To be fair it works when you declare the vector as static, and that should probably be done for performance, but it should not be an error and the message is too general, as it works for static/global vectors. --