#pragma once #define EXERCISM_RUN_ALL_TESTS namespace squares { namespace detail { constexpr unsigned sum(unsigned n) { return (n*(n+1))/2; } } constexpr unsigned square_of_sums(unsigned n) { using detail::sum; return sum(n)*sum(n); } constexpr unsigned sum_of_squares(unsigned n) { return (n*(n+1)*(2*n+1))/6; } constexpr unsigned difference(unsigned n) { return square_of_sums(n) - sum_of_squares(n); } }