#include #include #include #include void set_first(int values[3]) { static_assert(std::is_same::value, "adjusted"); values[0] = 9; } template constexpr std::size_t count_of(const T (&)[N]) { return N; } int main() { int values[3] = {1, 2, 3}; static_assert(count_of(values) == 3, "bound retained"); set_first(values); assert(values[0] == 9); std::cout << count_of(values) << ' ' << values[0] << '\n'; }