Boost C++ Libraries: Ticket #11187: size function causing hard errors in unrelated code https://svn.boost.org/trac10/ticket/11187 <p> Consider the following innocuous-seeming program: </p> <pre class="wiki">#include &lt;boost/range.hpp&gt; namespace boost { struct some_type {}; } template&lt;typename T = boost::some_type&gt; struct S {}; void size(S&lt;&gt;) {} int main() { S&lt;&gt; s; size(s); } </pre><p> For me, with clang -std=gnu++14, I get this: </p> <pre class="wiki">[100%] Building CXX object example/CMakeFiles/calendar.dir/calendar.cpp.o In file included from /cygdrive/c/Users/eric/Code/range-v3/example/calendar.cpp:34: In file included from /cygdrive/c/boost/org/modular-boost/boost/range.hpp:18: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/functions.hpp:18: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/begin.hpp:24: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/iterator.hpp:24: /cygdrive/c/boost/org/modular-boost/boost/mpl/eval_if.hpp:60:26: error: no type named 'type' in 'boost::range_mutable_iterator&lt;S&lt;boost::some_type&gt;, void&gt;' typedef typename f_::type type; ~~~~~~~~~~~~~^~~~ /cygdrive/c/boost/org/modular-boost/boost/range/iterator.hpp:65:31: note: in instantiation of template class 'boost::mpl::eval_if_c&lt;false, boost::range_const_iterator&lt;S&lt;boost::some_type&gt;, void&gt;, boost::range_mutable_iterator&lt;S&lt;boost::some_type&gt;, void&gt; &gt;' requested here typedef typename mpl::eval_if_c&lt; ^ /cygdrive/c/boost/org/modular-boost/boost/range/difference_type.hpp:28:40: note: in instantiation of template class 'boost::range_iterator&lt;S&lt;boost::some_type&gt;, void&gt;' requested here BOOST_DEDUCED_TYPENAME range_iterator&lt; ^ /cygdrive/c/boost/org/modular-boost/boost/range/size_type.hpp:57:40: note: in instantiation of template class 'boost::range_difference&lt;S&lt;boost::some_type&gt; &gt;' requested here BOOST_DEDUCED_TYPENAME range_difference&lt;C&gt;::type ^ /cygdrive/c/boost/org/modular-boost/boost/range/size_type.hpp:87:11: note: in instantiation of template class 'boost::detail::range_size&lt;S&lt;boost::some_type&gt;, void&gt;' requested here : detail::range_size&lt;T&gt; ^ /cygdrive/c/boost/org/modular-boost/boost/range/size.hpp:54:21: note: in instantiation of template class 'boost::range_size&lt;const S&lt;boost::some_type&gt; &gt;' requested here inline typename range_size&lt;const SinglePassRange&gt;::type ^ /cygdrive/c/Users/eric/Code/range-v3/example/calendar.cpp:44:5: note: while substituting deduced template arguments into function template 'size' [with SinglePassRange = S&lt;boost::some_type&gt;] size(s); ^ In file included from /cygdrive/c/Users/eric/Code/range-v3/example/calendar.cpp:34: In file included from /cygdrive/c/boost/org/modular-boost/boost/range.hpp:18: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/functions.hpp:18: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/begin.hpp:24: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/iterator.hpp:24: /cygdrive/c/boost/org/modular-boost/boost/mpl/eval_if.hpp:60:26: error: no type named 'type' in 'boost::range_const_iterator&lt;S&lt;boost::some_type&gt;, void&gt;' typedef typename f_::type type; ~~~~~~~~~~~~~^~~~ /cygdrive/c/boost/org/modular-boost/boost/range/iterator.hpp:65:31: note: in instantiation of template class 'boost::mpl::eval_if_c&lt;true, boost::range_const_iterator&lt;S&lt;boost::some_type&gt;, void&gt;, boost::range_mutable_iterator&lt;const S&lt;boost::some_type&gt;, void&gt; &gt;' requested here typedef typename mpl::eval_if_c&lt; ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:270:40: note: in instantiation of template class 'boost::range_iterator&lt;const S&lt;boost::some_type&gt;, void&gt;' requested here typedef BOOST_DEDUCED_TYPENAME range_iterator&lt; ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/has_constraints.hpp:32:63: note: in instantiation of template class 'boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt;' requested here inline yes has_constraints_(Model*, wrap_constraints&lt;Model,&amp;Model::constraints&gt;* = 0); ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/has_constraints.hpp:44:25: note: while substituting deduced template arguments into function template 'has_constraints_' [with Model = boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt;] , value = sizeof( detail::has_constraints_((Model*)0) ) == sizeof(detail::yes) ); ^ /cygdrive/c/boost/org/modular-boost/boost/config/suffix.hpp:394:72: note: expanded from macro 'BOOST_STATIC_CONSTANT' # define BOOST_STATIC_CONSTANT(type, assignment) static const type assignment ^ /cygdrive/c/boost/org/modular-boost/boost/mpl/if.hpp:63:68: note: in instantiation of template class 'boost::concepts::not_satisfied&lt;boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt; &gt;' requested here BOOST_MPL_AUX_STATIC_CAST(bool, BOOST_MPL_AUX_VALUE_WKND(T1)::value) ^ /cygdrive/c/boost/org/modular-boost/boost/mpl/aux_/value_wknd.hpp:57:40: note: expanded from macro 'BOOST_MPL_AUX_VALUE_WKND' # define BOOST_MPL_AUX_VALUE_WKND(C) C ^ /cygdrive/c/boost/org/modular-boost/boost/mpl/aux_/static_cast.hpp:24:62: note: expanded from macro 'BOOST_MPL_AUX_STATIC_CAST' # define BOOST_MPL_AUX_STATIC_CAST(T, expr) static_cast&lt;T&gt;(expr) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:51:10: note: in instantiation of template class 'boost::mpl::if_&lt;boost::concepts::not_satisfied&lt;boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt; &gt;, boost::concepts::constraint&lt;boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt; &gt;, boost::concepts::requirement&lt;boost::concepts::failed ************boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt;::************&gt; &gt;' requested here : mpl::if_&lt; ^ /cygdrive/c/boost/org/modular-boost/boost/range/size_type.hpp:90:9: note: in instantiation of template class 'boost::concepts::requirement_&lt;void (*)(boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt;)&gt;' requested here BOOST_RANGE_CONCEPT_ASSERT((boost::SinglePassRangeConcept&lt;T&gt;)); ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:102:45: note: expanded from macro 'BOOST_RANGE_CONCEPT_ASSERT' #define BOOST_RANGE_CONCEPT_ASSERT( x ) BOOST_CONCEPT_ASSERT( x ) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/assert.hpp:43:5: note: expanded from macro 'BOOST_CONCEPT_ASSERT' BOOST_CONCEPT_ASSERT_FN(void(*)ModelInParens) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:78:25: note: expanded from macro 'BOOST_CONCEPT_ASSERT_FN' &amp;::boost::concepts::requirement_&lt;ModelFnPtr&gt;::failed&gt; \ ^ /cygdrive/c/boost/org/modular-boost/boost/range/size.hpp:54:21: note: in instantiation of template class 'boost::range_size&lt;const S&lt;boost::some_type&gt; &gt;' requested here inline typename range_size&lt;const SinglePassRange&gt;::type ^ /cygdrive/c/Users/eric/Code/range-v3/example/calendar.cpp:44:5: note: while substituting deduced template arguments into function template 'size' [with SinglePassRange = S&lt;boost::some_type&gt;] size(s); ^ In file included from /cygdrive/c/Users/eric/Code/range-v3/example/calendar.cpp:34: In file included from /cygdrive/c/boost/org/modular-boost/boost/range.hpp:18: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/functions.hpp:20: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/size.hpp:21: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/size_type.hpp:20: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:20: In file included from /cygdrive/c/boost/org/modular-boost/boost/iterator/iterator_concepts.hpp:10: /cygdrive/c/boost/org/modular-boost/boost/iterator/iterator_categories.hpp:119:60: error: no type named 'iterator_category' in 'std::iterator_traits&lt;int&gt;' typename boost::detail::iterator_traits&lt;Iterator&gt;::iterator_category ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:126:44: note: in instantiation of template class 'boost::iterators::iterator_traversal&lt;int&gt;' requested here typedef BOOST_DEDUCED_TYPENAME iterator_traversal&lt;Iterator&gt;::type traversal_category; ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:146:15: note: in instantiation of template class 'boost::range_detail::IncrementableIteratorConcept&lt;int&gt;' requested here : IncrementableIteratorConcept&lt;Iterator&gt; ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/has_constraints.hpp:32:63: note: in instantiation of template class 'boost::range_detail::SinglePassIteratorConcept&lt;int&gt;' requested here inline yes has_constraints_(Model*, wrap_constraints&lt;Model,&amp;Model::constraints&gt;* = 0); ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/has_constraints.hpp:44:25: note: while substituting deduced template arguments into function template 'has_constraints_' [with Model = boost::range_detail::SinglePassIteratorConcept&lt;int&gt;] , value = sizeof( detail::has_constraints_((Model*)0) ) == sizeof(detail::yes) ); ^ /cygdrive/c/boost/org/modular-boost/boost/config/suffix.hpp:394:72: note: expanded from macro 'BOOST_STATIC_CONSTANT' # define BOOST_STATIC_CONSTANT(type, assignment) static const type assignment ^ /cygdrive/c/boost/org/modular-boost/boost/mpl/if.hpp:63:68: note: in instantiation of template class 'boost::concepts::not_satisfied&lt;boost::range_detail::SinglePassIteratorConcept&lt;int&gt; &gt;' requested here BOOST_MPL_AUX_STATIC_CAST(bool, BOOST_MPL_AUX_VALUE_WKND(T1)::value) ^ /cygdrive/c/boost/org/modular-boost/boost/mpl/aux_/value_wknd.hpp:57:40: note: expanded from macro 'BOOST_MPL_AUX_VALUE_WKND' # define BOOST_MPL_AUX_VALUE_WKND(C) C ^ /cygdrive/c/boost/org/modular-boost/boost/mpl/aux_/static_cast.hpp:24:62: note: expanded from macro 'BOOST_MPL_AUX_STATIC_CAST' # define BOOST_MPL_AUX_STATIC_CAST(T, expr) static_cast&lt;T&gt;(expr) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:51:10: note: in instantiation of template class 'boost::mpl::if_&lt;boost::concepts::not_satisfied&lt;boost::range_detail::SinglePassIteratorConcept&lt;int&gt; &gt;, boost::concepts::constraint&lt;boost::range_detail::SinglePassIteratorConcept&lt;int&gt; &gt;, boost::concepts::requirement&lt;boost::concepts::failed ************boost::range_detail::SinglePassIteratorConcept&lt;int&gt;::************&gt; &gt;' requested here : mpl::if_&lt; ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:276:9: note: in instantiation of template class 'boost::concepts::requirement_&lt;void (*)(boost::range_detail::SinglePassIteratorConcept&lt;int&gt;)&gt;' requested here BOOST_RANGE_CONCEPT_ASSERT(( ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:102:45: note: expanded from macro 'BOOST_RANGE_CONCEPT_ASSERT' #define BOOST_RANGE_CONCEPT_ASSERT( x ) BOOST_CONCEPT_ASSERT( x ) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/assert.hpp:43:5: note: expanded from macro 'BOOST_CONCEPT_ASSERT' BOOST_CONCEPT_ASSERT_FN(void(*)ModelInParens) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:78:25: note: expanded from macro 'BOOST_CONCEPT_ASSERT_FN' &amp;::boost::concepts::requirement_&lt;ModelFnPtr&gt;::failed&gt; \ ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/has_constraints.hpp:32:63: note: in instantiation of template class 'boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt;' requested here inline yes has_constraints_(Model*, wrap_constraints&lt;Model,&amp;Model::constraints&gt;* = 0); ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/has_constraints.hpp:44:25: note: while substituting deduced template arguments into function template 'has_constraints_' [with Model = boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt;] , value = sizeof( detail::has_constraints_((Model*)0) ) == sizeof(detail::yes) ); ^ /cygdrive/c/boost/org/modular-boost/boost/config/suffix.hpp:394:72: note: expanded from macro 'BOOST_STATIC_CONSTANT' # define BOOST_STATIC_CONSTANT(type, assignment) static const type assignment ^ /cygdrive/c/boost/org/modular-boost/boost/mpl/if.hpp:63:68: note: in instantiation of template class 'boost::concepts::not_satisfied&lt;boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt; &gt;' requested here BOOST_MPL_AUX_STATIC_CAST(bool, BOOST_MPL_AUX_VALUE_WKND(T1)::value) ^ /cygdrive/c/boost/org/modular-boost/boost/mpl/aux_/value_wknd.hpp:57:40: note: expanded from macro 'BOOST_MPL_AUX_VALUE_WKND' # define BOOST_MPL_AUX_VALUE_WKND(C) C ^ /cygdrive/c/boost/org/modular-boost/boost/mpl/aux_/static_cast.hpp:24:62: note: expanded from macro 'BOOST_MPL_AUX_STATIC_CAST' # define BOOST_MPL_AUX_STATIC_CAST(T, expr) static_cast&lt;T&gt;(expr) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:51:10: note: in instantiation of template class 'boost::mpl::if_&lt;boost::concepts::not_satisfied&lt;boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt; &gt;, boost::concepts::constraint&lt;boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt; &gt;, boost::concepts::requirement&lt;boost::concepts::failed ************boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt;::************&gt; &gt;' requested here : mpl::if_&lt; ^ /cygdrive/c/boost/org/modular-boost/boost/range/size_type.hpp:90:9: note: in instantiation of template class 'boost::concepts::requirement_&lt;void (*)(boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt;)&gt;' requested here BOOST_RANGE_CONCEPT_ASSERT((boost::SinglePassRangeConcept&lt;T&gt;)); ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:102:45: note: expanded from macro 'BOOST_RANGE_CONCEPT_ASSERT' #define BOOST_RANGE_CONCEPT_ASSERT( x ) BOOST_CONCEPT_ASSERT( x ) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/assert.hpp:43:5: note: expanded from macro 'BOOST_CONCEPT_ASSERT' BOOST_CONCEPT_ASSERT_FN(void(*)ModelInParens) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:78:25: note: expanded from macro 'BOOST_CONCEPT_ASSERT_FN' &amp;::boost::concepts::requirement_&lt;ModelFnPtr&gt;::failed&gt; \ ^ /cygdrive/c/boost/org/modular-boost/boost/range/size.hpp:54:21: note: in instantiation of template class 'boost::range_size&lt;const S&lt;boost::some_type&gt; &gt;' requested here inline typename range_size&lt;const SinglePassRange&gt;::type ^ /cygdrive/c/Users/eric/Code/range-v3/example/calendar.cpp:44:5: note: while substituting deduced template arguments into function template 'size' [with SinglePassRange = S&lt;boost::some_type&gt;] size(s); ^ In file included from /cygdrive/c/Users/eric/Code/range-v3/example/calendar.cpp:34: In file included from /cygdrive/c/boost/org/modular-boost/boost/range.hpp:18: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/functions.hpp:20: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/size.hpp:21: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/size_type.hpp:20: /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:152:71: error: no type named 'traversal_category' in 'boost::range_detail::SinglePassIteratorConcept&lt;int&gt;' BOOST_DEDUCED_TYPENAME SinglePassIteratorConcept::traversal_category, ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:102:67: note: expanded from macro 'BOOST_RANGE_CONCEPT_ASSERT' #define BOOST_RANGE_CONCEPT_ASSERT( x ) BOOST_CONCEPT_ASSERT( x ) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/assert.hpp:43:36: note: expanded from macro 'BOOST_CONCEPT_ASSERT' BOOST_CONCEPT_ASSERT_FN(void(*)ModelInParens) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:78:38: note: expanded from macro 'BOOST_CONCEPT_ASSERT_FN' &amp;::boost::concepts::requirement_&lt;ModelFnPtr&gt;::failed&gt; \ ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/has_constraints.hpp:32:63: note: in instantiation of template class 'boost::range_detail::SinglePassIteratorConcept&lt;int&gt;' requested here inline yes has_constraints_(Model*, wrap_constraints&lt;Model,&amp;Model::constraints&gt;* = 0); ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/has_constraints.hpp:44:25: note: while substituting deduced template arguments into function template 'has_constraints_' [with Model = boost::range_detail::SinglePassIteratorConcept&lt;int&gt;] , value = sizeof( detail::has_constraints_((Model*)0) ) == sizeof(detail::yes) ); ^ /cygdrive/c/boost/org/modular-boost/boost/config/suffix.hpp:394:72: note: expanded from macro 'BOOST_STATIC_CONSTANT' # define BOOST_STATIC_CONSTANT(type, assignment) static const type assignment ^ /cygdrive/c/boost/org/modular-boost/boost/mpl/if.hpp:63:68: note: in instantiation of template class 'boost::concepts::not_satisfied&lt;boost::range_detail::SinglePassIteratorConcept&lt;int&gt; &gt;' requested here BOOST_MPL_AUX_STATIC_CAST(bool, BOOST_MPL_AUX_VALUE_WKND(T1)::value) ^ /cygdrive/c/boost/org/modular-boost/boost/mpl/aux_/value_wknd.hpp:57:40: note: expanded from macro 'BOOST_MPL_AUX_VALUE_WKND' # define BOOST_MPL_AUX_VALUE_WKND(C) C ^ /cygdrive/c/boost/org/modular-boost/boost/mpl/aux_/static_cast.hpp:24:62: note: expanded from macro 'BOOST_MPL_AUX_STATIC_CAST' # define BOOST_MPL_AUX_STATIC_CAST(T, expr) static_cast&lt;T&gt;(expr) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:51:10: note: in instantiation of template class 'boost::mpl::if_&lt;boost::concepts::not_satisfied&lt;boost::range_detail::SinglePassIteratorConcept&lt;int&gt; &gt;, boost::concepts::constraint&lt;boost::range_detail::SinglePassIteratorConcept&lt;int&gt; &gt;, boost::concepts::requirement&lt;boost::concepts::failed ************boost::range_detail::SinglePassIteratorConcept&lt;int&gt;::************&gt; &gt;' requested here : mpl::if_&lt; ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:276:9: note: in instantiation of template class 'boost::concepts::requirement_&lt;void (*)(boost::range_detail::SinglePassIteratorConcept&lt;int&gt;)&gt;' requested here BOOST_RANGE_CONCEPT_ASSERT(( ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:102:45: note: expanded from macro 'BOOST_RANGE_CONCEPT_ASSERT' #define BOOST_RANGE_CONCEPT_ASSERT( x ) BOOST_CONCEPT_ASSERT( x ) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/assert.hpp:43:5: note: expanded from macro 'BOOST_CONCEPT_ASSERT' BOOST_CONCEPT_ASSERT_FN(void(*)ModelInParens) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:78:25: note: expanded from macro 'BOOST_CONCEPT_ASSERT_FN' &amp;::boost::concepts::requirement_&lt;ModelFnPtr&gt;::failed&gt; \ ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/has_constraints.hpp:32:63: note: in instantiation of template class 'boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt;' requested here inline yes has_constraints_(Model*, wrap_constraints&lt;Model,&amp;Model::constraints&gt;* = 0); ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/has_constraints.hpp:44:25: note: while substituting deduced template arguments into function template 'has_constraints_' [with Model = boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt;] , value = sizeof( detail::has_constraints_((Model*)0) ) == sizeof(detail::yes) ); ^ /cygdrive/c/boost/org/modular-boost/boost/config/suffix.hpp:394:72: note: expanded from macro 'BOOST_STATIC_CONSTANT' # define BOOST_STATIC_CONSTANT(type, assignment) static const type assignment ^ /cygdrive/c/boost/org/modular-boost/boost/mpl/if.hpp:63:68: note: in instantiation of template class 'boost::concepts::not_satisfied&lt;boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt; &gt;' requested here BOOST_MPL_AUX_STATIC_CAST(bool, BOOST_MPL_AUX_VALUE_WKND(T1)::value) ^ /cygdrive/c/boost/org/modular-boost/boost/mpl/aux_/value_wknd.hpp:57:40: note: expanded from macro 'BOOST_MPL_AUX_VALUE_WKND' # define BOOST_MPL_AUX_VALUE_WKND(C) C ^ /cygdrive/c/boost/org/modular-boost/boost/mpl/aux_/static_cast.hpp:24:62: note: expanded from macro 'BOOST_MPL_AUX_STATIC_CAST' # define BOOST_MPL_AUX_STATIC_CAST(T, expr) static_cast&lt;T&gt;(expr) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:51:10: note: in instantiation of template class 'boost::mpl::if_&lt;boost::concepts::not_satisfied&lt;boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt; &gt;, boost::concepts::constraint&lt;boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt; &gt;, boost::concepts::requirement&lt;boost::concepts::failed ************boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt;::************&gt; &gt;' requested here : mpl::if_&lt; ^ /cygdrive/c/boost/org/modular-boost/boost/range/size_type.hpp:90:9: note: in instantiation of template class 'boost::concepts::requirement_&lt;void (*)(boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt;)&gt;' requested here BOOST_RANGE_CONCEPT_ASSERT((boost::SinglePassRangeConcept&lt;T&gt;)); ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:102:45: note: expanded from macro 'BOOST_RANGE_CONCEPT_ASSERT' #define BOOST_RANGE_CONCEPT_ASSERT( x ) BOOST_CONCEPT_ASSERT( x ) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/assert.hpp:43:5: note: expanded from macro 'BOOST_CONCEPT_ASSERT' BOOST_CONCEPT_ASSERT_FN(void(*)ModelInParens) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:78:25: note: expanded from macro 'BOOST_CONCEPT_ASSERT_FN' &amp;::boost::concepts::requirement_&lt;ModelFnPtr&gt;::failed&gt; \ ^ /cygdrive/c/boost/org/modular-boost/boost/range/size.hpp:54:21: note: in instantiation of template class 'boost::range_size&lt;const S&lt;boost::some_type&gt; &gt;' requested here inline typename range_size&lt;const SinglePassRange&gt;::type ^ /cygdrive/c/Users/eric/Code/range-v3/example/calendar.cpp:44:5: note: while substituting deduced template arguments into function template 'size' [with SinglePassRange = S&lt;boost::some_type&gt;] size(s); ^ In file included from /cygdrive/c/Users/eric/Code/range-v3/example/calendar.cpp:34: In file included from /cygdrive/c/boost/org/modular-boost/boost/range.hpp:18: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/functions.hpp:20: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/size.hpp:21: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/size_type.hpp:20: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:19: /cygdrive/c/boost/org/modular-boost/boost/concept_check.hpp:210:9: error: no viable conversion from 'int' to 'boost::iterators::incrementable_traversal_tag' Y y = x; ^ ~ /cygdrive/c/boost/org/modular-boost/boost/concept/usage.hpp:16:43: note: in instantiation of member function 'boost::Convertible&lt;int, boost::iterators::incrementable_traversal_tag&gt;::~Convertible' requested here ~usage_requirements() { ((Model*)0)-&gt;~Model(); } ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:38:42: note: in instantiation of member function 'boost::concepts::usage_requirements&lt;boost::Convertible&lt;int, boost::iterators::incrementable_traversal_tag&gt; &gt;::~usage_requirements' requested here static void failed() { ((Model*)0)-&gt;~Model(); } ^ /cygdrive/c/boost/org/modular-boost/boost/concept_check.hpp:209:5: note: in instantiation of member function 'boost::concepts::requirement&lt;boost::concepts::failed ************boost::concepts::usage_requirements&lt;boost::Convertible&lt;int, boost::iterators::incrementable_traversal_tag&gt; &gt;::************&gt;::failed' requested here BOOST_CONCEPT_USAGE(Convertible) { ^ /cygdrive/c/boost/org/modular-boost/boost/concept/usage.hpp:29:7: note: expanded from macro 'BOOST_CONCEPT_USAGE' BOOST_CONCEPT_ASSERT((boost::concepts::usage_requirements&lt;model&gt;)); \ ^ /cygdrive/c/boost/org/modular-boost/boost/concept/assert.hpp:43:5: note: expanded from macro 'BOOST_CONCEPT_ASSERT' BOOST_CONCEPT_ASSERT_FN(void(*)ModelInParens) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:78:51: note: expanded from macro 'BOOST_CONCEPT_ASSERT_FN' &amp;::boost::concepts::requirement_&lt;ModelFnPtr&gt;::failed&gt; \ ^ /cygdrive/c/boost/org/modular-boost/boost/iterator/iterator_categories.hpp:33:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'int' to 'const boost::iterators::incrementable_traversal_tag &amp;' for 1st argument struct incrementable_traversal_tag ^ /cygdrive/c/boost/org/modular-boost/boost/iterator/iterator_categories.hpp:33:8: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'int' to 'boost::iterators::incrementable_traversal_tag &amp;&amp;' for 1st argument struct incrementable_traversal_tag ^ In file included from /cygdrive/c/Users/eric/Code/range-v3/example/calendar.cpp:34: In file included from /cygdrive/c/boost/org/modular-boost/boost/range.hpp:18: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/functions.hpp:20: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/size.hpp:21: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/size_type.hpp:20: /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:167:82: error: no type named 'reference' in 'std::iterator_traits&lt;int&gt;' BOOST_DEDUCED_TYPENAME boost::detail::iterator_traits&lt;Iterator&gt;::reference r1(*i); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~ /cygdrive/c/boost/org/modular-boost/boost/concept/usage.hpp:16:43: note: in instantiation of member function 'boost::range_detail::SinglePassIteratorConcept&lt;int&gt;::~SinglePassIteratorConcept' requested here ~usage_requirements() { ((Model*)0)-&gt;~Model(); } ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:38:42: note: in instantiation of member function 'boost::concepts::usage_requirements&lt;boost::range_detail::SinglePassIteratorConcept&lt;int&gt; &gt;::~usage_requirements' requested here static void failed() { ((Model*)0)-&gt;~Model(); } ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:156:13: note: in instantiation of member function 'boost::concepts::requirement&lt;boost::concepts::failed ************boost::concepts::usage_requirements&lt;boost::range_detail::SinglePassIteratorConcept&lt;int&gt; &gt;::************&gt;::failed' requested here BOOST_CONCEPT_USAGE(SinglePassIteratorConcept) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/usage.hpp:29:7: note: expanded from macro 'BOOST_CONCEPT_USAGE' BOOST_CONCEPT_ASSERT((boost::concepts::usage_requirements&lt;model&gt;)); \ ^ /cygdrive/c/boost/org/modular-boost/boost/concept/assert.hpp:43:5: note: expanded from macro 'BOOST_CONCEPT_ASSERT' BOOST_CONCEPT_ASSERT_FN(void(*)ModelInParens) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:78:51: note: expanded from macro 'BOOST_CONCEPT_ASSERT_FN' &amp;::boost::concepts::requirement_&lt;ModelFnPtr&gt;::failed&gt; \ ^ In file included from /cygdrive/c/Users/eric/Code/range-v3/example/calendar.cpp:34: In file included from /cygdrive/c/boost/org/modular-boost/boost/range.hpp:18: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/functions.hpp:18: /cygdrive/c/boost/org/modular-boost/boost/range/begin.hpp:47:18: error: no member named 'begin' in 'S&lt;boost::some_type&gt;' return c.begin(); ~ ^ /cygdrive/c/boost/org/modular-boost/boost/range/begin.hpp:102:12: note: in instantiation of function template specialization 'boost::range_detail::range_begin&lt;S&lt;boost::some_type&gt; &gt;' requested here return range_begin( r ); ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:287:34: note: in instantiation of function template specialization 'boost::range_adl_barrier::begin&lt;S&lt;boost::some_type&gt; &gt;' requested here iterator i1 = boost::begin(*m_range); ^ /cygdrive/c/boost/org/modular-boost/boost/concept/usage.hpp:16:43: note: in instantiation of member function 'boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt;::~SinglePassRangeConcept' requested here ~usage_requirements() { ((Model*)0)-&gt;~Model(); } ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:38:42: note: in instantiation of member function 'boost::concepts::usage_requirements&lt;boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt; &gt;::~usage_requirements' requested here static void failed() { ((Model*)0)-&gt;~Model(); } ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:282:9: note: in instantiation of member function 'boost::concepts::requirement&lt;boost::concepts::failed ************boost::concepts::usage_requirements&lt;boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt; &gt;::************&gt;::failed' requested here BOOST_CONCEPT_USAGE(SinglePassRangeConcept) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/usage.hpp:29:7: note: expanded from macro 'BOOST_CONCEPT_USAGE' BOOST_CONCEPT_ASSERT((boost::concepts::usage_requirements&lt;model&gt;)); \ ^ /cygdrive/c/boost/org/modular-boost/boost/concept/assert.hpp:43:5: note: expanded from macro 'BOOST_CONCEPT_ASSERT' BOOST_CONCEPT_ASSERT_FN(void(*)ModelInParens) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:78:51: note: expanded from macro 'BOOST_CONCEPT_ASSERT_FN' &amp;::boost::concepts::requirement_&lt;ModelFnPtr&gt;::failed&gt; \ ^ In file included from /cygdrive/c/Users/eric/Code/range-v3/example/calendar.cpp:34: In file included from /cygdrive/c/boost/org/modular-boost/boost/range.hpp:18: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/functions.hpp:19: /cygdrive/c/boost/org/modular-boost/boost/range/end.hpp:48:22: error: no member named 'end' in 'S&lt;boost::some_type&gt;' return c.end(); ~ ^ /cygdrive/c/boost/org/modular-boost/boost/range/end.hpp:96:12: note: in instantiation of function template specialization 'boost::range_detail::range_end&lt;S&lt;boost::some_type&gt; &gt;' requested here return range_end( r ); ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:288:34: note: in instantiation of function template specialization 'boost::range_adl_barrier::end&lt;S&lt;boost::some_type&gt; &gt;' requested here iterator i2 = boost::end(*m_range); ^ /cygdrive/c/boost/org/modular-boost/boost/concept/usage.hpp:16:43: note: in instantiation of member function 'boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt;::~SinglePassRangeConcept' requested here ~usage_requirements() { ((Model*)0)-&gt;~Model(); } ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:38:42: note: in instantiation of member function 'boost::concepts::usage_requirements&lt;boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt; &gt;::~usage_requirements' requested here static void failed() { ((Model*)0)-&gt;~Model(); } ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:282:9: note: in instantiation of member function 'boost::concepts::requirement&lt;boost::concepts::failed ************boost::concepts::usage_requirements&lt;boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt; &gt;::************&gt;::failed' requested here BOOST_CONCEPT_USAGE(SinglePassRangeConcept) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/usage.hpp:29:7: note: expanded from macro 'BOOST_CONCEPT_USAGE' BOOST_CONCEPT_ASSERT((boost::concepts::usage_requirements&lt;model&gt;)); \ ^ /cygdrive/c/boost/org/modular-boost/boost/concept/assert.hpp:43:5: note: expanded from macro 'BOOST_CONCEPT_ASSERT' BOOST_CONCEPT_ASSERT_FN(void(*)ModelInParens) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:78:51: note: expanded from macro 'BOOST_CONCEPT_ASSERT_FN' &amp;::boost::concepts::requirement_&lt;ModelFnPtr&gt;::failed&gt; \ ^ In file included from /cygdrive/c/Users/eric/Code/range-v3/example/calendar.cpp:34: In file included from /cygdrive/c/boost/org/modular-boost/boost/range.hpp:18: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/functions.hpp:18: /cygdrive/c/boost/org/modular-boost/boost/range/begin.hpp:47:18: error: no member named 'begin' in 'S&lt;boost::some_type&gt;' return c.begin(); ~ ^ /cygdrive/c/boost/org/modular-boost/boost/range/begin.hpp:111:12: note: in instantiation of function template specialization 'boost::range_detail::range_begin&lt;const S&lt;boost::some_type&gt; &gt;' requested here return range_begin( r ); ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:299:41: note: in instantiation of function template specialization 'boost::range_adl_barrier::begin&lt;S&lt;boost::some_type&gt; &gt;' requested here const_iterator ci1 = boost::begin(const_range); ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:293:13: note: in instantiation of member function 'boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt;::const_constraints' requested here const_constraints(*m_range); ^ /cygdrive/c/boost/org/modular-boost/boost/concept/usage.hpp:16:43: note: in instantiation of member function 'boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt;::~SinglePassRangeConcept' requested here ~usage_requirements() { ((Model*)0)-&gt;~Model(); } ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:38:42: note: in instantiation of member function 'boost::concepts::usage_requirements&lt;boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt; &gt;::~usage_requirements' requested here static void failed() { ((Model*)0)-&gt;~Model(); } ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:282:9: note: in instantiation of member function 'boost::concepts::requirement&lt;boost::concepts::failed ************boost::concepts::usage_requirements&lt;boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt; &gt;::************&gt;::failed' requested here BOOST_CONCEPT_USAGE(SinglePassRangeConcept) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/usage.hpp:29:7: note: expanded from macro 'BOOST_CONCEPT_USAGE' BOOST_CONCEPT_ASSERT((boost::concepts::usage_requirements&lt;model&gt;)); \ ^ /cygdrive/c/boost/org/modular-boost/boost/concept/assert.hpp:43:5: note: expanded from macro 'BOOST_CONCEPT_ASSERT' BOOST_CONCEPT_ASSERT_FN(void(*)ModelInParens) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:78:51: note: expanded from macro 'BOOST_CONCEPT_ASSERT_FN' &amp;::boost::concepts::requirement_&lt;ModelFnPtr&gt;::failed&gt; \ ^ In file included from /cygdrive/c/Users/eric/Code/range-v3/example/calendar.cpp:34: In file included from /cygdrive/c/boost/org/modular-boost/boost/range.hpp:18: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/functions.hpp:19: /cygdrive/c/boost/org/modular-boost/boost/range/end.hpp:48:22: error: no member named 'end' in 'S&lt;boost::some_type&gt;' return c.end(); ~ ^ /cygdrive/c/boost/org/modular-boost/boost/range/end.hpp:105:12: note: in instantiation of function template specialization 'boost::range_detail::range_end&lt;const S&lt;boost::some_type&gt; &gt;' requested here return range_end( r ); ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:300:41: note: in instantiation of function template specialization 'boost::range_adl_barrier::end&lt;S&lt;boost::some_type&gt; &gt;' requested here const_iterator ci2 = boost::end(const_range); ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:293:13: note: in instantiation of member function 'boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt;::const_constraints' requested here const_constraints(*m_range); ^ /cygdrive/c/boost/org/modular-boost/boost/concept/usage.hpp:16:43: note: in instantiation of member function 'boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt;::~SinglePassRangeConcept' requested here ~usage_requirements() { ((Model*)0)-&gt;~Model(); } ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:38:42: note: in instantiation of member function 'boost::concepts::usage_requirements&lt;boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt; &gt;::~usage_requirements' requested here static void failed() { ((Model*)0)-&gt;~Model(); } ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:282:9: note: in instantiation of member function 'boost::concepts::requirement&lt;boost::concepts::failed ************boost::concepts::usage_requirements&lt;boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt; &gt;::************&gt;::failed' requested here BOOST_CONCEPT_USAGE(SinglePassRangeConcept) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/usage.hpp:29:7: note: expanded from macro 'BOOST_CONCEPT_USAGE' BOOST_CONCEPT_ASSERT((boost::concepts::usage_requirements&lt;model&gt;)); \ ^ /cygdrive/c/boost/org/modular-boost/boost/concept/assert.hpp:43:5: note: expanded from macro 'BOOST_CONCEPT_ASSERT' BOOST_CONCEPT_ASSERT_FN(void(*)ModelInParens) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:78:51: note: expanded from macro 'BOOST_CONCEPT_ASSERT_FN' &amp;::boost::concepts::requirement_&lt;ModelFnPtr&gt;::failed&gt; \ ^ 10 errors generated. example/CMakeFiles/calendar.dir/build.make:54: recipe for target 'example/CMakeFiles/calendar.dir/calendar.cpp.o' failed make[3]: *** [example/CMakeFiles/calendar.dir/calendar.cpp.o] Error 1 CMakeFiles/Makefile2:5748: recipe for target 'example/CMakeFiles/calendar.dir/all' failed make[2]: *** [example/CMakeFiles/calendar.dir/all] Error 2 CMakeFiles/Makefile2:5760: recipe for target 'example/CMakeFiles/calendar.dir/rule' failed make[1]: *** [example/CMakeFiles/calendar.dir/rule] Error 2 Makefile:2083: recipe for target 'calendar' failed make: *** [calendar] Error 2 </pre> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/11187 Trac 1.4.3 Eric Niebler Tue, 14 Apr 2015 08:01:20 GMT <link>https://svn.boost.org/trac10/ticket/11187#comment:1 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/11187#comment:1</guid> <description> <p> See this pull request: <a class="ext-link" href="https://github.com/boostorg/range/pull/28"><span class="icon">​</span>https://github.com/boostorg/range/pull/28</a> </p> </description> <category>Ticket</category> </item> </channel> </rss>