* Package: dev-build/b2-5.4.2:0 * Repository: gentoo * Maintainer: soap@gentoo.org * USE: abi_x86_64 amd64 elibc_glibc kernel_linux * FEATURES: network-sandbox preserve-libs sandbox userpriv usersandbox >>> Unpacking source... >>> Unpacking 'b2-5.4.2.tar.gz' to /var/tmp/portage/dev-build/b2-5.4.2/work >>> Source unpacked in /var/tmp/portage/dev-build/b2-5.4.2/work >>> Preparing source in /var/tmp/portage/dev-build/b2-5.4.2/work/b2-5.4.2/src ... [ ok ] [ ok ] [ ok ] [ ok ] >>> Source prepared. >>> Configuring source in /var/tmp/portage/dev-build/b2-5.4.2/work/b2-5.4.2/src ... >>> Source configured. >>> Compiling source in /var/tmp/portage/dev-build/b2-5.4.2/work/b2-5.4.2/src ... * /usr/bin/bash ./build.sh cxx --cxx=x86_64-pc-linux-gnu-g++ '--cxxflags=-pthread -O3 -march=native -mtune=native -fomit-frame-pointer -pipe -flto=auto -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=auto' -d+2 --without-python ls: cannot access '/opt/IBM/openxlC/17.*/bin/ibm-clang++_r': No such file or directory ### ### ### Using 'cxx' toolset. ### ### x86_64-pc-linux-gnu-g++ (Gentoo 16.2.1_p20260926 p1) 16.2.1 20260926 Copyright (C) 2026 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ### ### > x86_64-pc-linux-gnu-g++ -pthread -O3 -march=native -mtune=native -fomit-frame-pointer -pipe -flto=auto -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=auto -DNDEBUG bindjam.cpp builtins.cpp class.cpp command.cpp compile.cpp constants.cpp cwd.cpp debug.cpp debugger.cpp events.cpp execcmd.cpp execnt.cpp execunix.cpp filent.cpp filesys.cpp fileunix.cpp frames.cpp function.cpp glob.cpp hash.cpp hcache.cpp hdrmacro.cpp headers.cpp jam_strings.cpp jam.cpp jamgram.cpp lists.cpp make.cpp make1.cpp md5.cpp mem.cpp modules.cpp native.cpp output.cpp parse.cpp pathnt.cpp pathsys.cpp pathunix.cpp regexp.cpp rules.cpp scan.cpp search.cpp startup.cpp tasks.cpp timestamp.cpp value.cpp variable.cpp w32_getreg.cpp mod_args.cpp mod_command_db.cpp mod_db.cpp mod_jam_builtin.cpp mod_jam_class.cpp mod_jam_errors.cpp mod_jam_modules.cpp mod_order.cpp mod_path.cpp mod_property_set.cpp mod_regex.cpp mod_sequence.cpp mod_set.cpp mod_string.cpp mod_summary.cpp mod_sysinfo.cpp mod_version.cpp -o b2 In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from lists.h:48, from frames.h:12, from bindjam.h:11, from bindjam.cpp:7: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) bindjam.cpp: In instantiation of ‘struct b2::jam::jam_arg_spec_count_sum<b2::bind::arg_<1> >’: bindjam.cpp:546:52: required from ‘struct b2::jam::jam_arg_spec_count_sum<b2::bind::arg_<1>, b2::bind::arg_<1> >’ 546 | value = X::count + jam_arg_spec_count_sum<A...>::value | ^~~~~ bindjam.cpp:560:36: required from ‘struct b2::jam::jam_arg_spec_max_size<b2::bind::arg_<1>, b2::bind::arg_<1> >’ 560 | + jam_arg_spec_count_sum<A...>::value * 2 + 2 | ^~~~~ bindjam.cpp:574:49: required from ‘struct b2::jam::jam_arg_spec<b2::bind::arg_<1>, b2::bind::arg_<1> >’ 574 | const char * spec[jam_arg_spec_max_size<A...>::value]; | ^~~~~ bindjam.cpp:792:21: required from ‘void b2::jam::jam_binder::bind_function(const char*, const char*, b2::bind::args_<A ...>, Function) [with Function = void (*)(std::__cxx11::basic_string<char>, b2::value_ref); A = {b2::bind::arg_<1>, b2::bind::arg_<1>}]’ 792 | jam_arg_spec<A...> arg_spec { args }; | ^~~~~~~~ bind.h:492:23: required from ‘void b2::bind::binder_<Binder>::def_function(const char*, b2::bind::args_<A ...>, Function) [with Function = void (*)(std::__cxx11::basic_string<char>, b2::value_ref); A = {b2::bind::arg_<1>, b2::bind::arg_<1>}; Binder = b2::jam::jam_binder]’ 492 | self().bind_function(current_module_name, function_name, args, f); | ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bind.h:420:22: required from ‘b2::bind::binder_<Binder>& b2::bind::binder_<Binder>::def(F, const char*, b2::bind::args_<A ...>) [with F = void (*)(std::__cxx11::basic_string<char>, b2::value_ref); A = {b2::bind::arg_<1>, b2::bind::arg_<1>}; Binder = b2::jam::jam_binder]’ 420 | self().def_function(name, args, function); | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~ mod_jam_modules.h:313:8: required from ‘void b2::jam::modules::modules_module::def(Binder&) [with Binder = b2::jam::jam_binder]’ 312 | binder.def(&binding, "binding", "module_name" * _1) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 313 | .def(&record_binding, "record-binding", | ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 314 | "module_name" * _1 | "value" * _1) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bind.h:463:8: required from ‘Binder& b2::bind::binder_<Binder>::bind(Module) [with Module = b2::jam::modules::modules_module; Binder = b2::jam::jam_binder]’ 463 | m.def(self()); | ~~~~~^~~~~~~~ bindjam.cpp:818:8: required from here 815 | binder | ~~~~~~ 816 | // These have to be done in dependency order so that the init code | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 817 | // each executes is valid. | ~~~~~~~~~~~~~~~~~~~~~~~~~~ 818 | .bind(jam::modules::modules_module()) | ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bindjam.cpp:546:34: warning: arithmetic between different enumeration types ‘b2::bind::arg_<1>::<unnamed enum>’ and ‘b2::jam::jam_arg_spec_count_sum<>::<unnamed enum>’ is deprecated [-Wdeprecated-enum-enum-conversion] 546 | value = X::count + jam_arg_spec_count_sum<A...>::value | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bindjam.cpp: In instantiation of ‘struct b2::jam::jam_arg_spec_count_sum<b2::bind::arg_<1>, b2::bind::arg_<1> >’: bindjam.cpp:560:36: required from ‘struct b2::jam::jam_arg_spec_max_size<b2::bind::arg_<1>, b2::bind::arg_<1> >’ 560 | + jam_arg_spec_count_sum<A...>::value * 2 + 2 | ^~~~~ bindjam.cpp:574:49: required from ‘struct b2::jam::jam_arg_spec<b2::bind::arg_<1>, b2::bind::arg_<1> >’ 574 | const char * spec[jam_arg_spec_max_size<A...>::value]; | ^~~~~ bindjam.cpp:792:21: required from ‘void b2::jam::jam_binder::bind_function(const char*, const char*, b2::bind::args_<A ...>, Function) [with Function = void (*)(std::__cxx11::basic_string<char>, b2::value_ref); A = {b2::bind::arg_<1>, b2::bind::arg_<1>}]’ 792 | jam_arg_spec<A...> arg_spec { args }; | ^~~~~~~~ bind.h:492:23: required from ‘void b2::bind::binder_<Binder>::def_function(const char*, b2::bind::args_<A ...>, Function) [with Function = void (*)(std::__cxx11::basic_string<char>, b2::value_ref); A = {b2::bind::arg_<1>, b2::bind::arg_<1>}; Binder = b2::jam::jam_binder]’ 492 | self().bind_function(current_module_name, function_name, args, f); | ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bind.h:420:22: required from ‘b2::bind::binder_<Binder>& b2::bind::binder_<Binder>::def(F, const char*, b2::bind::args_<A ...>) [with F = void (*)(std::__cxx11::basic_string<char>, b2::value_ref); A = {b2::bind::arg_<1>, b2::bind::arg_<1>}; Binder = b2::jam::jam_binder]’ 420 | self().def_function(name, args, function); | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~ mod_jam_modules.h:313:8: required from ‘void b2::jam::modules::modules_module::def(Binder&) [with Binder = b2::jam::jam_binder]’ 312 | binder.def(&binding, "binding", "module_name" * _1) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 313 | .def(&record_binding, "record-binding", | ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 314 | "module_name" * _1 | "value" * _1) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bind.h:463:8: required from ‘Binder& b2::bind::binder_<Binder>::bind(Module) [with Module = b2::jam::modules::modules_module; Binder = b2::jam::jam_binder]’ 463 | m.def(self()); | ~~~~~^~~~~~~~ bindjam.cpp:818:8: required from here 815 | binder | ~~~~~~ 816 | // These have to be done in dependency order so that the init code | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 817 | // each executes is valid. | ~~~~~~~~~~~~~~~~~~~~~~~~~~ 818 | .bind(jam::modules::modules_module()) | ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bindjam.cpp:546:34: warning: arithmetic between different enumeration types ‘b2::bind::arg_<1>::<unnamed enum>’ and ‘b2::jam::jam_arg_spec_count_sum<b2::bind::arg_<1> >::<unnamed enum>’ is deprecated [-Wdeprecated-enum-enum-conversion] 546 | value = X::count + jam_arg_spec_count_sum<A...>::value | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bindjam.cpp: In instantiation of ‘struct b2::jam::jam_arg_spec_count_sum<b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1> >’: bindjam.cpp:560:36: required from ‘struct b2::jam::jam_arg_spec_max_size<b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1> >’ 560 | + jam_arg_spec_count_sum<A...>::value * 2 + 2 | ^~~~~ bindjam.cpp:574:49: required from ‘struct b2::jam::jam_arg_spec<b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1> >’ 574 | const char * spec[jam_arg_spec_max_size<A...>::value]; | ^~~~~ bindjam.cpp:792:21: required from ‘void b2::jam::jam_binder::bind_function(const char*, const char*, b2::bind::args_<A ...>, Function) [with Function = void (*)(std::__cxx11::basic_string<char>, b2::list_cref, b2::list_cref); A = {b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1>}]’ 792 | jam_arg_spec<A...> arg_spec { args }; | ^~~~~~~~ bind.h:492:23: required from ‘void b2::bind::binder_<Binder>::def_function(const char*, b2::bind::args_<A ...>, Function) [with Function = void (*)(std::__cxx11::basic_string<char>, b2::list_cref, b2::list_cref); A = {b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1>}; Binder = b2::jam::jam_binder]’ 492 | self().bind_function(current_module_name, function_name, args, f); | ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bind.h:420:22: required from ‘b2::bind::binder_<Binder>& b2::bind::binder_<Binder>::def(F, const char*, b2::bind::args_<A ...>) [with F = void (*)(std::__cxx11::basic_string<char>, b2::list_cref, b2::list_cref); A = {b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1>}; Binder = b2::jam::jam_binder]’ 420 | self().def_function(name, args, function); | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~ mod_jam_modules.h:315:8: required from ‘void b2::jam::modules::modules_module::def(Binder&) [with Binder = b2::jam::jam_binder]’ 312 | binder.def(&binding, "binding", "module_name" * _1) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 313 | .def(&record_binding, "record-binding", | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 314 | "module_name" * _1 | "value" * _1) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 315 | .def(&poke, "poke", | ~~~~^~~~~~~~~~~~~~~ 316 | "module_name" * _01 | "variables" * _1n | "value" * _n) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bind.h:463:8: required from ‘Binder& b2::bind::binder_<Binder>::bind(Module) [with Module = b2::jam::modules::modules_module; Binder = b2::jam::jam_binder]’ 463 | m.def(self()); | ~~~~~^~~~~~~~ bindjam.cpp:818:8: required from here 815 | binder | ~~~~~~ 816 | // These have to be done in dependency order so that the init code | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 817 | // each executes is valid. | ~~~~~~~~~~~~~~~~~~~~~~~~~~ 818 | .bind(jam::modules::modules_module()) | ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bindjam.cpp:546:34: warning: arithmetic between different enumeration types ‘b2::bind::arg_<1>::<unnamed enum>’ and ‘b2::jam::jam_arg_spec_count_sum<b2::bind::arg_<1>, b2::bind::arg_<1> >::<unnamed enum>’ is deprecated [-Wdeprecated-enum-enum-conversion] 546 | value = X::count + jam_arg_spec_count_sum<A...>::value | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bindjam.cpp: In instantiation of ‘struct b2::jam::jam_arg_spec_count_sum<b2::bind::arg_<2>, b2::bind::arg_<1> >’: bindjam.cpp:546:52: required from ‘struct b2::jam::jam_arg_spec_count_sum<b2::bind::arg_<1>, b2::bind::arg_<2>, b2::bind::arg_<1> >’ 546 | value = X::count + jam_arg_spec_count_sum<A...>::value | ^~~~~ bindjam.cpp:560:36: required from ‘struct b2::jam::jam_arg_spec_max_size<b2::bind::arg_<1>, b2::bind::arg_<2>, b2::bind::arg_<1> >’ 560 | + jam_arg_spec_count_sum<A...>::value * 2 + 2 | ^~~~~ bindjam.cpp:574:49: required from ‘struct b2::jam::jam_arg_spec<b2::bind::arg_<1>, b2::bind::arg_<2>, b2::bind::arg_<1> >’ 574 | const char * spec[jam_arg_spec_max_size<A...>::value]; | ^~~~~ bindjam.cpp:792:21: required from ‘void b2::jam::jam_binder::bind_function(const char*, const char*, b2::bind::args_<A ...>, Function) [with Function = b2::list_ref (*)(b2::value_ref, std::tuple<b2::value_ref, b2::list_ref>, const b2::lists&, b2::bind::context_ref_); A = {b2::bind::arg_<1>, b2::bind::arg_<2>, b2::bind::arg_<1>}]’ 792 | jam_arg_spec<A...> arg_spec { args }; | ^~~~~~~~ bind.h:492:23: required from ‘void b2::bind::binder_<Binder>::def_function(const char*, b2::bind::args_<A ...>, Function) [with Function = b2::list_ref (*)(b2::value_ref, std::tuple<b2::value_ref, b2::list_ref>, const b2::lists&, b2::bind::context_ref_); A = {b2::bind::arg_<1>, b2::bind::arg_<2>, b2::bind::arg_<1>}; Binder = b2::jam::jam_binder]’ 492 | self().bind_function(current_module_name, function_name, args, f); | ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bind.h:420:22: required from ‘b2::bind::binder_<Binder>& b2::bind::binder_<Binder>::def(F, const char*, b2::bind::args_<A ...>) [with F = b2::list_ref (*)(b2::value_ref, std::tuple<b2::value_ref, b2::list_ref>, const b2::lists&, b2::bind::context_ref_); A = {b2::bind::arg_<1>, b2::bind::arg_<2>, b2::bind::arg_<1>}; Binder = b2::jam::jam_binder]’ 420 | self().def_function(name, args, function); | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~ mod_jam_modules.h:320:8: required from ‘void b2::jam::modules::modules_module::def(Binder&) [with Binder = b2::jam::jam_binder]’ 312 | binder.def(&binding, "binding", "module_name" * _1) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 313 | .def(&record_binding, "record-binding", | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 314 | "module_name" * _1 | "value" * _1) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 315 | .def(&poke, "poke", | ~~~~~~~~~~~~~~~~~~~ 316 | "module_name" * _01 | "variables" * _1n | "value" * _n) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 317 | .def(&peek, "peek", "module_name" * _01 | "variables" * _1n) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 318 | .def(&clone_rules, "clone-rules", | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 319 | "source_module" * _1 + "target_module" * _1) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 320 | .def(&call_in, "call-in", | ~~~~^~~~~~~~~~~~~~~~~~~~~ 321 | "module_name" * _01 | ("rule_name" * _1 + "a1" * _n) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 322 | | "rest" * _r) | ~~~~~~~~~~~~~~ bind.h:463:8: required from ‘Binder& b2::bind::binder_<Binder>::bind(Module) [with Module = b2::jam::modules::modules_module; Binder = b2::jam::jam_binder]’ 463 | m.def(self()); | ~~~~~^~~~~~~~ bindjam.cpp:818:8: required from here 815 | binder | ~~~~~~ 816 | // These have to be done in dependency order so that the init code | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 817 | // each executes is valid. | ~~~~~~~~~~~~~~~~~~~~~~~~~~ 818 | .bind(jam::modules::modules_module()) | ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bindjam.cpp:546:34: warning: arithmetic between different enumeration types ‘b2::bind::arg_<2>::<unnamed enum>’ and ‘b2::jam::jam_arg_spec_count_sum<b2::bind::arg_<1> >::<unnamed enum>’ is deprecated [-Wdeprecated-enum-enum-conversion] 546 | value = X::count + jam_arg_spec_count_sum<A...>::value | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bindjam.cpp: In instantiation of ‘struct b2::jam::jam_arg_spec_count_sum<b2::bind::arg_<1>, b2::bind::arg_<2>, b2::bind::arg_<1> >’: bindjam.cpp:560:36: required from ‘struct b2::jam::jam_arg_spec_max_size<b2::bind::arg_<1>, b2::bind::arg_<2>, b2::bind::arg_<1> >’ 560 | + jam_arg_spec_count_sum<A...>::value * 2 + 2 | ^~~~~ bindjam.cpp:574:49: required from ‘struct b2::jam::jam_arg_spec<b2::bind::arg_<1>, b2::bind::arg_<2>, b2::bind::arg_<1> >’ 574 | const char * spec[jam_arg_spec_max_size<A...>::value]; | ^~~~~ bindjam.cpp:792:21: required from ‘void b2::jam::jam_binder::bind_function(const char*, const char*, b2::bind::args_<A ...>, Function) [with Function = b2::list_ref (*)(b2::value_ref, std::tuple<b2::value_ref, b2::list_ref>, const b2::lists&, b2::bind::context_ref_); A = {b2::bind::arg_<1>, b2::bind::arg_<2>, b2::bind::arg_<1>}]’ 792 | jam_arg_spec<A...> arg_spec { args }; | ^~~~~~~~ bind.h:492:23: required from ‘void b2::bind::binder_<Binder>::def_function(const char*, b2::bind::args_<A ...>, Function) [with Function = b2::list_ref (*)(b2::value_ref, std::tuple<b2::value_ref, b2::list_ref>, const b2::lists&, b2::bind::context_ref_); A = {b2::bind::arg_<1>, b2::bind::arg_<2>, b2::bind::arg_<1>}; Binder = b2::jam::jam_binder]’ 492 | self().bind_function(current_module_name, function_name, args, f); | ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bind.h:420:22: required from ‘b2::bind::binder_<Binder>& b2::bind::binder_<Binder>::def(F, const char*, b2::bind::args_<A ...>) [with F = b2::list_ref (*)(b2::value_ref, std::tuple<b2::value_ref, b2::list_ref>, const b2::lists&, b2::bind::context_ref_); A = {b2::bind::arg_<1>, b2::bind::arg_<2>, b2::bind::arg_<1>}; Binder = b2::jam::jam_binder]’ 420 | self().def_function(name, args, function); | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~ mod_jam_modules.h:320:8: required from ‘void b2::jam::modules::modules_module::def(Binder&) [with Binder = b2::jam::jam_binder]’ 312 | binder.def(&binding, "binding", "module_name" * _1) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 313 | .def(&record_binding, "record-binding", | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 314 | "module_name" * _1 | "value" * _1) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 315 | .def(&poke, "poke", | ~~~~~~~~~~~~~~~~~~~ 316 | "module_name" * _01 | "variables" * _1n | "value" * _n) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 317 | .def(&peek, "peek", "module_name" * _01 | "variables" * _1n) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 318 | .def(&clone_rules, "clone-rules", | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 319 | "source_module" * _1 + "target_module" * _1) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 320 | .def(&call_in, "call-in", | ~~~~^~~~~~~~~~~~~~~~~~~~~ 321 | "module_name" * _01 | ("rule_name" * _1 + "a1" * _n) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 322 | | "rest" * _r) | ~~~~~~~~~~~~~~ bind.h:463:8: required from ‘Binder& b2::bind::binder_<Binder>::bind(Module) [with Module = b2::jam::modules::modules_module; Binder = b2::jam::jam_binder]’ 463 | m.def(self()); | ~~~~~^~~~~~~~ bindjam.cpp:818:8: required from here 815 | binder | ~~~~~~ 816 | // These have to be done in dependency order so that the init code | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 817 | // each executes is valid. | ~~~~~~~~~~~~~~~~~~~~~~~~~~ 818 | .bind(jam::modules::modules_module()) | ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bindjam.cpp:546:34: warning: arithmetic between different enumeration types ‘b2::bind::arg_<1>::<unnamed enum>’ and ‘b2::jam::jam_arg_spec_count_sum<b2::bind::arg_<2>, b2::bind::arg_<1> >::<unnamed enum>’ is deprecated [-Wdeprecated-enum-enum-conversion] 546 | value = X::count + jam_arg_spec_count_sum<A...>::value | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bindjam.cpp: In instantiation of ‘struct b2::jam::jam_arg_spec_count_sum<b2::bind::arg_<3>, b2::bind::arg_<1> >’: bindjam.cpp:560:36: required from ‘struct b2::jam::jam_arg_spec_max_size<b2::bind::arg_<3>, b2::bind::arg_<1> >’ 560 | + jam_arg_spec_count_sum<A...>::value * 2 + 2 | ^~~~~ bindjam.cpp:574:49: required from ‘struct b2::jam::jam_arg_spec<b2::bind::arg_<3>, b2::bind::arg_<1> >’ 574 | const char * spec[jam_arg_spec_max_size<A...>::value]; | ^~~~~ bindjam.cpp:792:21: required from ‘void b2::jam::jam_binder::bind_function(const char*, const char*, b2::bind::args_<A ...>, Function) [with Function = void (*)(std::tuple<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, b2::list_ref>, const b2::lists&, b2::bind::context_ref_); A = {b2::bind::arg_<3>, b2::bind::arg_<1>}]’ 792 | jam_arg_spec<A...> arg_spec { args }; | ^~~~~~~~ bind.h:492:23: required from ‘void b2::bind::binder_<Binder>::def_function(const char*, b2::bind::args_<A ...>, Function) [with Function = void (*)(std::tuple<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, b2::list_ref>, const b2::lists&, b2::bind::context_ref_); A = {b2::bind::arg_<3>, b2::bind::arg_<1>}; Binder = b2::jam::jam_binder]’ 492 | self().bind_function(current_module_name, function_name, args, f); | ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bind.h:420:22: required from ‘b2::bind::binder_<Binder>& b2::bind::binder_<Binder>::def(F, const char*, b2::bind::args_<A ...>) [with F = void (*)(std::tuple<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, b2::list_ref>, const b2::lists&, b2::bind::context_ref_); A = {b2::bind::arg_<3>, b2::bind::arg_<1>}; Binder = b2::jam::jam_binder]’ 420 | self().def_function(name, args, function); | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~ mod_jam_errors.h:187:8: required from ‘void b2::jam::errors::errors_module::def(Binder&) [with Binder = b2::jam::jam_binder]’ 186 | binder | ~~~~~~ 187 | .def(&backtrace, "backtrace", | ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ 188 | ("skip-frames" * _1 + "prefix" * _1 + "messages" * _n) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 189 | | ("rest" * _r)) | ~~~~~~~~~~~~~~~~ bind.h:463:8: required from ‘Binder& b2::bind::binder_<Binder>::bind(Module) [with Module = b2::jam::errors::errors_module; Binder = b2::jam::jam_binder]’ 463 | m.def(self()); | ~~~~~^~~~~~~~ bindjam.cpp:821:8: required from here 815 | binder | ~~~~~~ 816 | // These have to be done in dependency order so that the init code | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 817 | // each executes is valid. | ~~~~~~~~~~~~~~~~~~~~~~~~~~ 818 | .bind(jam::modules::modules_module()) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 819 | .bind(jam::builtin::root_module()) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 820 | .bind(jam::klass::class_module()) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 821 | .bind(jam::errors::errors_module()) | ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bindjam.cpp:546:34: warning: arithmetic between different enumeration types ‘b2::bind::arg_<3>::<unnamed enum>’ and ‘b2::jam::jam_arg_spec_count_sum<b2::bind::arg_<1> >::<unnamed enum>’ is deprecated [-Wdeprecated-enum-enum-conversion] 546 | value = X::count + jam_arg_spec_count_sum<A...>::value | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bindjam.cpp: In instantiation of ‘struct b2::jam::jam_arg_spec_count_sum<b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1> >’: bindjam.cpp:546:52: required from ‘struct b2::jam::jam_arg_spec_count_sum<b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1> >’ 546 | value = X::count + jam_arg_spec_count_sum<A...>::value | ^~~~~ bindjam.cpp:560:36: required from ‘struct b2::jam::jam_arg_spec_max_size<b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1> >’ 560 | + jam_arg_spec_count_sum<A...>::value * 2 + 2 | ^~~~~ bindjam.cpp:574:49: required from ‘struct b2::jam::jam_arg_spec<b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1> >’ 574 | const char * spec[jam_arg_spec_max_size<A...>::value]; | ^~~~~ bindjam.cpp:792:21: required from ‘void b2::jam::jam_binder::bind_function(const char*, const char*, b2::bind::args_<A ...>, Function) [with Function = b2::list_ref (*)(b2::list_cref, b2::list_cref, b2::list_cref, b2::list_cref, b2::list_cref); A = {b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1>}]’ 792 | jam_arg_spec<A...> arg_spec { args }; | ^~~~~~~~ bind.h:492:23: required from ‘void b2::bind::binder_<Binder>::def_function(const char*, b2::bind::args_<A ...>, Function) [with Function = b2::list_ref (*)(b2::list_cref, b2::list_cref, b2::list_cref, b2::list_cref, b2::list_cref); A = {b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1>}; Binder = b2::jam::jam_binder]’ 492 | self().bind_function(current_module_name, function_name, args, f); | ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bind.h:420:22: required from ‘b2::bind::binder_<Binder>& b2::bind::binder_<Binder>::def(F, const char*, b2::bind::args_<A ...>) [with F = b2::list_ref (*)(b2::list_cref, b2::list_cref, b2::list_cref, b2::list_cref, b2::list_cref); A = {b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1>}; Binder = b2::jam::jam_binder]’ 420 | self().def_function(name, args, function); | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~ mod_regex.h:233:8: required from ‘void b2::regex_module::def(Binder&) [with Binder = b2::jam::jam_binder]’ 220 | binder.def(®ex_split, "split", "string" * _1 + "separator" * _1) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 221 | .def( | ~~~~~ 222 | ®ex_split_each, "split-list", "list" * _n | "separator" * _1) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 223 | .def(®ex_match, "match", | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 224 | "pattern" * _1 | "string" * _1 | "indices" * _n) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 225 | .def(®ex_transform, "transform", | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 226 | "list" * _n | "pattern" * _1 | "indices" * _n) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 227 | .def(®ex_escape, "escape", | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 228 | "string" * _1 | "symbols" * _1 | "escape-symbol" * _1) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 229 | .def(®ex_replace, "replace", | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 230 | "string" * _1 + "match" * _1 + "replacement" * _1) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 231 | .def(®ex_replace_each, "replace-list", | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 232 | "list" * _n | "match" * _1 | "replacement" * _1) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 233 | .def(®ex_grep, "grep", | ~~~~^~~~~~~~~~~~~~~~~~~~~ 234 | "directories" * _1n | "files" * _1n | "patterns" * _1n | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 235 | | "result_expressions" * _n | "options" * _n); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bind.h:463:8: required from ‘Binder& b2::bind::binder_<Binder>::bind(Module) [with Module = b2::regex_module; Binder = b2::jam::jam_binder]’ 463 | m.def(self()); | ~~~~~^~~~~~~~ bindjam.cpp:823:8: required from here 815 | binder | ~~~~~~ 816 | // These have to be done in dependency order so that the init code | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 817 | // each executes is valid. | ~~~~~~~~~~~~~~~~~~~~~~~~~~ 818 | .bind(jam::modules::modules_module()) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 819 | .bind(jam::builtin::root_module()) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 820 | .bind(jam::klass::class_module()) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 821 | .bind(jam::errors::errors_module()) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 822 | .bind(paths::paths_module()) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 823 | .bind(regex_module()) | ~~~~~^~~~~~~~~~~~~~~~ bindjam.cpp:546:34: warning: arithmetic between different enumeration types ‘b2::bind::arg_<1>::<unnamed enum>’ and ‘b2::jam::jam_arg_spec_count_sum<b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1> >::<unnamed enum>’ is deprecated [-Wdeprecated-enum-enum-conversion] 546 | value = X::count + jam_arg_spec_count_sum<A...>::value | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bindjam.cpp: In instantiation of ‘struct b2::jam::jam_arg_spec_count_sum<b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1> >’: bindjam.cpp:560:36: required from ‘struct b2::jam::jam_arg_spec_max_size<b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1> >’ 560 | + jam_arg_spec_count_sum<A...>::value * 2 + 2 | ^~~~~ bindjam.cpp:574:49: required from ‘struct b2::jam::jam_arg_spec<b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1> >’ 574 | const char * spec[jam_arg_spec_max_size<A...>::value]; | ^~~~~ bindjam.cpp:792:21: required from ‘void b2::jam::jam_binder::bind_function(const char*, const char*, b2::bind::args_<A ...>, Function) [with Function = b2::list_ref (*)(b2::list_cref, b2::list_cref, b2::list_cref, b2::list_cref, b2::list_cref); A = {b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1>}]’ 792 | jam_arg_spec<A...> arg_spec { args }; | ^~~~~~~~ bind.h:492:23: required from ‘void b2::bind::binder_<Binder>::def_function(const char*, b2::bind::args_<A ...>, Function) [with Function = b2::list_ref (*)(b2::list_cref, b2::list_cref, b2::list_cref, b2::list_cref, b2::list_cref); A = {b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1>}; Binder = b2::jam::jam_binder]’ 492 | self().bind_function(current_module_name, function_name, args, f); | ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bind.h:420:22: required from ‘b2::bind::binder_<Binder>& b2::bind::binder_<Binder>::def(F, const char*, b2::bind::args_<A ...>) [with F = b2::list_ref (*)(b2::list_cref, b2::list_cref, b2::list_cref, b2::list_cref, b2::list_cref); A = {b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1>}; Binder = b2::jam::jam_binder]’ 420 | self().def_function(name, args, function); | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~ mod_regex.h:233:8: required from ‘void b2::regex_module::def(Binder&) [with Binder = b2::jam::jam_binder]’ 220 | binder.def(®ex_split, "split", "string" * _1 + "separator" * _1) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 221 | .def( | ~~~~~ 222 | ®ex_split_each, "split-list", "list" * _n | "separator" * _1) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 223 | .def(®ex_match, "match", | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 224 | "pattern" * _1 | "string" * _1 | "indices" * _n) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 225 | .def(®ex_transform, "transform", | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 226 | "list" * _n | "pattern" * _1 | "indices" * _n) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 227 | .def(®ex_escape, "escape", | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 228 | "string" * _1 | "symbols" * _1 | "escape-symbol" * _1) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 229 | .def(®ex_replace, "replace", | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 230 | "string" * _1 + "match" * _1 + "replacement" * _1) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 231 | .def(®ex_replace_each, "replace-list", | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 232 | "list" * _n | "match" * _1 | "replacement" * _1) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 233 | .def(®ex_grep, "grep", | ~~~~^~~~~~~~~~~~~~~~~~~~~ 234 | "directories" * _1n | "files" * _1n | "patterns" * _1n | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 235 | | "result_expressions" * _n | "options" * _n); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bind.h:463:8: required from ‘Binder& b2::bind::binder_<Binder>::bind(Module) [with Module = b2::regex_module; Binder = b2::jam::jam_binder]’ 463 | m.def(self()); | ~~~~~^~~~~~~~ bindjam.cpp:823:8: required from here 815 | binder | ~~~~~~ 816 | // These have to be done in dependency order so that the init code | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 817 | // each executes is valid. | ~~~~~~~~~~~~~~~~~~~~~~~~~~ 818 | .bind(jam::modules::modules_module()) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 819 | .bind(jam::builtin::root_module()) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 820 | .bind(jam::klass::class_module()) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 821 | .bind(jam::errors::errors_module()) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 822 | .bind(paths::paths_module()) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 823 | .bind(regex_module()) | ~~~~~^~~~~~~~~~~~~~~~ bindjam.cpp:546:34: warning: arithmetic between different enumeration types ‘b2::bind::arg_<1>::<unnamed enum>’ and ‘b2::jam::jam_arg_spec_count_sum<b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1>, b2::bind::arg_<1> >::<unnamed enum>’ is deprecated [-Wdeprecated-enum-enum-conversion] 546 | value = X::count + jam_arg_spec_count_sum<A...>::value | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bindjam.cpp: In instantiation of ‘struct b2::jam::jam_arg_spec_count_sum<b2::bind::arg_<2> >’: bindjam.cpp:560:36: required from ‘struct b2::jam::jam_arg_spec_max_size<b2::bind::arg_<2> >’ 560 | + jam_arg_spec_count_sum<A...>::value * 2 + 2 | ^~~~~ bindjam.cpp:574:49: required from ‘struct b2::jam::jam_arg_spec<b2::bind::arg_<2> >’ 574 | const char * spec[jam_arg_spec_max_size<A...>::value]; | ^~~~~ bindjam.cpp:792:21: required from ‘void b2::jam::jam_binder::bind_function(const char*, const char*, b2::bind::args_<A ...>, Function) [with Function = void (*)(std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >); A = {b2::bind::arg_<2>}]’ 792 | jam_arg_spec<A...> arg_spec { args }; | ^~~~~~~~ bind.h:492:23: required from ‘void b2::bind::binder_<Binder>::def_function(const char*, b2::bind::args_<A ...>, Function) [with Function = void (*)(std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >); A = {b2::bind::arg_<2>}; Binder = b2::jam::jam_binder]’ 492 | self().bind_function(current_module_name, function_name, args, f); | ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bind.h:420:22: required from ‘b2::bind::binder_<Binder>& b2::bind::binder_<Binder>::def(F, const char*, b2::bind::args_<A ...>) [with F = void (*)(std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >); A = {b2::bind::arg_<2>}; Binder = b2::jam::jam_binder]’ 420 | self().def_function(name, args, function); | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~ bind.h:426:19: required from ‘b2::bind::binder_<Binder>& b2::bind::binder_<Binder>::def(F, const char*, b2::bind::arg_<C>) [with F = void (*)(std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >); int C = 2; Binder = b2::jam::jam_binder]’ 426 | return this->def( | ~~~~~~~~~^ 427 | function, name, args_<arg_<C>> { { std::make_tuple(args) } }); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mod_jam_modules.h:318:8: required from ‘void b2::jam::modules::modules_module::def(Binder&) [with Binder = b2::jam::jam_binder]’ 312 | binder.def(&binding, "binding", "module_name" * _1) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 313 | .def(&record_binding, "record-binding", | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 314 | "module_name" * _1 | "value" * _1) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 315 | .def(&poke, "poke", | ~~~~~~~~~~~~~~~~~~~ 316 | "module_name" * _01 | "variables" * _1n | "value" * _n) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 317 | .def(&peek, "peek", "module_name" * _01 | "variables" * _1n) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 318 | .def(&clone_rules, "clone-rules", | ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 319 | "source_module" * _1 + "target_module" * _1) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bind.h:463:8: required from ‘Binder& b2::bind::binder_<Binder>::bind(Module) [with Module = b2::jam::modules::modules_module; Binder = b2::jam::jam_binder]’ 463 | m.def(self()); | ~~~~~^~~~~~~~ bindjam.cpp:818:8: required from here 815 | binder | ~~~~~~ 816 | // These have to be done in dependency order so that the init code | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 817 | // each executes is valid. | ~~~~~~~~~~~~~~~~~~~~~~~~~~ 818 | .bind(jam::modules::modules_module()) | ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bindjam.cpp:546:34: warning: arithmetic between different enumeration types ‘b2::bind::arg_<2>::<unnamed enum>’ and ‘b2::jam::jam_arg_spec_count_sum<>::<unnamed enum>’ is deprecated [-Wdeprecated-enum-enum-conversion] 546 | value = X::count + jam_arg_spec_count_sum<A...>::value | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bindjam.cpp: In instantiation of ‘struct b2::jam::jam_arg_spec_count_sum<b2::bind::arg_<3> >’: bindjam.cpp:560:36: required from ‘struct b2::jam::jam_arg_spec_max_size<b2::bind::arg_<3> >’ 560 | + jam_arg_spec_count_sum<A...>::value * 2 + 2 | ^~~~~ bindjam.cpp:574:49: required from ‘struct b2::jam::jam_arg_spec<b2::bind::arg_<3> >’ 574 | const char * spec[jam_arg_spec_max_size<A...>::value]; | ^~~~~ bindjam.cpp:792:21: required from ‘void b2::jam::jam_binder::bind_function(const char*, const char*, b2::bind::args_<A ...>, Function) [with Function = b2::value_ref (*)(const std::tuple<b2::value_ref, b2::value_ref, b2::value_ref>&); A = {b2::bind::arg_<3>}]’ 792 | jam_arg_spec<A...> arg_spec { args }; | ^~~~~~~~ bind.h:492:23: required from ‘void b2::bind::binder_<Binder>::def_function(const char*, b2::bind::args_<A ...>, Function) [with Function = b2::value_ref (*)(const std::tuple<b2::value_ref, b2::value_ref, b2::value_ref>&); A = {b2::bind::arg_<3>}; Binder = b2::jam::jam_binder]’ 492 | self().bind_function(current_module_name, function_name, args, f); | ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bind.h:420:22: required from ‘b2::bind::binder_<Binder>& b2::bind::binder_<Binder>::def(F, const char*, b2::bind::args_<A ...>) [with F = b2::value_ref (*)(const std::tuple<b2::value_ref, b2::value_ref, b2::value_ref>&); A = {b2::bind::arg_<3>}; Binder = b2::jam::jam_binder]’ 420 | self().def_function(name, args, function); | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~ bind.h:426:19: required from ‘b2::bind::binder_<Binder>& b2::bind::binder_<Binder>::def(F, const char*, b2::bind::arg_<C>) [with F = b2::value_ref (*)(const std::tuple<b2::value_ref, b2::value_ref, b2::value_ref>&); int C = 3; Binder = b2::jam::jam_binder]’ 426 | return this->def( | ~~~~~~~~~^ 427 | function, name, args_<arg_<C>> { { std::make_tuple(args) } }); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mod_regex.h:229:8: required from ‘void b2::regex_module::def(Binder&) [with Binder = b2::jam::jam_binder]’ 220 | binder.def(®ex_split, "split", "string" * _1 + "separator" * _1) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 221 | .def( | ~~~~~ 222 | ®ex_split_each, "split-list", "list" * _n | "separator" * _1) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 223 | .def(®ex_match, "match", | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 224 | "pattern" * _1 | "string" * _1 | "indices" * _n) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 225 | .def(®ex_transform, "transform", | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 226 | "list" * _n | "pattern" * _1 | "indices" * _n) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 227 | .def(®ex_escape, "escape", | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 228 | "string" * _1 | "symbols" * _1 | "escape-symbol" * _1) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 229 | .def(®ex_replace, "replace", | ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ 230 | "string" * _1 + "match" * _1 + "replacement" * _1) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bind.h:463:8: required from ‘Binder& b2::bind::binder_<Binder>::bind(Module) [with Module = b2::regex_module; Binder = b2::jam::jam_binder]’ 463 | m.def(self()); | ~~~~~^~~~~~~~ bindjam.cpp:823:8: required from here 815 | binder | ~~~~~~ 816 | // These have to be done in dependency order so that the init code | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 817 | // each executes is valid. | ~~~~~~~~~~~~~~~~~~~~~~~~~~ 818 | .bind(jam::modules::modules_module()) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 819 | .bind(jam::builtin::root_module()) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 820 | .bind(jam::klass::class_module()) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 821 | .bind(jam::errors::errors_module()) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 822 | .bind(paths::paths_module()) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 823 | .bind(regex_module()) | ~~~~~^~~~~~~~~~~~~~~~ bindjam.cpp:546:34: warning: arithmetic between different enumeration types ‘b2::bind::arg_<3>::<unnamed enum>’ and ‘b2::jam::jam_arg_spec_count_sum<>::<unnamed enum>’ is deprecated [-Wdeprecated-enum-enum-conversion] 546 | value = X::count + jam_arg_spec_count_sum<A...>::value | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from builtins.cpp:7: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from lists.h:48, from class.h:9, from class.cpp:8: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from command.cpp:18: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from compile.cpp:24: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from constants.cpp:18: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from cwd.h:16, from cwd.cpp:9: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from debug.cpp:8: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from debugger.h:13, from debugger.cpp:8: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from lists.h:48, from frames.h:12, from function.h:13, from rules.h:35, from events.h:12, from events.cpp:7: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from execcmd.cpp:11: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from execnt.cpp:39: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from execunix.cpp:8: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from filent.cpp:31: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from filesys.cpp:30: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from fileunix.cpp:30: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from frames.cpp:7: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from function.cpp:9: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from glob.cpp:27: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from hash.cpp:19: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from hcache.cpp:32: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from hdrmacro.cpp:30: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from headers.cpp:26: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from jam_strings.cpp:5: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from jam.cpp:99: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from src/engine/jamgram.y:100: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from lists.h:48, from lists.cpp:17: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from make.cpp:33: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from make1.cpp:39: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from mem.cpp:8: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from modules.cpp:8: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from lists.h:48, from frames.h:12, from function.h:13, from native.h:11, from native.cpp:7: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from output.cpp:7: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from parse.cpp:14: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from pathnt.cpp:19: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from pathsys.cpp:30: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from pathunix.cpp:19: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from regexp.h:12, from regexp.cpp:48: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from rules.cpp:31: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from scan.cpp:12: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from search.cpp:14: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from lists.h:48, from frames.h:12, from startup.h:11, from startup.cpp:7: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from mod_sysinfo.h:13, from tasks.h:12, from tasks.cpp:7: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from timestamp.cpp:27: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from value.cpp:7: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from variable.cpp:33: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from w32_getreg.cpp:7: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from lists.h:48, from mod_args.h:12, from mod_args.cpp:7: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from lists.h:48, from mod_args.h:12, from mod_command_db.h:13, from mod_command_db.cpp:7: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from lists.h:48, from mod_db.h:13, from mod_db.cpp:7: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) mod_db.cpp: In member function ‘void b2::property_db::emplace(b2::list_cref, b2::value_ref)’: mod_db.cpp:20:26: warning: C++20 says that these are ambiguous, even though the second is reversed: 20 | if (a == array_tag) | ^~~~~~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from mod_jam_builtin.h:13, from mod_jam_builtin.cpp:7: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from lists.h:48, from mod_jam_class.h:13, from mod_jam_class.cpp:7: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from lists.h:48, from mod_jam_errors.h:13, from mod_jam_errors.cpp:7: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from lists.h:48, from mod_jam_modules.h:13, from mod_jam_modules.cpp:7: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from lists.h:48, from mod_order.cpp:7: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from lists.h:48, from mod_path.h:13, from mod_path.cpp:7: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from mod_property_set.cpp:8: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from lists.h:48, from mod_regex.h:13, from mod_regex.cpp:7: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from lists.h:48, from frames.h:12, from function.h:13, from native.h:11, from mod_sequence.cpp:8: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from lists.h:48, from mod_set.h:13, from mod_set.cpp:7: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from lists.h:48, from mod_string.h:13, from mod_string.cpp:7: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from mod_summary.h:13, from mod_summary.cpp:7: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from mod_sysinfo.h:13, from mod_sysinfo.cpp:7: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) In file included from object.h:12, from constants.h:15, from debug.h:12, from mem.h:48, from jam.h:553, from lists.h:48, from modules.h:13, from mod_version.cpp:8: value.h: In member function ‘bool b2::value_ref::operator==(const char*) const’: value.h:144:46: warning: C++20 says that these are ambiguous, even though the second is reversed: 144 | return (*this) == value_ref(v); | ^ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) value.h: In instantiation of ‘bool b2::value_ref::operator!=(T) const [with T = b2::value_ref]’: lists.h:428:30: required from here 428 | if (v != value_ref(*(b_i++))) return false; | ^ value.h:149:34: warning: C++20 says that these are ambiguous, even though the second is reversed: 149 | return !((*this) == v); | ~~~~~~~~~^~~~~ value.h:141:21: note: candidate 1: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ 141 | inline bool operator==(value_ptr b) const { return val->equal_to(*b); } | ^~~~~~~~ value.h:141:21: note: candidate 2: ‘bool b2::value_ref::operator==(b2::value_ptr) const’ (reversed) >>> Source compiled. * Skipping make test/check due to ebuild restriction. >>> Test phase [disabled because of RESTRICT=test]: dev-build/b2-5.4.2 >>> Install dev-build/b2-5.4.2 into /var/tmp/portage/dev-build/b2-5.4.2/image >>> Completed installing dev-build/b2-5.4.2 into /var/tmp/portage/dev-build/b2-5.4.2/image * Final size of build directory: 9340 KiB (9.1 MiB) * Final size of installed tree: 3372 KiB (3.2 MiB) strip: x86_64-pc-linux-gnu-strip --strip-unneeded -N __gentoo_check_ldflags__ -R .comment -R .GCC.command.line -R .note.gnu.gold-version /usr/bin/b2