...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
boost::unit_test::bt_iterator_traits<T, true>
// In header: <boost/test/utils/is_forward_iterable.hpp> template<typename T> struct bt_iterator_traits<T, true> { // types typedef std::iterator_traits< const_iterator >::value_type value_type; // public member functions BOOST_STATIC_ASSERT((is_forward_iterable< T >::value)); // public static functions static const_iterator begin(T const &); static const_iterator end(T const &); static std::size_t size(T const &); // private static functions static std::size_t size(T const &, std::true_type); static std::size_t size(T const &, std::false_type); // public data members decltype(boost::declval< typename boost::add_const< typename boost::remove_reference< T >::type >::type >().begin()) typedef const_iterator; };