std::dedup, чтобы не было путаницы и неоправданных ожиданий. Как вы знаете в си нету понятия строка
std::array и std::vector). Либо просто указатели и создавать массивы с размером "с запасом", как делаете вы.у них максимальный размер 10. для результирующего я указал размер максимальный 20, а реальный X = N + M
const int N = 3;
const int M = 5;
std::array<int, N> = {1, 2, 3};
std::array<int, M> = {1, 2, 3, 4, 5};
std::array<int, N+M> operator<<(const std::array<int, N> &one, const std::array<int, M> &two) {
// магия
return result;
}
std::array<int, N+M> operator<<(const std::array<int, M> &one, const std::array<int, N> &two) {
return operator<<(two, one); // вызов первой перегрузки
} int, то можете убрать первую, а во второй все T заменить на int.std::vector (что суть - динамический массив), то почитать о нем можно здесь. я только знаю что озвученные требования даже для мидла завышены.