[Boost-bugs] [Boost C++ Libraries] #11187: size function causing hard errors in unrelated code

Subject: [Boost-bugs] [Boost C++ Libraries] #11187: size function causing hard errors in unrelated code
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2015-04-13 22:52:12


#11187: size function causing hard errors in unrelated code
-------------------------------------+------------------------
 Reporter: eric_niebler | Owner: neilgroves
     Type: Bugs | Status: new
Milestone: To Be Determined | Component: range
  Version: Boost Development Trunk | Severity: Problem
 Keywords: |
-------------------------------------+------------------------
 Consider the following innocuous-seeming program:

 {{{
 #include <boost/range.hpp>

 namespace boost { struct some_type {}; }
 template<typename T = boost::some_type>
 struct S {};
 void size(S<>) {}

 int main()
 {
     S<> s;
     size(s);
 }
 }}}


 For me, with clang -std=gnu++14, I get this:

 {{{
 [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<S<boost::some_type>,
 void>'
     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<false,
 boost::range_const_iterator<S<boost::some_type>, void>,
 boost::range_mutable_iterator<S<boost::some_type>, void> >' requested here
         typedef typename mpl::eval_if_c<
                               ^
 /cygdrive/c/boost/org/modular-boost/boost/range/difference_type.hpp:28:40:
 note: in instantiation of template class
 'boost::range_iterator<S<boost::some_type>, void>' requested here
                 BOOST_DEDUCED_TYPENAME range_iterator<
                                        ^
 /cygdrive/c/boost/org/modular-boost/boost/range/size_type.hpp:57:40: note:
 in instantiation of template class
 'boost::range_difference<S<boost::some_type> >' requested here
                 BOOST_DEDUCED_TYPENAME range_difference<C>::type
                                        ^
 /cygdrive/c/boost/org/modular-boost/boost/range/size_type.hpp:87:11: note:
 in instantiation of template class
 'boost::detail::range_size<S<boost::some_type>, void>' requested here
         : detail::range_size<T>
           ^
 /cygdrive/c/boost/org/modular-boost/boost/range/size.hpp:54:21: note: in
 instantiation of template class 'boost::range_size<const
 S<boost::some_type> >' requested here
     inline typename range_size<const SinglePassRange>::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<boost::some_type>]
     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<S<boost::some_type>,
 void>'
     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<true,
 boost::range_const_iterator<S<boost::some_type>, void>,
 boost::range_mutable_iterator<const S<boost::some_type>, void> >'
 requested here
         typedef typename mpl::eval_if_c<
                               ^
 /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:270:40: note:
 in instantiation of template class 'boost::range_iterator<const
 S<boost::some_type>, void>' requested here
         typedef BOOST_DEDUCED_TYPENAME range_iterator<
                                        ^
 /cygdrive/c/boost/org/modular-
 boost/boost/concept/detail/has_constraints.hpp:32:63: note: in
 instantiation of template class
 'boost::SinglePassRangeConcept<S<boost::some_type> >' requested here
   inline yes has_constraints_(Model*,
 wrap_constraints<Model,&Model::constraints>* = 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<S<boost::some_type> >]
       , 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<boost::SinglePassRangeConcept<S<boost::some_type>
> >' 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<T>(expr)
                                                              ^
 /cygdrive/c/boost/org/modular-
 boost/boost/concept/detail/general.hpp:51:10: note: in instantiation of
 template class
 'boost::mpl::if_<boost::concepts::not_satisfied<boost::SinglePassRangeConcept<S<boost::some_type>
> >,
 boost::concepts::constraint<boost::SinglePassRangeConcept<S<boost::some_type>
> >, boost::concepts::requirement<boost::concepts::failed
 ************boost::SinglePassRangeConcept<S<boost::some_type>
>::************> >' requested here
   : mpl::if_<
          ^
 /cygdrive/c/boost/org/modular-boost/boost/range/size_type.hpp:90:9: note:
 in instantiation of template class 'boost::concepts::requirement_<void
 (*)(boost::SinglePassRangeConcept<S<boost::some_type> >)>' requested here
         BOOST_RANGE_CONCEPT_ASSERT((boost::SinglePassRangeConcept<T>));
         ^
 /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'
     &::boost::concepts::requirement_<ModelFnPtr>::failed> \
                         ^
 /cygdrive/c/boost/org/modular-boost/boost/range/size.hpp:54:21: note: in
 instantiation of template class 'boost::range_size<const
 S<boost::some_type> >' requested here
     inline typename range_size<const SinglePassRange>::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<boost::some_type>]
     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<int>'
         typename
 boost::detail::iterator_traits<Iterator>::iterator_category
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
 /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:126:44: note:
 in instantiation of template class
 'boost::iterators::iterator_traversal<int>' requested here
             typedef BOOST_DEDUCED_TYPENAME
 iterator_traversal<Iterator>::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<int>' requested here
             : IncrementableIteratorConcept<Iterator>
               ^
 /cygdrive/c/boost/org/modular-
 boost/boost/concept/detail/has_constraints.hpp:32:63: note: in
 instantiation of template class
 'boost::range_detail::SinglePassIteratorConcept<int>' requested here
   inline yes has_constraints_(Model*,
 wrap_constraints<Model,&Model::constraints>* = 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<int>]
       , 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<boost::range_detail::SinglePassIteratorConcept<int>
>' 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<T>(expr)
                                                              ^
 /cygdrive/c/boost/org/modular-
 boost/boost/concept/detail/general.hpp:51:10: note: in instantiation of
 template class
 'boost::mpl::if_<boost::concepts::not_satisfied<boost::range_detail::SinglePassIteratorConcept<int>
>,
 boost::concepts::constraint<boost::range_detail::SinglePassIteratorConcept<int>
>, boost::concepts::requirement<boost::concepts::failed
 ************boost::range_detail::SinglePassIteratorConcept<int>::************>
>' requested here
   : mpl::if_<
          ^
 /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:276:9: note:
 in instantiation of template class 'boost::concepts::requirement_<void
 (*)(boost::range_detail::SinglePassIteratorConcept<int>)>' 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'
     &::boost::concepts::requirement_<ModelFnPtr>::failed> \
                         ^
 /cygdrive/c/boost/org/modular-
 boost/boost/concept/detail/has_constraints.hpp:32:63: note: in
 instantiation of template class
 'boost::SinglePassRangeConcept<S<boost::some_type> >' requested here
   inline yes has_constraints_(Model*,
 wrap_constraints<Model,&Model::constraints>* = 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<S<boost::some_type> >]
       , 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<boost::SinglePassRangeConcept<S<boost::some_type>
> >' 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<T>(expr)
                                                              ^
 /cygdrive/c/boost/org/modular-
 boost/boost/concept/detail/general.hpp:51:10: note: in instantiation of
 template class
 'boost::mpl::if_<boost::concepts::not_satisfied<boost::SinglePassRangeConcept<S<boost::some_type>
> >,
 boost::concepts::constraint<boost::SinglePassRangeConcept<S<boost::some_type>
> >, boost::concepts::requirement<boost::concepts::failed
 ************boost::SinglePassRangeConcept<S<boost::some_type>
>::************> >' requested here
   : mpl::if_<
          ^
 /cygdrive/c/boost/org/modular-boost/boost/range/size_type.hpp:90:9: note:
 in instantiation of template class 'boost::concepts::requirement_<void
 (*)(boost::SinglePassRangeConcept<S<boost::some_type> >)>' requested here
         BOOST_RANGE_CONCEPT_ASSERT((boost::SinglePassRangeConcept<T>));
         ^
 /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'
     &::boost::concepts::requirement_<ModelFnPtr>::failed> \
                         ^
 /cygdrive/c/boost/org/modular-boost/boost/range/size.hpp:54:21: note: in
 instantiation of template class 'boost::range_size<const
 S<boost::some_type> >' requested here
     inline typename range_size<const SinglePassRange>::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<boost::some_type>]
     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<int>'
                     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'
     &::boost::concepts::requirement_<ModelFnPtr>::failed> \
                                      ^
 /cygdrive/c/boost/org/modular-
 boost/boost/concept/detail/has_constraints.hpp:32:63: note: in
 instantiation of template class
 'boost::range_detail::SinglePassIteratorConcept<int>' requested here
   inline yes has_constraints_(Model*,
 wrap_constraints<Model,&Model::constraints>* = 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<int>]
       , 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<boost::range_detail::SinglePassIteratorConcept<int>
>' 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<T>(expr)
                                                              ^
 /cygdrive/c/boost/org/modular-
 boost/boost/concept/detail/general.hpp:51:10: note: in instantiation of
 template class
 'boost::mpl::if_<boost::concepts::not_satisfied<boost::range_detail::SinglePassIteratorConcept<int>
>,
 boost::concepts::constraint<boost::range_detail::SinglePassIteratorConcept<int>
>, boost::concepts::requirement<boost::concepts::failed
 ************boost::range_detail::SinglePassIteratorConcept<int>::************>
>' requested here
   : mpl::if_<
          ^
 /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:276:9: note:
 in instantiation of template class 'boost::concepts::requirement_<void
 (*)(boost::range_detail::SinglePassIteratorConcept<int>)>' 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'
     &::boost::concepts::requirement_<ModelFnPtr>::failed> \
                         ^
 /cygdrive/c/boost/org/modular-
 boost/boost/concept/detail/has_constraints.hpp:32:63: note: in
 instantiation of template class
 'boost::SinglePassRangeConcept<S<boost::some_type> >' requested here
   inline yes has_constraints_(Model*,
 wrap_constraints<Model,&Model::constraints>* = 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<S<boost::some_type> >]
       , 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<boost::SinglePassRangeConcept<S<boost::some_type>
> >' 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<T>(expr)
                                                              ^
 /cygdrive/c/boost/org/modular-
 boost/boost/concept/detail/general.hpp:51:10: note: in instantiation of
 template class
 'boost::mpl::if_<boost::concepts::not_satisfied<boost::SinglePassRangeConcept<S<boost::some_type>
> >,
 boost::concepts::constraint<boost::SinglePassRangeConcept<S<boost::some_type>
> >, boost::concepts::requirement<boost::concepts::failed
 ************boost::SinglePassRangeConcept<S<boost::some_type>
>::************> >' requested here
   : mpl::if_<
          ^
 /cygdrive/c/boost/org/modular-boost/boost/range/size_type.hpp:90:9: note:
 in instantiation of template class 'boost::concepts::requirement_<void
 (*)(boost::SinglePassRangeConcept<S<boost::some_type> >)>' requested here
         BOOST_RANGE_CONCEPT_ASSERT((boost::SinglePassRangeConcept<T>));
         ^
 /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'
     &::boost::concepts::requirement_<ModelFnPtr>::failed> \
                         ^
 /cygdrive/c/boost/org/modular-boost/boost/range/size.hpp:54:21: note: in
 instantiation of template class 'boost::range_size<const
 S<boost::some_type> >' requested here
     inline typename range_size<const SinglePassRange>::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<boost::some_type>]
     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<int,
 boost::iterators::incrementable_traversal_tag>::~Convertible' requested
 here
     ~usage_requirements() { ((Model*)0)->~Model(); }
                                           ^
 /cygdrive/c/boost/org/modular-
 boost/boost/concept/detail/general.hpp:38:42: note: in instantiation of
 member function
 'boost::concepts::usage_requirements<boost::Convertible<int,
 boost::iterators::incrementable_traversal_tag> >::~usage_requirements'
 requested here
     static void failed() { ((Model*)0)->~Model(); }
                                          ^
 /cygdrive/c/boost/org/modular-boost/boost/concept_check.hpp:209:5: note:
 in instantiation of member function
 'boost::concepts::requirement<boost::concepts::failed
 ************boost::concepts::usage_requirements<boost::Convertible<int,
 boost::iterators::incrementable_traversal_tag> >::************>::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<model>));
 \
       ^
 /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'
     &::boost::concepts::requirement_<ModelFnPtr>::failed> \
                                                   ^
 /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 &' 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
 &&' 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<int>'
                 BOOST_DEDUCED_TYPENAME
 boost::detail::iterator_traits<Iterator>::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<int>::~SinglePassIteratorConcept'
 requested here
     ~usage_requirements() { ((Model*)0)->~Model(); }
                                           ^
 /cygdrive/c/boost/org/modular-
 boost/boost/concept/detail/general.hpp:38:42: note: in instantiation of
 member function
 'boost::concepts::usage_requirements<boost::range_detail::SinglePassIteratorConcept<int>
>::~usage_requirements' requested here
     static void failed() { ((Model*)0)->~Model(); }
                                          ^
 /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:156:13: note:
 in instantiation of member function
 'boost::concepts::requirement<boost::concepts::failed
 ************boost::concepts::usage_requirements<boost::range_detail::SinglePassIteratorConcept<int>
>::************>::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<model>));
 \
       ^
 /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'
     &::boost::concepts::requirement_<ModelFnPtr>::failed> \
                                                   ^
 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<boost::some_type>'
         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<S<boost::some_type> >' 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<S<boost::some_type> >' 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<S<boost::some_type>
>::~SinglePassRangeConcept' requested here
     ~usage_requirements() { ((Model*)0)->~Model(); }
                                           ^
 /cygdrive/c/boost/org/modular-
 boost/boost/concept/detail/general.hpp:38:42: note: in instantiation of
 member function
 'boost::concepts::usage_requirements<boost::SinglePassRangeConcept<S<boost::some_type>
> >::~usage_requirements' requested here
     static void failed() { ((Model*)0)->~Model(); }
                                          ^
 /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:282:9: note:
 in instantiation of member function
 'boost::concepts::requirement<boost::concepts::failed
 ************boost::concepts::usage_requirements<boost::SinglePassRangeConcept<S<boost::some_type>
> >::************>::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<model>));
 \
       ^
 /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'
     &::boost::concepts::requirement_<ModelFnPtr>::failed> \
                                                   ^
 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<boost::some_type>'
             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<S<boost::some_type> >' 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<S<boost::some_type> >' 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<S<boost::some_type>
>::~SinglePassRangeConcept' requested here
     ~usage_requirements() { ((Model*)0)->~Model(); }
                                           ^
 /cygdrive/c/boost/org/modular-
 boost/boost/concept/detail/general.hpp:38:42: note: in instantiation of
 member function
 'boost::concepts::usage_requirements<boost::SinglePassRangeConcept<S<boost::some_type>
> >::~usage_requirements' requested here
     static void failed() { ((Model*)0)->~Model(); }
                                          ^
 /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:282:9: note:
 in instantiation of member function
 'boost::concepts::requirement<boost::concepts::failed
 ************boost::concepts::usage_requirements<boost::SinglePassRangeConcept<S<boost::some_type>
> >::************>::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<model>));
 \
       ^
 /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'
     &::boost::concepts::requirement_<ModelFnPtr>::failed> \
                                                   ^
 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<boost::some_type>'
         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<const S<boost::some_type> >' 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<S<boost::some_type> >' 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<S<boost::some_type> >::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<S<boost::some_type>
>::~SinglePassRangeConcept' requested here
     ~usage_requirements() { ((Model*)0)->~Model(); }
                                           ^
 /cygdrive/c/boost/org/modular-
 boost/boost/concept/detail/general.hpp:38:42: note: in instantiation of
 member function
 'boost::concepts::usage_requirements<boost::SinglePassRangeConcept<S<boost::some_type>
> >::~usage_requirements' requested here
     static void failed() { ((Model*)0)->~Model(); }
                                          ^
 /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:282:9: note:
 in instantiation of member function
 'boost::concepts::requirement<boost::concepts::failed
 ************boost::concepts::usage_requirements<boost::SinglePassRangeConcept<S<boost::some_type>
> >::************>::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<model>));
 \
       ^
 /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'
     &::boost::concepts::requirement_<ModelFnPtr>::failed> \
                                                   ^
 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<boost::some_type>'
             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<const S<boost::some_type> >' 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<S<boost::some_type> >' 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<S<boost::some_type> >::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<S<boost::some_type>
>::~SinglePassRangeConcept' requested here
     ~usage_requirements() { ((Model*)0)->~Model(); }
                                           ^
 /cygdrive/c/boost/org/modular-
 boost/boost/concept/detail/general.hpp:38:42: note: in instantiation of
 member function
 'boost::concepts::usage_requirements<boost::SinglePassRangeConcept<S<boost::some_type>
> >::~usage_requirements' requested here
     static void failed() { ((Model*)0)->~Model(); }
                                          ^
 /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:282:9: note:
 in instantiation of member function
 'boost::concepts::requirement<boost::concepts::failed
 ************boost::concepts::usage_requirements<boost::SinglePassRangeConcept<S<boost::some_type>
> >::************>::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<model>));
 \
       ^
 /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'
     &::boost::concepts::requirement_<ModelFnPtr>::failed> \
                                                   ^
 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
 }}}

-- 
Ticket URL: <https://svn.boost.org/trac/boost/ticket/11187>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:18 UTC