ed checking. Imagine that we have an iterator-based
        algorithm that requires random access iterators. If the algorithm is instantiated
        with iterators that do not meet our requirements then an error will be generated
        eventually, but this may be nested deep inside several templates, making
        it hard for the user to determine what went wrong. One option is to add a
        static assertion at the top level of the template, in that case if the condition
        is not met, then an e