compiling symfeatures.cc on arch linux fails:
g++ -c symfeatures.cc -O3 -Wno-unused-result In file included from /usr/include/c++/5.3.0/bits/stl_algobase.h:65:0, from /usr/include/c++/5.3.0/bits/char_traits.h:39, from /usr/include/c++/5.3.0/ios:40, from /usr/include/c++/5.3.0/ostream:38, from /usr/include/c++/5.3.0/iostream:39, from symfeatures.h:25, from symfeatures.cc:18: /usr/include/c++/5.3.0/bits/stl_iterator_base_types.h: In instantiation of 'struct std::iterator_traits<double* const>': /usr/include/boost/iterator/iterator_traits.hpp:28:74: required from 'struct boost::iterators::iterator_reference<double* const>' /usr/include/boost/iterator/zip_iterator.hpp:90:61: required from 'struct boost::iterators::detail::dereference_iterator::result<boost::iterators::detail::dereference_iterator(double* const&)>' /usr/include/boost/utility/result_of.hpp:189:8: required from 'struct boost::detail::result_of_nested_result<boost::iterators::detail::dereference_iterator, boost::iterators::detail::dereference_iterator(double* const&)>' /usr/include/boost/utility/result_of.hpp:193:8: required from 'struct boost::detail::tr1_result_of_impl<boost::iterators::detail::dereference_iterator, boost::iterators::detail::dereference_iterator(double* const&), false>' /usr/include/boost/utility/detail/result_of_iterate.hpp:27:8: required from 'struct boost::tr1_result_of<boost::iterators::detail::dereference_iterator(double* const&)>' /usr/include/boost/utility/detail/result_of_iterate.hpp:159:8: [ skipping 11 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/iterator/zip_iterator.hpp:214:40: required from 'static reference boost::iterators::detail::converter<reference>::call(Seq) [with Seq = boost::fusion::transform_view<const boost::tuples::tuple<double*, Log<double>*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>, boost::iterators::detail::dereference_iterator, boost::fusion::void_>; reference = boost::tuples::cons<double&, boost::tuples::cons<Log<double>&, boost::tuples::null_type> >]' /usr/include/boost/iterator/zip_iterator.hpp:287:25: required from 'typename boost::iterators::detail::zip_iterator_base<IteratorTuple>::type::reference boost::iterators::zip_iterator<IteratorTuple>::dereference() const [with IteratorTuple = boost::tuples::tuple<double*, Log<double>*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>; typename boost::iterators::detail::zip_iterator_base<IteratorTuple>::type::reference = boost::tuples::cons<double&, boost::tuples::cons<Log<double>&, boost::tuples::null_type> >]' /usr/include/boost/iterator/iterator_facade.hpp:549:32: required from 'static typename Facade::reference boost::iterators::iterator_core_access::dereference(const Facade&) [with Facade = boost::iterators::zip_iterator<boost::tuples::tuple<double*, Log<double>*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >; typename Facade::reference = boost::tuples::cons<double&, boost::tuples::cons<Log<double>&, boost::tuples::null_type> >]' /usr/include/boost/iterator/iterator_facade.hpp:655:53: required from 'boost::iterators::detail::iterator_facade_base<Derived, Value, CategoryOrTraversal, Reference, Difference, false, false>::reference boost::iterators::detail::iterator_facade_base<Derived, Value, CategoryOrTraversal, Reference, Difference, false, false>::operator*() const [with Derived = boost::iterators::zip_iterator<boost::tuples::tuple<double*, Log<double>*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >; Value = boost::tuples::cons<double&, boost::tuples::cons<Log<double>&, boost::tuples::null_type> >; CategoryOrTraversal = boost::iterators::random_access_traversal_tag; Reference = boost::tuples::cons<double&, boost::tuples::cons<Log<double>&, boost::tuples::null_type> >; Difference = long int; boost::iterators::detail::iterator_facade_base<Derived, Value, CategoryOrTraversal, Reference, Difference, false, false>::reference = boost::tuples::cons<double&, boost::tuples::cons<Log<double>&, boost::tuples::null_type> >]' /usr/include/boost/foreach.hpp:771:12: required from 'typename boost::foreach_detail_::foreach_reference<T, C>::type boost::foreach_detail_::deref(boost::foreach_detail_::auto_any_t, boost::foreach_detail_::type2type<T, C>*) [with T = std::pair<boost::iterators::zip_iterator<boost::tuples::tuple<double*, Log<double>*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >, boost::iterators::zip_iterator<boost::tuples::tuple<double*, Log<double>*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> > >; C = mpl_::bool_<true>; typename boost::foreach_detail_::foreach_reference<T, C>::type = boost::tuples::cons<double&, boost::tuples::cons<Log<double>&, boost::tuples::null_type> >; boost::foreach_detail_::auto_any_t = const boost::foreach_detail_::auto_any_base&]' rnnlib4seshat/SoftmaxLayer.hpp:81:3: required from here /usr/include/c++/5.3.0/bits/stl_iterator_base_types.h:168:53: error: 'double* const' is not a class, struct, or union type typedef typename _Iterator::iterator_category iterator_category; ^ /usr/include/c++/5.3.0/bits/stl_iterator_base_types.h:169:53: error: 'double* const' is not a class, struct, or union type typedef typename _Iterator::value_type value_type; ^ /usr/include/c++/5.3.0/bits/stl_iterator_base_types.h:170:53: error: 'double* const' is not a class, struct, or union type typedef typename _Iterator::difference_type difference_type; ^ /usr/include/c++/5.3.0/bits/stl_iterator_base_types.h:171:53: error: 'double* const' is not a class, struct, or union type typedef typename _Iterator::pointer pointer; ^ /usr/include/c++/5.3.0/bits/stl_iterator_base_types.h:172:53: error: 'double* const' is not a class, struct, or union type typedef typename _Iterator::reference reference; ^ In file included from /usr/include/boost/fusion/adapted/boost_tuple/detail/convert_impl.hpp:11:0, from /usr/include/boost/fusion/adapted/boost_tuple.hpp:20, from /usr/include/boost/iterator/zip_iterator.hpp:21, from rnnlib4seshat/Helpers.hpp:50, from rnnlib4seshat/DataSequence.hpp:48, from symrec.h:30, from production.h:28, from hypothesis.h:30, from cellcyk.h:24, from tablecyk.h:26, from sample.h:27, from symfeatures.h:32, from symfeatures.cc:18: /usr/include/boost/fusion/adapted/boost_tuple/detail/build_cons.hpp: In instantiation of 'static boost::fusion::detail::build_tuple_cons<First, Last, false>::type boost::fusion::detail::build_tuple_cons<First, Last, false>::call(const First&, const Last&) [with First = boost::fusion::transform_view_iterator<boost::fusion::boost_tuple_iterator<const boost::tuples::tuple<double*, Log<double>*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >, boost::iterators::detail::dereference_iterator>; Last = boost::fusion::transform_view_iterator<boost::fusion::boost_tuple_iterator<const boost::tuples::null_type>, boost::iterators::detail::dereference_iterator>; boost::fusion::detail::build_tuple_cons<First, Last, false>::type = boost::tuples::cons<double&, boost::tuples::cons<Log<double>&, boost::tuples::null_type> >; typename boost::fusion::detail::build_tuple_cons<typename boost::fusion::result_of::next<Iterator>::type, Last>::type = boost::tuples::cons<Log<double>&, boost::tuples::null_type>; typename boost::fusion::result_of::value_of<First>::type = double&]': /usr/include/boost/fusion/adapted/boost_tuple/detail/convert_impl.hpp:43:50: required from 'static boost::fusion::extension::convert_impl<boost::fusion::boost_tuple_tag>::apply<Sequence>::type boost::fusion::extension::convert_impl<boost::fusion::boost_tuple_tag>::apply<Sequence>::call(Sequence&) [with Sequence = boost::fusion::transform_view<const boost::tuples::tuple<double*, Log<double>*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>, boost::iterators::detail::dereference_iterator, boost::fusion::void_>; boost::fusion::extension::convert_impl<boost::fusion::boost_tuple_tag>::apply<Sequence>::type = boost::tuples::cons<double&, boost::tuples::cons<Log<double>&, boost::tuples::null_type> >]' /usr/include/boost/fusion/sequence/convert.hpp:39:25: required from 'typename boost::fusion::result_of::convert<Tag, Sequence>::type boost::fusion::convert(Sequence&) [with Tag = boost::fusion::boost_tuple_tag; Sequence = boost::fusion::transform_view<const boost::tuples::tuple<double*, Log<double>*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>, boost::iterators::detail::dereference_iterator, boost::fusion::void_>; typename boost::fusion::result_of::convert<Tag, Sequence>::type = boost::tuples::cons<double&, boost::tuples::cons<Log<double>&, boost::tuples::null_type> >]' /usr/include/boost/iterator/zip_iterator.hpp:214:40: required from 'static reference boost::iterators::detail::converter<reference>::call(Seq) [with Seq = boost::fusion::transform_view<const boost::tuples::tuple<double*, Log<double>*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>, boost::iterators::detail::dereference_iterator, boost::fusion::void_>; reference = boost::tuples::cons<double&, boost::tuples::cons<Log<double>&, boost::tuples::null_type> >]' /usr/include/boost/iterator/zip_iterator.hpp:287:25: required from 'typename boost::iterators::detail::zip_iterator_base<IteratorTuple>::type::reference boost::iterators::zip_iterator<IteratorTuple>::dereference() const [with IteratorTuple = boost::tuples::tuple<double*, Log<double>*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>; typename boost::iterators::detail::zip_iterator_base<IteratorTuple>::type::reference = boost::tuples::cons<double&, boost::tuples::cons<Log<double>&, boost::tuples::null_type> >]' /usr/include/boost/iterator/iterator_facade.hpp:549:32: required from 'static typename Facade::reference boost::iterators::iterator_core_access::dereference(const Facade&) [with Facade = boost::iterators::zip_iterator<boost::tuples::tuple<double*, Log<double>*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >; typename Facade::reference = boost::tuples::cons<double&, boost::tuples::cons<Log<double>&, boost::tuples::null_type> >]' /usr/include/boost/iterator/iterator_facade.hpp:655:53: required from 'boost::iterators::detail::iterator_facade_base<Derived, Value, CategoryOrTraversal, Reference, Difference, false, false>::reference boost::iterators::detail::iterator_facade_base<Derived, Value, CategoryOrTraversal, Reference, Difference, false, false>::operator*() const [with Derived = boost::iterators::zip_iterator<boost::tuples::tuple<double*, Log<double>*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >; Value = boost::tuples::cons<double&, boost::tuples::cons<Log<double>&, boost::tuples::null_type> >; CategoryOrTraversal = boost::iterators::random_access_traversal_tag; Reference = boost::tuples::cons<double&, boost::tuples::cons<Log<double>&, boost::tuples::null_type> >; Difference = long int; boost::iterators::detail::iterator_facade_base<Derived, Value, CategoryOrTraversal, Reference, Difference, false, false>::reference = boost::tuples::cons<double&, boost::tuples::cons<Log<double>&, boost::tuples::null_type> >]' /usr/include/boost/foreach.hpp:771:12: required from 'typename boost::foreach_detail_::foreach_reference<T, C>::type boost::foreach_detail_::deref(boost::foreach_detail_::auto_any_t, boost::foreach_detail_::type2type<T, C>*) [with T = std::pair<boost::iterators::zip_iterator<boost::tuples::tuple<double*, Log<double>*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >, boost::iterators::zip_iterator<boost::tuples::tuple<double*, Log<double>*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> > >; C = mpl_::bool_<true>; typename boost::foreach_detail_::foreach_reference<T, C>::type = boost::tuples::cons<double&, boost::tuples::cons<Log<double>&, boost::tuples::null_type> >; boost::foreach_detail_::auto_any_t = const boost::foreach_detail_::auto_any_base&]' rnnlib4seshat/SoftmaxLayer.hpp:81:3: required from here /usr/include/boost/fusion/adapted/boost_tuple/detail/build_cons.hpp:53:59: error: no match for 'operator*' (operand type is 'const boost::fusion::transform_view_iterator<boost::fusion::boost_tuple_iterator<const boost::tuples::tuple<double*, Log<double>*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >, boost::iterators::detail::dereference_iterator>') typename result_of::value_of<First>::type v = *f; ^ In file included from /usr/include/boost/fusion/adapted/boost_tuple/detail/build_cons.hpp:14:0, from /usr/include/boost/fusion/adapted/boost_tuple/detail/convert_impl.hpp:11, from /usr/include/boost/fusion/adapted/boost_tuple.hpp:20, from /usr/include/boost/iterator/zip_iterator.hpp:21, from rnnlib4seshat/Helpers.hpp:50, from rnnlib4seshat/DataSequence.hpp:48, from symrec.h:30, from production.h:28, from hypothesis.h:30, from cellcyk.h:24, from tablecyk.h:26, from sample.h:27, from symfeatures.h:32, from symfeatures.cc:18: /usr/include/boost/fusion/iterator/deref.hpp:69:5: note: candidate: template<class Iterator> typename boost::fusion::result_of::deref<Iterator>::type boost::fusion::operator*(const boost::fusion::iterator_base<Derived>&) operator*(iterator_base<Iterator> const& i) ^ /usr/include/boost/fusion/iterator/deref.hpp:69:5: note: substitution of deduced template arguments resulted in errors seen above In file included from rnnlib4seshat/Helpers.hpp:72:0, from rnnlib4seshat/DataSequence.hpp:48, from symrec.h:30, from production.h:28, from hypothesis.h:30, from cellcyk.h:24, from tablecyk.h:26, from sample.h:27, from symfeatures.h:32, from symfeatures.cc:18: rnnlib4seshat/Log.hpp:169:26: note: candidate: template<class T> Log<T> operator*(Log<T>, Log<T>) template<class T> Log<T> operator *(Log<T> log1, Log<T> log2) ^ rnnlib4seshat/Log.hpp:169:26: note: template argument deduction/substitution failed: In file included from /usr/include/boost/fusion/adapted/boost_tuple/detail/convert_impl.hpp:11:0, from /usr/include/boost/fusion/adapted/boost_tuple.hpp:20, from /usr/include/boost/iterator/zip_iterator.hpp:21, from rnnlib4seshat/Helpers.hpp:50, from rnnlib4seshat/DataSequence.hpp:48, from symrec.h:30, from production.h:28, from hypothesis.h:30, from cellcyk.h:24, from tablecyk.h:26, from sample.h:27, from symfeatures.h:32, from symfeatures.cc:18: /usr/include/boost/fusion/adapted/boost_tuple/detail/build_cons.hpp:53:59: note: 'boost::fusion::transform_view_iterator<boost::fusion::boost_tuple_iterator<const boost::tuples::tuple<double*, Log<double>*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >, boost::iterators::detail::dereference_iterator>' is not derived from 'Log<T>' typename result_of::value_of<First>::type v = *f; ^ /usr/include/boost/fusion/adapted/boost_tuple/detail/build_cons.hpp: In instantiation of 'static boost::fusion::detail::build_tuple_cons<First, Last, false>::type boost::fusion::detail::build_tuple_cons<First, Last, false>::call(const First&, const Last&) [with First = boost::fusion::transform_view_iterator<boost::fusion::boost_tuple_iterator<const boost::tuples::tuple<double*, double*, double*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >, boost::iterators::detail::dereference_iterator>; Last = boost::fusion::transform_view_iterator<boost::fusion::boost_tuple_iterator<const boost::tuples::null_type>, boost::iterators::detail::dereference_iterator>; boost::fusion::detail::build_tuple_cons<First, Last, false>::type = boost::tuples::cons<double&, boost::tuples::cons<double&, boost::tuples::cons<double&, boost::tuples::null_type> > >; typename boost::fusion::detail::build_tuple_cons<typename boost::fusion::result_of::next<Iterator>::type, Last>::type = boost::tuples::cons<double&, boost::tuples::cons<double&, boost::tuples::null_type> >; typename boost::fusion::result_of::value_of<First>::type = double&]': /usr/include/boost/fusion/adapted/boost_tuple/detail/convert_impl.hpp:43:50: required from 'static boost::fusion::extension::convert_impl<boost::fusion::boost_tuple_tag>::apply<Sequence>::type boost::fusion::extension::convert_impl<boost::fusion::boost_tuple_tag>::apply<Sequence>::call(Sequence&) [with Sequence = boost::fusion::transform_view<const boost::tuples::tuple<double*, double*, double*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>, boost::iterators::detail::dereference_iterator, boost::fusion::void_>; boost::fusion::extension::convert_impl<boost::fusion::boost_tuple_tag>::apply<Sequence>::type = boost::tuples::cons<double&, boost::tuples::cons<double&, boost::tuples::cons<double&, boost::tuples::null_type> > >]' /usr/include/boost/fusion/sequence/convert.hpp:39:25: required from 'typename boost::fusion::result_of::convert<Tag, Sequence>::type boost::fusion::convert(Sequence&) [with Tag = boost::fusion::boost_tuple_tag; Sequence = boost::fusion::transform_view<const boost::tuples::tuple<double*, double*, double*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>, boost::iterators::detail::dereference_iterator, boost::fusion::void_>; typename boost::fusion::result_of::convert<Tag, Sequence>::type = boost::tuples::cons<double&, boost::tuples::cons<double&, boost::tuples::cons<double&, boost::tuples::null_type> > >]' /usr/include/boost/iterator/zip_iterator.hpp:214:40: required from 'static reference boost::iterators::detail::converter<reference>::call(Seq) [with Seq = boost::fusion::transform_view<const boost::tuples::tuple<double*, double*, double*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>, boost::iterators::detail::dereference_iterator, boost::fusion::void_>; reference = boost::tuples::cons<double&, boost::tuples::cons<double&, boost::tuples::cons<double&, boost::tuples::null_type> > >]' /usr/include/boost/iterator/zip_iterator.hpp:287:25: required from 'typename boost::iterators::detail::zip_iterator_base<IteratorTuple>::type::reference boost::iterators::zip_iterator<IteratorTuple>::dereference() const [with IteratorTuple = boost::tuples::tuple<double*, double*, double*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>; typename boost::iterators::detail::zip_iterator_base<IteratorTuple>::type::reference = boost::tuples::cons<double&, boost::tuples::cons<double&, boost::tuples::cons<double&, boost::tuples::null_type> > >]' /usr/include/boost/iterator/iterator_facade.hpp:549:32: required from 'static typename Facade::reference boost::iterators::iterator_core_access::dereference(const Facade&) [with Facade = boost::iterators::zip_iterator<boost::tuples::tuple<double*, double*, double*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >; typename Facade::reference = boost::tuples::cons<double&, boost::tuples::cons<double&, boost::tuples::cons<double&, boost::tuples::null_type> > >]' /usr/include/boost/iterator/iterator_facade.hpp:655:53: required from 'boost::iterators::detail::iterator_facade_base<Derived, Value, CategoryOrTraversal, Reference, Difference, false, false>::reference boost::iterators::detail::iterator_facade_base<Derived, Value, CategoryOrTraversal, Reference, Difference, false, false>::operator*() const [with Derived = boost::iterators::zip_iterator<boost::tuples::tuple<double*, double*, double*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >; Value = boost::tuples::cons<double&, boost::tuples::cons<double&, boost::tuples::cons<double&, boost::tuples::null_type> > >; CategoryOrTraversal = boost::iterators::random_access_traversal_tag; Reference = boost::tuples::cons<double&, boost::tuples::cons<double&, boost::tuples::cons<double&, boost::tuples::null_type> > >; Difference = long int; boost::iterators::detail::iterator_facade_base<Derived, Value, CategoryOrTraversal, Reference, Difference, false, false>::reference = boost::tuples::cons<double&, boost::tuples::cons<double&, boost::tuples::cons<double&, boost::tuples::null_type> > >]' /usr/include/boost/foreach.hpp:771:12: required from 'typename boost::foreach_detail_::foreach_reference<T, C>::type boost::foreach_detail_::deref(boost::foreach_detail_::auto_any_t, boost::foreach_detail_::type2type<T, C>*) [with T = std::pair<boost::iterators::zip_iterator<boost::tuples::tuple<double*, double*, double*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >, boost::iterators::zip_iterator<boost::tuples::tuple<double*, double*, double*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> > >; C = mpl_::bool_<true>; typename boost::foreach_detail_::foreach_reference<T, C>::type = boost::tuples::cons<double&, boost::tuples::cons<double&, boost::tuples::cons<double&, boost::tuples::null_type> > >; boost::foreach_detail_::auto_any_t = const boost::foreach_detail_::auto_any_base&]' rnnlib4seshat/SoftmaxLayer.hpp:100:3: required from here /usr/include/boost/fusion/adapted/boost_tuple/detail/build_cons.hpp:53:59: error: no match for 'operator*' (operand type is 'const boost::fusion::transform_view_iterator<boost::fusion::boost_tuple_iterator<const boost::tuples::tuple<double*, double*, double*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >, boost::iterators::detail::dereference_iterator>') In file included from /usr/include/boost/fusion/adapted/boost_tuple/detail/build_cons.hpp:14:0, from /usr/include/boost/fusion/adapted/boost_tuple/detail/convert_impl.hpp:11, from /usr/include/boost/fusion/adapted/boost_tuple.hpp:20, from /usr/include/boost/iterator/zip_iterator.hpp:21, from rnnlib4seshat/Helpers.hpp:50, from rnnlib4seshat/DataSequence.hpp:48, from symrec.h:30, from production.h:28, from hypothesis.h:30, from cellcyk.h:24, from tablecyk.h:26, from sample.h:27, from symfeatures.h:32, from symfeatures.cc:18: /usr/include/boost/fusion/iterator/deref.hpp:69:5: note: candidate: template<class Iterator> typename boost::fusion::result_of::deref<Iterator>::type boost::fusion::operator*(const boost::fusion::iterator_base<Derived>&) operator*(iterator_base<Iterator> const& i) ^ /usr/include/boost/fusion/iterator/deref.hpp:69:5: note: template argument deduction/substitution failed: In file included from /usr/include/boost/fusion/adapted/boost_tuple/detail/convert_impl.hpp:11:0, from /usr/include/boost/fusion/adapted/boost_tuple.hpp:20, from /usr/include/boost/iterator/zip_iterator.hpp:21, from rnnlib4seshat/Helpers.hpp:50, from rnnlib4seshat/DataSequence.hpp:48, from symrec.h:30, from production.h:28, from hypothesis.h:30, from cellcyk.h:24, from tablecyk.h:26, from sample.h:27, from symfeatures.h:32, from symfeatures.cc:18: /usr/include/boost/fusion/adapted/boost_tuple/detail/build_cons.hpp: In instantiation of 'static boost::fusion::detail::build_tuple_cons<First, Last, false>::type boost::fusion::detail::build_tuple_cons<First, Last, false>::call(const First&, const Last&) [with First = boost::fusion::transform_view_iterator<boost::fusion::boost_tuple_iterator<const boost::tuples::tuple<double*, __gnu_cxx::__normal_iterator<Log<double>*, std::vector<Log<double>, std::allocator<Log<double> > > >, Log<double>*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >, boost::iterators::detail::dereference_iterator>; Last = boost::fusion::transform_view_iterator<boost::fusion::boost_tuple_iterator<const boost::tuples::null_type>, boost::iterators::detail::dereference_iterator>; boost::fusion::detail::build_tuple_cons<First, Last, false>::type = boost::tuples::cons<double&, boost::tuples::cons<Log<double>&, boost::tuples::cons<Log<double>&, boost::tuples::null_type> > >; typename boost::fusion::detail::build_tuple_cons<typename boost::fusion::result_of::next<Iterator>::type, Last>::type = boost::tuples::cons<Log<double>&, boost::tuples::cons<Log<double>&, boost::tuples::null_type> >; typename boost::fusion::result_of::value_of<First>::type = double&]': /usr/include/boost/fusion/adapted/boost_tuple/detail/convert_impl.hpp:43:50: required from 'static boost::fusion::extension::convert_impl<boost::fusion::boost_tuple_tag>::apply<Sequence>::type boost::fusion::extension::convert_impl<boost::fusion::boost_tuple_tag>::apply<Sequence>::call(Sequence&) [with Sequence = boost::fusion::transform_view<const boost::tuples::tuple<double*, __gnu_cxx::__normal_iterator<Log<double>*, std::vector<Log<double>, std::allocator<Log<double> > > >, Log<double>*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>, boost::iterators::detail::dereference_iterator, boost::fusion::void_>; boost::fusion::extension::convert_impl<boost::fusion::boost_tuple_tag>::apply<Sequence>::type = boost::tuples::cons<double&, boost::tuples::cons<Log<double>&, boost::tuples::cons<Log<double>&, boost::tuples::null_type> > >]' /usr/include/boost/fusion/sequence/convert.hpp:39:25: required from 'typename boost::fusion::result_of::convert<Tag, Sequence>::type boost::fusion::convert(Sequence&) [with Tag = boost::fusion::boost_tuple_tag; Sequence = boost::fusion::transform_view<const boost::tuples::tuple<double*, __gnu_cxx::__normal_iterator<Log<double>*, std::vector<Log<double>, std::allocator<Log<double> > > >, Log<double>*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>, boost::iterators::detail::dereference_iterator, boost::fusion::void_>; typename boost::fusion::result_of::convert<Tag, Sequence>::type = boost::tuples::cons<double&, boost::tuples::cons<Log<double>&, boost::tuples::cons<Log<double>&, boost::tuples::null_type> > >]' /usr/include/boost/iterator/zip_iterator.hpp:214:40: required from 'static reference boost::iterators::detail::converter<reference>::call(Seq) [with Seq = boost::fusion::transform_view<const boost::tuples::tuple<double*, __gnu_cxx::__normal_iterator<Log<double>*, std::vector<Log<double>, std::allocator<Log<double> > > >, Log<double>*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>, boost::iterators::detail::dereference_iterator, boost::fusion::void_>; reference = boost::tuples::cons<double&, boost::tuples::cons<Log<double>&, boost::tuples::cons<Log<double>&, boost::tuples::null_type> > >]' /usr/include/boost/iterator/zip_iterator.hpp:287:25: required from 'typename boost::iterators::detail::zip_iterator_base<IteratorTuple>::type::reference boost::iterators::zip_iterator<IteratorTuple>::dereference() const [with IteratorTuple = boost::tuples::tuple<double*, __gnu_cxx::__normal_iterator<Log<double>*, std::vector<Log<double>, std::allocator<Log<double> > > >, Log<double>*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>; typename boost::iterators::detail::zip_iterator_base<IteratorTuple>::type::reference = boost::tuples::cons<double&, boost::tuples::cons<Log<double>&, boost::tuples::cons<Log<double>&, boost::tuples::null_type> > >]' /usr/include/boost/iterator/iterator_facade.hpp:549:32: required from 'static typename Facade::reference boost::iterators::iterator_core_access::dereference(const Facade&) [with Facade = boost::iterators::zip_iterator<boost::tuples::tuple<double*, __gnu_cxx::__normal_iterator<Log<double>*, std::vector<Log<double>, std::allocator<Log<double> > > >, Log<double>*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >; typename Facade::reference = boost::tuples::cons<double&, boost::tuples::cons<Log<double>&, boost::tuples::cons<Log<double>&, boost::tuples::null_type> > >]' /usr/include/boost/iterator/iterator_facade.hpp:655:53: required from 'boost::iterators::detail::iterator_facade_base<Derived, Value, CategoryOrTraversal, Reference, Difference, false, false>::reference boost::iterators::detail::iterator_facade_base<Derived, Value, CategoryOrTraversal, Reference, Difference, false, false>::operator*() const [with Derived = boost::iterators::zip_iterator<boost::tuples::tuple<double*, __gnu_cxx::__normal_iterator<Log<double>*, std::vector<Log<double>, std::allocator<Log<double> > > >, Log<double>*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >; Value = boost::tuples::cons<double&, boost::tuples::cons<Log<double>&, boost::tuples::cons<Log<double>&, boost::tuples::null_type> > >; CategoryOrTraversal = boost::iterators::random_access_traversal_tag; Reference = boost::tuples::cons<double&, boost::tuples::cons<Log<double>&, boost::tuples::cons<Log<double>&, boost::tuples::null_type> > >; Difference = long int; boost::iterators::detail::iterator_facade_base<Derived, Value, CategoryOrTraversal, Reference, Difference, false, false>::reference = boost::tuples::cons<double&, boost::tuples::cons<Log<double>&, boost::tuples::cons<Log<double>&, boost::tuples::null_type> > >]' /usr/include/boost/foreach.hpp:771:12: required from 'typename boost::foreach_detail_::foreach_reference<T, C>::type boost::foreach_detail_::deref(boost::foreach_detail_::auto_any_t, boost::foreach_detail_::type2type<T, C>*) [with T = std::pair<boost::iterators::zip_iterator<boost::tuples::tuple<double*, __gnu_cxx::__normal_iterator<Log<double>*, std::vector<Log<double>, std::allocator<Log<double> > > >, Log<double>*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >, boost::iterators::zip_iterator<boost::tuples::tuple<double*, __gnu_cxx::__normal_iterator<Log<double>*, std::vector<Log<double>, std::allocator<Log<double> > > >, Log<double>*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> > >; C = mpl_::bool_<true>; typename boost::foreach_detail_::foreach_reference<T, C>::type = boost::tuples::cons<double&, boost::tuples::cons<Log<double>&, boost::tuples::cons<Log<double>&, boost::tuples::null_type> > >; boost::foreach_detail_::auto_any_t = const boost::foreach_detail_::auto_any_base&]' rnnlib4seshat/TranscriptionLayer.hpp:248:4: required from here /usr/include/boost/fusion/adapted/boost_tuple/detail/build_cons.hpp:53:59: error: no match for 'operator*' (operand type is 'const boost::fusion::transform_view_iterator<boost::fusion::boost_tuple_iterator<const boost::tuples::tuple<double*, __gnu_cxx::__normal_iterator<Log<double>*, std::vector<Log<double>, std::allocator<Log<double> > > >, Log<double>*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >, boost::iterators::detail::dereference_iterator>') typename result_of::value_of<First>::type v = *f; ^ In file included from /usr/include/boost/fusion/adapted/boost_tuple/detail/build_cons.hpp:14:0, from /usr/include/boost/fusion/adapted/boost_tuple/detail/convert_impl.hpp:11, from /usr/include/boost/fusion/adapted/boost_tuple.hpp:20, from /usr/include/boost/iterator/zip_iterator.hpp:21, from rnnlib4seshat/Helpers.hpp:50, from rnnlib4seshat/DataSequence.hpp:48, from symrec.h:30, from production.h:28, from hypothesis.h:30, from cellcyk.h:24, from tablecyk.h:26, from sample.h:27, from symfeatures.h:32, from symfeatures.cc:18: /usr/include/boost/fusion/iterator/deref.hpp:69:5: note: candidate: template<class Iterator> typename boost::fusion::result_of::deref<Iterator>::type boost::fusion::operator*(const boost::fusion::iterator_base<Derived>&) operator*(iterator_base<Iterator> const& i) ^ /usr/include/boost/fusion/iterator/deref.hpp:69:5: note: template argument deduction/substitution failed: In file included from rnnlib4seshat/Helpers.hpp:72:0, from rnnlib4seshat/DataSequence.hpp:48, from symrec.h:30, from production.h:28, from hypothesis.h:30, from cellcyk.h:24, from tablecyk.h:26, from sample.h:27, from symfeatures.h:32, from symfeatures.cc:18: rnnlib4seshat/Log.hpp:169:26: note: candidate: template<class T> Log<T> operator*(Log<T>, Log<T>) template<class T> Log<T> operator *(Log<T> log1, Log<T> log2) ^ rnnlib4seshat/Log.hpp:169:26: note: template argument deduction/substitution failed: In file included from /usr/include/boost/fusion/adapted/boost_tuple/detail/convert_impl.hpp:11:0, from /usr/include/boost/fusion/adapted/boost_tuple.hpp:20, from /usr/include/boost/iterator/zip_iterator.hpp:21, from rnnlib4seshat/Helpers.hpp:50, from rnnlib4seshat/DataSequence.hpp:48, from symrec.h:30, from production.h:28, from hypothesis.h:30, from cellcyk.h:24, from tablecyk.h:26, from sample.h:27, from symfeatures.h:32, from symfeatures.cc:18: /usr/include/boost/fusion/adapted/boost_tuple/detail/build_cons.hpp:53:59: note: 'boost::fusion::transform_view_iterator<boost::fusion::boost_tuple_iterator<const boost::tuples::tuple<double*, __gnu_cxx::__normal_iterator<Log<double>*, std::vector<Log<double>, std::allocator<Log<double> > > >, Log<double>*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >, boost::iterators::detail::dereference_iterator>' is not derived from 'Log<T>' typename result_of::value_of<First>::type v = *f; ^ In file included from /usr/include/boost/detail/container_fwd.hpp:98:0, from /usr/include/boost/functional/hash/extensions.hpp:22, from /usr/include/boost/functional/hash/hash.hpp:558, from /usr/include/boost/bimap/relation/mutant_relation.hpp:29, from /usr/include/boost/bimap/detail/bimap_core.hpp:38, from /usr/include/boost/bimap/bimap.hpp:61, from /usr/include/boost/bimap.hpp:13, from rnnlib4seshat/DataSequence.hpp:47, from symrec.h:30, from production.h:28, from hypothesis.h:30, from cellcyk.h:24, from tablecyk.h:26, from sample.h:27, from symfeatures.h:32, from symfeatures.cc:18: /usr/include/c++/5.3.0/complex:404:5: note: candidate: template<class _Tp> std::complex<_Tp> std::operator*(const _Tp&, const std::complex<_Tp>&) operator*(const _Tp& __x, const complex<_Tp>& __y) ^ /usr/include/c++/5.3.0/complex:404:5: note: template argument deduction/substitution failed: In file included from /usr/include/boost/fusion/adapted/boost_tuple/detail/convert_impl.hpp:11:0, from /usr/include/boost/fusion/adapted/boost_tuple.hpp:20, from /usr/include/boost/iterator/zip_iterator.hpp:21, from rnnlib4seshat/Helpers.hpp:50, from rnnlib4seshat/DataSequence.hpp:48, from symrec.h:30, from production.h:28, from hypothesis.h:30, from cellcyk.h:24, from tablecyk.h:26, from sample.h:27, from symfeatures.h:32, from symfeatures.cc:18: /usr/include/boost/fusion/adapted/boost_tuple/detail/build_cons.hpp:53:59: note: candidate expects 2 arguments, 1 provided typename result_of::value_of<First>::type v = *f; ^ In file included from /usr/include/boost/detail/container_fwd.hpp:98:0, from /usr/include/boost/functional/hash/extensions.hpp:22, from /usr/include/boost/functional/hash/hash.hpp:558, from /usr/include/boost/bimap/relation/mutant_relation.hpp:29, from /usr/include/boost/bimap/detail/bimap_core.hpp:38, from /usr/include/boost/bimap/bimap.hpp:61, from /usr/include/boost/bimap.hpp:13, from rnnlib4seshat/DataSequence.hpp:47, from symrec.h:30, from production.h:28, from hypothesis.h:30, from cellcyk.h:24, from tablecyk.h:26, from sample.h:27, from symfeatures.h:32, from symfeatures.cc:18: /usr/include/c++/5.3.0/complex:395:5: note: candidate: template<class _Tp> std::complex<_Tp> std::operator*(const std::complex<_Tp>&, const _Tp&) operator*(const complex<_Tp>& __x, const _Tp& __y) ^ /usr/include/c++/5.3.0/complex:395:5: note: template argument deduction/substitution failed: In file included from /usr/include/boost/fusion/adapted/boost_tuple/detail/convert_impl.hpp:11:0, from /usr/include/boost/fusion/adapted/boost_tuple.hpp:20, from /usr/include/boost/iterator/zip_iterator.hpp:21, from rnnlib4seshat/Helpers.hpp:50, from rnnlib4seshat/DataSequence.hpp:48, from symrec.h:30, from production.h:28, from hypothesis.h:30, from cellcyk.h:24, from tablecyk.h:26, from sample.h:27, from symfeatures.h:32, from symfeatures.cc:18: /usr/include/boost/fusion/adapted/boost_tuple/detail/build_cons.hpp:53:59: note: 'const boost::fusion::transform_view_iterator<boost::fusion::boost_tuple_iterator<const boost::tuples::tuple<double*, __gnu_cxx::__normal_iterator<Log<double>*, std::vector<Log<double>, std::allocator<Log<double> > > >, Log<double>*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >, boost::iterators::detail::dereference_iterator>' is not derived from 'const std::complex<_Tp>' typename result_of::value_of<First>::type v = *f; ^ In file included from /usr/include/boost/detail/container_fwd.hpp:98:0, from /usr/include/boost/functional/hash/extensions.hpp:22, from /usr/include/boost/functional/hash/hash.hpp:558, from /usr/include/boost/bimap/relation/mutant_relation.hpp:29, from /usr/include/boost/bimap/detail/bimap_core.hpp:38, from /usr/include/boost/bimap/bimap.hpp:61, from /usr/include/boost/bimap.hpp:13, from rnnlib4seshat/DataSequence.hpp:47, from symrec.h:30, from production.h:28, from hypothesis.h:30, from cellcyk.h:24, from tablecyk.h:26, from sample.h:27, from symfeatures.h:32, from symfeatures.cc:18: /usr/include/c++/5.3.0/complex:386:5: note: candidate: template<class _Tp> std::complex<_Tp> std::operator*(const std::complex<_Tp>&, const std::complex<_Tp>&) operator*(const complex<_Tp>& __x, const complex<_Tp>& __y) ^ /usr/include/c++/5.3.0/complex:386:5: note: template argument deduction/substitution failed: In file included from /usr/include/boost/fusion/adapted/boost_tuple/detail/convert_impl.hpp:11:0, from /usr/include/boost/fusion/adapted/boost_tuple.hpp:20, from /usr/include/boost/iterator/zip_iterator.hpp:21, from rnnlib4seshat/Helpers.hpp:50, from rnnlib4seshat/DataSequence.hpp:48, from symrec.h:30, from production.h:28, from hypothesis.h:30, from cellcyk.h:24, from tablecyk.h:26, from sample.h:27, from symfeatures.h:32, from symfeatures.cc:18: /usr/include/boost/fusion/adapted/boost_tuple/detail/build_cons.hpp:53:59: note: 'const boost::fusion::transform_view_iterator<boost::fusion::boost_tuple_iterator<const boost::tuples::tuple<double*, __gnu_cxx::__normal_iterator<Log<double>*, std::vector<Log<double>, std::allocator<Log<double> > > >, Log<double>*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >, boost::iterators::detail::dereference_iterator>' is not derived from 'const std::complex<_Tp>' typename result_of::value_of<First>::type v = *f; ^