luntergroup / octopus

Bayesian haplotype-based mutation calling
MIT License
301 stars 37 forks source link

Compile error on develop with BOOST 1.65 #137

Closed bredelings closed 3 years ago

bredelings commented 3 years ago

Describe the bug

Compiling the most recent version of develop with gcc-10 and BOOST 1.65 has a compile error.

[  8%] Building CXX object src/CMakeFiles/octopus.dir/core/csr/measures/measure.cpp.o
In file included from /data/wraycompute/malaria/Applications/boost_1_65_0/boost/mpl/aux_/na_assert.hpp:23,
                 from /data/wraycompute/malaria/Applications/boost_1_65_0/boost/mpl/arg.hpp:25,
                 from /data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/variant_fwd.hpp:19,
                 from /data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/variant.hpp:26,
                 from /data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant.hpp:17,
                 from /gpfs/fs1/data/wraycompute/malaria/Applications/octopus3/git/src/core/csr/measures/measure.hpp:13,
                 from /gpfs/fs1/data/wraycompute/malaria/Applications/octopus3/git/src/core/csr/measures/measure.cpp:4:
/data/wraycompute/malaria/Applications/boost_1_65_0/boost/mpl/assert.hpp:188:21: warning: unnecessary parentheses in declaration of ‘assert_arg’ [-Wparentheses]
  188 | failed ************ (Pred::************
      |                     ^
/data/wraycompute/malaria/Applications/boost_1_65_0/boost/mpl/assert.hpp:193:21: warning: unnecessary parentheses in declaration of ‘assert_not_arg’ [-Wparentheses]
  193 | failed ************ (boost::mpl::not_<Pred>::************
      |                     ^
/gpfs/fs1/data/wraycompute/malaria/Applications/octopus3/git/src/core/csr/measures/measure.cpp: In function ‘auto octopus::csr::{anonymous}::mean(octopus::csr::Measure::Array<boost::variant<bool, int, long unsigned int, double> >&)’:
/gpfs/fs1/data/wraycompute/malaria/Applications/octopus3/git/src/core/csr/measures/measure.cpp:268:75: error: no matching function for call to ‘apply_visitor(octopus::csr::{anonymous}::DivideVisitor, boost::variant<bool, int, long unsigned int, double>)’
  268 |     return boost::apply_visitor(DivideVisitor {values.size()}, sum(values));
      |                                                                           ^
In file included from /data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/apply_visitor.hpp:16,
                 from /data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/detail/hash_variant.hpp:23,
                 from /data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/variant.hpp:34,
                 from /data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant.hpp:17,
                 from /gpfs/fs1/data/wraycompute/malaria/Applications/octopus3/git/src/core/csr/measures/measure.hpp:13,
                 from /gpfs/fs1/data/wraycompute/malaria/Applications/octopus3/git/src/core/csr/measures/measure.cpp:4:
/data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/detail/apply_visitor_unary.hpp:68:1: note: candidate: ‘typename Visitor::result_type boost::apply_visitor(Visitor&, Visitable&) [with Visitor = octopus::csr::{anonymous}::DivideVisitor; Visitable = boost::variant<bool, int, long unsigned int, double>; typename Visitor::result_type = boost::variant<bool, int, long unsigned int, double>]’ (near match)
   68 | apply_visitor(Visitor& visitor, Visitable& visitable)
      | ^~~~~~~~~~~~~
/data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/detail/apply_visitor_unary.hpp:68:1: note:   conversion of argument 2 would be ill-formed:
/gpfs/fs1/data/wraycompute/malaria/Applications/octopus3/git/src/core/csr/measures/measure.cpp:268:67: error: cannot bind non-const lvalue reference of type ‘boost::variant<bool, int, long unsigned int, double>&’ to an rvalue of type ‘boost::variant<bool, int, long unsigned int, double>’
  268 |     return boost::apply_visitor(DivideVisitor {values.size()}, sum(values));
      |                                                                ~~~^~~~~~~~
In file included from /data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/apply_visitor.hpp:16,
                 from /data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/detail/hash_variant.hpp:23,
                 from /data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/variant.hpp:34,
                 from /data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant.hpp:17,
                 from /gpfs/fs1/data/wraycompute/malaria/Applications/octopus3/git/src/core/csr/measures/measure.hpp:13,
                 from /gpfs/fs1/data/wraycompute/malaria/Applications/octopus3/git/src/core/csr/measures/measure.cpp:4:
/data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/detail/apply_visitor_unary.hpp:82:1: note: candidate: ‘typename Visitor::result_type boost::apply_visitor(const Visitor&, Visitable&) [with Visitor = octopus::csr::{anonymous}::DivideVisitor; Visitable = boost::variant<bool, int, long unsigned int, double>; typename Visitor::result_type = boost::variant<bool, int, long unsigned int, double>]’ (near match)
   82 | apply_visitor(const Visitor& visitor, Visitable& visitable)
      | ^~~~~~~~~~~~~
/data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/detail/apply_visitor_unary.hpp:82:1: note:   conversion of argument 2 would be ill-formed:
/gpfs/fs1/data/wraycompute/malaria/Applications/octopus3/git/src/core/csr/measures/measure.cpp:268:67: error: cannot bind non-const lvalue reference of type ‘boost::variant<bool, int, long unsigned int, double>&’ to an rvalue of type ‘boost::variant<bool, int, long unsigned int, double>’
  268 |     return boost::apply_visitor(DivideVisitor {values.size()}, sum(values));
      |                                                                ~~~^~~~~~~~
In file included from /data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/apply_visitor.hpp:16,
                 from /data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/detail/hash_variant.hpp:23,
                 from /data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/variant.hpp:34,
                 from /data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant.hpp:17,
                 from /gpfs/fs1/data/wraycompute/malaria/Applications/octopus3/git/src/core/csr/measures/measure.hpp:13,
                 from /gpfs/fs1/data/wraycompute/malaria/Applications/octopus3/git/src/core/csr/measures/measure.cpp:4:
/data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/detail/apply_visitor_unary.hpp:150:23: note: candidate: ‘template<class Visitor, class Visitable> decltype(auto) boost::apply_visitor(Visitor&, Visitable&, typename boost::disable_if<boost::detail::variant::has_result_type<Visitor> >::type*)’
  150 | inline decltype(auto) apply_visitor(Visitor& visitor, Visitable& visitable,
      |                       ^~~~~~~~~~~~~
/data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/detail/apply_visitor_unary.hpp:150:23: note:   template argument deduction/substitution failed:
/data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/detail/apply_visitor_unary.hpp: In substitution of ‘template<class Visitor, class Visitable> decltype(auto) boost::apply_visitor(Visitor&, Visitable&, typename boost::disable_if<boost::detail::variant::has_result_type<Visitor> >::type*) [with Visitor = octopus::csr::{anonymous}::DivideVisitor; Visitable = boost::variant<bool, int, long unsigned int, double>]’:
/gpfs/fs1/data/wraycompute/malaria/Applications/octopus3/git/src/core/csr/measures/measure.cpp:268:75:   required from here
/data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/detail/apply_visitor_unary.hpp:150:23: error: no type named ‘type’ in ‘struct boost::disable_if<boost::detail::variant::has_result_type<octopus::csr::{anonymous}::DivideVisitor>, void>’
/data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/detail/apply_visitor_unary.hpp:160:23: note: candidate: ‘template<class Visitor, class Visitable> decltype(auto) boost::apply_visitor(const Visitor&, Visitable&, typename boost::disable_if<boost::detail::variant::has_result_type<Visitor> >::type*)’
  160 | inline decltype(auto) apply_visitor(const Visitor& visitor, Visitable& visitable,
      |                       ^~~~~~~~~~~~~
/data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/detail/apply_visitor_unary.hpp:160:23: note:   template argument deduction/substitution failed:
/data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/detail/apply_visitor_unary.hpp: In substitution of ‘template<class Visitor, class Visitable> decltype(auto) boost::apply_visitor(const Visitor&, Visitable&, typename boost::disable_if<boost::detail::variant::has_result_type<Visitor> >::type*) [with Visitor = octopus::csr::{anonymous}::DivideVisitor; Visitable = boost::variant<bool, int, long unsigned int, double>]’:
/gpfs/fs1/data/wraycompute/malaria/Applications/octopus3/git/src/core/csr/measures/measure.cpp:268:75:   required from here
/data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/detail/apply_visitor_unary.hpp:160:23: error: no type named ‘type’ in ‘struct boost::disable_if<boost::detail::variant::has_result_type<octopus::csr::{anonymous}::DivideVisitor>, void>’
In file included from /data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/apply_visitor.hpp:17,
                 from /data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/detail/hash_variant.hpp:23,
                 from /data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/variant.hpp:34,
                 from /data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant.hpp:17,
                 from /gpfs/fs1/data/wraycompute/malaria/Applications/octopus3/git/src/core/csr/measures/measure.hpp:13,
                 from /gpfs/fs1/data/wraycompute/malaria/Applications/octopus3/git/src/core/csr/measures/measure.cpp:4:
/data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/detail/apply_visitor_binary.hpp:145:1: note: candidate: ‘template<class Visitor, class Visitable1, class Visitable2> typename Visitor::result_type boost::apply_visitor(Visitor&, Visitable1&, Visitable2&)’
  145 | apply_visitor(
      | ^~~~~~~~~~~~~
/data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/detail/apply_visitor_binary.hpp:145:1: note:   template argument deduction/substitution failed:
/gpfs/fs1/data/wraycompute/malaria/Applications/octopus3/git/src/core/csr/measures/measure.cpp:268:75: note:   candidate expects 3 arguments, 2 provided
  268 |     return boost::apply_visitor(DivideVisitor {values.size()}, sum(values));
      |                                                                           ^
In file included from /data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/apply_visitor.hpp:17,
                 from /data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/detail/hash_variant.hpp:23,
                 from /data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/variant.hpp:34,
                 from /data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant.hpp:17,
                 from /gpfs/fs1/data/wraycompute/malaria/Applications/octopus3/git/src/core/csr/measures/measure.hpp:13,
                 from /gpfs/fs1/data/wraycompute/malaria/Applications/octopus3/git/src/core/csr/measures/measure.cpp:4:
/data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/detail/apply_visitor_binary.hpp:168:1: note: candidate: ‘template<class Visitor, class Visitable1, class Visitable2> typename Visitor::result_type boost::apply_visitor(const Visitor&, Visitable1&, Visitable2&)’
  168 | apply_visitor(
      | ^~~~~~~~~~~~~
/data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/detail/apply_visitor_binary.hpp:168:1: note:   template argument deduction/substitution failed:
/gpfs/fs1/data/wraycompute/malaria/Applications/octopus3/git/src/core/csr/measures/measure.cpp:268:75: note:   candidate expects 3 arguments, 2 provided
  268 |     return boost::apply_visitor(DivideVisitor {values.size()}, sum(values));
      |                                                                           ^
In file included from /data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/apply_visitor.hpp:17,
                 from /data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/detail/hash_variant.hpp:23,
                 from /data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/variant.hpp:34,
                 from /data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant.hpp:17,
                 from /gpfs/fs1/data/wraycompute/malaria/Applications/octopus3/git/src/core/csr/measures/measure.hpp:13,
                 from /gpfs/fs1/data/wraycompute/malaria/Applications/octopus3/git/src/core/csr/measures/measure.cpp:4:
/data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/detail/apply_visitor_binary.hpp:251:23: note: candidate: ‘template<class Visitor, class Visitable1, class Visitable2> decltype(auto) boost::apply_visitor(Visitor&, Visitable1&, Visitable2&, typename boost::disable_if<boost::detail::variant::has_result_type<Visitor> >::type*)’
  251 | inline decltype(auto) apply_visitor(Visitor& visitor, Visitable1& visitable1, Visitable2& visitable2,
      |                       ^~~~~~~~~~~~~
/data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/detail/apply_visitor_binary.hpp:251:23: note:   template argument deduction/substitution failed:
/gpfs/fs1/data/wraycompute/malaria/Applications/octopus3/git/src/core/csr/measures/measure.cpp:268:75: note:   candidate expects 4 arguments, 2 provided
  268 |     return boost::apply_visitor(DivideVisitor {values.size()}, sum(values));
      |                                                                           ^
In file included from /data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/apply_visitor.hpp:17,
                 from /data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/detail/hash_variant.hpp:23,
                 from /data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/variant.hpp:34,
                 from /data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant.hpp:17,
                 from /gpfs/fs1/data/wraycompute/malaria/Applications/octopus3/git/src/core/csr/measures/measure.hpp:13,
                 from /gpfs/fs1/data/wraycompute/malaria/Applications/octopus3/git/src/core/csr/measures/measure.cpp:4:
/data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/detail/apply_visitor_binary.hpp:264:23: note: candidate: ‘template<class Visitor, class Visitable1, class Visitable2> decltype(auto) boost::apply_visitor(const Visitor&, Visitable1&, Visitable2&, typename boost::disable_if<boost::detail::variant::has_result_type<Visitor> >::type*)’
  264 | inline decltype(auto) apply_visitor(const Visitor& visitor, Visitable1& visitable1, Visitable2& visitable2,
      |                       ^~~~~~~~~~~~~
/data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/detail/apply_visitor_binary.hpp:264:23: note:   template argument deduction/substitution failed:
/gpfs/fs1/data/wraycompute/malaria/Applications/octopus3/git/src/core/csr/measures/measure.cpp:268:75: note:   candidate expects 4 arguments, 2 provided
  268 |     return boost::apply_visitor(DivideVisitor {values.size()}, sum(values));
      |                                                                           ^
In file included from /data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/apply_visitor.hpp:18,
                 from /data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/detail/hash_variant.hpp:23,
                 from /data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/variant.hpp:34,
                 from /data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant.hpp:17,
                 from /gpfs/fs1/data/wraycompute/malaria/Applications/octopus3/git/src/core/csr/measures/measure.hpp:13,
                 from /gpfs/fs1/data/wraycompute/malaria/Applications/octopus3/git/src/core/csr/measures/measure.cpp:4:
/data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/detail/apply_visitor_delayed.hpp:103:13: note: candidate: ‘template<class Visitor> typename boost::enable_if<boost::detail::variant::has_result_type<Visitor>, boost::apply_visitor_delayed_t<Visitor> >::type boost::apply_visitor(Visitor&)’
  103 |     >::type apply_visitor(Visitor& visitor)
      |             ^~~~~~~~~~~~~
/data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/detail/apply_visitor_delayed.hpp:103:13: note:   template argument deduction/substitution failed:
/gpfs/fs1/data/wraycompute/malaria/Applications/octopus3/git/src/core/csr/measures/measure.cpp:268:75: note:   candidate expects 1 argument, 2 provided
  268 |     return boost::apply_visitor(DivideVisitor {values.size()}, sum(values));
      |                                                                           ^
In file included from /data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/apply_visitor.hpp:18,
                 from /data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/detail/hash_variant.hpp:23,
                 from /data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/variant.hpp:34,
                 from /data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant.hpp:17,
                 from /gpfs/fs1/data/wraycompute/malaria/Applications/octopus3/git/src/core/csr/measures/measure.hpp:13,
                 from /gpfs/fs1/data/wraycompute/malaria/Applications/octopus3/git/src/core/csr/measures/measure.cpp:4:
/data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/detail/apply_visitor_delayed.hpp:140:13: note: candidate: ‘template<class Visitor> typename boost::disable_if<boost::detail::variant::has_result_type<Visitor>, boost::apply_visitor_delayed_cpp14_t<Visitor> >::type boost::apply_visitor(Visitor&)’
  140 |     >::type apply_visitor(Visitor& visitor)
      |             ^~~~~~~~~~~~~
/data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/detail/apply_visitor_delayed.hpp:140:13: note:   template argument deduction/substitution failed:
/gpfs/fs1/data/wraycompute/malaria/Applications/octopus3/git/src/core/csr/measures/measure.cpp:268:75: note:   candidate expects 1 argument, 2 provided
  268 |     return boost::apply_visitor(DivideVisitor {values.size()}, sum(values));
      |                                                                           ^
make[2]: *** [src/CMakeFiles/octopus.dir/core/csr/measures/measure.cpp.o] Error 1
make[1]: *** [src/CMakeFiles/octopus.dir/all] Error 2
make: *** [all] Error 2
bredelings commented 3 years ago

It might be this bit that matters:

/data/wraycompute/malaria/Applications/boost_1_65_0/boost/variant/detail/apply_visitor_unary.hpp:68:1: note:   conversion of argument 2 would be ill-formed:
/gpfs/fs1/data/wraycompute/malaria/Applications/octopus3/git/src/core/csr/measures/measure.cpp:268:67: error: cannot bind non-const lvalue reference of type ‘boost::variant<bool, int, long unsigned int, double>&’ to an rvalue of type ‘boost::variant<bool, int, long unsigned int, double>’
  268 |     return boost::apply_visitor(DivideVisitor {values.size()}, sum(values));
      |                                                                ~~~^~~~~~~~
bredelings commented 3 years ago

Apparently compilation with boost 1.74 works fine.

dancooke commented 3 years ago

Hmm, looks like an issue with the older version of Boost. I'll try to identify the oldest working version and update the documentation. Note however that the recommend way to install Octopus is now with automatic dependency installation and this will usually install the latest available Boost.

dancooke commented 3 years ago

I've updated the README requirements to Boost 1.74 so marking this as closed.