HavocFramework / Havoc

The Havoc Framework.
https://havocframework.com
GNU General Public License v3.0
6.72k stars 949 forks source link

[Teamserver-Client--Bug]: client-build fails with gcc 13 #326

Closed SecT0uch closed 1 year ago

SecT0uch commented 1 year ago

Contact Details

No response

What happened?

After upgrading gcc and gcc-libs from 12.2.1 to 13.1.1 (Manjaro/Arch), make client-build is failing.

After downgrading both packages, it builds fine.

This seems relevant: https://gcc.gnu.org/gcc-13/porting_to.html

Did You Do a Pull First?

Latest (You performed a pull first)

Did You Try With the Dev Branch?

Yes (You tried using the dev branch but the problem persist)

Relevant log output

If needed, I can upgrade and provide the logs.

Did You Read Over Your Issue First?

Cracked5pider commented 1 year ago

What kind of error do you get when compiling with gcc 13 ?

SecT0uch commented 1 year ago

Using the dev branch:

[*] building teamserver
[*] building client
-- The C compiler identification is GNU 13.1.1
-- The CXX compiler identification is GNU 13.1.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found PythonLibs: /usr/lib/libpython3.11.so (found suitable version "3.11.3", minimum required is "3") 
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE  
-- Configuring done (1.5s)
-- Generating done (0.0s)
-- Build files have been written to: /home/jordan/Dev/Havoc/client/Build
Cloning into 'client/Modules'...
remote: Enumerating objects: 470, done.
remote: Counting objects: 100% (160/160), done.
remote: Compressing objects: 100% (114/114), done.
remote: Total 470 (delta 56), reused 125 (delta 46), pack-reused 310
Receiving objects: 100% (470/470), 750.63 KiB | 1.36 MiB/s, done.
Resolving deltas: 100% (195/195), done.
make[1]: Entering directory '/home/jordan/Dev/Havoc/client/Build'
[  2%] Automatic MOC and UIC for target Havoc
[  2%] Built target Havoc_autogen
[  4%] Automatic RCC for Data/Havoc.qrc
[  8%] Building CXX object CMakeFiles/Havoc.dir/Source/Main.cpp.o
[ 11%] Building CXX object CMakeFiles/Havoc.dir/Source/Havoc/Packager.cpp.o
[ 11%] Building CXX object CMakeFiles/Havoc.dir/Havoc_autogen/mocs_compilation.cpp.o
[ 13%] Building CXX object CMakeFiles/Havoc.dir/Source/Havoc/Connector.cpp.o
In file included from /home/jordan/Dev/Havoc/client/Include/Havoc/Connector.hpp:4,
                 from /home/jordan/Dev/Havoc/client/Source/Havoc/Connector.cpp:1:
/home/jordan/Dev/Havoc/client/Include/global.hpp:241:54: warning: declaration of ‘FileBrowser* HavocNamespace::Util::<unnamed struct>::FileBrowser’ changes meaning of ‘FileBrowser’ [-Wchanges-meaning]
  241 |             FileBrowser*                             FileBrowser;
      |                                                      ^~~~~~~~~~~
/home/jordan/Dev/Havoc/client/Include/global.hpp:241:13: note: used here to mean ‘class FileBrowser’
  241 |             FileBrowser*                             FileBrowser;
      |             ^~~~~~~~~~~
In file included from /home/jordan/Dev/Havoc/client/Include/global.hpp:39:
/home/jordan/Dev/Havoc/client/Include/UserInterface/Widgets/FileBrowser.hpp:53:7: note: declared here
   53 | class FileBrowser : public QWidget
      |       ^~~~~~~~~~~
In file included from /home/jordan/Dev/Havoc/client/Build/Havoc_autogen/BEIJ4H4JXG/../../../Include/UserInterface/Widgets/SessionGraph.hpp:4,
                 from /home/jordan/Dev/Havoc/client/Build/Havoc_autogen/BEIJ4H4JXG/moc_SessionGraph.cpp:10,
                 from /home/jordan/Dev/Havoc/client/Build/Havoc_autogen/mocs_compilation.cpp:2:
/home/jordan/Dev/Havoc/client/Include/global.hpp:241:54: warning: declaration of ‘FileBrowser* HavocNamespace::Util::<unnamed struct>::FileBrowser’ changes meaning of ‘FileBrowser’ [-Wchanges-meaning]
  241 |             FileBrowser*                             FileBrowser;
      |                                                      ^~~~~~~~~~~
/home/jordan/Dev/Havoc/client/Include/global.hpp:241:13: note: used here to mean ‘class FileBrowser’
  241 |             FileBrowser*                             FileBrowser;
      |             ^~~~~~~~~~~
In file included from /home/jordan/Dev/Havoc/client/Include/global.hpp:39:
/home/jordan/Dev/Havoc/client/Include/UserInterface/Widgets/FileBrowser.hpp:53:7: note: declared here
   53 | class FileBrowser : public QWidget
      |       ^~~~~~~~~~~
In file included from /home/jordan/Dev/Havoc/client/Source/Main.cpp:1:
/home/jordan/Dev/Havoc/client/Include/global.hpp:241:54: warning: declaration of ‘FileBrowser* HavocNamespace::Util::<unnamed struct>::FileBrowser’ changes meaning of ‘FileBrowser’ [-Wchanges-meaning]
  241 |             FileBrowser*                             FileBrowser;
      |                                                      ^~~~~~~~~~~
/home/jordan/Dev/Havoc/client/Include/global.hpp:241:13: note: used here to mean ‘class FileBrowser’
  241 |             FileBrowser*                             FileBrowser;
      |             ^~~~~~~~~~~
In file included from /home/jordan/Dev/Havoc/client/Include/global.hpp:39:
/home/jordan/Dev/Havoc/client/Include/UserInterface/Widgets/FileBrowser.hpp:53:7: note: declared here
   53 | class FileBrowser : public QWidget
      |       ^~~~~~~~~~~
/home/jordan/Dev/Havoc/client/Build/Havoc_autogen/BEIJ4H4JXG/../../../Include/UserInterface/Widgets/SessionGraph.hpp:71:17: warning: declaration of ‘Node* GraphWidget::<unnamed struct>::Node’ changes meaning of ‘Node’ [-Wchanges-meaning]
   71 |         Node*   Node;
      |                 ^~~~
/home/jordan/Dev/Havoc/client/Build/Havoc_autogen/BEIJ4H4JXG/../../../Include/UserInterface/Widgets/SessionGraph.hpp:71:9: note: used here to mean ‘class Node’
   71 |         Node*   Node;
      |         ^~~~
/home/jordan/Dev/Havoc/client/Build/Havoc_autogen/BEIJ4H4JXG/../../../Include/UserInterface/Widgets/SessionGraph.hpp:20:7: note: declared here
   20 | class Node : public QGraphicsItem
      |       ^~~~
In file included from /home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:1:
/home/jordan/Dev/Havoc/client/Include/global.hpp:241:54: warning: declaration of ‘FileBrowser* HavocNamespace::Util::<unnamed struct>::FileBrowser’ changes meaning of ‘FileBrowser’ [-Wchanges-meaning]
  241 |             FileBrowser*                             FileBrowser;
      |                                                      ^~~~~~~~~~~
/home/jordan/Dev/Havoc/client/Include/global.hpp:241:13: note: used here to mean ‘class FileBrowser’
  241 |             FileBrowser*                             FileBrowser;
      |             ^~~~~~~~~~~
In file included from /home/jordan/Dev/Havoc/client/Include/global.hpp:39:
/home/jordan/Dev/Havoc/client/Include/UserInterface/Widgets/FileBrowser.hpp:53:7: note: declared here
   53 | class FileBrowser : public QWidget
      |       ^~~~~~~~~~~
In file included from /home/jordan/Dev/Havoc/client/Include/UserInterface/Widgets/TeamserverTabSession.h:9,
                 from /home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:8:
/home/jordan/Dev/Havoc/client/Include/UserInterface/Widgets/SessionGraph.hpp:71:17: warning: declaration of ‘Node* GraphWidget::<unnamed struct>::Node’ changes meaning of ‘Node’ [-Wchanges-meaning]
   71 |         Node*   Node;
      |                 ^~~~
/home/jordan/Dev/Havoc/client/Include/UserInterface/Widgets/SessionGraph.hpp:71:9: note: used here to mean ‘class Node’
   71 |         Node*   Node;
      |         ^~~~
/home/jordan/Dev/Havoc/client/Include/UserInterface/Widgets/SessionGraph.hpp:20:7: note: declared here
   20 | class Node : public QGraphicsItem
      |       ^~~~
/home/jordan/Dev/Havoc/client/Include/UserInterface/Widgets/TeamserverTabSession.h:35:39: warning: declaration of ‘Teamserver* HavocNamespace::UserInterface::Widgets::TeamserverTabSession::Teamserver’ changes meaning of ‘Teamserver’ [-Wchanges-meaning]
   35 |     Teamserver*                       Teamserver          = {};
      |                                       ^~~~~~~~~~
/home/jordan/Dev/Havoc/client/Include/UserInterface/Widgets/TeamserverTabSession.h:35:5: note: used here to mean ‘class Teamserver’
   35 |     Teamserver*                       Teamserver          = {};
      |     ^~~~~~~~~~
In file included from /home/jordan/Dev/Havoc/client/Include/UserInterface/Widgets/TeamserverTabSession.h:10:
/home/jordan/Dev/Havoc/client/Include/UserInterface/Widgets/Teamserver.hpp:16:7: note: declared here
   16 | class Teamserver
      |       ^~~~~~~~~~
/home/jordan/Dev/Havoc/client/Include/UserInterface/Widgets/TeamserverTabSession.h:42:39: warning: declaration of ‘LootWidget* HavocNamespace::UserInterface::Widgets::TeamserverTabSession::LootWidget’ changes meaning of ‘LootWidget’ [-Wchanges-meaning]
   42 |     LootWidget*                       LootWidget          = {};
      |                                       ^~~~~~~~~~
/home/jordan/Dev/Havoc/client/Include/UserInterface/Widgets/TeamserverTabSession.h:42:5: note: used here to mean ‘class LootWidget’
   42 |     LootWidget*                       LootWidget          = {};
      |     ^~~~~~~~~~
In file included from /home/jordan/Dev/Havoc/client/Include/UserInterface/Widgets/TeamserverTabSession.h:8:
/home/jordan/Dev/Havoc/client/Include/UserInterface/Widgets/LootWidget.h:39:7: note: declared here
   39 | class LootWidget : public QWidget
      |       ^~~~~~~~~~
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp: In member function ‘bool HavocNamespace::HavocSpace::Packager::DispatchListener(HavocNamespace::Util::Packager::PPackage)’:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:48: error: no match for ‘operator==’ (operand types are ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} and ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’})
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
In file included from /home/jordan/Dev/Havoc/client/Include/global.hpp:36:
/home/jordan/Dev/Havoc/client/Include/json.hpp:22913:6: note: candidate: ‘template<class ScalarType>  requires  is_scalar_v<ScalarType> bool nlohmann::json_abi_v3_11_2::basic_json<ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType, CustomBaseClass>::operator==(ScalarType) const [with ObjectType = std::map; ArrayType = std::vector; StringType = std::__cxx11::basic_string<char>; BooleanType = bool; NumberIntegerType = long int; NumberUnsignedType = long unsigned int; NumberFloatType = double; AllocatorType = std::allocator; JSONSerializer = nlohmann::json_abi_v3_11_2::adl_serializer; BinaryType = std::vector<unsigned char>; CustomBaseClass = void]’ (reversed)
22913 | bool operator==(ScalarType rhs) const noexcept
      |      ^~~~~~~~
/home/jordan/Dev/Havoc/client/Include/json.hpp:22913:6: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Include/json.hpp:22913:6: note: constraints not satisfied
/home/jordan/Dev/Havoc/client/Include/json.hpp: In substitution of ‘template<class ScalarType>  requires  is_scalar_v<ScalarType> bool nlohmann::json_abi_v3_11_2::basic_json<>::operator==(ScalarType) const [with ScalarType = std::map]’:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68:   required from here
/home/jordan/Dev/Havoc/client/Include/json.hpp:22913:6:   required by the constraints of ‘template<template<class, class, class ...> class ObjectType, template<class, class ...> class ArrayType, class StringType, class BooleanType, class NumberIntegerType, class NumberUnsignedType, class NumberFloatType, template<class> class AllocatorType, template<class, class> class JSONSerializer, class BinaryType, class CustomBaseClass> template<class ScalarType>  requires  is_scalar_v<ScalarType> bool nlohmann::json_abi_v3_11_2::basic_json<ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType, CustomBaseClass>::operator==(ScalarType) const’
/home/jordan/Dev/Havoc/client/Include/json.hpp:22912:15: note: the expression ‘is_scalar_v<ScalarType> [with ScalarType = std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >]’ evaluated to ‘false’
22912 | requires std::is_scalar_v<ScalarType>
      |          ~~~~~^~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/qt/QtCore/qobject.h:53,
                 from /usr/include/qt/QtCore/qcoreapplication.h:46,
                 from /usr/include/qt/QtWidgets/qapplication.h:44,
                 from /usr/include/qt/QtWidgets/QApplication:1,
                 from /home/jordan/Dev/Havoc/client/Include/global.hpp:4:
/usr/include/qt/QtCore/qscopedpointer.h:196:13: note: candidate: ‘template<class T, class Cleanup> bool operator==(const QScopedPointer<T, Cleanup>&, std::nullptr_t)’ (reversed)
  196 | inline bool operator==(const QScopedPointer<T, Cleanup> &lhs, std::nullptr_t) noexcept
      |             ^~~~~~~~
/usr/include/qt/QtCore/qscopedpointer.h:196:13: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} is not derived from ‘const QScopedPointer<T, Cleanup>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
/usr/include/qt/QtCore/qscopedpointer.h:202:13: note: candidate: ‘template<class T, class Cleanup> bool operator==(std::nullptr_t, const QScopedPointer<T, Cleanup>&)’ (reversed)
  202 | inline bool operator==(std::nullptr_t, const QScopedPointer<T, Cleanup> &rhs) noexcept
      |             ^~~~~~~~
/usr/include/qt/QtCore/qscopedpointer.h:202:13: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} is not derived from ‘const QScopedPointer<T, Cleanup>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
In file included from /usr/include/qt/QtCore/qmetatype.h:48,
                 from /usr/include/qt/QtCore/qobject.h:54:
/usr/include/qt/QtCore/qvarlengtharray.h:562:6: note: candidate: ‘template<class T, int Prealloc1, int Prealloc2> bool operator==(const QVarLengthArray<T, Prealloc1>&, const QVarLengthArray<T, Prealloc2>&)’ (reversed)
  562 | bool operator==(const QVarLengthArray<T, Prealloc1> &l, const QVarLengthArray<T, Prealloc2> &r)
      |      ^~~~~~~~
/usr/include/qt/QtCore/qvarlengtharray.h:562:6: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} is not derived from ‘const QVarLengthArray<T, Prealloc1>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
In file included from /usr/include/qt/QtCore/qlocale.h:46,
                 from /usr/include/qt/QtGui/qguiapplication.h:47,
                 from /usr/include/qt/QtWidgets/qapplication.h:52:
/usr/include/qt/QtCore/qshareddata.h:141:32: note: candidate: ‘template<class T> bool operator==(std::nullptr_t, const QSharedDataPointer<T>&)’ (reversed)
  141 | template <class T> inline bool operator==(std::nullptr_t p1, const QSharedDataPointer<T> &p2)
      |                                ^~~~~~~~
/usr/include/qt/QtCore/qshareddata.h:141:32: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} is not derived from ‘const QSharedDataPointer<T>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
/usr/include/qt/QtCore/qshareddata.h:147:32: note: candidate: ‘template<class T> bool operator==(const QSharedDataPointer<T>&, std::nullptr_t)’ (reversed)
  147 | template <class T> inline bool operator==(const QSharedDataPointer<T> &p1, std::nullptr_t p2)
      |                                ^~~~~~~~
/usr/include/qt/QtCore/qshareddata.h:147:32: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} is not derived from ‘const QSharedDataPointer<T>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
/usr/include/qt/QtCore/qshareddata.h:287:32: note: candidate: ‘template<class T> bool operator==(std::nullptr_t, const QExplicitlySharedDataPointer<T>&)’ (reversed)
  287 | template <class T> inline bool operator==(std::nullptr_t p1, const QExplicitlySharedDataPointer<T> &p2)
      |                                ^~~~~~~~
/usr/include/qt/QtCore/qshareddata.h:287:32: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} is not derived from ‘const QExplicitlySharedDataPointer<T>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
/usr/include/qt/QtCore/qshareddata.h:293:32: note: candidate: ‘template<class T> bool operator==(const QExplicitlySharedDataPointer<T>&, std::nullptr_t)’ (reversed)
  293 | template <class T> inline bool operator==(const QExplicitlySharedDataPointer<T> &p1, std::nullptr_t p2)
      |                                ^~~~~~~~
/usr/include/qt/QtCore/qshareddata.h:293:32: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} is not derived from ‘const QExplicitlySharedDataPointer<T>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
In file included from /usr/include/qt/QtCore/qsharedpointer.h:48,
                 from /usr/include/qt/QtGui/qpixmap.h:48,
                 from /usr/include/qt/QtGui/qbrush.h:52,
                 from /usr/include/qt/QtGui/qpalette.h:46,
                 from /usr/include/qt/QtWidgets/qwidget.h:48,
                 from /usr/include/qt/QtWidgets/qmainwindow.h:44,
                 from /usr/include/qt/QtWidgets/QMainWindow:1,
                 from /home/jordan/Dev/Havoc/client/Include/global.hpp:5:
/usr/include/qt/QtCore/qsharedpointer_impl.h:747:6: note: candidate: ‘template<class T, class X> bool operator==(const QSharedPointer<T>&, const QSharedPointer<T>&)’ (reversed)
  747 | bool operator==(const QSharedPointer<T> &ptr1, const QSharedPointer<X> &ptr2) noexcept
      |      ^~~~~~~~
/usr/include/qt/QtCore/qsharedpointer_impl.h:747:6: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} is not derived from ‘const QSharedPointer<T>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
/usr/include/qt/QtCore/qsharedpointer_impl.h:758:6: note: candidate: ‘template<class T, class X> bool operator==(const QSharedPointer<T>&, const X*)’ (reversed)
  758 | bool operator==(const QSharedPointer<T> &ptr1, const X *ptr2) noexcept
      |      ^~~~~~~~
/usr/include/qt/QtCore/qsharedpointer_impl.h:758:6: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} is not derived from ‘const QSharedPointer<T>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
/usr/include/qt/QtCore/qsharedpointer_impl.h:763:6: note: candidate: ‘template<class T, class X> bool operator==(const T*, const QSharedPointer<T>&)’ (reversed)
  763 | bool operator==(const T *ptr1, const QSharedPointer<X> &ptr2) noexcept
      |      ^~~~~~~~
/usr/include/qt/QtCore/qsharedpointer_impl.h:763:6: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   mismatched types ‘const T*’ and ‘nlohmann::json_abi_v3_11_2::basic_json<>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
/usr/include/qt/QtCore/qsharedpointer_impl.h:779:6: note: candidate: ‘template<class T, class X> bool operator==(const QSharedPointer<T>&, const QWeakPointer<X>&)’ (reversed)
  779 | bool operator==(const QSharedPointer<T> &ptr1, const QWeakPointer<X> &ptr2) noexcept
      |      ^~~~~~~~
/usr/include/qt/QtCore/qsharedpointer_impl.h:779:6: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} is not derived from ‘const QSharedPointer<T>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
/usr/include/qt/QtCore/qsharedpointer_impl.h:790:13: note: candidate: ‘template<class T> bool operator==(const QSharedPointer<T>&, std::nullptr_t)’ (reversed)
  790 | inline bool operator==(const QSharedPointer<T> &lhs, std::nullptr_t) noexcept
      |             ^~~~~~~~
/usr/include/qt/QtCore/qsharedpointer_impl.h:790:13: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} is not derived from ‘const QSharedPointer<T>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
/usr/include/qt/QtCore/qsharedpointer_impl.h:802:13: note: candidate: ‘template<class T> bool operator==(std::nullptr_t, const QSharedPointer<T>&)’ (reversed)
  802 | inline bool operator==(std::nullptr_t, const QSharedPointer<T> &rhs) noexcept
      |             ^~~~~~~~
/usr/include/qt/QtCore/qsharedpointer_impl.h:802:13: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} is not derived from ‘const QSharedPointer<T>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
/usr/include/qt/QtCore/qsharedpointer_impl.h:814:13: note: candidate: ‘template<class T> bool operator==(const QWeakPointer<T>&, std::nullptr_t)’ (reversed)
  814 | inline bool operator==(const QWeakPointer<T> &lhs, std::nullptr_t) noexcept
      |             ^~~~~~~~
/usr/include/qt/QtCore/qsharedpointer_impl.h:814:13: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} is not derived from ‘const QWeakPointer<T>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
/usr/include/qt/QtCore/qsharedpointer_impl.h:826:13: note: candidate: ‘template<class T> bool operator==(std::nullptr_t, const QWeakPointer<T>&)’ (reversed)
  826 | inline bool operator==(std::nullptr_t, const QWeakPointer<T> &rhs) noexcept
      |             ^~~~~~~~
/usr/include/qt/QtCore/qsharedpointer_impl.h:826:13: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} is not derived from ‘const QWeakPointer<T>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
In file included from /usr/include/c++/13.1.1/bits/stl_algobase.h:67,
                 from /usr/include/c++/13.1.1/algorithm:60,
                 from /usr/include/qt/QtCore/qglobal.h:142,
                 from /usr/include/qt/QtGui/qtguiglobal.h:43,
                 from /usr/include/qt/QtWidgets/qtwidgetsglobal.h:43,
                 from /usr/include/qt/QtWidgets/qapplication.h:43:
/usr/include/c++/13.1.1/bits/stl_iterator.h:534:5: note: candidate: ‘template<class _IteratorL, class _IteratorR> constexpr bool std::operator==(const reverse_iterator<_IteratorL>&, const reverse_iterator<_IteratorR>&) requires requires{{std::operator==::__x->base() == std::operator==::__y->base()} -> decltype(auto) [requires std::convertible_to<<placeholder>, bool>];}’ (reversed)
  534 |     operator==(const reverse_iterator<_IteratorL>& __x,
      |     ^~~~~~~~
/usr/include/c++/13.1.1/bits/stl_iterator.h:534:5: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} is not derived from ‘const std::reverse_iterator<_IteratorL>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
/usr/include/c++/13.1.1/bits/stl_iterator.h:1678:5: note: candidate: ‘template<class _IteratorL, class _IteratorR> constexpr bool std::operator==(const move_iterator<_IteratorL>&, const move_iterator<_IteratorR>&) requires requires{{std::operator==::__x->base() == std::operator==::__y->base()} -> decltype(auto) [requires std::convertible_to<<placeholder>, bool>];}’ (reversed)
 1678 |     operator==(const move_iterator<_IteratorL>& __x,
      |     ^~~~~~~~
/usr/include/c++/13.1.1/bits/stl_iterator.h:1678:5: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} is not derived from ‘const std::move_iterator<_IteratorL>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
In file included from /usr/include/c++/13.1.1/string:43,
                 from /usr/include/qt/QtCore/qbytearray.h:52,
                 from /usr/include/qt/QtCore/qstring.h:50,
                 from /usr/include/qt/QtCore/qcoreapplication.h:44:
/usr/include/c++/13.1.1/bits/allocator.h:237:5: note: candidate: ‘template<class _T1, class _T2> constexpr bool std::operator==(const allocator<_CharT>&, const allocator<_T2>&)’ (reversed)
  237 |     operator==(const allocator<_T1>&, const allocator<_T2>&)
      |     ^~~~~~~~
/usr/include/c++/13.1.1/bits/allocator.h:237:5: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} is not derived from ‘const std::allocator<_CharT>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
In file included from /usr/include/c++/13.1.1/bits/basic_string.h:47,
                 from /usr/include/c++/13.1.1/string:54:
/usr/include/c++/13.1.1/string_view:615:5: note: candidate: ‘template<class _CharT, class _Traits> constexpr bool std::operator==(basic_string_view<_CharT, _Traits>, __type_identity_t<basic_string_view<_CharT, _Traits> >)’ (reversed)
  615 |     operator==(basic_string_view<_CharT, _Traits> __x,
      |     ^~~~~~~~
/usr/include/c++/13.1.1/string_view:615:5: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘nlohmann::json_abi_v3_11_2::basic_json<>’ is not derived from ‘std::basic_string_view<_CharT, _Traits>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
/usr/include/c++/13.1.1/bits/basic_string.h:3728:5: note: candidate: ‘template<class _CharT, class _Traits, class _Alloc> constexpr bool std::operator==(const __cxx11::basic_string<_CharT, _Traits, _Allocator>&, const _CharT*)’ (reversed)
 3728 |     operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
      |     ^~~~~~~~
/usr/include/c++/13.1.1/bits/basic_string.h:3728:5: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} is not derived from ‘const std::__cxx11::basic_string<_CharT, _Traits, _Allocator>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
In file included from /usr/include/c++/13.1.1/bits/uses_allocator_args.h:38,
                 from /usr/include/c++/13.1.1/bits/memory_resource.h:41,
                 from /usr/include/c++/13.1.1/string:58:
/usr/include/c++/13.1.1/tuple:1905:5: note: candidate: ‘template<class ... _TElements, class ... _UElements> constexpr bool std::operator==(const tuple<_UTypes ...>&, const tuple<_UTypes ...>&)’ (reversed)
 1905 |     operator==(const tuple<_TElements...>& __t,
      |     ^~~~~~~~
/usr/include/c++/13.1.1/tuple:1905:5: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} is not derived from ‘const std::tuple<_UTypes ...>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
In file included from /usr/include/c++/13.1.1/functional:59,
                 from /usr/include/qt/QtCore/qhashfunctions.h:48,
                 from /usr/include/qt/QtCore/qlist.h:47,
                 from /usr/include/qt/QtCore/qobject.h:49:
/usr/include/c++/13.1.1/bits/std_function.h:737:5: note: candidate: ‘template<class _Res, class ... _Args> bool std::operator==(const function<_Res(_ArgTypes ...)>&, nullptr_t)’ (reversed)
  737 |     operator==(const function<_Res(_Args...)>& __f, nullptr_t) noexcept
      |     ^~~~~~~~
/usr/include/c++/13.1.1/bits/std_function.h:737:5: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} is not derived from ‘const std::function<_Res(_ArgTypes ...)>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
In file included from /usr/include/c++/13.1.1/bits/shared_ptr_base.h:59,
                 from /usr/include/c++/13.1.1/bits/shared_ptr.h:53,
                 from /usr/include/c++/13.1.1/chrono:49,
                 from /usr/include/qt/QtCore/qobject.h:59:
/usr/include/c++/13.1.1/bits/unique_ptr.h:829:5: note: candidate: ‘template<class _Tp, class _Dp, class _Up, class _Ep> bool std::operator==(const unique_ptr<_Tp, _Dp>&, const unique_ptr<_Up, _Ep>&)’ (reversed)
  829 |     operator==(const unique_ptr<_Tp, _Dp>& __x,
      |     ^~~~~~~~
/usr/include/c++/13.1.1/bits/unique_ptr.h:829:5: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} is not derived from ‘const std::unique_ptr<_Tp, _Dp>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
/usr/include/c++/13.1.1/bits/unique_ptr.h:837:5: note: candidate: ‘template<class _Tp, class _Dp> bool std::operator==(const unique_ptr<_Tp, _Dp>&, nullptr_t)’ (reversed)
  837 |     operator==(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) noexcept
      |     ^~~~~~~~
/usr/include/c++/13.1.1/bits/unique_ptr.h:837:5: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} is not derived from ‘const std::unique_ptr<_Tp, _Dp>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
/usr/include/c++/13.1.1/bits/shared_ptr_base.h:1793:5: note: candidate: ‘template<class _Tp1, class _Tp2, __gnu_cxx::_Lock_policy _Lp> bool std::operator==(const __shared_ptr<_Tp1, _Lp>&, const __shared_ptr<_Tp2, _Lp>&)’ (reversed)
 1793 |     operator==(const __shared_ptr<_Tp1, _Lp>& __a,
      |     ^~~~~~~~
/usr/include/c++/13.1.1/bits/shared_ptr_base.h:1793:5: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} is not derived from ‘const std::__shared_ptr<_Tp1, _Lp>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
/usr/include/c++/13.1.1/bits/shared_ptr_base.h:1799:5: note: candidate: ‘template<class _Tp, __gnu_cxx::_Lock_policy _Lp> bool std::operator==(const __shared_ptr<_Tp, _Lp>&, nullptr_t)’ (reversed)
 1799 |     operator==(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept
      |     ^~~~~~~~
/usr/include/c++/13.1.1/bits/shared_ptr_base.h:1799:5: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} is not derived from ‘const std::__shared_ptr<_Tp, _Lp>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
/usr/include/c++/13.1.1/bits/shared_ptr.h:555:5: note: candidate: ‘template<class _Tp, class _Up> bool std::operator==(const shared_ptr<_Tp>&, const shared_ptr<_Tp>&)’ (reversed)
  555 |     operator==(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept
      |     ^~~~~~~~
/usr/include/c++/13.1.1/bits/shared_ptr.h:555:5: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} is not derived from ‘const std::shared_ptr<_Tp>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
/usr/include/c++/13.1.1/bits/shared_ptr.h:561:5: note: candidate: ‘template<class _Tp> bool std::operator==(const shared_ptr<_Tp>&, nullptr_t)’ (reversed)
  561 |     operator==(const shared_ptr<_Tp>& __a, nullptr_t) noexcept
      |     ^~~~~~~~
/usr/include/c++/13.1.1/bits/shared_ptr.h:561:5: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} is not derived from ‘const std::shared_ptr<_Tp>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
In file included from /usr/include/c++/13.1.1/format:43,
                 from /usr/include/c++/13.1.1/bits/chrono_io.h:39,
                 from /usr/include/c++/13.1.1/chrono:3330:
/usr/include/c++/13.1.1/optional:1282:5: note: candidate: ‘template<class _Tp> constexpr bool std::operator==(const optional<_Tp>&, nullopt_t)’ (reversed)
 1282 |     operator==(const optional<_Tp>& __lhs, nullopt_t) noexcept
      |     ^~~~~~~~
/usr/include/c++/13.1.1/optional:1282:5: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} is not derived from ‘const std::optional<_Tp>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
In file included from /usr/include/c++/13.1.1/x86_64-pc-linux-gnu/bits/c++allocator.h:33,
                 from /usr/include/c++/13.1.1/bits/allocator.h:46:
/usr/include/c++/13.1.1/bits/new_allocator.h:211:9: note: candidate: ‘template<class _Up> constexpr bool std::operator==(const __new_allocator<unsigned char>&, const __new_allocator<_Tp>&)’ (reversed)
  211 |         operator==(const __new_allocator&, const __new_allocator<_Up>&)
      |         ^~~~~~~~
/usr/include/c++/13.1.1/bits/new_allocator.h:211:9: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} is not derived from ‘const std::__new_allocator<_Tp>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
/usr/include/c++/13.1.1/bits/new_allocator.h:211:9: note: candidate: ‘template<class _Up> constexpr bool std::operator==(const __new_allocator<char>&, const __new_allocator<_Tp>&)’ (reversed)
  211 |         operator==(const __new_allocator&, const __new_allocator<_Up>&)
      |         ^~~~~~~~
/usr/include/c++/13.1.1/bits/new_allocator.h:211:9: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} is not derived from ‘const std::__new_allocator<_Tp>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
In file included from /usr/include/qt/QtCore/qstring.h:49:
/usr/include/qt/QtCore/qchar.h:61:30: note: candidate: ‘constexpr bool operator==(char, QLatin1Char)’ (reversed)
   61 | Q_DECL_CONSTEXPR inline bool operator==(char lhs, QLatin1Char rhs) noexcept { return lhs == rhs.toLatin1(); }
      |                              ^~~~~~~~
/usr/include/qt/QtCore/qchar.h:61:46: note:   no known conversion for argument 1 from ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} to ‘char’
   61 | Q_DECL_CONSTEXPR inline bool operator==(char lhs, QLatin1Char rhs) noexcept { return lhs == rhs.toLatin1(); }
      |                                         ~~~~~^~~
/usr/include/qt/QtCore/qchar.h:68:30: note: candidate: ‘constexpr bool operator==(QLatin1Char, char)’ (reversed)
   68 | Q_DECL_CONSTEXPR inline bool operator==(QLatin1Char lhs, char rhs) noexcept { return lhs.toLatin1() == rhs; }
      |                              ^~~~~~~~
/usr/include/qt/QtCore/qchar.h:68:53: note:   no known conversion for argument 1 from ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} to ‘QLatin1Char’
   68 | Q_DECL_CONSTEXPR inline bool operator==(QLatin1Char lhs, char rhs) noexcept { return lhs.toLatin1() == rhs; }
      |                                         ~~~~~~~~~~~~^~~
/usr/include/qt/QtCore/qchar.h:646:30: note: candidate: ‘constexpr bool operator==(QChar, std::nullptr_t)’ (reversed)
  646 | Q_DECL_CONSTEXPR inline bool operator==(QChar lhs, std::nullptr_t) noexcept { return lhs.isNull(); }
      |                              ^~~~~~~~
/usr/include/qt/QtCore/qchar.h:646:47: note:   no known conversion for argument 1 from ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} to ‘QChar’
  646 | Q_DECL_CONSTEXPR inline bool operator==(QChar lhs, std::nullptr_t) noexcept { return lhs.isNull(); }
      |                                         ~~~~~~^~~
/usr/include/qt/QtCore/qchar.h:648:30: note: candidate: ‘constexpr bool operator==(std::nullptr_t, QChar)’ (reversed)
  648 | Q_DECL_CONSTEXPR inline bool operator==(std::nullptr_t, QChar rhs) noexcept { return rhs.isNull(); }
      |                              ^~~~~~~~
/usr/include/qt/QtCore/qchar.h:648:41: note:   no known conversion for argument 1 from ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} to ‘std::nullptr_t’
  648 | Q_DECL_CONSTEXPR inline bool operator==(std::nullptr_t, QChar rhs) noexcept { return rhs.isNull(); }
      |                                         ^~~~~~~~~~~~~~
/usr/include/qt/QtCore/qbytearray.h:686:13: note: candidate: ‘bool operator==(const QByteArray&, const char*)’ (reversed)
  686 | inline bool operator==(const QByteArray &a1, const char *a2) noexcept
      |             ^~~~~~~~
/usr/include/qt/QtCore/qbytearray.h:686:42: note:   no known conversion for argument 1 from ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} to ‘const QByteArray&’
  686 | inline bool operator==(const QByteArray &a1, const char *a2) noexcept
      |                        ~~~~~~~~~~~~~~~~~~^~
/usr/include/qt/QtCore/qbytearray.h:688:13: note: candidate: ‘bool operator==(const char*, const QByteArray&)’ (reversed)
  688 | inline bool operator==(const char *a1, const QByteArray &a2) noexcept
      |             ^~~~~~~~
/usr/include/qt/QtCore/qbytearray.h:688:36: note:   no known conversion for argument 1 from ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} to ‘const char*’
  688 | inline bool operator==(const char *a1, const QByteArray &a2) noexcept
      |                        ~~~~~~~~~~~~^~
/usr/include/qt/QtCore/qstring.h:1376:13: note: candidate: ‘bool operator==(QString::Null, const QString&)’ (reversed)
 1376 | inline bool operator==(QString::Null, const QString &s) { return s.isNull(); }
      |             ^~~~~~~~
/usr/include/qt/QtCore/qstring.h:1376:24: note:   no known conversion for argument 1 from ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} to ‘QString::Null’
 1376 | inline bool operator==(QString::Null, const QString &s) { return s.isNull(); }
      |                        ^~~~~~~~~~~~~
/usr/include/qt/QtCore/qstring.h:1378:13: note: candidate: ‘bool operator==(const QString&, QString::Null)’ (reversed)
 1378 | inline bool operator==(const QString &s, QString::Null) { return s.isNull(); }
      |             ^~~~~~~~
/usr/include/qt/QtCore/qstring.h:1378:39: note:   no known conversion for argument 1 from ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} to ‘const QString&’
 1378 | inline bool operator==(const QString &s, QString::Null) { return s.isNull(); }
      |                        ~~~~~~~~~~~~~~~^
/usr/include/qt/QtCore/qstring.h:1430:32: note: candidate: ‘bool operator==(const char*, const QString&)’ (reversed)
 1430 | inline QT_ASCII_CAST_WARN bool operator==(const char *s1, const QString &s2)
      |                                ^~~~~~~~
/usr/include/qt/QtCore/qstring.h:1430:55: note:   no known conversion for argument 1 from ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} to ‘const char*’
 1430 | inline QT_ASCII_CAST_WARN bool operator==(const char *s1, const QString &s2)
      |                                           ~~~~~~~~~~~~^~
/usr/include/qt/QtCore/qstring.h:1443:32: note: candidate: ‘bool operator==(const char*, QLatin1String)’ (reversed)
 1443 | inline QT_ASCII_CAST_WARN bool operator==(const char *s1, QLatin1String s2)
      |                                ^~~~~~~~
/usr/include/qt/QtCore/qstring.h:1443:55: note:   no known conversion for argument 1 from ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} to ‘const char*’
 1443 | inline QT_ASCII_CAST_WARN bool operator==(const char *s1, QLatin1String s2)
      |                                           ~~~~~~~~~~~~^~
/usr/include/qt/QtCore/qstring.h:1833:20: note: candidate: ‘bool operator==(const QString&, const QStringRef&)’ (reversed)
 1833 | Q_CORE_EXPORT bool operator==(const QString &lhs, const QStringRef &rhs) noexcept;
      |                    ^~~~~~~~
/usr/include/qt/QtCore/qstring.h:1833:46: note:   no known conversion for argument 1 from ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} to ‘const QString&’
 1833 | Q_CORE_EXPORT bool operator==(const QString &lhs, const QStringRef &rhs) noexcept;
      |                               ~~~~~~~~~~~~~~~^~~
/usr/include/qt/QtCore/qstring.h:1840:13: note: candidate: ‘bool operator==(const QStringRef&, const QString&)’ (reversed)
 1840 | inline bool operator==(const QStringRef &lhs, const QString &rhs) noexcept { return rhs == lhs; }
      |             ^~~~~~~~
/usr/include/qt/QtCore/qstring.h:1840:42: note:   no known conversion for argument 1 from ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} to ‘const QStringRef&’
 1840 | inline bool operator==(const QStringRef &lhs, const QString &rhs) noexcept { return rhs == lhs; }
      |                        ~~~~~~~~~~~~~~~~~~^~~
/usr/include/qt/QtCore/qstring.h:1869:20: note: candidate: ‘bool operator==(QLatin1String, const QStringRef&)’ (reversed)
 1869 | Q_CORE_EXPORT bool operator==(QLatin1String lhs, const QStringRef &rhs) noexcept;
      |                    ^~~~~~~~
/usr/include/qt/QtCore/qstring.h:1869:68: note:   no known conversion for argument 2 from ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘const QStringRef&’
 1869 | Q_CORE_EXPORT bool operator==(QLatin1String lhs, const QStringRef &rhs) noexcept;
      |                                                  ~~~~~~~~~~~~~~~~~~^~~
/usr/include/qt/QtCore/qstring.h:1876:13: note: candidate: ‘bool operator==(const QStringRef&, QLatin1String)’ (reversed)
 1876 | inline bool operator==(const QStringRef &lhs, QLatin1String rhs) noexcept { return rhs == lhs; }
      |             ^~~~~~~~
/usr/include/qt/QtCore/qstring.h:1876:42: note:   no known conversion for argument 1 from ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} to ‘const QStringRef&’
 1876 | inline bool operator==(const QStringRef &lhs, QLatin1String rhs) noexcept { return rhs == lhs; }
      |                        ~~~~~~~~~~~~~~~~~~^~~
/usr/include/qt/QtCore/qstring.h:1884:13: note: candidate: ‘bool operator==(QChar, const QString&)’ (reversed)
 1884 | inline bool operator==(QChar lhs, const QString &rhs) noexcept
      |             ^~~~~~~~
/usr/include/qt/QtCore/qstring.h:1884:30: note:   no known conversion for argument 1 from ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} to ‘QChar’
 1884 | inline bool operator==(QChar lhs, const QString &rhs) noexcept
      |                        ~~~~~~^~~
/usr/include/qt/QtCore/qstring.h:1895:13: note: candidate: ‘bool operator==(const QString&, QChar)’ (reversed)
 1895 | inline bool operator==(const QString &lhs, QChar rhs) noexcept { return   rhs == lhs; }
      |             ^~~~~~~~
/usr/include/qt/QtCore/qstring.h:1895:39: note:   no known conversion for argument 1 from ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} to ‘const QString&’
 1895 | inline bool operator==(const QString &lhs, QChar rhs) noexcept { return   rhs == lhs; }
      |                        ~~~~~~~~~~~~~~~^~~
/usr/include/qt/QtCore/qstring.h:1903:13: note: candidate: ‘bool operator==(QChar, const QStringRef&)’ (reversed)
 1903 | inline bool operator==(QChar lhs, const QStringRef &rhs) noexcept
      |             ^~~~~~~~
/usr/include/qt/QtCore/qstring.h:1903:30: note:   no known conversion for argument 1 from ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} to ‘QChar’
 1903 | inline bool operator==(QChar lhs, const QStringRef &rhs) noexcept
      |                        ~~~~~~^~~
/usr/include/qt/QtCore/qstring.h:1914:13: note: candidate: ‘bool operator==(const QStringRef&, QChar)’ (reversed)
 1914 | inline bool operator==(const QStringRef &lhs, QChar rhs) noexcept { return   rhs == lhs; }
      |             ^~~~~~~~
/usr/include/qt/QtCore/qstring.h:1914:42: note:   no known conversion for argument 1 from ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} to ‘const QStringRef&’
 1914 | inline bool operator==(const QStringRef &lhs, QChar rhs) noexcept { return   rhs == lhs; }
      |                        ~~~~~~~~~~~~~~~~~~^~~
/usr/include/qt/QtCore/qstring.h:1922:13: note: candidate: ‘bool operator==(QChar, QLatin1String)’ (reversed)
 1922 | inline bool operator==(QChar lhs, QLatin1String rhs) noexcept
      |             ^~~~~~~~
/usr/include/qt/QtCore/qstring.h:1922:30: note:   no known conversion for argument 1 from ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} to ‘QChar’
 1922 | inline bool operator==(QChar lhs, QLatin1String rhs) noexcept
      |                        ~~~~~~^~~
/usr/include/qt/QtCore/qstring.h:1933:13: note: candidate: ‘bool operator==(QLatin1String, QChar)’ (reversed)
 1933 | inline bool operator==(QLatin1String lhs, QChar rhs) noexcept { return   rhs == lhs; }
      |             ^~~~~~~~
/usr/include/qt/QtCore/qstring.h:1933:49: note:   no known conversion for argument 2 from ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘QChar’
 1933 | inline bool operator==(QLatin1String lhs, QChar rhs) noexcept { return   rhs == lhs; }
      |                                           ~~~~~~^~~
/usr/include/qt/QtCore/qstring.h:1949:13: note: candidate: ‘bool operator==(QStringView, QChar)’ (reversed)
 1949 | inline bool operator==(QStringView lhs, QChar rhs) noexcept { return lhs == QStringView(&rhs, 1); }
      |             ^~~~~~~~
/usr/include/qt/QtCore/qstring.h:1949:36: note:   no known conversion for argument 1 from ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} to ‘QStringView’
 1949 | inline bool operator==(QStringView lhs, QChar rhs) noexcept { return lhs == QStringView(&rhs, 1); }
      |                        ~~~~~~~~~~~~^~~
/usr/include/qt/QtCore/qstring.h:1956:13: note: candidate: ‘bool operator==(QChar, QStringView)’ (reversed)
 1956 | inline bool operator==(QChar lhs, QStringView rhs) noexcept { return QStringView(&lhs, 1) == rhs; }
      |             ^~~~~~~~
/usr/include/qt/QtCore/qstring.h:1956:30: note:   no known conversion for argument 1 from ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} to ‘QChar’
 1956 | inline bool operator==(QChar lhs, QStringView rhs) noexcept { return QStringView(&lhs, 1) == rhs; }
      |                        ~~~~~~^~~
/usr/include/qt/QtCore/qstring.h:1964:13: note: candidate: ‘bool operator==(QStringView, QLatin1String)’ (reversed)
 1964 | inline bool operator==(QStringView lhs, QLatin1String rhs) noexcept { return lhs.size() == rhs.size() && QtPrivate::compareStrings(lhs, rhs) == 0; }
      |             ^~~~~~~~
/usr/include/qt/QtCore/qstring.h:1964:36: note:   no known conversion for argument 1 from ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} to ‘QStringView’
 1964 | inline bool operator==(QStringView lhs, QLatin1String rhs) noexcept { return lhs.size() == rhs.size() && QtPrivate::compareStrings(lhs, rhs) == 0; }
      |                        ~~~~~~~~~~~~^~~
/usr/include/qt/QtCore/qstring.h:1971:13: note: candidate: ‘bool operator==(QLatin1String, QStringView)’ (reversed)
 1971 | inline bool operator==(QLatin1String lhs, QStringView rhs) noexcept { return lhs.size() == rhs.size() && QtPrivate::compareStrings(lhs, rhs) == 0; }
      |             ^~~~~~~~
/usr/include/qt/QtCore/qstring.h:1971:55: note:   no known conversion for argument 2 from ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘QStringView’
 1971 | inline bool operator==(QLatin1String lhs, QStringView rhs) noexcept { return lhs.size() == rhs.size() && QtPrivate::compareStrings(lhs, rhs) == 0; }
      |                                           ~~~~~~~~~~~~^~~
/usr/include/qt/QtCore/qstring.h:1980:32: note: candidate: ‘bool operator==(const QStringRef&, const QByteArray&)’ (reversed)
 1980 | inline QT_ASCII_CAST_WARN bool operator==(const QStringRef &lhs, const QByteArray &rhs) { return lhs.compare(rhs) == 0; }
      |                                ^~~~~~~~
/usr/include/qt/QtCore/qstring.h:1980:61: note:   no known conversion for argument 1 from ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} to ‘const QStringRef&’
 1980 | inline QT_ASCII_CAST_WARN bool operator==(const QStringRef &lhs, const QByteArray &rhs) { return lhs.compare(rhs) == 0; }
      |                                           ~~~~~~~~~~~~~~~~~~^~~
/usr/include/qt/QtCore/qstring.h:1987:32: note: candidate: ‘bool operator==(const QByteArray&, const QStringRef&)’ (reversed)
 1987 | inline QT_ASCII_CAST_WARN bool operator==(const QByteArray &lhs, const QStringRef &rhs) { return rhs.compare(lhs) == 0; }
      |                                ^~~~~~~~
/usr/include/qt/QtCore/qstring.h:1987:61: note:   no known conversion for argument 1 from ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} to ‘const QByteArray&’
 1987 | inline QT_ASCII_CAST_WARN bool operator==(const QByteArray &lhs, const QStringRef &rhs) { return rhs.compare(lhs) == 0; }
      |                                           ~~~~~~~~~~~~~~~~~~^~~
/usr/include/qt/QtCore/qstring.h:2008:32: note: candidate: ‘bool operator==(const char*, const QStringRef&)’ (reversed)
 2008 | inline QT_ASCII_CAST_WARN bool operator==(const char *s1, const QStringRef &s2)
      |                                ^~~~~~~~
/usr/include/qt/QtCore/qstring.h:2008:55: note:   no known conversion for argument 1 from ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} to ‘const char*’
 2008 | inline QT_ASCII_CAST_WARN bool operator==(const char *s1, const QStringRef &s2)
      |                                           ~~~~~~~~~~~~^~
In file included from /usr/include/qt/QtCore/qlocale.h:43:
/usr/include/qt/QtCore/qvariant.h:611:13: note: candidate: ‘bool operator==(const QVariant&, const QVariantComparisonHelper&)’ (reversed)
  611 | inline bool operator==(const QVariant &v1, const QVariantComparisonHelper &v2)
      |             ^~~~~~~~
/usr/include/qt/QtCore/qvariant.h:611:40: note:   no known conversion for argument 1 from ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} to ‘const QVariant&’
  611 | inline bool operator==(const QVariant &v1, const QVariantComparisonHelper &v2)
      |                        ~~~~~~~~~~~~~~~~^~
In file included from /usr/include/qt/QtNetwork/qtcpserver.h:46,
                 from /usr/include/qt/QtNetwork/QTcpServer:1,
                 from /home/jordan/Dev/Havoc/client/Include/global.hpp:21:
/usr/include/qt/QtNetwork/qhostaddress.h:165:13: note: candidate: ‘bool operator==(QHostAddress::SpecialAddress, const QHostAddress&)’ (reversed)
  165 | inline bool operator ==(QHostAddress::SpecialAddress address1, const QHostAddress &address2)
      |             ^~~~~~~~
/usr/include/qt/QtNetwork/qhostaddress.h:165:84: note:   no known conversion for argument 2 from ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘const QHostAddress&’
  165 | inline bool operator ==(QHostAddress::SpecialAddress address1, const QHostAddress &address2)
      |                                                                ~~~~~~~~~~~~~~~~~~~~^~~~~~~~
In file included from /usr/include/qt/QtCore/qcborvalue.h:45,
                 from /usr/include/qt/QtCore/qjsonvalue.h:46,
                 from /usr/include/qt/QtCore/qjsondocument.h:43,
                 from /usr/include/qt/QtCore/QJsonDocument:1,
                 from /home/jordan/Dev/Havoc/client/Include/global.hpp:23:
/usr/include/qt/QtCore/qcborcommon.h:94:13: note: candidate: ‘bool operator==(QCborTag, QCborKnownTags)’ (reversed)
   94 | inline bool operator==(QCborTag t, QCborKnownTags kt)   { return quint64(t) == quint64(kt); }
      |             ^~~~~~~~
/usr/include/qt/QtCore/qcborcommon.h:94:51: note:   no known conversion for argument 2 from ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘QCborKnownTags’
   94 | inline bool operator==(QCborTag t, QCborKnownTags kt)   { return quint64(t) == quint64(kt); }
      |                                    ~~~~~~~~~~~~~~~^~
/usr/include/qt/QtCore/qcborcommon.h:95:13: note: candidate: ‘bool operator==(QCborKnownTags, QCborTag)’ (reversed)
   95 | inline bool operator==(QCborKnownTags kt, QCborTag t)   { return quint64(t) == quint64(kt); }
      |             ^~~~~~~~
/usr/include/qt/QtCore/qcborcommon.h:95:52: note:   no known conversion for argument 2 from ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘QCborTag’
   95 | inline bool operator==(QCborKnownTags kt, QCborTag t)   { return quint64(t) == quint64(kt); }
      |                                           ~~~~~~~~~^
In file included from /usr/include/qt/QtGui/qtextlayout.h:49,
                 from /usr/include/qt/QtGui/qabstracttextdocumentlayout.h:45,
                 from /usr/include/qt/QtWidgets/qplaintextedit.h:51,
                 from /usr/include/qt/QtWidgets/QPlainTextEdit:1,
                 from /home/jordan/Dev/Havoc/client/Include/UserInterface/Dialogs/Connect.hpp:8,
                 from /home/jordan/Dev/Havoc/client/Include/UserInterface/HavocUI.hpp:7,
                 from /home/jordan/Dev/Havoc/client/Include/Havoc/Havoc.hpp:5,
                 from /home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:3:
/usr/include/qt/QtGui/qevent.h:841:13: note: candidate: ‘bool operator==(QKeyEvent*, QKeySequence::StandardKey)’ (reversed)
  841 | inline bool operator==(QKeyEvent *e, QKeySequence::StandardKey key){return (e ? e->matches(key) : false);}
      |             ^~~~~~~~
/usr/include/qt/QtGui/qevent.h:841:35: note:   no known conversion for argument 1 from ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} to ‘QKeyEvent*’
  841 | inline bool operator==(QKeyEvent *e, QKeySequence::StandardKey key){return (e ? e->matches(key) : false);}
      |                        ~~~~~~~~~~~^
/usr/include/qt/QtGui/qevent.h:842:13: note: candidate: ‘bool operator==(QKeySequence::StandardKey, QKeyEvent*)’ (reversed)
  842 | inline bool operator==(QKeySequence::StandardKey key, QKeyEvent *e){return (e ? e->matches(key) : false);}
      |             ^~~~~~~~
/usr/include/qt/QtGui/qevent.h:842:66: note:   no known conversion for argument 2 from ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘QKeyEvent*’
  842 | inline bool operator==(QKeySequence::StandardKey key, QKeyEvent *e){return (e ? e->matches(key) : false);}
      |                                                       ~~~~~~~~~~~^
In file included from /usr/include/c++/13.1.1/bits/ios_base.h:46,
                 from /usr/include/c++/13.1.1/streambuf:43,
                 from /usr/include/c++/13.1.1/bits/streambuf_iterator.h:35,
                 from /usr/include/c++/13.1.1/iterator:66,
                 from /usr/include/qt/QtCore/qbytearray.h:53:
/usr/include/c++/13.1.1/system_error:465:3: note: candidate: ‘bool std::operator==(const error_code&, const error_condition&)’ (reversed)
  465 |   operator==(const error_code& __lhs, const error_condition& __rhs) noexcept
      |   ^~~~~~~~
/usr/include/c++/13.1.1/system_error:465:32: note:   no known conversion for argument 1 from ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} to ‘const std::error_code&’
  465 |   operator==(const error_code& __lhs, const error_condition& __rhs) noexcept
      |              ~~~~~~~~~~~~~~~~~~^~~~~
In file included from /usr/include/qt/QtCore/qhashfunctions.h:45:
/usr/include/qt/QtCore/qpair.h:113:41: note: candidate: ‘template<class T1, class T2> constexpr bool operator==(const QPair<T1, T2>&, const QPair<T1, T2>&)’
  113 | Q_DECL_CONSTEXPR Q_INLINE_TEMPLATE bool operator==(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2)
      |                                         ^~~~~~~~
/usr/include/qt/QtCore/qpair.h:113:41: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} is not derived from ‘const QPair<T1, T2>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
/usr/include/qt/QtCore/qscopedpointer.h:184:13: note: candidate: ‘template<class T, class Cleanup> bool operator==(const QScopedPointer<T, Cleanup>&, const QScopedPointer<T, Cleanup>&)’
  184 | inline bool operator==(const QScopedPointer<T, Cleanup> &lhs, const QScopedPointer<T, Cleanup> &rhs) noexcept
      |             ^~~~~~~~
/usr/include/qt/QtCore/qscopedpointer.h:184:13: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} is not derived from ‘const QScopedPointer<T, Cleanup>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
In file included from /usr/include/c++/13.1.1/utility:69,
                 from /usr/include/qt/QtCore/qglobal.h:47:
/usr/include/c++/13.1.1/bits/stl_pair.h:812:5: note: candidate: ‘template<class _T1, class _T2> constexpr bool std::operator==(const pair<_T1, _T2>&, const pair<_T1, _T2>&)’
  812 |     operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
      |     ^~~~~~~~
/usr/include/c++/13.1.1/bits/stl_pair.h:812:5: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} is not derived from ‘const std::pair<_T1, _T2>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
/usr/include/c++/13.1.1/bits/stl_iterator.h:593:5: note: candidate: ‘template<class _Iterator> constexpr bool std::operator==(const reverse_iterator<_IteratorL>&, const reverse_iterator<_IteratorL>&) requires requires{{std::operator==::__x->base() == std::operator==::__y->base()} -> decltype(auto) [requires std::convertible_to<<placeholder>, bool>];}’
  593 |     operator==(const reverse_iterator<_Iterator>& __x,
      |     ^~~~~~~~
/usr/include/c++/13.1.1/bits/stl_iterator.h:593:5: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} is not derived from ‘const std::reverse_iterator<_IteratorL>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
/usr/include/c++/13.1.1/bits/stl_iterator.h:1748:5: note: candidate: ‘template<class _Iterator> constexpr bool std::operator==(const move_iterator<_IteratorL>&, const move_iterator<_IteratorL>&)’
 1748 |     operator==(const move_iterator<_Iterator>& __x,
      |     ^~~~~~~~
/usr/include/c++/13.1.1/bits/stl_iterator.h:1748:5: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} is not derived from ‘const std::move_iterator<_IteratorL>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
In file included from /usr/include/c++/13.1.1/bits/char_traits.h:42,
                 from /usr/include/c++/13.1.1/string:42:
/usr/include/c++/13.1.1/bits/postypes.h:192:5: note: candidate: ‘template<class _StateT> bool std::operator==(const fpos<_StateT>&, const fpos<_StateT>&)’
  192 |     operator==(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs)
      |     ^~~~~~~~
/usr/include/c++/13.1.1/bits/postypes.h:192:5: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} is not derived from ‘const std::fpos<_StateT>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
/usr/include/c++/13.1.1/string_view:608:5: note: candidate: ‘template<class _CharT, class _Traits> constexpr bool std::operator==(basic_string_view<_CharT, _Traits>, basic_string_view<_CharT, _Traits>)’
  608 |     operator==(basic_string_view<_CharT, _Traits> __x,
      |     ^~~~~~~~
/usr/include/c++/13.1.1/string_view:608:5: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘std::__cxx11::basic_string<char>’ is not derived from ‘std::basic_string_view<_CharT, _Traits>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
/usr/include/c++/13.1.1/bits/basic_string.h:3711:5: note: candidate: ‘template<class _CharT, class _Traits, class _Alloc> constexpr bool std::operator==(const __cxx11::basic_string<_CharT, _Traits, _Allocator>&, const __cxx11::basic_string<_CharT, _Traits, _Allocator>&)’
 3711 |     operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
      |     ^~~~~~~~
/usr/include/c++/13.1.1/bits/basic_string.h:3711:5: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} is not derived from ‘const std::__cxx11::basic_string<_CharT, _Traits, _Allocator>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
/usr/include/c++/13.1.1/bits/streambuf_iterator.h:234:5: note: candidate: ‘template<class _CharT, class _Traits> bool std::operator==(const istreambuf_iterator<_CharT, _Traits>&, const istreambuf_iterator<_CharT, _Traits>&)’
  234 |     operator==(const istreambuf_iterator<_CharT, _Traits>& __a,
      |     ^~~~~~~~
/usr/include/c++/13.1.1/bits/streambuf_iterator.h:234:5: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} is not derived from ‘const std::istreambuf_iterator<_CharT, _Traits>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
In file included from /usr/include/c++/13.1.1/unordered_map:41,
                 from /usr/include/c++/13.1.1/functional:63:
/usr/include/c++/13.1.1/bits/unordered_map.h:2143:5: note: candidate: ‘template<class _Key1, class _Tp1, class _Hash1, class _Pred1, class _Alloc1> bool std::operator==(const unordered_map<_Key1, _Tp1, _Hash1, _Pred1, _Alloc1>&, const unordered_map<_Key1, _Tp1, _Hash1, _Pred1, _Alloc1>&)’
 2143 |     operator==(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
      |     ^~~~~~~~
/usr/include/c++/13.1.1/bits/unordered_map.h:2143:5: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} is not derived from ‘const std::unordered_map<_Key1, _Tp1, _Hash1, _Pred1, _Alloc1>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
/usr/include/c++/13.1.1/bits/unordered_map.h:2157:5: note: candidate: ‘template<class _Key1, class _Tp1, class _Hash1, class _Pred1, class _Alloc1> bool std::operator==(const unordered_multimap<_Key1, _Tp1, _Hash1, _Pred1, _Alloc1>&, const unordered_multimap<_Key1, _Tp1, _Hash1, _Pred1, _Alloc1>&)’
 2157 |     operator==(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
      |     ^~~~~~~~
/usr/include/c++/13.1.1/bits/unordered_map.h:2157:5: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} is not derived from ‘const std::unordered_multimap<_Key1, _Tp1, _Hash1, _Pred1, _Alloc1>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
In file included from /usr/include/c++/13.1.1/vector:66,
                 from /usr/include/c++/13.1.1/functional:64:
/usr/include/c++/13.1.1/bits/stl_vector.h:2037:5: note: candidate: ‘template<class _Tp, class _Alloc> constexpr bool std::operator==(const vector<_Tp, _Alloc>&, const vector<_Tp, _Alloc>&)’
 2037 |     operator==(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
      |     ^~~~~~~~
/usr/include/c++/13.1.1/bits/stl_vector.h:2037:5: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} is not derived from ‘const std::vector<_Tp, _Alloc>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
In file included from /usr/include/c++/13.1.1/functional:65:
/usr/include/c++/13.1.1/array:297:5: note: candidate: ‘template<class _Tp, long unsigned int _Nm> constexpr bool std::operator==(const array<_Tp, _Nm>&, const array<_Tp, _Nm>&)’
  297 |     operator==(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two)
      |     ^~~~~~~~
/usr/include/c++/13.1.1/array:297:5: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} is not derived from ‘const std::array<_Tp, _Nm>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
In file included from /usr/include/c++/13.1.1/list:65,
                 from /usr/include/qt/QtCore/qlist.h:55:
/usr/include/c++/13.1.1/bits/stl_list.h:2123:5: note: candidate: ‘template<class _Tp, class _Alloc> bool std::operator==(const __cxx11::list<_Tp, _Alloc>&, const __cxx11::list<_Tp, _Alloc>&)’
 2123 |     operator==(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y)
      |     ^~~~~~~~
/usr/include/c++/13.1.1/bits/stl_list.h:2123:5: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} is not derived from ‘const std::__cxx11::list<_Tp, _Alloc>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
In file included from /usr/include/c++/13.1.1/map:63,
                 from /usr/include/qt/QtCore/qmetatype.h:56:
/usr/include/c++/13.1.1/bits/stl_map.h:1513:5: note: candidate: ‘template<class _Key, class _Tp, class _Compare, class _Alloc> bool std::operator==(const map<_Key, _Tp, _Compare, _Allocator>&, const map<_Key, _Tp, _Compare, _Allocator>&)’
 1513 |     operator==(const map<_Key, _Tp, _Compare, _Alloc>& __x,
      |     ^~~~~~~~
/usr/include/c++/13.1.1/bits/stl_map.h:1513:5: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} is not derived from ‘const std::map<_Key, _Tp, _Compare, _Allocator>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
In file included from /usr/include/c++/13.1.1/map:64:
/usr/include/c++/13.1.1/bits/stl_multimap.h:1134:5: note: candidate: ‘template<class _Key, class _Tp, class _Compare, class _Alloc> bool std::operator==(const multimap<_Key, _Tp, _Compare, _Allocator>&, const multimap<_Key, _Tp, _Compare, _Allocator>&)’
 1134 |     operator==(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
      |     ^~~~~~~~
/usr/include/c++/13.1.1/bits/stl_multimap.h:1134:5: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} is not derived from ‘const std::multimap<_Key, _Tp, _Compare, _Allocator>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
/usr/include/c++/13.1.1/optional:1222:5: note: candidate: ‘template<class _Tp, class _Up> constexpr std::__optional_eq_t<_Tp, _Up> std::operator==(const optional<_Tp>&, const optional<_Up>&)’
 1222 |     operator==(const optional<_Tp>& __lhs, const optional<_Up>& __rhs)
      |     ^~~~~~~~
/usr/include/c++/13.1.1/optional:1222:5: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} is not derived from ‘const std::optional<_Tp>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
/usr/include/c++/13.1.1/optional:1350:5: note: candidate: ‘template<class _Tp, class _Up> constexpr std::__optional_eq_t<_Tp, _Up> std::operator==(const optional<_Tp>&, const _Up&)’
 1350 |     operator==(const optional<_Tp>& __lhs, const _Up& __rhs)
      |     ^~~~~~~~
/usr/include/c++/13.1.1/optional:1350:5: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} is not derived from ‘const std::optional<_Tp>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
/usr/include/c++/13.1.1/optional:1356:5: note: candidate: ‘template<class _Tp, class _Up> constexpr std::__optional_eq_t<_Up, _Tp> std::operator==(const _Up&, const optional<_Tp>&)’
 1356 |     operator==(const _Up& __lhs, const optional<_Tp>& __rhs)
      |     ^~~~~~~~
/usr/include/c++/13.1.1/optional:1356:5: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} is not derived from ‘const std::optional<_Tp>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
In file included from /usr/include/c++/13.1.1/format:47:
/usr/include/c++/13.1.1/variant:1242:3: note: candidate: ‘template<class ... _Types> constexpr bool std::operator==(const variant<_Types ...>&, const variant<_Types ...>&)’
 1242 |   _VARIANT_RELATION_FUNCTION_TEMPLATE(==, equal)
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/13.1.1/variant:1242:3: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} is not derived from ‘const std::variant<_Types ...>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
In file included from /usr/include/c++/13.1.1/forward_list:42,
                 from /home/jordan/Dev/Havoc/client/Include/json.hpp:162:
/usr/include/c++/13.1.1/bits/forward_list.tcc:393:5: note: candidate: ‘template<class _Tp, class _Alloc> bool std::operator==(const forward_list<_Tp, _Alloc>&, const forward_list<_Tp, _Alloc>&)’
  393 |     operator==(const forward_list<_Tp, _Alloc>& __lx,
      |     ^~~~~~~~
/usr/include/c++/13.1.1/bits/forward_list.tcc:393:5: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} is not derived from ‘const std::forward_list<_Tp, _Alloc>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
In file included from /usr/include/c++/13.1.1/valarray:605,
                 from /home/jordan/Dev/Havoc/client/Include/json.hpp:170:
/usr/include/c++/13.1.1/bits/valarray_after.h:417:5: note: candidate: ‘template<class _Dom1, class _Dom2> std::_Expr<std::__detail::_BinClos<std::__equal_to, std::_Expr, std::_Expr, _Dom1, _Dom2>, typename std::__fun<std::__equal_to, typename _Dom1::value_type>::result_type> std::operator==(const _Expr<_Dom1, typename _Dom1::value_type>&, const _Expr<_Dom2, typename _Dom2::value_type>&)’
  417 |     _DEFINE_EXPR_BINARY_OPERATOR(==, struct std::__equal_to)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/13.1.1/bits/valarray_after.h:417:5: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} is not derived from ‘const std::_Expr<_Dom1, typename _Dom1::value_type>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
/usr/include/c++/13.1.1/bits/valarray_after.h:417:5: note: candidate: ‘template<class _Dom> std::_Expr<std::__detail::_BinClos<std::__equal_to, std::_Expr, std::_Constant, _Dom, typename _Dom::value_type>, typename std::__fun<std::__equal_to, typename _Dom1::value_type>::result_type> std::operator==(const _Expr<_Dom1, typename _Dom1::value_type>&, const typename _Dom::value_type&)’
  417 |     _DEFINE_EXPR_BINARY_OPERATOR(==, struct std::__equal_to)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/13.1.1/bits/valarray_after.h:417:5: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} is not derived from ‘const std::_Expr<_Dom1, typename _Dom1::value_type>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
/usr/include/c++/13.1.1/bits/valarray_after.h:417:5: note: candidate: ‘template<class _Dom> std::_Expr<std::__detail::_BinClos<std::__equal_to, std::_Constant, std::_Expr, typename _Dom::value_type, _Dom>, typename std::__fun<std::__equal_to, typename _Dom1::value_type>::result_type> std::operator==(const typename _Dom::value_type&, const _Expr<_Dom1, typename _Dom1::value_type>&)’
  417 |     _DEFINE_EXPR_BINARY_OPERATOR(==, struct std::__equal_to)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/13.1.1/bits/valarray_after.h:417:5: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} is not derived from ‘const std::_Expr<_Dom1, typename _Dom1::value_type>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
/usr/include/c++/13.1.1/bits/valarray_after.h:417:5: note: candidate: ‘template<class _Dom> std::_Expr<std::__detail::_BinClos<std::__equal_to, std::_Expr, std::_ValArray, _Dom, typename _Dom::value_type>, typename std::__fun<std::__equal_to, typename _Dom1::value_type>::result_type> std::operator==(const _Expr<_Dom1, typename _Dom1::value_type>&, const valarray<typename _Dom::value_type>&)’
  417 |     _DEFINE_EXPR_BINARY_OPERATOR(==, struct std::__equal_to)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/13.1.1/bits/valarray_after.h:417:5: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} is not derived from ‘const std::_Expr<_Dom1, typename _Dom1::value_type>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
/usr/include/c++/13.1.1/bits/valarray_after.h:417:5: note: candidate: ‘template<class _Dom> std::_Expr<std::__detail::_BinClos<std::__equal_to, std::_ValArray, std::_Expr, typename _Dom::value_type, _Dom>, typename std::__fun<std::__equal_to, typename _Dom1::value_type>::result_type> std::operator==(const valarray<typename _Dom::value_type>&, const _Expr<_Dom1, typename _Dom1::value_type>&)’
  417 |     _DEFINE_EXPR_BINARY_OPERATOR(==, struct std::__equal_to)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/13.1.1/bits/valarray_after.h:417:5: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} is not derived from ‘const std::_Expr<_Dom1, typename _Dom1::value_type>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
/usr/include/c++/13.1.1/valarray:1202:1: note: candidate: ‘template<class _Tp> std::_Expr<std::__detail::_BinClos<std::__equal_to, std::_ValArray, std::_ValArray, _Tp, _Tp>, typename std::__fun<std::__equal_to, _Tp>::result_type> std::operator==(const valarray<_Tp>&, const valarray<_Tp>&)’
 1202 | _DEFINE_BINARY_OPERATOR(==, __equal_to)
      | ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/13.1.1/valarray:1202:1: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} is not derived from ‘const std::valarray<_Tp>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
/usr/include/c++/13.1.1/valarray:1202:1: note: candidate: ‘template<class _Tp> std::_Expr<std::__detail::_BinClos<std::__equal_to, std::_ValArray, std::_Constant, _Tp, _Tp>, typename std::__fun<std::__equal_to, _Tp>::result_type> std::operator==(const valarray<_Tp>&, const typename valarray<_Tp>::value_type&)’
 1202 | _DEFINE_BINARY_OPERATOR(==, __equal_to)
      | ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/13.1.1/valarray:1202:1: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} is not derived from ‘const std::valarray<_Tp>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
/usr/include/c++/13.1.1/valarray:1202:1: note: candidate: ‘template<class _Tp> std::_Expr<std::__detail::_BinClos<std::__equal_to, std::_Constant, std::_ValArray, _Tp, _Tp>, typename std::__fun<std::__equal_to, _Tp>::result_type> std::operator==(const typename valarray<_Tp>::value_type&, const valarray<_Tp>&)’
 1202 | _DEFINE_BINARY_OPERATOR(==, __equal_to)
      | ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/13.1.1/valarray:1202:1: note:   template argument deduction/substitution failed:
/home/jordan/Dev/Havoc/client/Source/Havoc/Packager.cpp:310:68: note:   ‘const nlohmann::json_abi_v3_11_2::basic_json<>::value_type’ {aka ‘const nlohmann::json_abi_v3_11_2::basic_json<>’} is not derived from ‘const std::valarray<_Tp>’
  310 |                     if ( ListenerInfo.Protocol == listener[ "Name" ] )
      |                                                                    ^
/usr/include/qt/QtCore/qchar.h:637:30: note: candidate: ‘constexpr bool operator==(QChar, QChar)’
  637 | Q_DECL_CONSTEXPR inline bool operator==(QChar c1, QChar c2) noexcept { return c1.ucs == c2.ucs; }
      |                              ^~~~~~~~
/usr/include/qt/QtCore/qchar.h:637:47: note:   no known conversion for argument 1 from ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘QChar’
  637 | Q_DECL_CONSTEXPR inline bool operator==(QChar c1, QChar c2) noexcept { return c1.ucs == c2.ucs; }
      |                                         ~~~~~~^~
/usr/include/qt/QtCore/qbytearray.h:684:13: note: candidate: ‘bool operator==(const QByteArray&, const QByteArray&)’
  684 | inline bool operator==(const QByteArray &a1, const QByteArray &a2) noexcept
      |             ^~~~~~~~
/usr/include/qt/QtCore/qbytearray.h:684:42: note:   no known conversion for argument 1 from ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘const QByteArray&’
  684 | inline bool operator==(const QByteArray &a1, const QByteArray &a2) noexcept
      |                        ~~~~~~~~~~~~~~~~~~^~
/usr/include/qt/QtCore/qbytearray.h:800:13: note: candidate: ‘bool operator==(const QByteArray::FromBase64Result&, const QByteArray::FromBase64Result&)’
  800 | inline bool operator==(const QByteArray::FromBase64Result &lhs, const QByteArray::FromBase64Result &rhs) noexcept
      |             ^~~~~~~~
/usr/include/qt/QtCore/qbytearray.h:800:60: note:   no known conversion for argument 1 from ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘const QByteArray::FromBase64Result&’
  800 | inline bool operator==(const QByteArray::FromBase64Result &lhs, const QByteArray::FromBase64Result &rhs) noexcept
      |                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
/usr/include/qt/QtCore/qstring.h:1374:13: note: candidate: ‘bool operator==(QString::Null, QString::Null)’
 1374 | inline bool operator==(QString::Null, QString::Null) { return true; }
      |             ^~~~~~~~
/usr/include/qt/QtCore/qstring.h:1374:24: note:   no known conversion for argument 1 from ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘QString::Null’
 1374 | inline bool operator==(QString::Null, QString::Null) { return true; }
      |                        ^~~~~~~~~~~~~
/usr/include/qt/QtCore/qstring.h:1386:13: note: candidate: ‘bool operator==(QLatin1String, QLatin1String)’
 1386 | inline bool operator==(QLatin1String s1, QLatin1String s2) noexcept
      |             ^~~~~~~~
/usr/include/qt/QtCore/qstring.h:1386:38: note:   no known conversion for argument 1 from ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘QLatin1String’
 1386 | inline bool operator==(QLatin1String s1, QLatin1String s2) noexcept
      |                        ~~~~~~~~~~~~~~^~
/usr/include/qt/QtCore/qstring.h:1821:20: note: candidate: ‘bool operator==(const QStringRef&, const QStringRef&)’
 1821 | Q_CORE_EXPORT bool operator==(const QStringRef &s1, const QStringRef &s2) noexcept;
      |                    ^~~~~~~~
/usr/include/qt/QtCore/qstring.h:1821:49: note:   no known conversion for argument 1 from ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘const QStringRef&’
 1821 | Q_CORE_EXPORT bool operator==(const QStringRef &s1, const QStringRef &s2) noexcept;
      |                               ~~~~~~~~~~~~~~~~~~^~
/usr/include/qt/QtCore/qstring.h:1941:13: note: candidate: ‘bool operator==(QStringView, QStringView)’
 1941 | inline bool operator==(QStringView lhs, QStringView rhs) noexcept { return lhs.size() == rhs.size() && QtPrivate::compareStrings(lhs, rhs) == 0; }
      |             ^~~~~~~~
/usr/include/qt/QtCore/qstring.h:1941:36: note:   no known conversion for argument 1 from ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘QStringView’
 1941 | inline bool operator==(QStringView lhs, QStringView rhs) noexcept { return lhs.size() == rhs.size() && QtPrivate::compareStrings(lhs, rhs) == 0; }
      |                        ~~~~~~~~~~~~^~~
In file included from /usr/include/qt/QtWidgets/qapplication.h:46:
/usr/include/qt/QtCore/qpoint.h:165:30: note: candidate: ‘constexpr bool operator==(const QPoint&, const QPoint&)’
  165 | Q_DECL_CONSTEXPR inline bool operator==(const QPoint &p1, const QPoint &p2)
      |                              ^~~~~~~~
/usr/include/qt/QtCore/qpoint.h:165:55: note:   no known conversion for argument 1 from ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘const QPoint&’
  165 | Q_DECL_CONSTEXPR inline bool operator==(const QPoint &p1, const QPoint &p2)
      |                                         ~~~~~~~~~~~~~~^~
/usr/include/qt/QtCore/qpoint.h:357:30: note: candidate: ‘constexpr bool operator==(const QPointF&, const QPointF&)’
  357 | Q_DECL_CONSTEXPR inline bool operator==(const QPointF &p1, const QPointF &p2)
      |                              ^~~~~~~~
/usr/include/qt/QtCore/qpoint.h:357:56: note:   no known conversion for argument 1 from ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘const QPointF&’
  357 | Q_DECL_CONSTEXPR inline bool operator==(const QPointF &p1, const QPointF &p2)
      |                                         ~~~~~~~~~~~~~~~^~
In file included from /usr/include/qt/QtCore/qsize.h:44,
                 from /usr/include/qt/QtWidgets/qapplication.h:47:
/usr/include/qt/QtCore/qmargins.h:135:30: note: candidate: ‘constexpr bool operator==(const QMargins&, const QMargins&)’
  135 | Q_DECL_CONSTEXPR inline bool operator==(const QMargins &m1, const QMargins &m2) noexcept
      |                              ^~~~~~~~
/usr/include/qt/QtCore/qmargins.h:135:57: note:   no known conversion for argument 1 from ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘const QMargins&’
  135 | Q_DECL_CONSTEXPR inline bool operator==(const QMargins &m1, const QMargins &m2) noexcept
      |                                         ~~~~~~~~~~~~~~~~^~
/usr/include/qt/QtCore/qmargins.h:372:30: note: candidate: ‘constexpr bool operator==(const QMarginsF&, const QMarginsF&)’
  372 | Q_DECL_CONSTEXPR inline bool operator==(const QMarginsF &lhs, const QMarginsF &rhs) noexcept
      |                              ^~~~~~~~
/usr/include/qt/QtCore/qmargins.h:372:58: note:   no known conversion for argument 1 from ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘const QMarginsF&’
  372 | Q_DECL_CONSTEXPR inline bool operator==(const QMarginsF &lhs, const QMarginsF &rhs) noexcept
      |                                         ~~~~~~~~~~~~~~~~~^~~
/usr/include/qt/QtCore/qsize.h:175:30: note: candidate: ‘constexpr bool operator==(const QSize&, const QSize&)’
  175 | Q_DECL_CONSTEXPR inline bool operator==(const QSize &s1, const QSize &s2) noexcept
      |                              ^~~~~~~~
/usr/include/qt/QtCore/qsize.h:175:54: note:   no known conversion for argument 1 from ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘const QSize&’
  175 | Q_DECL_CONSTEXPR inline bool operator==(const QSize &s1, const QSize &s2) noexcept
      |                                         ~~~~~~~~~~~~~^~
/usr/include/qt/QtCore/qsize.h:350:30: note: candidate: ‘constexpr bool operator==(const QSizeF&, const QSizeF&)’
  350 | Q_DECL_CONSTEXPR inline bool operator==(const QSizeF &s1, const QSizeF &s2) noexcept
      |                              ^~~~~~~~
/usr/include/qt/QtCore/qsize.h:350:55: note:   no known conversion for argument 1 from ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘const QSizeF&’
  350 | Q_DECL_CONSTEXPR inline bool operator==(const QSizeF &s1, const QSizeF &s2) noexcept
      |                                         ~~~~~~~~~~~~~~^~
In file included from /usr/include/qt/QtWidgets/qapplication.h:48:
/usr/include/qt/QtGui/qcursor.h:129:19: note: candidate: ‘bool operator==(const QCursor&, const QCursor&)’
  129 | Q_GUI_EXPORT bool operator==(const QCursor &lhs, const QCursor &rhs) noexcept;
      |                   ^~~~~~~~
/usr/include/qt/QtGui/qcursor.h:124:56: note:   no known conversion for argument 1 from ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘const QCursor&’
  124 |     friend Q_GUI_EXPORT bool operator==(const QCursor &lhs, const QCursor &rhs) noexcept;
      |                                         ~~~~~~~~~~~~~~~^~~
In file included from /usr/include/qt/QtCore/qvariant.h:48:
/usr/include/qt/QtCore/qhash.h:139:16: note: candidate: ‘constexpr bool operator==(const QHashDummyValue&, const QHashDummyValue&)’
  139 | constexpr bool operator==(const QHashDummyValue &, const QHashDummyValue &) noexcept
      |                ^~~~~~~~
/usr/include/qt/QtCore/qhash.h:139:27: note:   no known conversion for argument 1 from ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘const QHashDummyValue&’
  139 | constexpr bool operator==(const QHashDummyValue &, const QHashDummyValue &) noexcept
      |                           ^~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/qt/QtGui/qpaintdevice.h:45,
                 from /usr/include/qt/QtWidgets/qwidget.h:47:
/usr/include/qt/QtCore/qrect.h:454:30: note: candidate: ‘constexpr bool operator==(const QRect&, const QRect&)’
  454 | Q_DECL_CONSTEXPR inline bool operator==(const QRect &r1, const QRect &r2) noexcept
      |                              ^~~~~~~~
/usr/include/qt/QtCore/qrect.h:454:54: note:   no known conversion for argument 1 from ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘const QRect&’
  454 | Q_DECL_CONSTEXPR inline bool operator==(const QRect &r1, const QRect &r2) noexcept
      |                                         ~~~~~~~~~~~~~^~
/usr/include/qt/QtCore/qrect.h:860:30: note: candidate: ‘constexpr bool operator==(const QRectF&, const QRectF&)’
  860 | Q_DECL_CONSTEXPR inline bool operator==(const QRectF &r1, const QRectF &r2) noexcept
      |                              ^~~~~~~~
/usr/include/qt/QtCore/qrect.h:860:55: note:   no known conversion for argument 1 from ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘const QRectF&’
  860 | Q_DECL_CONSTEXPR inline bool operator==(const QRectF &r1, const QRectF &r2) noexcept
      |                                         ~~~~~~~~~~~~~~^~
/usr/include/qt/QtCore/qjsonvalue.h:235:13: note: candidate: ‘bool operator==(const QJsonValueRef&, const QJsonValueRef&)’
  235 | inline bool operator==(const QJsonValueRef &lhs, const QJsonValueRef &rhs)
      |             ^~~~~~~~
/usr/include/qt/QtCore/qjsonvalue.h:235:45: note:   no known conversion for argument 1 from ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘const QJsonValueRef&’
  235 | inline bool operator==(const QJsonValueRef &lhs, const QJsonValueRef &rhs)
      |                        ~~~~~~~~~~~~~~~~~~~~~^~~
In file included from /usr/include/qt/QtGui/qevent.h:56:
/usr/include/qt/QtGui/qvector2d.h:211:30: note: candidate: ‘constexpr bool operator==(const QVector2D&, const QVector2D&)’
  211 | Q_DECL_CONSTEXPR inline bool operator==(const QVector2D &v1, const QVector2D &v2)
      |                              ^~~~~~~~
/usr/include/qt/QtGui/qvector2d.h:211:58: note:   no known conversion for argument 1 from ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘const QVector2D&’
  211 | Q_DECL_CONSTEXPR inline bool operator==(const QVector2D &v1, const QVector2D &v2)
      |                                         ~~~~~~~~~~~~~~~~~^~
/usr/include/qt/QtGui/qevent.h:876:19: note: candidate: ‘bool operator==(QPointingDeviceUniqueId, QPointingDeviceUniqueId)’
  876 | Q_GUI_EXPORT bool operator==(QPointingDeviceUniqueId lhs, QPointingDeviceUniqueId rhs) noexcept;
      |                   ^~~~~~~~
/usr/include/qt/QtGui/qevent.h:876:54: note:   no known conversion for argument 1 from ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘QPointingDeviceUniqueId’
  876 | Q_GUI_EXPORT bool operator==(QPointingDeviceUniqueId lhs, QPointingDeviceUniqueId rhs) noexcept;
      |                              ~~~~~~~~~~~~~~~~~~~~~~~~^~~
/usr/include/c++/13.1.1/system_error:449:3: note: candidate: ‘bool std::operator==(const error_code&, const error_code&)’
  449 |   operator==(const error_code& __lhs, const error_code& __rhs) noexcept
      |   ^~~~~~~~
/usr/include/c++/13.1.1/system_error:449:32: note:   no known conversion for argument 1 from ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘const std::error_code&’
  449 |   operator==(const error_code& __lhs, const error_code& __rhs) noexcept
      |              ~~~~~~~~~~~~~~~~~~^~~~~
/usr/include/c++/13.1.1/system_error:480:3: note: candidate: ‘bool std::operator==(const error_condition&, const error_condition&)’
  480 |   operator==(const error_condition& __lhs,
      |   ^~~~~~~~
/usr/include/c++/13.1.1/system_error:480:37: note:   no known conversion for argument 1 from ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘const std::error_condition&’
  480 |   operator==(const error_condition& __lhs,
      |              ~~~~~~~~~~~~~~~~~~~~~~~^~~~~
/usr/include/c++/13.1.1/variant:1249:18: note: candidate: ‘constexpr bool std::operator==(monostate, monostate)’
 1249 |   constexpr bool operator==(monostate, monostate) noexcept { return true; }
      |                  ^~~~~~~~
/usr/include/c++/13.1.1/variant:1249:29: note:   no known conversion for argument 1 from ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘std::monostate’
 1249 |   constexpr bool operator==(monostate, monostate) noexcept { return true; }
      |                             ^~~~~~~~~
In file included from /usr/include/c++/13.1.1/stop_token:37,
                 from /usr/include/c++/13.1.1/condition_variable:49,
                 from /usr/include/spdlog/details/periodic_worker.h:13,
                 from /usr/include/spdlog/details/registry.h:12,
                 from /usr/include/spdlog/spdlog.h:13,
                 from /home/jordan/Dev/Havoc/client/Include/global.hpp:34:
/usr/include/c++/13.1.1/bits/std_thread.h:324:3: note: candidate: ‘bool std::operator==(thread::id, thread::id)’
  324 |   operator==(thread::id __x, thread::id __y) noexcept
      |   ^~~~~~~~
/usr/include/c++/13.1.1/bits/std_thread.h:324:25: note:   no known conversion for argument 1 from ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘std::thread::id’
  324 |   operator==(thread::id __x, thread::id __y) noexcept
      |              ~~~~~~~~~~~^~~
/usr/include/c++/13.1.1/bits/allocator.h:216:7: note: candidate: ‘constexpr bool std::operator==(const allocator<unsigned char>&, const allocator<unsigned char>&)’
  216 |       operator==(const allocator&, const allocator&) _GLIBCXX_NOTHROW
      |       ^~~~~~~~
/usr/include/c++/13.1.1/bits/allocator.h:216:18: note:   no known conversion for argument 1 from ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘const std::allocator<unsigned char>&’
  216 |       operator==(const allocator&, const allocator&) _GLIBCXX_NOTHROW
      |                  ^~~~~~~~~~~~~~~~
/usr/include/c++/13.1.1/bits/allocator.h:216:7: note: candidate: ‘constexpr bool std::operator==(const allocator<char>&, const allocator<char>&)’
  216 |       operator==(const allocator&, const allocator&) _GLIBCXX_NOTHROW
      |       ^~~~~~~~
/usr/include/c++/13.1.1/bits/allocator.h:216:18: note:   no known conversion for argument 1 from ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘const std::allocator<char>&’
  216 |       operator==(const allocator&, const allocator&) _GLIBCXX_NOTHROW
      |                  ^~~~~~~~~~~~~~~~
[ 15%] Building CXX object CMakeFiles/Havoc.dir/Source/Havoc/Service.cpp.o
[ 17%] Building CXX object CMakeFiles/Havoc.dir/Source/Havoc/DBManger/DBManager.cpp.o
make[3]: *** [CMakeFiles/Havoc.dir/build.make:148: CMakeFiles/Havoc.dir/Source/Havoc/Packager.cpp.o] Error 1
make[3]: *** Waiting for unfinished jobs....
In file included from /home/jordan/Dev/Havoc/client/Include/Havoc/DBManager/DBManager.hpp:4,
                 from /home/jordan/Dev/Havoc/client/Source/Havoc/DBManger/DBManager.cpp:1:
/home/jordan/Dev/Havoc/client/Include/global.hpp:241:54: warning: declaration of ‘FileBrowser* HavocNamespace::Util::<unnamed struct>::FileBrowser’ changes meaning of ‘FileBrowser’ [-Wchanges-meaning]
  241 |             FileBrowser*                             FileBrowser;
      |                                                      ^~~~~~~~~~~
/home/jordan/Dev/Havoc/client/Include/global.hpp:241:13: note: used here to mean ‘class FileBrowser’
  241 |             FileBrowser*                             FileBrowser;
      |             ^~~~~~~~~~~
In file included from /home/jordan/Dev/Havoc/client/Include/global.hpp:39:
/home/jordan/Dev/Havoc/client/Include/UserInterface/Widgets/FileBrowser.hpp:53:7: note: declared here
   53 | class FileBrowser : public QWidget
      |       ^~~~~~~~~~~
make[2]: *** [CMakeFiles/Makefile2:84: CMakeFiles/Havoc.dir/all] Error 2
make[1]: *** [Makefile:91: all] Error 2
make[1]: Leaving directory '/home/jordan/Dev/Havoc/client/Build'
make: *** [makefile:34: client-build] Error 2

I don't know much about C++ and make but it might be due to:

Some C++ Standard Library headers have been changed to no longer include other headers that were being used internally by the library. As such, C++ programs that used standard library components without including the right headers will no longer compile.

The following headers are used less widely in libstdc++ and may need to be included explicitly when compiling with GCC 13: <string> (for std::string, std::to_string, std::stoi etc.) <system_error> (for std::error_code, std::error_category, std::system_error). <cstdint> (for std::int8_t, std::int32_t etc.) <cstdio> (for std::printf, std::fopen etc.) <cstdlib> (for std::strtol, std::malloc etc.)

Source

SecT0uch commented 1 year ago

Fixed by #330