#include <array>
#include <vector>
#include <iostream>

template <typename T>
void printAll(const T& v)
{
    for (const typename T::value_type& value : v)
        std::cout << value << std::endl;
}

template <typename T>
T doubleData(const T& v)
{
    T data = v;
    for (typename T::value_type& value : data)
        value *= 2;
        
    return data;
}

int main()
{
    std::array<int, 10> a = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    auto a2 = doubleData(a);
    printAll(a2);
    
    std::vector<int> v = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    auto v2 = doubleData(v);
    printAll(v2);
}