id summary reporter owner description type status milestone component version severity resolution keywords cc 4647 BOOST_CONCEPT_ASSERT((RandomAccessIterator)) fails Ilya Murav'jov "{{{#!c++ #include #include // RandomAccessIterator #include typedef std::vector::iterator int_iterator; typedef boost::transform_iterator tr_iterator; BOOST_CONCEPT_ASSERT((boost::RandomAccessIterator)); // fails }}} with an error like this: libs/boost-lib/boost/concept_check.hpp: In destructor 'boost::Convertible::~Convertible() [with X = boost::detail::iterator_category_with_traversal, Y = std::random_access_iterator_tag]': libs/boost-lib/boost/concept/detail/general.hpp:38: instantiated from 'static void boost::concepts::requirement::failed() [with Model = boost::Convertible, std::random_access_iterator_tag>]' libs/boost-lib/boost/concept_check.hpp:566: instantiated from 'boost::RandomAccessIterator::~RandomAccessIterator() [with TT = boost::transform_iterator > >, boost::use_default, boost::use_default>]' libs/boost-lib/boost/concept/detail/general.hpp:38: instantiated from 'static void boost::concepts::requirement::failed() [with Model = boost::RandomAccessIterator > >, boost::use_default, boost::use_default> >]' src/mlib/tests/test_iterator.cpp:123: instantiated from here libs/boost-lib/boost/concept_check.hpp:207: error: conversion from 'boost::detail::iterator_category_with_traversal' to non-scalar type 'std::random_access_iterator_tag' requested This is because iterator_adaptor turns std::random_access_iterator_tag into boost::random_access_traversal_tag, then iterator_facade turns it into iterator_category_with_traversal. The check fails if {{{#!c++ typedef boost::transform_iterator tr_iterator; }}} but not if {{{#!c++ typedef boost::transform_iterator tr_iterator; }}} Why it matters for me: I try to use ""any_iterator"", which has two versions, http://thbecker.net/free_software_utilities/type_erasure_for_cpp_iterators/start_page.html (Thomas Becker's) and http://stlab.adobe.com/classadobe_1_1any__iterator.html (Adobe's). The first one do many efforts to avoid this bug but still check iterators for compatibility (see traversal_types_erasure_compatible<>), the second just fails with an error like this." Bugs closed To Be Determined iterator Boost 1.44.0 Problem invalid