Hello,

I am writing on behalf of the Debian Med Project, which maintains a Dindel 
package for the Debian operating system. In our next Debian release, we are 
preparing to switch to Boost 1.61 as the default version. However, this caused 
various problems when trying to build the source of Dindel 1.01.  

In particular, I was wondering how to make BOOST_FOREACH work with the 
std::sets in this version. Unfortunately I don’t have much Boost experience 
myself, being more of a plain C developer. I hope you can be of a little help, 
or — in case you are still maintaining Dindel — provide a version compatible 
with Boost 1.61 (and GCC 6, if possible).

Many thanks in advance, and best regards
Sascha

P.S. Here’s an example build error:

DInDel.cpp:1985:7: note: in expansion of macro ‘BOOST_FOREACH’
      BOOST_FOREACH(int r, selReads) {
      ^
foreach.hpp:644:96: error: no matching function for call to 
‘encode_type(std::set<int>&, boost::is_const<std::set<int> >*)’
    (true ? 0 : boost::foreach_detail_::encode_type(COL, 
boost::foreach_detail_::is_const_(COL)))
                                                                                
    ^
foreach.hpp:768:9: note: in expansion of macro ‘BOOST_FOREACH_TYPEOF’
      , BOOST_FOREACH_TYPEOF(COL))
        ^~~~~~~~~~~~~~~~~~~~
foreach.hpp:808:35: note: in expansion of macro ‘BOOST_FOREACH_NEXT’
              _foreach_continue ? BOOST_FOREACH_NEXT(COL) : (void)0)            
    \
                                  ^~~~~~~~~~~~~~~~~~
DInDel.cpp:1985:7: note: in expansion of macro ‘BOOST_FOREACH’
      BOOST_FOREACH(int r, selReads) {
      ^
foreach.hpp:309:22: note: candidate: template<class T> 
boost::foreach_detail_::type2type<T>* boost::foreach_detail_::encode_type(T&, 
mpl_::false_*)
inline type2type<T> *encode_type(T &, boost::mpl::false_ *) { return 0; }
                     ^~~~~~~~~~~
foreach.hpp:309:22: note:   template argument deduction/substitution failed:
foreach.hpp:644:91: note:   cannot convert 
‘boost::foreach_detail_::is_const_<std::set<int> >(selReads)’ (type 
‘boost::is_const<std::set<int> >*’) to type ‘mpl_::false_* {aka 
mpl_::bool_<false>*}’
    (true ? 0 : boost::foreach_detail_::encode_type(COL, 
boost::foreach_detail_::is_const_(COL)))
                                                         
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~
foreach.hpp:768:9: note: in expansion of macro ‘BOOST_FOREACH_TYPEOF’
      , BOOST_FOREACH_TYPEOF(COL))
        ^~~~~~~~~~~~~~~~~~~~
foreach.hpp:808:35: note: in expansion of macro ‘BOOST_FOREACH_NEXT’
              _foreach_continue ? BOOST_FOREACH_NEXT(COL) : (void)0)            
    \
                                  ^~~~~~~~~~~~~~~~~~
DInDel.cpp:1985:7: note: in expansion of macro ‘BOOST_FOREACH’
      BOOST_FOREACH(int r, selReads) {
      ^
foreach.hpp:312:30: note: candidate: template<class T> 
boost::foreach_detail_::type2type<T, mpl_::bool_<true> >* 
boost::foreach_detail_::encode_type(const T&, mpl_::true_*)
inline type2type<T, const_> *encode_type(T const &, boost::mpl::true_ *) { 
return 0; }
                             ^~~~~~~~~~~
foreach.hpp:312:30: note:   template argument deduction/substitution failed:
foreach.hpp:644:91: note:   cannot convert 
‘boost::foreach_detail_::is_const_<std::set<int> >(selReads)’ (type 
‘boost::is_const<std::set<int> >*’) to type ‘mpl_::true_* {aka 
mpl_::bool_<true>*}’
    (true ? 0 : boost::foreach_detail_::encode_type(COL, 
boost::foreach_detail_::is_const_(COL)))
                                                         
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~
foreach.hpp:768:9: note: in expansion of macro ‘BOOST_FOREACH_TYPEOF’
      , BOOST_FOREACH_TYPEOF(COL))
        ^~~~~~~~~~~~~~~~~~~~
foreach.hpp:808:35: note: in expansion of macro ‘BOOST_FOREACH_NEXT’
              _foreach_continue ? BOOST_FOREACH_NEXT(COL) : (void)0)            
    \
                                  ^~~~~~~~~~~~~~~~~~
DInDel.cpp:1985:7: note: in expansion of macro ‘BOOST_FOREACH’
      BOOST_FOREACH(int r, selReads) {

Reply via email to