import std.math; import core.simd: double2; void main() { double2 x; double2 y = x ^^ 2; double2 z = x ^^ 3; } Gives errors like: test.d:5: Error: template std.math.pow does not match any function template declaration .../math.d:3180: Error: template std.math.pow cannot deduce template function from argument types !()(__vector(double[2LU]),__vector(double[2LU])) Similar errors are generated by ldc2 on Windows32.
SIMD ^^ is neither generic, nor a trivial thing to implement. We should really just flat out error here.
Now it errs with the messages: test.d(6): Error: incompatible types for (x) ^^ (cast(__vector(double[2]))2.0): both operands are of type __vector(double[2]) test.d(7): Error: incompatible types for (x) ^^ (cast(__vector(double[2]))3.0): both operands are of type __vector(double[2]) which is adequate.