#include <iterator>
#include <vector>
#include <stdexcept>

template <typename It>
typename std::iterator_traits<It>::reference
access(It it, It end) {
    return it == end? throw std::runtime_error("no element"): *it;
}

int main()
{
    std::vector<int> v;
    access(v.begin(), v.end());
}