#include <array>

template<long unsigned int N>
using S = std::array<char, N>;

template<long unsigned int N>
S<N> capitalize(S<N>& x)
{
    return x;
}

template<long unsigned int N, typename ... D>
S<N> capitalize(S<N>& x, char a, D... d)
{
    x[x.size() - sizeof...(d) - 2] = (a >= 97) ? a-32 : a;
    return capitalize(x, d...);
}

template <typename ... D> auto capitalize(D... d)
{
    S<sizeof...(d) + 1> x{0};
    return capitalize(x, d...);
}

template<int N>
constexpr auto capchr(const char (&s)[N])
{
    S<N> s2{0};

    for (int i = 0; i < N; ++i)
    {
        s2[i] = (s[i] >= 97) ? s[i]-32 : s[i];
    }

    return s2;
}

int main()
{
    auto y = capchr("Hello");
    puts(y.data());
}
