// Copyright (c) 2023 Andrey Semashev // // Distributed under the Boost Software License, Version 1.0. // See accompanying file LICENSE_1_0.txt or copy at // https://www.boost.org/LICENSE_1_0.txt) #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include template< typename Iterator > class adapted_iterator : public boost::iterators::iterator_adaptor< adapted_iterator< Iterator >, Iterator > { friend class iterator_core_access; private: typedef boost::iterators::iterator_adaptor< adapted_iterator< Iterator >, Iterator > base_type; public: explicit adapted_iterator(Iterator it) : base_type(it) {} }; int main() { unsigned char buf[8]; adapted_iterator< unsigned char* > b(buf), e(buf + sizeof(buf)); return boost::iterators::distance(b, e) == static_cast< adapted_iterator< unsigned char* >::difference_type >(sizeof(buf)); }