00001
00002 #ifndef _INSTIGATE_STL_INTERNAL_HEADER_IN_ALGORITHM
00003 #error This is an internal header file used to implement Instigate STL.\
00004 It should never be included directly by a program.
00005 #endif
00006
00007 #ifndef INSTIGATE_STL_ROTATE_COPY_HPP
00008 #define INSTIGATE_STL_ROTATE_COPY_HPP
00009
00059
00060 #include "concept.hpp"
00061 #include "_basis.hpp"
00062 #include "_copy.hpp"
00063
00064
00065
00066
00067
00068
00069 namespace instigate {
00070 namespace stl {
00071 template <typename I, typename O>
00072 O rotate_copy(I b, I m, I e, O r);
00073 }
00074 }
00075
00110 template <typename I, typename O>
00111 O instigate::stl::rotate_copy(I b, I m, I e, O r)
00112 {
00113 CHECK(stl::forward_iterator::requirements<I>);
00114 CHECK(stl::readable_iterator::requirements<I>);
00115 CHECK(stl::incrementable_iterator::requirements<O>);
00116 CHECK(stl::writable_iterator::requirements<O>);
00117 return stl::copy(b, m, stl::copy(m, e, r));
00118 }
00119
00120
00121
00122 #endif // INSTIGATE_STL_ROTATE_COPY_HPP