Programmer lets the library perform bound checks using the at
    	   method.
/*
 * Read some integers into an array, then echo them.
 */
#include <iostream>
#include <array>
#include <stdexcept>
int main()
{
        // Read them in, using library bounds checking.
        std::array<int, 10> arr;
        int sub = 0;
        std::cout << "Enter some integers: " << std::endl;
        try {
                int val; 
                for(; std::cin >> val; ++sub) {
                        arr.at(sub) = val;
                }
        } catch(std::out_of_range &e) {
                std::cout << "Array full; reading stopped." << std::endl;
        }
        int num = sub;
        // Print them back out again.  Since we made sure not to overfill
        // the array on input, we know that sub cannot become out of bounds
        // in this loop.  So we use plain [] for efficiency.
        std::cout << "===============" << std::endl;
        for(int sub = 0; sub < num; ++sub)
                std::cout << arr[sub] << " ";
        std::cout << std::endl;
}