Cleanest way to copy a constant size array in c++11

If you use std::array instead of a built-in array (which you should), it becomes very simple. Copying an array is then the same as copying any other object.

std::array<float,4> a = {0,1,2,3};
std::array<float,4> b = a;

The C++03 way

Use std::copy():

float a[4] = {0,1,2,3};
float b[4];

std::copy(a,a + 4, b);

That's about as clean as it gets.

The C++11 way

std::copy(std::begin(a), std::end(a), std::begin(b));

If you can use std::array

With std::array you just do simple assignment:

std::array<float,4> a = {0,1,2,3};
auto b = a;

For interested in C++03 (and also C) solution - always use struct containing an array instead of solely array:

struct s { float arr[5]; };

Structs are copyable by default.

Its equivalent in C++11 is,already mentioned, std::array<float,5>;