you can do something like C ++ 11 to just copy the array
template <int LENGTH> constexpr bool copy_array(const char (&from)[LENGTH + 1], char (&to)[LENGTH], int index) { return index < LENGTH ? (to[index] = from[index], copy_array(from, to, ++index)) : false; } constexpr char src[] = "ab"; char dest[2]; copy_array(src, dest, 0);
edited: And in your context, you could do something like:
#include <iostream> #include <type_traits> #include <array> #include <utility> struct Foo { static constexpr int SIZE = 4; constexpr Foo() = default; constexpr Foo(const Foo &foo) : arr{foo.arr}, bar(foo.bar + 1) {} std::array<int, SIZE> arr = {{0, 0, 0, 0}}; int bar = 0; }; int main() { constexpr Foo foo1; constexpr Foo foo2(foo1); std::cout << foo1.bar << std::endl; std::cout << foo2.bar << std::endl; return 0; }
source share