#include <array>
#include <cstddef>
#include <iostream>

template<typename T, std::size_t N>
struct Buffer {
    using value_type = T;
    std::array<T, N> values;
};

template<typename C>
typename C::value_type first(const C& buffer) {
    return buffer.values[0];
}

int main() {
    const Buffer<int, 2> data{{2, 5}};
    std::cout << first(data) << ' ' << data.values.size() << '\n';
    return 0;
}
