Code Monkey home page Code Monkey logo

utility's Introduction

Boost.Utility

Boost.Utility, part of collection of the Boost C++ Libraries, provides a number of smaller components, too small to be called libraries in their own right. See the documentation for the list of components.

Directories

  • doc - Documentation sources
  • include - Interface headers of Boost.Utility
  • test - Boost.Utility unit tests

More information

  • Documentation
  • Report bugs. Be sure to mention Boost version, Boost.Utility component, platform and compiler you're using. A small compilable code sample to reproduce the problem is always good as well.
  • Submit your patches as pull requests against develop branch. Note that by submitting patches you agree to license your modifications under the Boost Software License, Version 1.0.

Build status

Branch GitHub Actions AppVeyor Test Matrix Dependencies
master GitHub Actions AppVeyor Tests Dependencies
develop GitHub Actions AppVeyor Tests Dependencies

License

Distributed under the Boost Software License, Version 1.0.

utility's People

Contributors

alandefreitas avatar beman avatar ctmacuser avatar d-frey avatar dabrahams avatar danieljames avatar dimztimz avatar douggregor avatar fcacciola avatar glenfe avatar grafikrobot avatar jensmaurer avatar jewillco avatar jfalcou avatar jsiek avatar jzmaddock avatar lastique avatar lcaminiti avatar mcalabrese avatar mclow avatar morinmorin avatar pdimov avatar rxg avatar steveire avatar straszheim avatar swatanabe avatar tonyelewis avatar toonknapen avatar viboes avatar vprus avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

utility's Issues

compressed_pair doesn't work with an empty final struct

As recently discussed on the user list, final classes break EBO. This test case causes a compile error:

#include <boost/compressed_pair.hpp>

struct final_type final {};

int main() {
    boost::compressed_pair<final_type, int> x;
}

This can be fixed for some compilers using a wrapper such as this one by Nevin Liber: https://github.com/nliber/cool/blob/master/ebo_wrapper.h using boost::is_final rather than std::is_final. Such a wrapper would also be useful for other libraries which implement EBO themselves.

boost::is_final from type traits supports recent clang and gcc, and will hopefully support recent Visual C++ 2013 and later with boostorg/type_traits#60. That will still leave some compilers where final is available but boost::is_final doesn't work. As Nevin suggested, the user can specialize is_final to support such types. I don't see any better solution for such compilers.

compare_pointees.hpp should permit a predicate

Suppose I have

std::optional<std::pair<int, float>> a, b;

and I want to test equality (or less-than-ness) of the float part, still treating them as optional. That is, thinking of them as optional floats. If equal_pointees had a predicate argument, I could do

equal_pointees(a, b, [](auto& x, auto& y) { return std::get<float>(x) == std::get<float>(y); });

The particular case I'd use this is where I've got a big struct representing the state of a view. For the current frame, I have a pointer to the previous one and a pointer to the current one and I want to decide if I have to a certain part of the work of redrawing. That is, either they have different nullness that's different, or if they are both non-null then compare a projection of them that pertains to the thing I care about.

Missing operator in less_than_comparable2?

Due to a compilation error, I just had a look at Boost.Operators and think there's an inconcistency in less_than_comparable2.
From my understand, it should generate:

  • operator<=(T, U)
  • operator>=(T, U)
  • operator> (T, U)
  • operator< (U, T)
  • operator<=(U, T)
  • operator>=(U, T)
  • operator> (U, T)

based on the user-supplied operator<(T, U) - aka extend less_than_comparable1 for two types (1), but operator>(T, U) is actually missing in less_than_comparable2.
Is this a bug or a deliberate design?

(1) Note that equality_comparable2 exhibits exactly that behavior compared to equality_comparable1.

wrong result for empty string find/rfind

 {
    using string = std::string;
    using string_view = boost::string_ref;
    string es1;
    string es2;
    string_view ev1{es1};
    string_view ev2{es2};
    {
      const auto rs = es1.find(es2);
      const auto rv = ev1.find(ev2);
      assert(rs == rv);
    }
    {
      const auto rs = es1.rfind(es2);
      const auto rv = ev1.rfind(ev2);
      assert(rs == rv);
    }
}

Build error on windows (VS 2017) on x86 but not x64 (using boost 1.69.0)

I am using Boost 1.69.0. I have a program which builds fine on x64 using Windows and VS 2017 but not x86. I am using boost/log but I believe (from the error message) that the error is in boost/utility.

My program pulls in a number of headers from boost while building my compilation unit Logger.cpp.

// via EnumSupport.h
#include <boost/bimap.hpp>
#include <boost/optional.hpp>

// via LogLevel.h
#include <boost/log/expressions.hpp>
#include <boost/log/support/date_time.hpp>

// via AppenderConfig.h
#include <boost/log/expressions.hpp>

// via FolderConfig.h
#include <boost/filesystem/path.hpp>

// via Logger.h
#include <boost/filesystem/path.hpp>

#pragma warning (push)
#pragma warning (disable: 4714) // function marked as __forceinline is not inlined --> boost::log::v2s_mt_nt6::aux::attribute_set_reference_proxy::mapped_type(void)
#include <boost/log/core.hpp>
#include <boost/log/sinks.hpp>
#pragma warning (pop)

#include <boost/smart_ptr/shared_ptr.hpp>

// via exceptions.h
#include <boost/stacktrace.hpp>
#include <boost/exception/all.hpp>

// Logger.cpp
#include <boost/core/null_deleter.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/log/core.hpp>
#include <boost/log/attributes.hpp>
#include <boost/phoenix/bind.hpp>

The build error is shown below.

29>Logger.cpp
29>c:\.conan\yk47mx\1\include\boost\utility\result_of.hpp(208): error C2825: 'F': must be a class or namespace when followed by '::'
29>c:\.conan\yk47mx\1\include\boost\utility\result_of.hpp(216): note: see reference to class template instantiation 'boost::detail::result_of_nested_result<F,FArgs>' being compiled
29>        with
29>        [
29>            F=bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>),
29>            FArgs=bool (__cdecl panopto::base::log::AppenderConfig::* (panopto::base::log::FolderConfig *const &,const boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword> &,const boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword> &))(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)
29>        ]
29>c:\.conan\yk47mx\1\include\boost\utility\detail\result_of_iterate.hpp(70): note: see reference to class template instantiation 'boost::detail::tr1_result_of_impl<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>),bool (__cdecl panopto::base::log::AppenderConfig::* (T0,T1,T2))(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>),false>' being compiled
29>        with
29>        [
29>            T0=panopto::base::log::FolderConfig *const &,
29>            T1=const boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword> &,
29>            T2=const boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword> &
29>        ]
29>c:\.conan\yk47mx\1\include\boost\utility\detail\result_of_iterate.hpp(43): note: see reference to class template instantiation 'boost::detail::cpp0x_result_of<F (T0,T1,T2)>' being compiled
29>        with
29>        [
29>            F=bool (__cdecl panopto::base::log::AppenderConfig::* const )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>),
29>            T0=panopto::base::log::FolderConfig *const &,
29>            T1=const boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword> &,
29>            T2=const boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword> &
29>        ]
29>c:\.conan\yk47mx\1\include\boost\phoenix\core\detail\function_eval.hpp(116): note: see reference to class template instantiation 'boost::result_of<bool (__cdecl panopto::base::log::AppenderConfig::* const (panopto::base::log::FolderConfig *const &,const boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword> &,const boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword> &))(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>' being compiled
29>c:\.conan\yk47mx\1\include\boost\phoenix\core\detail\function_eval.hpp(89): note: see reference to class template instantiation 'boost::phoenix::detail::function_eval::result_impl<F,void (Head,const boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,ActorT>&,const boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,ActorT>&),const boost::phoenix::vector2<Env,Actions> &>' being compiled
29>        with
29>        [
29>            F=const boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0> &,
29>            Head=const boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0> &,
29>            ActorT=boost::phoenix::actor,
29>            Env=boost::phoenix::vector2<const boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval,boost::proto::argsns_::list4<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0>,boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,boost::phoenix::actor>,boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,boost::phoenix::actor>>,4>> *,const boost::log::v2s_mt_nt6::attribute_value_set &> &,
29>            Actions=const boost::phoenix::default_actions &
29>        ]
29>c:\.conan\yk47mx\1\include\boost\phoenix\core\detail\function_eval.hpp(89): note: see reference to class template instantiation 'boost::phoenix::detail::function_eval::result_impl<F,void (Head,const boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,ActorT>&),const boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,ActorT> &,const boost::phoenix::vector2<Env,Actions> &>' being compiled
29>        with
29>        [
29>            F=const boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0> &,
29>            Head=const boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0> &,
29>            ActorT=boost::phoenix::actor,
29>            Env=boost::phoenix::vector2<const boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval,boost::proto::argsns_::list4<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0>,boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,boost::phoenix::actor>,boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,boost::phoenix::actor>>,4>> *,const boost::log::v2s_mt_nt6::attribute_value_set &> &,
29>            Actions=const boost::phoenix::default_actions &
29>        ]
29>c:\.conan\yk47mx\1\include\boost\phoenix\core\detail\function_eval.hpp(89): note: see reference to class template instantiation 'boost::phoenix::detail::function_eval::result_impl<F,void (Head),const boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,ActorT> &,const boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,ActorT> &,const boost::phoenix::vector2<Env,Actions> &>' being compiled
29>        with
29>        [
29>            F=const boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0> &,
29>            Head=const boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0> &,
29>            ActorT=boost::phoenix::actor,
29>            Env=boost::phoenix::vector2<const boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval,boost::proto::argsns_::list4<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0>,boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,boost::phoenix::actor>,boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,boost::phoenix::actor>>,4>> *,const boost::log::v2s_mt_nt6::attribute_value_set &> &,
29>            Actions=const boost::phoenix::default_actions &
29>        ]
29>c:\.conan\yk47mx\1\include\boost\phoenix\core\detail\function_eval.hpp(128): note: see reference to class template instantiation 'boost::phoenix::detail::function_eval::result_impl<F,void (void),const boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0> &,const boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,ActorT> &,const boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,ActorT> &,const boost::phoenix::vector2<Env,Actions> &>' being compiled
29>        with
29>        [
29>            F=const boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0> &,
29>            ActorT=boost::phoenix::actor,
29>            Env=boost::phoenix::vector2<const boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval,boost::proto::argsns_::list4<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0>,boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,boost::phoenix::actor>,boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,boost::phoenix::actor>>,4>> *,const boost::log::v2s_mt_nt6::attribute_value_set &> &,
29>            Actions=const boost::phoenix::default_actions &
29>        ]
29>c:\.conan\yk47mx\1\include\boost\utility\detail\result_of_iterate.hpp(135): note: see reference to class template instantiation 'boost::phoenix::detail::function_eval::result<boost::phoenix::detail::function_eval (const Expr &,const boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0> &,const boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,ActorT> &,const boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,ActorT> &,const boost::phoenix::vector2<Env,Actions> &)>' being compiled
29>        with
29>        [
29>            Expr=boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0>,
29>            ActorT=boost::phoenix::actor,
29>            Env=boost::phoenix::vector2<const boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval,boost::proto::argsns_::list4<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0>,boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,boost::phoenix::actor>,boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,boost::phoenix::actor>>,4>> *,const boost::log::v2s_mt_nt6::attribute_value_set &> &,
29>            Actions=const boost::phoenix::default_actions &
29>        ]
29>c:\.conan\yk47mx\1\include\boost\utility\detail\result_of_iterate.hpp(43): note: see reference to class template instantiation 'boost::detail::cpp0x_result_of<F (T0,T1,T2,T3,T4)>' being compiled
29>        with
29>        [
29>            F=boost::phoenix::detail::function_eval,
29>            T0=const boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0> &,
29>            T1=const boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0> &,
29>            T2=const boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,boost::phoenix::actor> &,
29>            T3=const boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,boost::phoenix::actor> &,
29>            T4=boost::phoenix::vector2<boost::phoenix::vector2<const boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval,boost::proto::argsns_::list4<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0>,boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,boost::phoenix::actor>,boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,boost::phoenix::actor>>,4>> *,const boost::log::v2s_mt_nt6::attribute_value_set &> &,const boost::phoenix::default_actions &>
29>        ]
29>c:\.conan\yk47mx\1\include\boost\phoenix\core\call.hpp(86): note: see reference to class template instantiation 'boost::result_of<Fun (const boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0> &,const boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0> &,const boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,ActorT> &,const boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,ActorT> &,boost::phoenix::vector2<Env,Actions>)>' being compiled
29>        with
29>        [
29>            Fun=boost::phoenix::detail::function_eval,
29>            ActorT=boost::phoenix::actor,
29>            Env=boost::phoenix::vector2<const boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval,boost::proto::argsns_::list4<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0>,boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,boost::phoenix::actor>,boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,boost::phoenix::actor>>,4>> *,const boost::log::v2s_mt_nt6::attribute_value_set &> &,
29>            Actions=const boost::phoenix::default_actions &
29>        ]
29>c:\.conan\yk47mx\1\include\boost\phoenix\core\call.hpp(105): note: see reference to class template instantiation 'boost::phoenix::detail::call_impl_<Fun,Expr,State,Data,boost::fusion::detail::index_sequence<0,1,2,3>>' being compiled
29>        with
29>        [
29>            Fun=boost::phoenix::detail::function_eval,
29>            Expr=const boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval,boost::proto::argsns_::list4<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0>,boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,boost::phoenix::actor>,boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,boost::phoenix::actor>>,4> &,
29>            State=boost::phoenix::vector2<const boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval,boost::proto::argsns_::list4<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0>,boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,boost::phoenix::actor>,boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,boost::phoenix::actor>>,4>> *,const boost::log::v2s_mt_nt6::attribute_value_set &> &,
29>            Data=const boost::phoenix::default_actions &
29>        ]
29>c:\.conan\yk47mx\1\include\boost\phoenix\core\call.hpp(117): note: see reference to class template instantiation 'boost::phoenix::detail::call_impl<Fun,Expr,State,Data,4>' being compiled
29>        with
29>        [
29>            Fun=boost::phoenix::detail::function_eval,
29>            Expr=const boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval,boost::proto::argsns_::list4<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0>,boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,boost::phoenix::actor>,boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,boost::phoenix::actor>>,4> &,
29>            State=boost::phoenix::vector2<const boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval,boost::proto::argsns_::list4<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0>,boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,boost::phoenix::actor>,boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,boost::phoenix::actor>>,4>> *,const boost::log::v2s_mt_nt6::attribute_value_set &> &,
29>            Data=const boost::phoenix::default_actions &
29>        ]
29>c:\.conan\yk47mx\1\include\boost\proto\transform\when.hpp(194): note: see reference to class template instantiation 'boost::phoenix::call<boost::phoenix::detail::function_eval,void>::impl<Expr,State,Data>' being compiled
29>        with
29>        [
29>            Expr=const boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval,boost::proto::argsns_::list4<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0>,boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,boost::phoenix::actor>,boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,boost::phoenix::actor>>,4> &,
29>            State=boost::phoenix::vector2<const boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval,boost::proto::argsns_::list4<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0>,boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,boost::phoenix::actor>,boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,boost::phoenix::actor>>,4>> *,const boost::log::v2s_mt_nt6::attribute_value_set &> &,
29>            Data=const boost::phoenix::default_actions &
29>        ]
29>c:\.conan\yk47mx\1\include\boost\proto\matches.hpp(836): note: see reference to class template instantiation 'boost::proto::when<Rule,boost::proto::external_transform>::impl<Expr &,State,Data>' being compiled
29>        with
29>        [
29>            Rule=boost::phoenix::detail::rule::function_eval,
29>            Expr=boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval,boost::proto::argsns_::list4<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0>,boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,boost::phoenix::actor>,boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,boost::phoenix::actor>>,4>,
29>            State=boost::phoenix::vector2<const boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval,boost::proto::argsns_::list4<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0>,boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,boost::phoenix::actor>,boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,boost::phoenix::actor>>,4>> *,const boost::log::v2s_mt_nt6::attribute_value_set &> &,
29>            Data=const boost::phoenix::default_actions &
29>        ]
29>c:\.conan\yk47mx\1\include\boost\phoenix\core\meta_grammar.hpp(66): note: see reference to class template instantiation 'boost::proto::switch_<boost::phoenix::meta_grammar,boost::proto::tag_of<boost::proto::_> (void)>::impl<Expr,boost::phoenix::vector2<A0,A1> &,const boost::phoenix::default_actions &>' being compiled
29>        with
29>        [
29>            Expr=const boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval,boost::proto::argsns_::list4<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0>,boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,boost::phoenix::actor>,boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,boost::phoenix::actor>>,4> &,
29>            A0=const boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval,boost::proto::argsns_::list4<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0>,boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,boost::phoenix::actor>,boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,boost::phoenix::actor>>,4>> *,
29>            A1=const boost::log::v2s_mt_nt6::attribute_value_set &
29>        ]
29>c:\.conan\yk47mx\1\include\boost\phoenix\core\actor.hpp(98): note: see reference to class template instantiation 'boost::phoenix::evaluator::impl<const Expr &,const boost::phoenix::vector2<boost::phoenix::vector2<A0,A1> &,boost::phoenix::default_actions> &,boost::proto::envns_::empty_env>' being compiled
29>        with
29>        [
29>            Expr=boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval,boost::proto::argsns_::list4<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0>,boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,boost::phoenix::actor>,boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,boost::phoenix::actor>>,4>,
29>            A0=const boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval,boost::proto::argsns_::list4<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0>,boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,boost::phoenix::actor>,boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,boost::phoenix::actor>>,4>> *,
29>            A1=const boost::log::v2s_mt_nt6::attribute_value_set &
29>        ]
29>c:\.conan\yk47mx\1\include\boost\phoenix\core\actor.hpp(103): note: see reference to class template instantiation 'boost::phoenix::result_of::actor_impl<Expr,const boost::log::v2s_mt_nt6::attribute_value_set &>' being compiled
29>        with
29>        [
29>            Expr=boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval,boost::proto::argsns_::list4<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0>,boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,boost::phoenix::actor>,boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,boost::phoenix::actor>>,4>
29>        ]
29>c:\.conan\yk47mx\1\include\boost\phoenix\core\actor.hpp(195): note: see reference to class template instantiation 'boost::phoenix::result_of::actor<boost::proto::exprns_::basic_expr<Tag,Args,4>,const boost::log::v2s_mt_nt6::attribute_value_set &>' being compiled
29>        with
29>        [
29>            Tag=boost::phoenix::detail::tag::function_eval,
29>            Args=boost::proto::argsns_::list4<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0>,boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,boost::phoenix::actor>,boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,boost::phoenix::actor>>
29>        ]
29>c:\.conan\yk47mx\1\include\boost\log\detail\light_function.hpp(155): note: see reference to class template instantiation 'boost::phoenix::actor<boost::proto::exprns_::basic_expr<Tag,Args,4>>::result<boost::phoenix::actor<boost::proto::exprns_::basic_expr<Tag,Args,4>> (const boost::log::v2s_mt_nt6::attribute_value_set &)>' being compiled
29>        with
29>        [
29>            Tag=boost::phoenix::detail::tag::function_eval,
29>            Args=boost::proto::argsns_::list4<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0>,boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,boost::phoenix::actor>,boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,boost::phoenix::actor>>
29>        ]
29>c:\.conan\yk47mx\1\include\boost\log\detail\light_function.hpp(154): note: while compiling class template member function 'bool boost::log::v2s_mt_nt6::aux::light_function<bool (const boost::log::v2s_mt_nt6::attribute_value_set &)>::impl<boost::phoenix::actor<boost::proto::exprns_::basic_expr<Tag,Args,4>>>::invoke_impl(void *,const boost::log::v2s_mt_nt6::attribute_value_set &)'
29>        with
29>        [
29>            Tag=boost::phoenix::detail::tag::function_eval,
29>            Args=boost::proto::argsns_::list4<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0>,boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,boost::phoenix::actor>,boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,boost::phoenix::actor>>
29>        ]
29>c:\.conan\yk47mx\1\include\boost\log\detail\light_function.hpp(132): note: see reference to function template instantiation 'bool boost::log::v2s_mt_nt6::aux::light_function<bool (const boost::log::v2s_mt_nt6::attribute_value_set &)>::impl<boost::phoenix::actor<boost::proto::exprns_::basic_expr<Tag,Args,4>>>::invoke_impl(void *,const boost::log::v2s_mt_nt6::attribute_value_set &)' being compiled
29>        with
29>        [
29>            Tag=boost::phoenix::detail::tag::function_eval,
29>            Args=boost::proto::argsns_::list4<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0>,boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,boost::phoenix::actor>,boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,boost::phoenix::actor>>
29>        ]
29>c:\.conan\yk47mx\1\include\boost\log\detail\light_function.hpp(193): note: see reference to class template instantiation 'boost::log::v2s_mt_nt6::aux::light_function<bool (const boost::log::v2s_mt_nt6::attribute_value_set &)>::impl<boost::phoenix::actor<boost::proto::exprns_::basic_expr<Tag,Args,4>>>' being compiled
29>        with
29>        [
29>            Tag=boost::phoenix::detail::tag::function_eval,
29>            Args=boost::proto::argsns_::list4<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0>,boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,boost::phoenix::actor>,boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,boost::phoenix::actor>>
29>        ]
29>c:\.conan\yk47mx\1\include\boost\log\expressions\filter.hpp(90): note: see reference to function template instantiation 'boost::log::v2s_mt_nt6::aux::light_function<bool (const boost::log::v2s_mt_nt6::attribute_value_set &)>::light_function<const FunT&>(const boost::phoenix::actor<boost::proto::exprns_::basic_expr<Tag,Args,4>>&)' being compiled
29>        with
29>        [
29>            FunT=boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval,boost::proto::argsns_::list4<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0>,boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,boost::phoenix::actor>,boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,boost::phoenix::actor>>,4>>,
29>            Tag=boost::phoenix::detail::tag::function_eval,
29>            Args=boost::proto::argsns_::list4<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0>,boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,boost::phoenix::actor>,boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,boost::phoenix::actor>>
29>        ]
29>c:\.conan\yk47mx\1\include\boost\log\expressions\filter.hpp(89): note: see reference to function template instantiation 'boost::log::v2s_mt_nt6::aux::light_function<bool (const boost::log::v2s_mt_nt6::attribute_value_set &)>::light_function<const FunT&>(const boost::phoenix::actor<boost::proto::exprns_::basic_expr<Tag,Args,4>>&)' being compiled
29>        with
29>        [
29>            FunT=boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval,boost::proto::argsns_::list4<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0>,boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,boost::phoenix::actor>,boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,boost::phoenix::actor>>,4>>,
29>            Tag=boost::phoenix::detail::tag::function_eval,
29>            Args=boost::proto::argsns_::list4<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0>,boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,boost::phoenix::actor>,boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,boost::phoenix::actor>>
29>        ]
29>c:\.conan\yk47mx\1\include\boost\log\expressions\filter.hpp(144): note: see reference to function template instantiation 'boost::log::v2s_mt_nt6::filter::filter<const FunT&>(const boost::phoenix::actor<boost::proto::exprns_::basic_expr<Tag,Args,4>>&)' being compiled
29>        with
29>        [
29>            FunT=boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval,boost::proto::argsns_::list4<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0>,boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,boost::phoenix::actor>,boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,boost::phoenix::actor>>,4>>,
29>            Tag=boost::phoenix::detail::tag::function_eval,
29>            Args=boost::proto::argsns_::list4<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0>,boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,boost::phoenix::actor>,boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,boost::phoenix::actor>>
29>        ]
29>c:\.conan\yk47mx\1\include\boost\log\sinks\basic_sink_frontend.hpp(90): note: see reference to function template instantiation 'boost::log::v2s_mt_nt6::filter &boost::log::v2s_mt_nt6::filter::operator =<FunT>(const FunT &)' being compiled
29>        with
29>        [
29>            FunT=boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval,boost::proto::argsns_::list4<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0>,boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,boost::phoenix::actor>,boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,boost::phoenix::actor>>,4>>
29>        ]
29>c:\dev\github\panopto\panopto-core\panopto\media\native\panopto.native.base.lib\src\panopto\base\log\logger.cpp(277): note: see reference to function template instantiation 'void boost::log::v2s_mt_nt6::sinks::basic_sink_frontend::set_filter<boost::phoenix::actor<boost::proto::exprns_::basic_expr<Tag,Args,4>>>(const FunT &)' being compiled
29>        with
29>        [
29>            Tag=boost::phoenix::detail::tag::function_eval,
29>            Args=boost::proto::argsns_::list4<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0>,boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,boost::phoenix::actor>,boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,boost::phoenix::actor>>,
29>            FunT=boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval,boost::proto::argsns_::list4<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0>,boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,boost::phoenix::actor>,boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,boost::phoenix::actor>>,4>>
29>        ]
29>c:\.conan\yk47mx\1\include\boost\bind\placeholders.hpp(54): note: see reference to class template instantiation 'boost::arg<9>' being compiled
29>c:\.conan\yk47mx\1\include\boost\bind\placeholders.hpp(53): note: see reference to class template instantiation 'boost::arg<8>' being compiled
29>c:\.conan\yk47mx\1\include\boost\bind\placeholders.hpp(52): note: see reference to class template instantiation 'boost::arg<7>' being compiled
29>c:\.conan\yk47mx\1\include\boost\bind\placeholders.hpp(51): note: see reference to class template instantiation 'boost::arg<6>' being compiled
29>c:\.conan\yk47mx\1\include\boost\bind\placeholders.hpp(50): note: see reference to class template instantiation 'boost::arg<5>' being compiled
29>c:\.conan\yk47mx\1\include\boost\bind\placeholders.hpp(49): note: see reference to class template instantiation 'boost::arg<4>' being compiled
29>c:\.conan\yk47mx\1\include\boost\bind\placeholders.hpp(48): note: see reference to class template instantiation 'boost::arg<3>' being compiled
29>c:\.conan\yk47mx\1\include\boost\bind\placeholders.hpp(47): note: see reference to class template instantiation 'boost::arg<2>' being compiled
29>c:\.conan\yk47mx\1\include\boost\bind\placeholders.hpp(46): note: see reference to class template instantiation 'boost::arg<1>' being compiled
29>c:\.conan\yk47mx\1\include\boost\utility\result_of.hpp(208): error C2903: 'result': symbol is neither a class template nor a function template
29>c:\.conan\yk47mx\1\include\boost\utility\result_of.hpp(208): error C2510: 'F': left of '::' must be a class/struct/union
29>c:\.conan\yk47mx\1\include\boost\utility\result_of.hpp(208): error C2504: 'result': base class undefined
29>c:\.conan\yk47mx\1\include\boost\utility\result_of.hpp(208): error C2143: syntax error: missing ',' before '<'
29>c:\.conan\yk47mx\1\include\boost\phoenix\core\detail\function_eval.hpp(116): error C2039: 'type': is not a member of 'boost::result_of<bool (__cdecl panopto::base::log::AppenderConfig::* const (panopto::base::log::FolderConfig *const &,const boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword> &,const boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword> &))(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>'
29>c:\.conan\yk47mx\1\include\boost\phoenix\core\detail\function_eval.hpp(114): note: see declaration of 'boost::result_of<bool (__cdecl panopto::base::log::AppenderConfig::* const (panopto::base::log::FolderConfig *const &,const boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword> &,const boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword> &))(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>'
29>c:\.conan\yk47mx\1\include\boost\phoenix\core\call.hpp(86): error C2039: 'type': is not a member of 'boost::result_of<Fun (const boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0> &,const boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0> &,const boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,ActorT> &,const boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,ActorT> &,boost::phoenix::vector2<Env,Actions>)>'
29>        with
29>        [
29>            Fun=boost::phoenix::detail::function_eval,
29>            ActorT=boost::phoenix::actor,
29>            Env=boost::phoenix::vector2<const boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval,boost::proto::argsns_::list4<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0>,boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,boost::phoenix::actor>,boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,boost::phoenix::actor>>,4>> *,const boost::log::v2s_mt_nt6::attribute_value_set &> &,
29>            Actions=const boost::phoenix::default_actions &
29>        ]
29>c:\.conan\yk47mx\1\include\boost\phoenix\core\call.hpp(81): note: see declaration of 'boost::result_of<Fun (const boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0> &,const boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0> &,const boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,ActorT> &,const boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,ActorT> &,boost::phoenix::vector2<Env,Actions>)>'
29>        with
29>        [
29>            Fun=boost::phoenix::detail::function_eval,
29>            ActorT=boost::phoenix::actor,
29>            Env=boost::phoenix::vector2<const boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval,boost::proto::argsns_::list4<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<bool (__cdecl panopto::base::log::AppenderConfig::* )(boost::log::v2s_mt_nt6::value_ref<panopto::base::log::LogLevel,panopto::base::log::tag::LevelKeyword>,boost::log::v2s_mt_nt6::value_ref<std::string,panopto::base::log::tag::CategoryKeyword>)>,0>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<panopto::base::log::FolderConfig *>,0>,boost::log::v2s_mt_nt6::expressions::attribute_actor<panopto::base::log::LogLevel,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::LevelKeyword,boost::phoenix::actor>,boost::log::v2s_mt_nt6::expressions::attribute_actor<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::log::v2s_mt_nt6::fallback_to_none,panopto::base::log::tag::CategoryKeyword,boost::phoenix::actor>>,4>> *,const boost::log::v2s_mt_nt6::attribute_value_set &> &,
29>            Actions=const boost::phoenix::default_actions &
29>        ]
29>c:\.conan\yk47mx\1\include\boost\log\detail\light_function.hpp(155): error C2440: 'return': cannot convert from 'boost::type' to 'bool'
29>c:\.conan\yk47mx\1\include\boost\log\detail\light_function.hpp(155): note: No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
29>Done building project "Panopto.Native.Base.Lib.vcxproj" -- FAILED.

error C2676: Binary '+': 'T' does not define this operator or a conversion to an acceptable type for the predefined operator

I have this error when i compile my project using boost 1_79_0:

error C2676: Binary '+': 'T' does not define this operator or a conversion to an acceptable type for the predefined operator in operators.hpp boost:

Here is the problem:

operators.hpp

template<typename X,typename Y> struct add_typeof_helper
{
BOOST_TYPEOF_NESTED_TYPEDEF_TPL(nested, (typeof_::make() + typeof_::make()))
typedef typename nested::type type;
};

I use visual studio 2017, language : C++ /std:c++latest

Thank you in advance for your comments !

[MSVC][std:c++latest] Boost\libs\utility run tests failed due to error C2666: 'comparible_UDT::operator ==': overloaded functions have similar conversions

Description:
After the MSVC team implented P2468R2 The Equality Operator You Are Looking For, we got a compiler error with /std:c++latest like below, the error is due to the equality operator here

bool operator == (const comparible_UDT& v){ return v.i_ == i_; }
is missing 'const'. Could you please look this issue? Thanks.

libs\utility\test\call_traits_test.cpp(131): error C2666: 'comparible_UDT::operator ==': overloaded functions have similar conversions
libs\utility\test\call_traits_test.cpp(204): note: could be 'bool comparible_UDT::operator ==(const comparible_UDT &)'
libs\utility\test\call_traits_test.cpp(204): note: or 'bool comparible_UDT::operator ==(const comparible_UDT &)' [synthesized expression 'y == x']

Note: this issue will be reproduced on next release version of VS (VS17.6 or later)

Repro steps:

  1. open VS2019 x64 tools command
  2. git clone โ€‹https://github.com/boostorg/boost.git F:\gitP\boostorg\boost
  3. git -C "F:\gitP\boostorg\boost" fetch --recurse-submodules=no --force
  4. git -C "F:\gitP\boostorg\boost" reset --hard 0c4090b
  5. git -C "F:\gitP\boostorg\boost" submodule sync
  6. git -C "F:\gitP\boostorg\boost" submodule foreach git reset --hard
  7. git -C "F:\gitP\boostorg\boost" submodule foreach git clean -xdf
  8. git -C "F:\gitP\boostorg\boost" submodule update -f --init --recursive
  9. set CL= /std:c++latest
  10. cd F:\gitP\boostorg\boost
  11. .\bootstrap
  12. .\b2 headers variant=release --build-dir=F:\gitP\boostorg\boost\out\amd64rel address-model=64
  13. .\b2 variant=release --build-dir=F:\gitP\boostorg\boost\out\amd64rel address-model=64
  14. set CL=/D_SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING /D_HAS_DEPRECATED_ADAPTOR_TYPEDEFS=1 /D_HAS_AUTO_PTR_ETC=1 /D_HAS_DEPRECATED_RAW_STORAGE_ITERATOR=1 /D_HAS_DEPRECATED_TEMPORARY_BUFFER=1 /D_HAS_DEPRECATED_NEGATORS=1 /Zc:enumTypes %CL%
  15. set related reference path (in my environment like below):
    set OPENSSL_ROOT=F:\tools\OpenSSL\64
    set path=F:\tools\OpenSSL\64\bin;%path%
    set path=C:\Python\Python27;%path%
  16. .\b2 -j16 variant=release --build-dir=F:\gitP\boostorg\boost\out\amd64rel libs\utility\test address-model=64 > utility_test.log

Detailed log:
utility_test.log

remove_prefix and remove_suffix overly permissive

The implementation contains extra logic:

BOOST_CXX14_CONSTEXPR void remove_prefix(size_type n) {
   if ( n > len_ )
       n = len_;

While the extra check for out-of-range argument value seems nice, it can hide problems. Worse, when eventually users will (have to) switch to other implementations, this will silently introduce UB into code that was unwittingly/wittingly relying on the non-standard behaviour.

Suggest to replace the condition with a BOOST_ASSERT so the danger is removed.

boost::equality_comparable2 operator== can compile into infinite loop with clang10 and -std=c++2a

#include <boost/operators.hpp>

struct my_type : boost::equality_comparable2<my_type, double> {
    explicit my_type(double mem) : mem_{mem}{}
    double mem_{0};
    operator double() {
        return mem_;
    }
    bool operator==(my_type l) {
        return l.mem_ == mem_;
    }
}; 


int main() {
    my_type x{0};
    return x == double{0};
}

https://godbolt.org/z/zy9L4C

expected: return 1

actual: infinite loop

this minimum example is based on the implementation of BOOST_STRONG_TYPEDEF in the boost serialization library. I originally opened an issue in the serialization library boostorg/serialization#201 although it seems that the problem can be further narrowed down to equality_comparable2

the issue only seems to happen on clang10, clang trunk, and gcc trunk with std=c++2a or std=c++20 flag. clang10 and company produce the expected result when passed the std=c++17 flag instead of 2a. other versions (gcc9 and clang9) produce the expected result even with the std=c++2a flag. I tried with boost 1.72 and 1.73 and they both produce the same behavior. as an additional note, the optimization level does seem to affect the behavior.

let me know if any additional info is required. thank you!

boost::phoenix::bind issue in c++17.

Hi All,

I am facing these below issues when I upgrade from boost_1_73 and c++14 to boost_1_77 and c++17.
What will be the problem?
Error 1:
include/boost/utility/result_of.hpp:218:8: error: 'GB* (boost::intrusive_ptr::*)() const noexcept' is not a class, struct, or union type

Error 2:
include/boost/phoenix/core/detail/function_eval.hpp:119:21: error: no type named 'type' in 'struct boost::result_of<GB* (boost::intrusive_ptr::* const(boost::intrusive_ptr&))() const noexcept>'

Thank you.

add c++20/23 constructors to basic_string_view

The following constructors were added:

template <class It, class End> constexpr basic_string_view(It first, End last);
template <class R> constexpr basic_string_view(R&& r);
constexpr basic_string_view(std::nullptr_t) = delete;

(where It/End and R are subject to the usual restrictions)

People might expect these to be present on the Boost implementation.

Use core/lightwieght-test.

Currently some of the tests in utility use the BOOST_CHECK macros from the internal type_traits/test directory. There are better equivalents in the Core Lightweight Testing public utility. It would help out to use those core test macros instead to avoid the extra dependency and to likely resolve some of the issues relating to those BOOST_CHECK macros.

Critical: erronous noexcept specifications on boost::string_view::compare

Some compare overloads are specified to propagate the std::out_of_range exceptions from an inner substr() call.

However these compare overloads have erroneously been marked as noexcept causing programs to abnormally terminated instead.

Reproducer: https://godbolt.org/z/xcM7TsTvj

#include <boost/utility/string_view.hpp>
#include <iostream>

int main() {
    try {
        boost::string_view("123").compare(5, 0, boost::string_view{});
    } catch (std::out_of_range const& oor) {
        std::cout << "not caught - terminated instead\n";
    }
}

operators_test invokes undefined behavior in random input tests

The random input tests of operators_test.cpp invokes undefined behavior such as shifting integers for more than the left operand capacity or signed integer overflows in arithmetic tests. These issues are flagged by UBSAN.

Currently, I have disabled these tests under UBSAN as a workaround to keep UBSAN otherwise enabled. However, the tests as they are are invalid. I'm not sure of the purpose of this series of tests and whether the random input is essential in some regard, so I decided to not remove the tests straight away. But the tests need to be corrected.

CC: @d-frey

Implicit conversion to std::string_view

Hello,

Since system has added automatic conversion from boost::system::error_code to std::error_code I was guessing if there are plans to do the same from boost::string_view to std::string_view which could be very handy.

BOOST_BINARY: operator '##' produced the invalid token ')END_BIT'

I'm using vbcc, a C cross-compiler, targeting Amiga Kickstart 1.3.

The line

custom.dmacon = BOOST_BINARY_U(0000000000000011);

produces the following error:

>       custom.dmacon = BOOST_BINARY_U(0000000000000011)
error 276 in line 96 of "src\main.c": operator '##' produced the invalid token ')END_BIT'

string_view isn't included in the docs

Instead there is a link and documentation only for string_ref.
Also there should be a clear documentation what is the difference between the two and which one is preferred.

string_ref::remove_prefix() doesn't conform with reference

According to the implementation reference for string_ref, remove_prefix(n) should have the effect of:

*this = substr(n, npos);

For constexpr basic_string_ref substr(size_type pos, size_type len=npos) const; the reference reads:

Throws: out_of_range if pos > size().

So

boost::string_ref().remove_prefix(1);   // should throw, but it doesn't
boost::string_ref().remove_suffix(1);   // behaves correct (does not throw)
boost::string_ref().substr(1);          // behaves correct (does throw)

Is there some rationale behind this non standard implementation? I couldn't find any in the docs. It sure is more convenient to not have a throwing remove_prefix() method. But why were only the semantics of remove_prefix() changed and not of substr() itself?

Boost.Operators should embrace constexpr

Thanks to the maintainers of Boost.Utility.

IMHO, the biggest limitation of Boost.Operators is that the operators it provides aren't constexpr. My initial experiments seem to suggest that adding BOOST_CONSTEXPR / BOOST_CXX14_CONSTEXPR to operators.hpp does the trick.

Would a PR along these lines be welcome? Any non-obvious issues of which I should be aware?

small library for std::ios

Hello,
I have developed a small library for accessing std::ios. This saves manual handling of e.g. ios::flags etc.
Could you please include this in boost?
Is boost/utility the right location?

ios.hpp.txt

thx
Gero

std::iterator is deprecated in C++17

1>Unknown compiler version - please run the configure tests and report the results
1>c:\vc\vcpkg\installed\x86-windows\include\boost\operators.hpp(835): error C4996: 'std::iteratorstd::input_iterator_tag,V,D,P,R': warning STL4015: The std::iterator class template (used as a base class to provide typedefs) is deprecated in C++17. (The header is NOT deprecated.) The C++ Standard has never required user-defined iterators to derive from std::iterator. To fix this warning, stop deriving from std::iterator and start providing publicly accessible typedefs named iterator_category, value_type, difference_type, pointer, and reference. Note that value_type is required to be non-const, even for constant iterators. You can define _SILENCE_CXX17_ITERATOR_BASE_CLASS_DEPRECATION_WARNING or _SILENCE_ALL_CXX17_DEPRECATION_WARNINGS to acknowledge that you have received this warning.

MSVC 15.5.0 Preview

string_view constructor isn't constexpr

boost::string_view could be a good choice for compilers that do not support constexpr string_view yet. But with boost::string_view one cannot create constexpr globals either because the converting constructor isn't constexpr. It calls char_traits::length, and the latter is not declared constexpr. Could the definition of the constructor be fixed to use a custom implementation of length, at least for type char?

See the example of what I describe: https://wandbox.org/permlink/LwJnxVrsHyY1V156

Define boost::hash (and maybe std::hash) for string_view

This is a feature request.

The requirement that it should return the same hash for equal std::string should be met.

Additionally, if possible, provide std::hash<string_view> with the above requirement, although this is probably not possible to do efficiently because there is no thing like std::hash(char* ptr, size_t len).

Non-standard license header in utility/detail/minstd_rand.hpp

@pdimov Could you please consider copy-pasting one of the standard format license headers from e.g. boost/algorithm/cxx17/reduce.hpp (they also refer to the name of the license file for example).
This makes it easier to do compliance scanning, which is of particular concern for boost due to the proliferation of boostinspect:nolicense files (and files with no copyright information at all).
Would be much appreciated!

Avoid using "<=>"

https://www.boost.org/doc/libs/1_70_0/libs/utility/operators.htm#rationale says:

[...] Moreover, unless your class has really surprising behavior, some of these related operators can be defined in terms of others (e.g. x >= y <=> !(x < y)). [...]

Since <=> becomes a single token in C++20 (the three-way comparison operator), I would suggest rephrasing to prevent possible confusion. Like this:

[...] Moreover, unless your class has really surprising behavior, some of these related operators can be defined in terms of others (e.g. x >= y is equivalent to !(x < y)). [...]

That's better, isn't it?

result_of cannot handle member function pointer to __cdecl function

Might be a root cause of boostorg/phoenix#81

#include <functional>
#include <boost/utility/result_of.hpp>

struct X
{
    bool __cdecl f();
};

using F = decltype(&X::f);

using A = std::result_of<F(X*)>::type;   // fine
using B = boost::result_of<F(X*)>::type; // fails

https://godbolt.org/z/WGMKezqd7

There should be much more of these calling convention stuff that will brakes result of, see https://github.com/boostorg/type_traits/blob/30396ed792697b5a5a7c4f02f7e22ae8d6ad95fd/include/boost/type_traits/detail/is_member_function_pointer_cxx_11.hpp

Break dependence on MPL

Utility depends on MPL just for result_of.hpp. It would be nice if we could break this dependency, as it is circular.

boost::basic_string_view should have a trivial constructor from std::basic_string_view

I am trying to use beast which makes heavy use of boost::string_view in code that already makes heavy use of std::string_view. It is awfully easy to make a constexp constructor that trivially converts a std::string_view to a boost::string_view. I added one myself but I would appreciate it if you guys would go ahead and add it in too.

      BOOST_CONSTEXPR basic_string_view(const std::basic_string_view<charT, traits>& str) BOOST_NOEXCEPT
      : ptr_(str.data()), len_(str.size()) {}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.