facebookincubator/fizz

clang8 failure: no matching function for call to object of type 'folly::detail::Overload

yurivict opened this issue · 4 comments

In file included from /usr/local/include/boost/variant/apply_visitor.hpp:16:
/usr/local/include/boost/variant/detail/apply_visitor_unary.hpp:98:33: error: no matching function for call to object of type 'folly::detail::Overload<(lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:67:9), (lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:72:9), (lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:77:9)>'
        typedef decltype(true ? boost::declval< Visitor& >()( boost::declval< value_t >() )
                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/boost/variant/detail/apply_visitor_unary.hpp:108:22: note: in instantiation of template class 'boost::detail::variant::result_multideduce1<folly::detail::Overload<(lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:67:9), (lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:72:9), (lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:77:9)>, boost::variant<fizz::AppWrite, fizz::EarlyAppWrite, fizz::AppClose, fizz::WriteNewSessionTicket> >::deduce_impl<boost::mpl::l_iter<boost::mpl::l_item<mpl_::long_<4>, fizz::AppWrite, boost::mpl::l_item<mpl_::long_<3>, fizz::EarlyAppWrite, boost::mpl::l_item<mpl_::long_<2>, fizz::AppClose, boost::mpl::l_item<mpl_::long_<1>, fizz::WriteNewSessionTicket, boost::mpl::l_end> > > > >, void>' requested here
    typedef typename deduce_impl<begin_it>::type type;
                     ^
/usr/local/include/boost/variant/detail/apply_visitor_unary.hpp:114:22: note: in instantiation of template class 'boost::detail::variant::result_multideduce1<folly::detail::Overload<(lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:67:9), (lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:72:9), (lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:77:9)>, boost::variant<fizz::AppWrite, fizz::EarlyAppWrite, fizz::AppClose, fizz::WriteNewSessionTicket> >' requested here
    typedef typename result_multideduce1<Visitor, Variant>::type result_type;
                     ^
/usr/local/include/boost/variant/detail/apply_visitor_unary.hpp:135:98: note: in instantiation of template class 'boost::detail::variant::result_wrapper1<folly::detail::Overload<(lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:67:9), (lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:72:9), (lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:77:9)>, boost::variant<fizz::AppWrite, fizz::EarlyAppWrite, fizz::AppClose, fizz::WriteNewSessionTicket> >' requested here
    boost::detail::variant::result_wrapper1<Visitor, typename remove_reference<Visitable>::type> cpp14_vis(::boost::forward<Visitor>(visitor));
                                                                                                 ^
/usr/local/include/folly/Overload.h:75:10: note: in instantiation of function template specialization 'boost::apply_visitor<folly::detail::Overload<(lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:67:9), (lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:72:9), (lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:77:9)>, boost::variant<fizz::AppWrite, fizz::EarlyAppWrite, fizz::AppClose, fizz::WriteNewSessionTicket> &>' requested here
  return apply_visitor(
         ^
/usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:65:12: note: in instantiation of function template specialization 'folly::variant_match<boost::variant<fizz::AppWrite, fizz::EarlyAppWrite, fizz::AppClose, fizz::WriteNewSessionTicket> &, (lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:67:9), (lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:72:9), (lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:77:9)>' requested here
    folly::variant_match(
           ^
/usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/client/AsyncFizzClient-inl.h:341:15: note: in instantiation of member function 'fizz::FizzBase<fizz::client::FizzClient<fizz::client::AsyncFizzClientT<fizz::client::ClientStateMachine>::ActionMoveVisitor, fizz::client::ClientStateMachine>, fizz::client::AsyncFizzClientT<fizz::client::ClientStateMachine>::ActionMoveVisitor, fizz::client::ClientStateMachine>::moveToErrorState' requested here
  fizzClient_.moveToErrorState(ex);
              ^
/usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/client/AsyncFizzClient-inl.h:66:5: note: in instantiation of member function 'fizz::client::AsyncFizzClientT<fizz::client::ClientStateMachine>::deliverAllErrors' requested here
    deliverAllErrors(ase, false);
    ^
/usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/test/HandshakeTest.cpp:182:14: note: in instantiation of member function 'fizz::client::AsyncFizzClientT<fizz::client::ClientStateMachine>::connect' requested here
    client_->connect(
             ^
/usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:67:9: note: candidate function not viable: expects an l-value for 1st argument
        [&ex](AppWrite& write) {
        ^
/usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:72:9: note: candidate function not viable: no known conversion from 'fizz::AppWrite' to 'fizz::EarlyAppWrite &' for 1st argument
        [&ex](EarlyAppWrite& write) {
        ^
/usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:77:9: note: candidate function [with $0 = fizz::AppWrite] not viable: expects an l-value for 1st argument
        [](auto&) {});
        ^
In file included from /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/test/HandshakeTest.cpp:12:
In file included from /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/client/AsyncFizzClient.h:11:
In file included from /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/client/ClientExtensions.h:11:
In file included from /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/record/Types.h:11:
In file included from /usr/local/include/boost/variant.hpp:17:
In file included from /usr/local/include/boost/variant/variant.hpp:34:
In file included from /usr/local/include/boost/variant/detail/hash_variant.hpp:22:
In file included from /usr/local/include/boost/variant/apply_visitor.hpp:16:
/usr/local/include/boost/variant/detail/apply_visitor_unary.hpp:98:33: error: no matching function for call to object of type 'folly::detail::Overload<(lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:149:11), (lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:153:11), (lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:156:11), (lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:159:11)>'
        typedef decltype(true ? boost::declval< Visitor& >()( boost::declval< value_t >() )
                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/boost/variant/detail/apply_visitor_unary.hpp:108:22: note: in instantiation of template class 'boost::detail::variant::result_multideduce1<folly::detail::Overload<(lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:149:11), (lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:153:11), (lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:156:11), (lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:159:11)>, boost::variant<fizz::AppWrite, fizz::EarlyAppWrite, fizz::AppClose, fizz::WriteNewSessionTicket> >::deduce_impl<boost::mpl::l_iter<boost::mpl::l_item<mpl_::long_<4>, fizz::AppWrite, boost::mpl::l_item<mpl_::long_<3>, fizz::EarlyAppWrite, boost::mpl::l_item<mpl_::long_<2>, fizz::AppClose, boost::mpl::l_item<mpl_::long_<1>, fizz::WriteNewSessionTicket, boost::mpl::l_end> > > > >, void>' requested here
    typedef typename deduce_impl<begin_it>::type type;
                     ^
/usr/local/include/boost/variant/detail/apply_visitor_unary.hpp:114:22: note: in instantiation of template class 'boost::detail::variant::result_multideduce1<folly::detail::Overload<(lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:149:11), (lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:153:11), (lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:156:11), (lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:159:11)>, boost::variant<fizz::AppWrite, fizz::EarlyAppWrite, fizz::AppClose, fizz::WriteNewSessionTicket> >' requested here
    typedef typename result_multideduce1<Visitor, Variant>::type result_type;
                     ^
/usr/local/include/boost/variant/detail/apply_visitor_unary.hpp:135:98: note: in instantiation of template class 'boost::detail::variant::result_wrapper1<folly::detail::Overload<(lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:149:11), (lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:153:11), (lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:156:11), (lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:159:11)>, boost::variant<fizz::AppWrite, fizz::EarlyAppWrite, fizz::AppClose, fizz::WriteNewSessionTicket> >' requested here
    boost::detail::variant::result_wrapper1<Visitor, typename remove_reference<Visitable>::type> cpp14_vis(::boost::forward<Visitor>(visitor));
                                                                                                 ^
/usr/local/include/folly/Overload.h:75:10: note: in instantiation of function template specialization 'boost::apply_visitor<folly::detail::Overload<(lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:149:11), (lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:153:11), (lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:156:11), (lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:159:11)>, boost::variant<fizz::AppWrite, fizz::EarlyAppWrite, fizz::AppClose, fizz::WriteNewSessionTicket> &>' requested here
  return apply_visitor(
         ^
/usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:147:14: note: in instantiation of function template specialization 'folly::variant_match<boost::variant<fizz::AppWrite, fizz::EarlyAppWrite, fizz::AppClose, fizz::WriteNewSessionTicket> &, (lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:149:11), (lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:153:11), (lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:156:11), (lambda at /usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:159:11)>' requested here
      folly::variant_match(
             ^
/usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:111:3: note: (skipping 1 context in backtrace; use -ftemplate-backtrace-limit=0 to see all)
  processPendingEvents();
  ^
/usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/client/FizzClient-inl.h:60:9: note: in instantiation of member function 'fizz::FizzBase<fizz::client::FizzClient<fizz::client::AsyncFizzClientT<fizz::client::ClientStateMachine>::ActionMoveVisitor, fizz::client::ClientStateMachine>, fizz::client::AsyncFizzClientT<fizz::client::ClientStateMachine>::ActionMoveVisitor, fizz::client::ClientStateMachine>::processActions' requested here
  this->processActions(std::move(actions));
        ^
/usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/protocol/FizzBase-inl.h:123:32: note: in instantiation of member function 'fizz::client::FizzClient<fizz::client::AsyncFizzClientT<fizz::client::ClientStateMachine>::ActionMoveVisitor, fizz::client::ClientStateMachine>::startActions' requested here
  static_cast<Derived*>(this)->startActions(std::move(actions));
                               ^
/usr/ports/security/fizz/work/fizz-2019.06.10.00/fizz/client/FizzClient-inl.h:19:9: note: in instantiation of member function 'fizz::FizzBase<fizz::client::FizzClient<fizz::client::AsyncFizzClientT<fizz::client::ClientStateMachine>::ActionMoveVisitor, fizz::client::ClientStateMachine>, fizz::client::AsyncFizzClientT<fizz::client::ClientStateMachine>::ActionMoveVisitor, fizz::client::ClientStateMachine>::addProcessingActions' requested here
  this->addProcessingActions(this->machine_.processConnect(
        ^

boost-libs-1.70.0_1
FreeBSD 12

Looks similar to #25 and we know Boost 1.70 broke lvalue visitors which we use in fizz. Try applying the patch to boost or using 1.69?

Try applying the patch to boost or using 1.69?

I am trying to create the FreeBSD port for fuzzy. The boost version is fixed, I can't roll it back or patch. Boost is installed from the package boost-libs-1.70.0.

Ah, you'll have to wait until boost releases the fix as part of a new release and FreeBSD packages it, I guess. That version of boost is known to be incompatible with Fizz.

I landed a workaround for this Boost 1.70 regression in b31cee5 which should fix the compilation errors.