간단하게 정의한 반복자 타입을 동작하는 예제로 살펴보자. 숫자 타입 값의 범위를 표현할 수 있는 클래스 템플릿과 범위를 지정하는 시작 반복자와 끝 반복자를 생성할 수 있는 클래스 템플릿을 정의할 것이다. 반복자 클래스도 템플릿 타입이므로 두 템플릿은 같은 헤더 파일 Numeric_Range.h에 정의했다. Numeric_Range<T> 템플릿의 정의는 다음과 같다.
template <typename T> class Numeric_Iterator; // 템플릿 타입 정의 // 숫자 범위를 정의 template<typename T> class Numeric_Range { static_assert(std::is_integral<T>::value || std::is_floating_point<T>::value, “Numeric_Range type argument must be numeric.”); friend class Numeric_Iterator <T>; private: T start; // 범위에서 첫 번째 값 T step; // 연속값의 증가값 size_t count; // 범위에 있는 값의 개수 public: explicit Numeric_Range(T first=0, T incr=1, size_t n=2) : start {first}, step {incr}, count {n}{} // 범위에 대한 시작 반복자를 반환 Numeric_Iterator<T> begin(){ return Numeric_Iterator<T>(*this); } // 범위에 대한 끝 반복자를 반환 Numeric_Iterator<T> end() { Numeric_Iterator<T> end_iter(*this); end_iter.value = start + count*step; // 끝 반복자 값은 마지막에서 하나 더 지나간 값 return end_iter; } };