I know there's already an std::experimental solution in place for SIMD, but I think there's a better way to go about this.

When you add 2 variables together in C, the generated assembly basically says:

    1.  Put the first number into register A
    2.  Put the second number into register B
    3.  Calculate the result into register C
    4.  Copy register C to the desired memory location

Using SIMD for addition performs the exact same process but with lists of numbers instead of single ones, so why not just do this:

float a[4] = {1.0f, 5.0f, 0.0f, 0.005f};
float b[4] = {0.0f, 1000.0f, 0.0f, 9.0f};

float c[4] = a + b; // SIMD

Common SIMD-operable types - like lists of 2, 4, or 8 floats or ints - could be operated together like this, and other types could just produce a syntax error like "This array type cannot be operated on".

Does anyone think this might be a good idea? The only issue I can see is that people may be misled into thinking this concatenates the arrays.