Insertion sort C++14 implementation
Advice 1

In your insertionSort you can remove the last statement (return). 

Advice 2

Making your insertion sort generic is easy:

template&lt;typename RandIt&gt;
void insertion_sort(RandIt begin, RandIt end)
{
    for (auto i = begin + 1; i != end; ++i)
    {
        auto key = *i;
        auto j = i - 1;

        while (j &gt;= begin and *j &gt; key)
        {
            *(j + 1) = *j;
            --j;
        }

        *(j + 1) = key;
    }
}

template&lt;typename Container&gt;
void insertion_sort(Container&amp; cont)
{
    insertion_sort(std::begin(cont), std::end(cont));
}


Advice 3

Making your print function generic is not hard either:

template&lt;typename RandIt&gt;
void print(RandIt begin, RandIt end)
{
    using value_type = typename std::iterator_traits&lt;RandIt&gt;::value_type;
    std::copy(begin, end, std::ostream_iterator&lt;value_type&gt;(std::cout, ", "));
    std::cout &lt;&lt; std::endl;
}

template&lt;typename Container&gt;
void print(const Container&amp; container)
{
    print(std::begin(container), std::end(container));
}


Hope that helps.