Temporary header file '/tmp/XDrPsg2cTs/dump1.h' with the following content will be compiled to create GCC translation unit dump:

  // add defines
  #define __STDC_VERSION__ 201710L
#define _GXX_NULLPTR_T
#define CLUTTER_ENABLE_COMPOSITOR_API 1
#define _REGEX_NELTS(n)
#define _Atomic
#define PACKED
#define getaddrinfo_a(a,b,c,d)

  // add includes
  #include "/usr/include/time.h"
  #include "/usr/include/inspircd/aligned_storage.h"
  #include "/usr/include/inspircd/bancache.h"
  #include "/usr/include/inspircd/base.h"
  #include "/usr/include/inspircd/channels.h"
  #include "/usr/include/inspircd/clientprotocol.h"
  #include "/usr/include/inspircd/clientprotocolevent.h"
  #include "/usr/include/inspircd/clientprotocolmsg.h"
  #include "/usr/include/inspircd/command_parse.h"
  #include "/usr/include/inspircd/compat.h"
  #include "/usr/include/inspircd/config.h"
  #include "/usr/include/inspircd/configparser.h"
  #include "/usr/include/inspircd/configreader.h"
  #include "/usr/include/inspircd/consolecolors.h"
  #include "/usr/include/inspircd/convto.h"
  #include "/usr/include/inspircd/ctables.h"
  #include "/usr/include/inspircd/cull_list.h"
  #include "/usr/include/inspircd/dynamic.h"
  #include "/usr/include/inspircd/dynref.h"
  #include "/usr/include/inspircd/event.h"
  #include "/usr/include/inspircd/exitcodes.h"
  #include "/usr/include/inspircd/extensible.h"
  #include "/usr/include/inspircd/filelogger.h"
  #include "/usr/include/inspircd/fileutils.h"
  #include "/usr/include/inspircd/flat_map.h"
  #include "/usr/include/inspircd/hashcomp.h"
  #include "/usr/include/inspircd/inspircd.h"
  #include "/usr/include/inspircd/inspsocket.h"
  #include "/usr/include/inspircd/inspstring.h"
  #include "/usr/include/inspircd/intrusive_list.h"
  #include "/usr/include/inspircd/intrusive_list_impl.h"
  #include "/usr/include/inspircd/iohook.h"
  #include "/usr/include/inspircd/isupportmanager.h"
  #include "/usr/include/inspircd/listmode.h"
  #include "/usr/include/inspircd/logger.h"
  #include "/usr/include/inspircd/membership.h"
  #include "/usr/include/inspircd/message.h"
  #include "/usr/include/inspircd/mode.h"
  #include "/usr/include/inspircd/modechange.h"
  #include "/usr/include/inspircd/moduledefs.h"
  #include "/usr/include/inspircd/modules/account.h"
  #include "/usr/include/inspircd/modules/away.h"
  #include "/usr/include/inspircd/modules/callerid.h"
  #include "/usr/include/inspircd/modules/cap.h"
  #include "/usr/include/inspircd/modules/ctctags.h"
  #include "/usr/include/inspircd/modules/dns.h"
  #include "/usr/include/inspircd/modules/exemption.h"
  #include "/usr/include/inspircd/modules/geolocation.h"
  #include "/usr/include/inspircd/modules/hash.h"
  #include "/usr/include/inspircd/modules/httpd.h"
  #include "/usr/include/inspircd/modules/invite.h"
  #include "/usr/include/inspircd/modules/ircv3.h"
  #include "/usr/include/inspircd/modules/ircv3_batch.h"
  #include "/usr/include/inspircd/modules/ircv3_replies.h"
  #include "/usr/include/inspircd/modules/ircv3_servertime.h"
  #include "/usr/include/inspircd/modules/ldap.h"
  #include "/usr/include/inspircd/modules/monitor.h"
  #include "/usr/include/inspircd/modules/names.h"
  #include "/usr/include/inspircd/modules/regex.h"
  #include "/usr/include/inspircd/modules/reload.h"
  #include "/usr/include/inspircd/modules/sasl.h"
  #include "/usr/include/inspircd/modules/server.h"
  #include "/usr/include/inspircd/modules/shun.h"
  #include "/usr/include/inspircd/modules/sql.h"
  #include "/usr/include/inspircd/modules/ssl.h"
  #include "/usr/include/inspircd/modules/stats.h"
  #include "/usr/include/inspircd/modules/webirc.h"
  #include "/usr/include/inspircd/modules/who.h"
  #include "/usr/include/inspircd/modules/whois.h"
  #include "/usr/include/inspircd/modules.h"
  #include "/usr/include/inspircd/numeric.h"
  #include "/usr/include/inspircd/numericbuilder.h"
  #include "/usr/include/inspircd/numerics.h"
  #include "/usr/include/inspircd/parammode.h"
  #include "/usr/include/inspircd/protocol.h"
  #include "/usr/include/inspircd/serialize.h"
  #include "/usr/include/inspircd/server.h"
  #include "/usr/include/inspircd/snomasks.h"
  #include "/usr/include/inspircd/socket.h"
  #include "/usr/include/inspircd/socketengine.h"
  #include "/usr/include/inspircd/stdalgo.h"
  #include "/usr/include/inspircd/threadengine.h"
  #include "/usr/include/inspircd/threadengines/threadengine_pthread.h"
  #include "/usr/include/inspircd/threadengines/threadengine_win32.h"
  #include "/usr/include/inspircd/timer.h"
  #include "/usr/include/inspircd/token_list.h"
  #include "/usr/include/inspircd/typedefs.h"
  #include "/usr/include/inspircd/uid.h"
  #include "/usr/include/inspircd/usermanager.h"
  #include "/usr/include/inspircd/users.h"
  #include "/usr/include/inspircd/xline.h"

  // add namespaces
  namespace Away{typedef int tmp_add_type_1;}
  Away::tmp_add_type_1 tmp_add_func_1(){return 0;};
  namespace CallerID{typedef int tmp_add_type_2;}
  CallerID::tmp_add_type_2 tmp_add_func_2(){return 0;};
  namespace Cap{typedef int tmp_add_type_3;}
  Cap::tmp_add_type_3 tmp_add_func_3(){return 0;};
  namespace CheckExemption{typedef int tmp_add_type_4;}
  CheckExemption::tmp_add_type_4 tmp_add_func_4(){return 0;};
  namespace ClientProtocol{typedef int tmp_add_type_5;}
  ClientProtocol::tmp_add_type_5 tmp_add_func_5(){return 0;};
  namespace ClientProtocol{namespace Events{typedef int tmp_add_type_6;}}
  ClientProtocol::Events::tmp_add_type_6 tmp_add_func_6(){return 0;};
  namespace ClientProtocol{namespace Messages{typedef int tmp_add_type_7;}}
  ClientProtocol::Messages::tmp_add_type_7 tmp_add_func_7(){return 0;};
  namespace CTCTags{typedef int tmp_add_type_8;}
  CTCTags::tmp_add_type_8 tmp_add_func_8(){return 0;};
  namespace DNS{typedef int tmp_add_type_9;}
  DNS::tmp_add_type_9 tmp_add_func_9(){return 0;};
  namespace Events{typedef int tmp_add_type_10;}
  Events::tmp_add_type_10 tmp_add_func_10(){return 0;};
  namespace Geolocation{typedef int tmp_add_type_11;}
  Geolocation::tmp_add_type_11 tmp_add_func_11(){return 0;};
  namespace insp{typedef int tmp_add_type_12;}
  insp::tmp_add_type_12 tmp_add_func_12(){return 0;};
  namespace insp{namespace detail{typedef int tmp_add_type_13;}}
  insp::detail::tmp_add_type_13 tmp_add_func_13(){return 0;};
  namespace Invite{typedef int tmp_add_type_14;}
  Invite::tmp_add_type_14 tmp_add_func_14(){return 0;};
  namespace irc{typedef int tmp_add_type_15;}
  irc::tmp_add_type_15 tmp_add_func_15(){return 0;};
  namespace irc{namespace sockets{typedef int tmp_add_type_16;}}
  irc::sockets::tmp_add_type_16 tmp_add_func_16(){return 0;};
  namespace IRCv3{typedef int tmp_add_type_17;}
  IRCv3::tmp_add_type_17 tmp_add_func_17(){return 0;};
  namespace IRCv3{namespace Batch{typedef int tmp_add_type_18;}}
  IRCv3::Batch::tmp_add_type_18 tmp_add_func_18(){return 0;};
  namespace IRCv3{namespace Replies{typedef int tmp_add_type_19;}}
  IRCv3::Replies::tmp_add_type_19 tmp_add_func_19(){return 0;};
  namespace IRCv3{namespace ServerTime{typedef int tmp_add_type_20;}}
  IRCv3::ServerTime::tmp_add_type_20 tmp_add_func_20(){return 0;};
  namespace Modes{typedef int tmp_add_type_21;}
  Modes::tmp_add_type_21 tmp_add_func_21(){return 0;};
  namespace Monitor{typedef int tmp_add_type_22;}
  Monitor::tmp_add_type_22 tmp_add_func_22(){return 0;};
  namespace Names{typedef int tmp_add_type_23;}
  Names::tmp_add_type_23 tmp_add_func_23(){return 0;};
  namespace Numeric{typedef int tmp_add_type_24;}
  Numeric::tmp_add_type_24 tmp_add_func_24(){return 0;};
  namespace Numerics{typedef int tmp_add_type_25;}
  Numerics::tmp_add_type_25 tmp_add_func_25(){return 0;};
  namespace ReloadModule{typedef int tmp_add_type_26;}
  ReloadModule::tmp_add_type_26 tmp_add_func_26(){return 0;};
  namespace ServerProtocol{typedef int tmp_add_type_27;}
  ServerProtocol::tmp_add_type_27 tmp_add_func_27(){return 0;};
  namespace SQL{typedef int tmp_add_type_28;}
  SQL::tmp_add_type_28 tmp_add_func_28(){return 0;};
  namespace Stats{typedef int tmp_add_type_29;}
  Stats::tmp_add_type_29 tmp_add_func_29(){return 0;};
  namespace stdalgo{typedef int tmp_add_type_30;}
  stdalgo::tmp_add_type_30 tmp_add_func_30(){return 0;};
  namespace stdalgo{namespace string{typedef int tmp_add_type_31;}}
  stdalgo::string::tmp_add_type_31 tmp_add_func_31(){return 0;};
  namespace stdalgo{namespace vector{typedef int tmp_add_type_32;}}
  stdalgo::vector::tmp_add_type_32 tmp_add_func_32(){return 0;};
  namespace WebIRC{typedef int tmp_add_type_33;}
  WebIRC::tmp_add_type_33 tmp_add_func_33(){return 0;};
  namespace Who{typedef int tmp_add_type_34;}
  Who::tmp_add_type_34 tmp_add_func_34(){return 0;};
  namespace Whois{typedef int tmp_add_type_35;}
  Whois::tmp_add_type_35 tmp_add_func_35(){return 0;};

  // add classes
  AccountEventListener* tmp_add_class_0;
  ActionBase* tmp_add_class_1;
  ActionList* tmp_add_class_2;
  BufferedSocket* tmp_add_class_3;
  ChanModeReference* tmp_add_class_4;
  Channel* tmp_add_class_5;
  Command* tmp_add_class_6;
  CommandBase* tmp_add_class_7;
  CommandLineConf* tmp_add_class_8;
  CommandParser* tmp_add_class_9;
  ConfigReaderThread* tmp_add_class_10;
  ConfigStatus* tmp_add_class_11;
  ConfigTag* tmp_add_class_12;
  ConnectClass* tmp_add_class_13;
  CoreException* tmp_add_class_14;
  CullList* tmp_add_class_15;
  CullResult* tmp_add_class_16;
  DLLManager* tmp_add_class_17;
  DataProvider* tmp_add_class_18;
  ELine* tmp_add_class_19;
  ElementComp* tmp_add_class_20;
  EventHandler* tmp_add_class_21;
  Extensible* tmp_add_class_22;
  ExtensionItem* tmp_add_class_23;
  ExtensionManager* tmp_add_class_24;
  FailedPort* tmp_add_class_25;
  FakeUser* tmp_add_class_26;
  FileLogStream* tmp_add_class_27;
  FileReader* tmp_add_class_28;
  FileSystem* tmp_add_class_29;
  FileWriter* tmp_add_class_30;
  GLine* tmp_add_class_31;
  HTTPACLEventListener* tmp_add_class_32;
  HTTPDocumentResponse* tmp_add_class_33;
  HTTPHeaders* tmp_add_class_34;
  HTTPQueryParameters* tmp_add_class_35;
  HTTPRequest* tmp_add_class_36;
  HTTPRequestEventListener* tmp_add_class_37;
  HTTPRequestURI* tmp_add_class_38;
  HTTPdAPI* tmp_add_class_39;
  HTTPdAPIBase* tmp_add_class_40;
  HashProvider* tmp_add_class_41;
  IOHook* tmp_add_class_42;
  IOHookMiddle* tmp_add_class_43;
  IOHookProvider* tmp_add_class_44;
  ISupportManager* tmp_add_class_45;
  InspIRCd* tmp_add_class_46;
  KLine* tmp_add_class_47;
  LDAPAttributes* tmp_add_class_48;
  LDAPException* tmp_add_class_49;
  LDAPInterface* tmp_add_class_50;
  LDAPModification* tmp_add_class_51;
  LDAPProvider* tmp_add_class_52;
  LDAPResult* tmp_add_class_53;
  ListModeBase* tmp_add_class_54;
  ListenSocket* tmp_add_class_55;
  LocalIntExt* tmp_add_class_56;
  LocalStringExt* tmp_add_class_57;
  LocalUser* tmp_add_class_58;
  LogManager* tmp_add_class_59;
  LogStream* tmp_add_class_60;
  MessageDetails* tmp_add_class_61;
  MessageTarget* tmp_add_class_62;
  ModResult* tmp_add_class_63;
  ModeHandler* tmp_add_class_64;
  ModeWatcher* tmp_add_class_65;
  Module* tmp_add_class_66;
  ModuleException* tmp_add_class_67;
  ModuleManager* tmp_add_class_68;
  Mutex* tmp_add_class_69;
  OperInfo* tmp_add_class_70;
  ParamModeBase* tmp_add_class_71;
  ParseStack* tmp_add_class_72;
  PrefixMode* tmp_add_class_73;
  ProtocolInterface* tmp_add_class_74;
  ProtocolServer* tmp_add_class_75;
  QLine* tmp_add_class_76;
  QueuedThread* tmp_add_class_77;
  Regex* tmp_add_class_78;
  RegexException* tmp_add_class_79;
  RegexFactory* tmp_add_class_80;
  RemoteUser* tmp_add_class_81;
  RouteDescriptor* tmp_add_class_82;
  SASLEventListener* tmp_add_class_83;
  SSLClientCert* tmp_add_class_84;
  SSLIOHook* tmp_add_class_85;
  SSLIOHookProvider* tmp_add_class_86;
  Serializable* tmp_add_class_87;
  Server* tmp_add_class_88;
  ServerConfig* tmp_add_class_89;
  ServerEventListener* tmp_add_class_90;
  ServerLimits* tmp_add_class_91;
  ServiceProvider* tmp_add_class_92;
  Shun* tmp_add_class_93;
  SimpleChannelModeHandler* tmp_add_class_94;
  SimpleUserModeHandler* tmp_add_class_95;
  Snomask* tmp_add_class_96;
  SnomaskManager* tmp_add_class_97;
  SocketEngine* tmp_add_class_98;
  SocketThread* tmp_add_class_99;
  SocketTimeout* tmp_add_class_100;
  SplitCommand* tmp_add_class_101;
  StreamSocket* tmp_add_class_102;
  StringExtItem* tmp_add_class_103;
  Thread* tmp_add_class_104;
  ThreadEngine* tmp_add_class_105;
  ThreadQueueData* tmp_add_class_106;
  ThreadSignalData* tmp_add_class_107;
  Timer* tmp_add_class_108;
  TimerManager* tmp_add_class_109;
  TokenList* tmp_add_class_110;
  UIDGenerator* tmp_add_class_111;
  User* tmp_add_class_112;
  UserCertificateAPI* tmp_add_class_113;
  UserCertificateAPIBase* tmp_add_class_114;
  UserIOHandler* tmp_add_class_115;
  UserManager* tmp_add_class_116;
  UserModeReference* tmp_add_class_117;
  Version* tmp_add_class_118;
  XLine* tmp_add_class_119;
  XLineFactory* tmp_add_class_120;
  XLineManager* tmp_add_class_121;
  ZLine* tmp_add_class_122;
  _G_fpos64_t* tmp_add_class_123;
  _G_fpos_t* tmp_add_class_124;
  _IO_cookie_io_functions_t* tmp_add_class_125;
  addrinfo* tmp_add_class_126;
  classbase* tmp_add_class_127;
  cmsghdr* tmp_add_class_128;
  dynamic_reference_base* tmp_add_class_129;
  f_owner_ex* tmp_add_class_130;
  file_handle* tmp_add_class_131;
  flock64* tmp_add_class_132;
  gaicb* tmp_add_class_133;
  group_filter* tmp_add_class_134;
  group_req* tmp_add_class_135;
  group_source_req* tmp_add_class_136;
  hostent* tmp_add_class_137;
  in6_addr* tmp_add_class_138;
  in6_pktinfo* tmp_add_class_139;
  in_addr* tmp_add_class_140;
  in_pktinfo* tmp_add_class_141;
  interfacebase* tmp_add_class_142;
  iovec* tmp_add_class_143;
  ip6_mtuinfo* tmp_add_class_144;
  ip_mreq* tmp_add_class_145;
  ip_mreq_source* tmp_add_class_146;
  ip_mreqn* tmp_add_class_147;
  ip_msfilter* tmp_add_class_148;
  ip_opts* tmp_add_class_149;
  ipv6_mreq* tmp_add_class_150;
  itimerval* tmp_add_class_151;
  linger* tmp_add_class_152;
  mmsghdr* tmp_add_class_153;
  msghdr* tmp_add_class_154;
  netent* tmp_add_class_155;
  osockaddr* tmp_add_class_156;
  protoent* tmp_add_class_157;
  refcountbase* tmp_add_class_158;
  rlimit64* tmp_add_class_159;
  rpcent* tmp_add_class_160;
  servent* tmp_add_class_161;
  serverstats* tmp_add_class_162;
  sockaddr* tmp_add_class_163;
  sockaddr_in* tmp_add_class_164;
  sockaddr_in6* tmp_add_class_165;
  sockaddr_storage* tmp_add_class_166;
  sockaddr_un* tmp_add_class_167;
  ssl_cert* tmp_add_class_168;
  statx_timestamp* tmp_add_class_169;
  ucontext_t* tmp_add_class_170;
  ucred* tmp_add_class_171;
  usecountbase* tmp_add_class_172;

The GCC parameters:
  gcc -fdump-lang-raw -fkeep-inline-functions -c -x c++ -fpermissive -w "/tmp/XDrPsg2cTs/dump1.h"  -I/usr/include/inspircd

In file included from /tmp/XDrPsg2cTs/dump1.h:13:
/usr/include/inspircd/aligned_storage.h:30:26: error: ‘TR1NS’ has not been declared
   30 |         mutable typename TR1NS::aligned_storage<sizeof(T), TR1NS::alignment_of<T>::value>::type data;
      |                          ^~~~~
/usr/include/inspircd/aligned_storage.h:30:48: error: expected unqualified-id before ‘<’ token
   30 |         mutable typename TR1NS::aligned_storage<sizeof(T), TR1NS::alignment_of<T>::value>::type data;
      |                                                ^
/usr/include/inspircd/aligned_storage.h: In member function ‘T* insp::aligned_storage<T>::operator->() const’:
/usr/include/inspircd/aligned_storage.h:43:60: error: ‘data’ was not declared in this scope
   43 |                 return static_cast<T*>(static_cast<void*>(&data));
      |                                                            ^~~~
In file included from /tmp/XDrPsg2cTs/dump1.h:14:
/usr/include/inspircd/bancache.h: At global scope:
/usr/include/inspircd/bancache.h:35:18: error: variable ‘CoreExport BanCacheHit’ has initializer but incomplete type
   35 | class CoreExport BanCacheHit
      |                  ^~~~~~~~~~~
/usr/include/inspircd/bancache.h:37:2: error: expected primary-expression before ‘public’
   37 |  public:
      |  ^~~~~~
/usr/include/inspircd/bancache.h:37:2: error: expected ‘}’ before ‘public’
/usr/include/inspircd/bancache.h:36:1: note: to match this ‘{’
   36 | {
      | ^
/usr/include/inspircd/bancache.h:37:2: error: expected ‘,’ or ‘;’ before ‘public’
   37 |  public:
      |  ^~~~~~
/usr/include/inspircd/bancache.h:43:14: error: ‘string’ in namespace ‘std’ does not name a type
   43 |         std::string Reason;
      |              ^~~~~~
/usr/include/inspircd/bancache.h:1:1: note: ‘std::string’ is defined in header ‘<string>’; did you forget to ‘#include <string>’?
  +++ |+#include <string>
    1 | /*
/usr/include/inspircd/bancache.h:48:32: error: ‘string’ in namespace ‘std’ does not name a type
   48 |         BanCacheHit(const std::string& type, const std::string& reason, time_t seconds);
      |                                ^~~~~~
/usr/include/inspircd/bancache.h:48:27: note: ‘std::string’ is defined in header ‘<string>’; did you forget to ‘#include <string>’?
   48 |         BanCacheHit(const std::string& type, const std::string& reason, time_t seconds);
      |                           ^~~
/usr/include/inspircd/bancache.h:48:57: error: ‘string’ in namespace ‘std’ does not name a type
   48 |         BanCacheHit(const std::string& type, const std::string& reason, time_t seconds);
      |                                                         ^~~~~~
/usr/include/inspircd/bancache.h:48:52: note: ‘std::string’ is defined in header ‘<string>’; did you forget to ‘#include <string>’?
   48 |         BanCacheHit(const std::string& type, const std::string& reason, time_t seconds);
      |                                                    ^~~
/usr/include/inspircd/bancache.h:48:88: error: expected constructor, destructor, or type conversion before ‘;’ token
   48 |         BanCacheHit(const std::string& type, const std::string& reason, time_t seconds);
      |                                                                                        ^
/usr/include/inspircd/bancache.h:50:27: error: non-member function ‘bool IsPositive()’ cannot have cv-qualifier
   50 |         bool IsPositive() const { return (!Reason.empty()); }
      |                           ^~~~~
/usr/include/inspircd/bancache.h: In function ‘bool IsPositive()’:
/usr/include/inspircd/bancache.h:50:44: error: ‘Reason’ was not declared in this scope
   50 |         bool IsPositive() const { return (!Reason.empty()); }
      |                                            ^~~~~~
/usr/include/inspircd/bancache.h: At global scope:
/usr/include/inspircd/bancache.h:51:1: error: expected declaration before ‘}’ token
   51 | };
      | ^
/usr/include/inspircd/bancache.h:55:18: error: variable ‘CoreExport BanCacheManager’ has initializer but incomplete type
   55 | class CoreExport BanCacheManager
      |                  ^~~~~~~~~~~~~~~
/usr/include/inspircd/bancache.h:59:9: error: expected primary-expression before ‘typedef’
   59 |         typedef TR1NS::unordered_map<std::string, BanCacheHit*, TR1NS::hash<std::string> > BanCacheHash;
      |         ^~~~~~~
/usr/include/inspircd/bancache.h:59:9: error: expected ‘}’ before ‘typedef’
/usr/include/inspircd/bancache.h:56:1: note: to match this ‘{’
   56 | {
      | ^
/usr/include/inspircd/bancache.h:59:9: error: expected ‘,’ or ‘;’ before ‘typedef’
   59 |         typedef TR1NS::unordered_map<std::string, BanCacheHit*, TR1NS::hash<std::string> > BanCacheHash;
      |         ^~~~~~~
/usr/include/inspircd/bancache.h:61:9: error: ‘BanCacheHash’ does not name a type
   61 |         BanCacheHash BanHash;
      |         ^~~~~~~~~~~~
/usr/include/inspircd/bancache.h:62:30: error: ‘BanCacheHash’ has not been declared
   62 |         bool RemoveIfExpired(BanCacheHash::iterator& it);
      |                              ^~~~~~~~~~~~
/usr/include/inspircd/bancache.h:62:54: error: ‘it’ was not declared in this scope; did you mean ‘int’?
   62 |         bool RemoveIfExpired(BanCacheHash::iterator& it);
      |                                                      ^~
      |                                                      int
/usr/include/inspircd/bancache.h:64:2: error: expected unqualified-id before ‘public’
   64 |  public:
      |  ^~~~~~
/usr/include/inspircd/bancache.h:73:9: error: ‘BanCacheHit’ does not name a type
   73 |         BanCacheHit *GetHit(const std::string &ip);
      |         ^~~~~~~~~~~
/usr/include/inspircd/bancache.h:79:39: error: ‘string’ in namespace ‘std’ does not name a type
   79 |         void RemoveEntries(const std::string& type, bool positive);
      |                                       ^~~~~~
/usr/include/inspircd/bancache.h:79:34: note: ‘std::string’ is defined in header ‘<string>’; did you forget to ‘#include <string>’?
   79 |         void RemoveEntries(const std::string& type, bool positive);
      |                                  ^~~
/usr/include/inspircd/bancache.h:81:25: error: expected class-name before ‘(’ token
   81 |         ~BanCacheManager();
      |                         ^
/usr/include/inspircd/bancache.h:82:1: error: expected declaration before ‘}’ token
   82 | };
      | ^
In file included from /usr/include/inspircd/membership.h:25,
                 from /usr/include/inspircd/channels.h:28,
                 from /tmp/XDrPsg2cTs/dump1.h:16:
/usr/include/inspircd/convto.h: In function ‘std::string ConvToStr(const T&)’:
/usr/include/inspircd/convto.h:86:27: error: ‘tmp’ has incomplete type
   86 |         std::stringstream tmp;
      |                           ^~~
In file included from /usr/include/c++/12/bits/localefwd.h:41,
                 from /usr/include/c++/12/string:43,
                 from /usr/include/inspircd/base.h:32,
                 from /tmp/XDrPsg2cTs/dump1.h:15:
/usr/include/c++/12/iosfwd:108:11: note: declaration of ‘std::stringstream’ {aka ‘class std::__cxx11::basic_stringstream<char>’}
  108 |     class basic_stringstream;
      |           ^~~~~~~~~~~~~~~~~~
/usr/include/inspircd/membership.h: At global scope:
/usr/include/inspircd/membership.h:34:48: error: expected class-name before ‘,’ token
   34 | class CoreExport Membership : public Extensible, public insp::intrusive_list_node<Membership>
      |                                                ^
/usr/include/inspircd/membership.h:34:82: error: expected template-name before ‘<’ token
   34 | class CoreExport Membership : public Extensible, public insp::intrusive_list_node<Membership>
      |                                                                                  ^
/usr/include/inspircd/membership.h:34:82: error: expected ‘{’ before ‘<’ token
/usr/include/inspircd/membership.h:34:82: error: expected unqualified-id before ‘<’ token
In file included from /usr/include/inspircd/mode.h:29,
                 from /usr/include/inspircd/channels.h:29:
/usr/include/inspircd/ctables.h:86:9: error: ‘Server’ does not name a type
   86 |         Server* server;
      |         ^~~~~~
/usr/include/inspircd/ctables.h:93:38: error: ‘Server’ has not been declared
   93 |         RouteDescriptor(RouteType t, Server* srv)
      |                                      ^~~~~~
/usr/include/inspircd/ctables.h: In constructor ‘RouteDescriptor::RouteDescriptor(RouteType, const std::string&)’:
/usr/include/inspircd/ctables.h:91:43: error: class ‘RouteDescriptor’ does not have any field named ‘server’
   91 |                 : type(t), serverdest(d), server(NULL) { }
      |                                           ^~~~~~
/usr/include/inspircd/ctables.h: In constructor ‘RouteDescriptor::RouteDescriptor(RouteType, int*)’:
/usr/include/inspircd/ctables.h:94:28: error: class ‘RouteDescriptor’ does not have any field named ‘server’
   94 |                 : type(t), server(srv) { }
      |                            ^~~~~~
/usr/include/inspircd/ctables.h: At global scope:
/usr/include/inspircd/ctables.h:121:17: error: ‘ClientProtocol’ does not name a type
  121 |                 ClientProtocol::TagMap tags;
      |                 ^~~~~~~~~~~~~~
/usr/include/inspircd/ctables.h:128:73: error: ‘ClientProtocol’ does not name a type
  128 |                 Params(const std::vector<std::string>& paramsref, const ClientProtocol::TagMap& tagsref)
      |                                                                         ^~~~~~~~~~~~~~
/usr/include/inspircd/ctables.h:128:95: error: expected unqualified-id before ‘&’ token
  128 |                 Params(const std::vector<std::string>& paramsref, const ClientProtocol::TagMap& tagsref)
      |                                                                                               ^
/usr/include/inspircd/ctables.h:128:95: error: expected ‘)’ before ‘&’ token
  128 |                 Params(const std::vector<std::string>& paramsref, const ClientProtocol::TagMap& tagsref)
      |                       ~                                                                       ^
      |                                                                                               )
/usr/include/inspircd/ctables.h:128:95: error: constructors may not be ref-qualified
/usr/include/inspircd/ctables.h:128:95: error: expected ‘;’ at end of member declaration
  128 |                 Params(const std::vector<std::string>& paramsref, const ClientProtocol::TagMap& tagsref)
      |                                                                                               ^
      |                                                                                                ;
/usr/include/inspircd/ctables.h:128:97: error: ‘tagsref’ does not name a type
  128 |                 Params(const std::vector<std::string>& paramsref, const ClientProtocol::TagMap& tagsref)
      |                                                                                                 ^~~~~~~
/usr/include/inspircd/ctables.h:148:23: error: ‘ClientProtocol’ does not name a type
  148 |                 const ClientProtocol::TagMap& GetTags() const { return tags; }
      |                       ^~~~~~~~~~~~~~
/usr/include/inspircd/ctables.h:149:17: error: ‘ClientProtocol’ does not name a type
  149 |                 ClientProtocol::TagMap& GetTags() { return tags; }
      |                 ^~~~~~~~~~~~~~
/usr/include/inspircd/ctables.h:185:44: error: ‘User’ has not been declared
  185 |         virtual RouteDescriptor GetRouting(User* user, const CommandBase::Params& parameters);
      |                                            ^~~~
/usr/include/inspircd/ctables.h:236:34: error: ‘User’ has not been declared
  236 |         virtual CmdResult Handle(User* user, const Params& parameters) = 0;
      |                                  ^~~~
/usr/include/inspircd/ctables.h:245:46: error: ‘LocalUser’ has not been declared
  245 |         virtual void TellNotEnoughParameters(LocalUser* user, const Params& parameters);
      |                                              ^~~~~~~~~
/usr/include/inspircd/ctables.h:251:40: error: ‘LocalUser’ has not been declared
  251 |         virtual void TellNotRegistered(LocalUser* user, const Params& parameters);
      |                                        ^~~~~~~~~
/usr/include/inspircd/ctables.h:267:26: error: ‘User’ has not been declared
  267 |         CmdResult Handle(User* user, const Params& parameters) CXX11_OVERRIDE;
      |                          ^~~~
/usr/include/inspircd/ctables.h:275:39: error: ‘LocalUser’ has not been declared
  275 |         virtual CmdResult HandleLocal(LocalUser* user, const Params& parameters);
      |                                       ^~~~~~~~~
/usr/include/inspircd/ctables.h:283:40: error: ‘RemoteUser’ has not been declared
  283 |         virtual CmdResult HandleRemote(RemoteUser* user, const Params& parameters);
      |                                        ^~~~~~~~~~
/usr/include/inspircd/ctables.h:291:40: error: ‘FakeUser’ has not been declared
  291 |         virtual CmdResult HandleServer(FakeUser* user, const Params& parameters);
      |                                        ^~~~~~~~
In file included from /usr/include/inspircd/mode.h:30:
/usr/include/inspircd/modechange.h:34:9: error: ‘ModeHandler’ does not name a type
   34 |         ModeHandler* mh;
      |         ^~~~~~~~~~~
/usr/include/inspircd/modechange.h:42:27: error: expected ‘)’ before ‘*’ token
   42 |         Change(ModeHandler* handler, bool add, const std::string& parameter)
      |               ~           ^
      |                           )
/usr/include/inspircd/modechange.h:79:19: error: ‘ModeHandler’ has not been declared
   79 |         void push(ModeHandler* mh, bool adding, const std::string& param = std::string())
      |                   ^~~~~~~~~~~
/usr/include/inspircd/modechange.h:88:23: error: ‘ModeHandler’ has not been declared
   88 |         void push_add(ModeHandler* mh, const std::string& param = std::string())
      |                       ^~~~~~~~~~~
/usr/include/inspircd/modechange.h:97:26: error: ‘ModeHandler’ has not been declared
   97 |         void push_remove(ModeHandler* mh, const std::string& param = std::string())
      |                          ^~~~~~~~~~~
/usr/include/inspircd/modechange.h: In member function ‘void Modes::ChangeList::push(int*, bool, const std::string&)’:
/usr/include/inspircd/modechange.h:81:57: error: no matching function for call to ‘Modes::Change::Change(int*&, bool&, const std::string&)’
   81 |                 items.push_back(Change(mh, adding, param));
      |                                                         ^
/usr/include/inspircd/modechange.h:31:15: note: candidate: ‘Modes::Change::Change()’
   31 | struct Modes::Change
      |               ^~~~~~
/usr/include/inspircd/modechange.h:31:15: note:   candidate expects 0 arguments, 3 provided
/usr/include/inspircd/modechange.h:31:15: note: candidate: ‘Modes::Change::Change(const Modes::Change&)’
/usr/include/inspircd/modechange.h:31:15: note:   candidate expects 1 argument, 3 provided
/usr/include/inspircd/modechange.h:31:15: note: candidate: ‘Modes::Change::Change(Modes::Change&&)’
/usr/include/inspircd/modechange.h:31:15: note:   candidate expects 1 argument, 3 provided
/usr/include/inspircd/mode.h: At global scope:
/usr/include/inspircd/mode.h:252:52: error: ‘User’ does not name a type
  252 |         virtual std::string GetUserParameter(const User* user) const;
      |                                                    ^~~~
/usr/include/inspircd/mode.h:262:17: error: ‘ModResult’ does not name a type; did you mean ‘CmdResult’?
  262 |         virtual ModResult AccessCheck(User* source, Channel* channel, std::string &parameter, bool adding);
      |                 ^~~~~~~~~
      |                 CmdResult
/usr/include/inspircd/mode.h:276:41: error: ‘User’ has not been declared
  276 |         virtual ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string &parameter, bool adding); /* Can change the mode parameter as its a ref */
      |                                         ^~~~
/usr/include/inspircd/mode.h:276:55: error: ‘User’ has not been declared
  276 |         virtual ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string &parameter, bool adding); /* Can change the mode parameter as its a ref */
      |                                                       ^~~~
/usr/include/inspircd/mode.h:276:67: error: ‘Channel’ has not been declared
  276 |         virtual ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string &parameter, bool adding); /* Can change the mode parameter as its a ref */
      |                                                                   ^~~~~~~
/usr/include/inspircd/mode.h:284:34: error: ‘User’ has not been declared
  284 |         virtual void DisplayList(User* user, Channel* channel);
      |                                  ^~~~
/usr/include/inspircd/mode.h:284:46: error: ‘Channel’ has not been declared
  284 |         virtual void DisplayList(User* user, Channel* channel);
      |                                              ^~~~~~~
/usr/include/inspircd/mode.h:292:41: error: ‘User’ has not been declared
  292 |         virtual void OnParameterMissing(User* user, User* dest, Channel* channel);
      |                                         ^~~~
/usr/include/inspircd/mode.h:292:53: error: ‘User’ has not been declared
  292 |         virtual void OnParameterMissing(User* user, User* dest, Channel* channel);
      |                                                     ^~~~
/usr/include/inspircd/mode.h:292:65: error: ‘Channel’ has not been declared
  292 |         virtual void OnParameterMissing(User* user, User* dest, Channel* channel);
      |                                                                 ^~~~~~~
/usr/include/inspircd/mode.h:300:41: error: ‘User’ has not been declared
  300 |         virtual void OnParameterInvalid(User* user, Channel* targetchannel, User* targetuser, const std::string& parameter);
      |                                         ^~~~
/usr/include/inspircd/mode.h:300:53: error: ‘Channel’ has not been declared
  300 |         virtual void OnParameterInvalid(User* user, Channel* targetchannel, User* targetuser, const std::string& parameter);
      |                                                     ^~~~~~~
/usr/include/inspircd/mode.h:300:77: error: ‘User’ has not been declared
  300 |         virtual void OnParameterInvalid(User* user, Channel* targetchannel, User* targetuser, const std::string& parameter);
      |                                                                             ^~~~
/usr/include/inspircd/mode.h:308:39: error: ‘User’ has not been declared
  308 |         virtual void DisplayEmptyList(User* user, Channel* channel);
      |                                       ^~~~
/usr/include/inspircd/mode.h:308:51: error: ‘Channel’ has not been declared
  308 |         virtual void DisplayEmptyList(User* user, Channel* channel);
      |                                                   ^~~~~~~
/usr/include/inspircd/mode.h:320:98: error: ‘Channel’ has not been declared
  320 |         virtual bool ResolveModeConflict(std::string &their_param, const std::string &our_param, Channel* channel);
      |                                                                                                  ^~~~~~~
/usr/include/inspircd/mode.h:327:25: error: ‘User’ has not been declared
  327 |         void RemoveMode(User* user);
      |                         ^~~~
/usr/include/inspircd/mode.h:339:33: error: ‘Channel’ has not been declared
  339 |         virtual void RemoveMode(Channel* channel, Modes::ChangeList& changelist);
      |                                 ^~~~~~~
/usr/include/inspircd/mode.h:404:9: error: ‘ModResult’ does not name a type; did you mean ‘CmdResult’?
  404 |         ModResult AccessCheck(User* source, Channel* channel, std::string &parameter, bool adding) CXX11_OVERRIDE;
      |         ^~~~~~~~~
      |         CmdResult
/usr/include/inspircd/mode.h:419:33: error: ‘User’ has not been declared
  419 |         ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string& param, bool adding) CXX11_OVERRIDE;
      |                                 ^~~~
/usr/include/inspircd/mode.h:419:47: error: ‘User’ has not been declared
  419 |         ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string& param, bool adding) CXX11_OVERRIDE;
      |                                               ^~~~
/usr/include/inspircd/mode.h:419:59: error: ‘Channel’ has not been declared
  419 |         ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string& param, bool adding) CXX11_OVERRIDE;
      |                                                           ^~~~~~~
/usr/include/inspircd/mode.h:435:25: error: ‘Channel’ has not been declared
  435 |         void RemoveMode(Channel* channel, Modes::ChangeList& changelist) CXX11_OVERRIDE;
      |                         ^~~~~~~
/usr/include/inspircd/mode.h:474:33: error: ‘User’ has not been declared
  474 |         ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string& parameter, bool adding) CXX11_OVERRIDE;
      |                                 ^~~~
/usr/include/inspircd/mode.h:474:47: error: ‘User’ has not been declared
  474 |         ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string& parameter, bool adding) CXX11_OVERRIDE;
      |                                               ^~~~
/usr/include/inspircd/mode.h:474:59: error: ‘Channel’ has not been declared
  474 |         ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string& parameter, bool adding) CXX11_OVERRIDE;
      |                                                           ^~~~~~~
/usr/include/inspircd/mode.h:491:33: error: ‘User’ has not been declared
  491 |         ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string& parameter, bool adding) CXX11_OVERRIDE;
      |                                 ^~~~
/usr/include/inspircd/mode.h:491:47: error: ‘User’ has not been declared
  491 |         ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string& parameter, bool adding) CXX11_OVERRIDE;
      |                                               ^~~~
/usr/include/inspircd/mode.h:491:59: error: ‘Channel’ has not been declared
  491 |         ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string& parameter, bool adding) CXX11_OVERRIDE;
      |                                                           ^~~~~~~
/usr/include/inspircd/mode.h:548:33: error: ‘User’ has not been declared
  548 |         virtual bool BeforeMode(User* source, User* dest, Channel* channel, std::string& parameter, bool adding);
      |                                 ^~~~
/usr/include/inspircd/mode.h:548:47: error: ‘User’ has not been declared
  548 |         virtual bool BeforeMode(User* source, User* dest, Channel* channel, std::string& parameter, bool adding);
      |                                               ^~~~
/usr/include/inspircd/mode.h:548:59: error: ‘Channel’ has not been declared
  548 |         virtual bool BeforeMode(User* source, User* dest, Channel* channel, std::string& parameter, bool adding);
      |                                                           ^~~~~~~
/usr/include/inspircd/mode.h:558:32: error: ‘User’ has not been declared
  558 |         virtual void AfterMode(User* source, User* dest, Channel* channel, const std::string& parameter, bool adding);
      |                                ^~~~
/usr/include/inspircd/mode.h:558:46: error: ‘User’ has not been declared
  558 |         virtual void AfterMode(User* source, User* dest, Channel* channel, const std::string& parameter, bool adding);
      |                                              ^~~~
/usr/include/inspircd/mode.h:558:58: error: ‘Channel’ has not been declared
  558 |         virtual void AfterMode(User* source, User* dest, Channel* channel, const std::string& parameter, bool adding);
      |                                                          ^~~~~~~
/usr/include/inspircd/mode.h:566:47: error: expected template-name before ‘<’ token
  566 | class CoreExport ModeParser : public fakederef<ModeParser>
      |                                               ^
/usr/include/inspircd/mode.h:566:47: error: expected ‘{’ before ‘<’ token
/usr/include/inspircd/mode.h:566:47: error: expected unqualified-id before ‘<’ token
In file included from /usr/include/inspircd/channels.h:30:
/usr/include/inspircd/parammode.h:26:38: error: ‘User’ has not been declared
   26 |         virtual void OnUnsetInternal(User* source, Channel* chan) = 0;
      |                                      ^~~~
/usr/include/inspircd/parammode.h:26:52: error: ‘Channel’ has not been declared
   26 |         virtual void OnUnsetInternal(User* source, Channel* chan) = 0;
      |                                                    ^~~~~~~
/usr/include/inspircd/parammode.h:32:33: error: ‘User’ has not been declared
   32 |         ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string& param, bool adding) CXX11_OVERRIDE;
      |                                 ^~~~
/usr/include/inspircd/parammode.h:32:47: error: ‘User’ has not been declared
   32 |         ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string& param, bool adding) CXX11_OVERRIDE;
      |                                               ^~~~
/usr/include/inspircd/parammode.h:32:59: error: ‘Channel’ has not been declared
   32 |         ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string& param, bool adding) CXX11_OVERRIDE;
      |                                                           ^~~~~~~
/usr/include/inspircd/parammode.h:36:30: error: ‘User’ has not been declared
   36 |         virtual void OnUnset(User* source, Channel* chan) { }
      |                              ^~~~
/usr/include/inspircd/parammode.h:36:44: error: ‘Channel’ has not been declared
   36 |         virtual void OnUnset(User* source, Channel* chan) { }
      |                                            ^~~~~~~
/usr/include/inspircd/parammode.h:37:34: error: ‘User’ has not been declared
   37 |         virtual ModeAction OnSet(User* source, Channel* chan, std::string& param) = 0;
      |                                  ^~~~
/usr/include/inspircd/parammode.h:37:48: error: ‘Channel’ has not been declared
   37 |         virtual ModeAction OnSet(User* source, Channel* chan, std::string& param) = 0;
      |                                                ^~~~~~~
/usr/include/inspircd/parammode.h:38:35: error: ‘Channel’ has not been declared
   38 |         virtual void GetParameter(Channel* chan, std::string& out) = 0;
      |                                   ^~~~~~~
/usr/include/inspircd/parammode.h:65:30: error: ‘User’ has not been declared
   65 |         void OnUnsetInternal(User* source, Channel* chan) CXX11_OVERRIDE
      |                              ^~~~
/usr/include/inspircd/parammode.h:65:44: error: ‘Channel’ has not been declared
   65 |         void OnUnsetInternal(User* source, Channel* chan) CXX11_OVERRIDE
      |                                            ^~~~~~~
/usr/include/inspircd/parammode.h:71:27: error: ‘Channel’ has not been declared
   71 |         void GetParameter(Channel* chan, std::string& out) CXX11_OVERRIDE
      |                           ^~~~~~~
/usr/include/inspircd/parammode.h: In constructor ‘ParamMode<T, ExtItemT>::ParamMode(Module*, const std::string&, char, ParamSpec)’:
/usr/include/inspircd/parammode.h:61:44: error: ‘ExtensionItem’ has not been declared
   61 |                 , ext("parammode_" + Name, ExtensionItem::EXT_CHANNEL, Creator)
      |                                            ^~~~~~~~~~~~~
/usr/include/inspircd/channels.h: At global scope:
/usr/include/inspircd/channels.h:41:1: error: expected class-name before ‘{’ token
   41 | {
      | ^
/usr/include/inspircd/channels.h:45:22: error: ‘map’ in namespace ‘std’ does not name a template type
   45 |         typedef std::map<User*, insp::aligned_storage<Membership> > MemberMap;
      |                      ^~~
/usr/include/inspircd/channels.h:31:1: note: ‘std::map’ is defined in header ‘<map>’; did you forget to ‘#include <map>’?
   30 | #include "parammode.h"
  +++ |+#include <map>
   31 | 
/usr/include/inspircd/channels.h:56:14: error: ‘bitset’ in namespace ‘std’ does not name a template type
   56 |         std::bitset<ModeParser::MODEID_MAX> modes;
      |              ^~~~~~
/usr/include/inspircd/channels.h:31:1: note: ‘std::bitset’ is defined in header ‘<bitset>’; did you forget to ‘#include <bitset>’?
   30 | #include "parammode.h"
  +++ |+#include <bitset>
   31 | 
/usr/include/inspircd/channels.h:65:28: error: ‘MemberMap’ does not name a type; did you mean ‘Membership’?
   65 |         void DelUser(const MemberMap::iterator& membiter);
      |                            ^~~~~~~~~
      |                            Membership
/usr/include/inspircd/channels.h:65:47: error: expected unqualified-id before ‘&’ token
   65 |         void DelUser(const MemberMap::iterator& membiter);
      |                                               ^
/usr/include/inspircd/channels.h:65:47: error: expected ‘)’ before ‘&’ token
   65 |         void DelUser(const MemberMap::iterator& membiter);
      |                     ~                         ^
      |                                               )
/usr/include/inspircd/channels.h:65:47: error: expected ‘;’ at end of member declaration
   65 |         void DelUser(const MemberMap::iterator& membiter);
      |                                               ^
      |                                                ;
/usr/include/inspircd/channels.h:65:49: error: ‘membiter’ does not name a type
   65 |         void DelUser(const MemberMap::iterator& membiter);
      |                                                 ^~~~~~~~
/usr/include/inspircd/channels.h:96:9: error: ‘MemberMap’ does not name a type; did you mean ‘Membership’?
   96 |         MemberMap userlist;
      |         ^~~~~~~~~
      |         Membership
/usr/include/inspircd/channels.h:125:24: error: ‘ChanModeReference’ has not been declared
  125 |         bool IsModeSet(ChanModeReference& mode);
      |                        ^~~~~~~~~~~~~~~~~
/usr/include/inspircd/channels.h:138:38: error: ‘ChanModeReference’ has not been declared
  138 |         std::string GetModeParameter(ChanModeReference& mode);
      |                                      ^~~~~~~~~~~~~~~~~
/usr/include/inspircd/channels.h:148:23: error: ‘User’ has not been declared
  148 |         void SetTopic(User* user, const std::string& topic, time_t topicts, const std::string* setter = NULL);
      |                       ^~~~
/usr/include/inspircd/channels.h:164:29: error: ‘User’ has not been declared
  164 |         Membership* AddUser(User* user);
      |                             ^~~~
/usr/include/inspircd/channels.h:169:22: error: ‘User’ has not been declared
  169 |         void DelUser(User* user);
      |                      ^~~~
/usr/include/inspircd/channels.h:180:15: error: ‘MemberMap’ does not name a type; did you mean ‘Membership’?
  180 |         const MemberMap& GetUsers() const { return userlist; }
      |               ^~~~~~~~~
      |               Membership
/usr/include/inspircd/channels.h:186:22: error: ‘User’ has not been declared
  186 |         bool HasUser(User* user);
      |                      ^~~~
/usr/include/inspircd/channels.h:188:29: error: ‘User’ has not been declared
  188 |         Membership* GetUser(User* user);
      |                             ^~~~
/usr/include/inspircd/channels.h:195:23: error: ‘User’ has not been declared
  195 |         void KickUser(User* src, const MemberMap::iterator& victimiter, const std::string& reason);
      |                       ^~~~
/usr/include/inspircd/channels.h:195:40: error: ‘MemberMap’ does not name a type; did you mean ‘Membership’?
  195 |         void KickUser(User* src, const MemberMap::iterator& victimiter, const std::string& reason);
      |                                        ^~~~~~~~~
      |                                        Membership
/usr/include/inspircd/channels.h:195:59: error: expected unqualified-id before ‘&’ token
  195 |         void KickUser(User* src, const MemberMap::iterator& victimiter, const std::string& reason);
      |                                                           ^
/usr/include/inspircd/channels.h:195:59: error: expected ‘)’ before ‘&’ token
  195 |         void KickUser(User* src, const MemberMap::iterator& victimiter, const std::string& reason);
      |                      ~                                    ^
      |                                                           )
/usr/include/inspircd/channels.h:195:59: error: expected ‘;’ at end of member declaration
  195 |         void KickUser(User* src, const MemberMap::iterator& victimiter, const std::string& reason);
      |                                                           ^
      |                                                            ;
/usr/include/inspircd/channels.h:195:61: error: ‘victimiter’ does not name a type
  195 |         void KickUser(User* src, const MemberMap::iterator& victimiter, const std::string& reason);
      |                                                             ^~~~~~~~~~
/usr/include/inspircd/channels.h:202:23: error: ‘User’ has not been declared
  202 |         void KickUser(User* src, User* user, const std::string& reason)
      |                       ^~~~
/usr/include/inspircd/channels.h:202:34: error: ‘User’ has not been declared
  202 |         void KickUser(User* src, User* user, const std::string& reason)
      |                                  ^~~~
/usr/include/inspircd/channels.h:215:23: error: ‘User’ has not been declared
  215 |         bool PartUser(User* user, std::string& reason);
      |                       ^~~~
/usr/include/inspircd/channels.h:226:34: error: ‘LocalUser’ has not been declared
  226 |         static Channel* JoinUser(LocalUser* user, std::string channame, bool override = false, const std::string& key = "");
      |                                  ^~~~~~~~~
/usr/include/inspircd/channels.h:235:31: error: ‘User’ has not been declared
  235 |         Membership* ForceJoin(User* user, const std::string* privs = NULL, bool bursting = false, bool created_by_local = false);
      |                               ^~~~
/usr/include/inspircd/channels.h:242:20: error: ‘ClientProtocol’ has not been declared
  242 |         void Write(ClientProtocol::Event& protoev, char status = 0, const CUList& except_list = CUList());
      |                    ^~~~~~~~~~~~~~
/usr/include/inspircd/channels.h:242:41: error: expected ‘,’ or ‘...’ before ‘&’ token
  242 |         void Write(ClientProtocol::Event& protoev, char status = 0, const CUList& except_list = CUList());
      |                                         ^
/usr/include/inspircd/channels.h:250:20: error: ‘ClientProtocol’ has not been declared
  250 |         void Write(ClientProtocol::EventProvider& protoevprov, ClientProtocol::Message& msg, char status = 0, const CUList& except_list = CUList());
      |                    ^~~~~~~~~~~~~~
/usr/include/inspircd/channels.h:250:49: error: expected ‘,’ or ‘...’ before ‘&’ token
  250 |         void Write(ClientProtocol::EventProvider& protoevprov, ClientProtocol::Message& msg, char status = 0, const CUList& except_list = CUList());
      |                                                 ^
/usr/include/inspircd/channels.h:250:14: error: ‘void Channel::Write(int)’ cannot be overloaded with ‘void Channel::Write(int)’
  250 |         void Write(ClientProtocol::EventProvider& protoevprov, ClientProtocol::Message& msg, char status = 0, const CUList& except_list = CUList());
      |              ^~~~~
/usr/include/inspircd/channels.h:242:14: note: previous declaration ‘void Channel::Write(int)’
  242 |         void Write(ClientProtocol::Event& protoev, char status = 0, const CUList& except_list = CUList());
      |              ^~~~~
/usr/include/inspircd/channels.h:270:37: error: ‘User’ has not been declared
  270 |         unsigned int GetPrefixValue(User* user);
      |                                     ^~~~
/usr/include/inspircd/channels.h:276:23: error: ‘User’ has not been declared
  276 |         bool IsBanned(User* user);
      |                       ^~~~
/usr/include/inspircd/channels.h:280:23: error: ‘User’ has not been declared
  280 |         bool CheckBan(User* user, const std::string& banmask);
      |                       ^~~~
/usr/include/inspircd/channels.h:284:9: error: ‘ModResult’ does not name a type; did you mean ‘CmdResult’?
  284 |         ModResult GetExtBanStatus(User *u, char type);
      |         ^~~~~~~~~
      |         CmdResult
/usr/include/inspircd/channels.h: In member function ‘bool Channel::IsModeSet(ModeHandler*)’:
/usr/include/inspircd/channels.h:123:83: error: incomplete type ‘ModeParser’ used in nested name specifier
  123 |         bool IsModeSet(ModeHandler* mode) { return ((mode->GetId() != ModeParser::MODEID_MAX) && (modes[mode->GetId()])); }
      |                                                                                   ^~~~~~~~~~
/usr/include/inspircd/channels.h:123:99: error: ‘modes’ was not declared in this scope; did you mean ‘Modes’?
  123 |         bool IsModeSet(ModeHandler* mode) { return ((mode->GetId() != ModeParser::MODEID_MAX) && (modes[mode->GetId()])); }
      |                                                                                                   ^~~~~
      |                                                                                                   Modes
/usr/include/inspircd/channels.h: In member function ‘size_t Channel::GetUserCounter() const’:
/usr/include/inspircd/channels.h:155:48: error: ‘userlist’ was not declared in this scope
  155 |         size_t GetUserCounter() const { return userlist.size(); }
      |                                                ^~~~~~~~
/usr/include/inspircd/channels.h: In member function ‘void Channel::KickUser(int*, int*, const std::string&)’:
/usr/include/inspircd/channels.h:204:17: error: ‘MemberMap’ has not been declared
  204 |                 MemberMap::iterator it = userlist.find(user);
      |                 ^~~~~~~~~
/usr/include/inspircd/channels.h:205:21: error: ‘it’ was not declared in this scope; did you mean ‘int’?
  205 |                 if (it != userlist.end())
      |                     ^~
      |                     int
/usr/include/inspircd/channels.h:205:27: error: ‘userlist’ was not declared in this scope
  205 |                 if (it != userlist.end())
      |                           ^~~~~~~~
/usr/include/inspircd/channels.h: At global scope:
/usr/include/inspircd/channels.h:294:13: error: ‘bool Channel::HasUser’ is not a static data member of ‘class Channel’
  294 | inline bool Channel::HasUser(User* user)
      |             ^~~~~~~
/usr/include/inspircd/channels.h:294:30: error: ‘User’ was not declared in this scope; did you mean ‘DelUser’?
  294 | inline bool Channel::HasUser(User* user)
      |                              ^~~~
      |                              DelUser
/usr/include/inspircd/channels.h:294:36: error: ‘user’ was not declared in this scope
  294 | inline bool Channel::HasUser(User* user)
      |                                    ^~~~
/usr/include/inspircd/channels.h:299:20: error: ‘std::string Channel::GetModeParameter’ is not a static data member of ‘class Channel’
  299 | inline std::string Channel::GetModeParameter(ChanModeReference& mode)
      |                    ^~~~~~~
/usr/include/inspircd/channels.h:299:46: error: ‘ChanModeReference’ was not declared in this scope
  299 | inline std::string Channel::GetModeParameter(ChanModeReference& mode)
      |                                              ^~~~~~~~~~~~~~~~~
/usr/include/inspircd/channels.h:299:65: error: ‘mode’ was not declared in this scope
  299 | inline std::string Channel::GetModeParameter(ChanModeReference& mode)
      |                                                                 ^~~~
/usr/include/inspircd/channels.h:300:1: error: expected ‘,’ or ‘;’ before ‘{’ token
  300 | {
      | ^
/usr/include/inspircd/channels.h: In member function ‘std::string Channel::GetModeParameter(ModeHandler*)’:
/usr/include/inspircd/channels.h:311:34: error: cannot convert ‘Channel*’ to ‘int*’
  311 |                 pm->GetParameter(this, out);
      |                                  ^~~~
      |                                  |
      |                                  Channel*
/usr/include/inspircd/parammode.h:38:44: note:   initializing argument 1 of ‘virtual void ParamModeBase::GetParameter(int*, std::string&)’
   38 |         virtual void GetParameter(Channel* chan, std::string& out) = 0;
      |                                   ~~~~~~~~~^~~~
/usr/include/inspircd/channels.h: In member function ‘std::string Channel::GetModeParameter(ParamModeBase*)’:
/usr/include/inspircd/channels.h:319:34: error: cannot convert ‘Channel*’ to ‘int*’
  319 |                 pm->GetParameter(this, out);
      |                                  ^~~~
      |                                  |
      |                                  Channel*
/usr/include/inspircd/parammode.h:38:44: note:   initializing argument 1 of ‘virtual void ParamModeBase::GetParameter(int*, std::string&)’
   38 |         virtual void GetParameter(Channel* chan, std::string& out) = 0;
      |                                   ~~~~~~~~~^~~~
/usr/include/inspircd/channels.h: At global scope:
/usr/include/inspircd/channels.h:323:13: error: ‘bool Channel::IsModeSet’ is not a static data member of ‘class Channel’
  323 | inline bool Channel::IsModeSet(ChanModeReference& mode)
      |             ^~~~~~~
/usr/include/inspircd/channels.h:323:32: error: ‘ChanModeReference’ was not declared in this scope
  323 | inline bool Channel::IsModeSet(ChanModeReference& mode)
      |                                ^~~~~~~~~~~~~~~~~
/usr/include/inspircd/channels.h:323:51: error: ‘mode’ was not declared in this scope
  323 | inline bool Channel::IsModeSet(ChanModeReference& mode)
      |                                                   ^~~~
In file included from /usr/include/inspircd/clientprotocol.h:23,
                 from /tmp/XDrPsg2cTs/dump1.h:17:
/usr/include/inspircd/event.h:37:69: error: ‘dynamic_reference_base’ has not been declared
   37 | class Events::ModuleEventProvider : public ServiceProvider, private dynamic_reference_base::CaptureHook
      |                                                                     ^~~~~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:37:93: error: expected ‘{’ before ‘CaptureHook’
   37 | class Events::ModuleEventProvider : public ServiceProvider, private dynamic_reference_base::CaptureHook
      |                                                                                             ^~~~~~~~~~~
/usr/include/inspircd/event.h:39:2: error: expected primary-expression before ‘public’
   39 |  public:
      |  ^~~~~~
/usr/include/inspircd/event.h:39:2: error: expected ‘}’ before ‘public’
/usr/include/inspircd/event.h:38:1: note: to match this ‘{’
   38 | {
      | ^
/usr/include/inspircd/event.h:47:33: error: ‘ModuleEventListener’ has not been declared
   47 |                 bool operator()(ModuleEventListener* lhs, ModuleEventListener* rhs) const;
      |                                 ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:47:59: error: ‘ModuleEventListener’ has not been declared
   47 |                 bool operator()(ModuleEventListener* lhs, ModuleEventListener* rhs) const;
      |                                                           ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:50:23: error: ‘flat_multiset’ in namespace ‘insp’ does not name a template type
   50 |         typedef insp::flat_multiset<ModuleEventListener*, Comp, ElementComp> SubscriberList;
      |                       ^~~~~~~~~~~~~
/usr/include/inspircd/event.h: In function ‘int ModuleEventProvider(Module*, const std::string&)’:
/usr/include/inspircd/event.h:57:19: error: only constructors take member initializers
   57 |                 : ServiceProvider(mod, eventid, SERVICE_DATA)
      |                   ^~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:60:17: error: ‘prov’ was not declared in this scope
   60 |                 prov.SetCaptureHook(this);
      |                 ^~~~
/usr/include/inspircd/event.h:60:37: error: invalid use of ‘this’ in non-member function
   60 |                 prov.SetCaptureHook(this);
      |                                     ^~~~
/usr/include/inspircd/event.h: At global scope:
/usr/include/inspircd/event.h:64:35: error: non-member function ‘const Module* GetModule()’ cannot have cv-qualifier
   64 |         const Module* GetModule() const { return prov.creator; }
      |                                   ^~~~~
/usr/include/inspircd/event.h: In function ‘const Module* GetModule()’:
/usr/include/inspircd/event.h:64:50: error: ‘prov’ was not declared in this scope
   64 |         const Module* GetModule() const { return prov.creator; }
      |                                                  ^~~~
/usr/include/inspircd/event.h: At global scope:
/usr/include/inspircd/event.h:69:15: error: ‘SubscriberList’ does not name a type
   69 |         const SubscriberList& GetSubscribers() const { return prov->subscribers; }
      |               ^~~~~~~~~~~~~~
/usr/include/inspircd/event.h:74:14: error: variable or field ‘Subscribe’ declared void
   74 |         void Subscribe(ModuleEventListener* subscriber)
      |              ^~~~~~~~~
/usr/include/inspircd/event.h:74:24: error: ‘ModuleEventListener’ was not declared in this scope; did you mean ‘Events::ModuleEventListener’?
   74 |         void Subscribe(ModuleEventListener* subscriber)
      |                        ^~~~~~~~~~~~~~~~~~~
      |                        Events::ModuleEventListener
/usr/include/inspircd/event.h:27:15: note: ‘Events::ModuleEventListener’ declared here
   27 |         class ModuleEventListener;
      |               ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:74:45: error: ‘subscriber’ was not declared in this scope
   74 |         void Subscribe(ModuleEventListener* subscriber)
      |                                             ^~~~~~~~~~
/usr/include/inspircd/event.h:83:14: error: variable or field ‘Unsubscribe’ declared void
   83 |         void Unsubscribe(ModuleEventListener* subscriber)
      |              ^~~~~~~~~~~
/usr/include/inspircd/event.h:83:26: error: ‘ModuleEventListener’ was not declared in this scope; did you mean ‘Events::ModuleEventListener’?
   83 |         void Unsubscribe(ModuleEventListener* subscriber)
      |                          ^~~~~~~~~~~~~~~~~~~
      |                          Events::ModuleEventListener
/usr/include/inspircd/event.h:27:15: note: ‘Events::ModuleEventListener’ declared here
   27 |         class ModuleEventListener;
      |               ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:83:47: error: ‘subscriber’ was not declared in this scope
   83 |         void Unsubscribe(ModuleEventListener* subscriber)
      |                                               ^~~~~~~~~~
/usr/include/inspircd/event.h:89:2: error: expected unqualified-id before ‘private’
   89 |  private:
      |  ^~~~~~~
/usr/include/inspircd/event.h:100:9: error: ‘virtual’ outside class declaration
  100 |         virtual void OnSubscribe(ModuleEventListener* subscriber) { }
      |         ^~~~~~~
/usr/include/inspircd/event.h:100:22: error: variable or field ‘OnSubscribe’ declared void
  100 |         virtual void OnSubscribe(ModuleEventListener* subscriber) { }
      |                      ^~~~~~~~~~~
/usr/include/inspircd/event.h:100:34: error: ‘ModuleEventListener’ was not declared in this scope; did you mean ‘Events::ModuleEventListener’?
  100 |         virtual void OnSubscribe(ModuleEventListener* subscriber) { }
      |                                  ^~~~~~~~~~~~~~~~~~~
      |                                  Events::ModuleEventListener
/usr/include/inspircd/event.h:27:15: note: ‘Events::ModuleEventListener’ declared here
   27 |         class ModuleEventListener;
      |               ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:100:55: error: ‘subscriber’ was not declared in this scope
  100 |         virtual void OnSubscribe(ModuleEventListener* subscriber) { }
      |                                                       ^~~~~~~~~~
/usr/include/inspircd/event.h:105:9: error: ‘virtual’ outside class declaration
  105 |         virtual void OnUnsubscribe(ModuleEventListener* subscriber) { }
      |         ^~~~~~~
/usr/include/inspircd/event.h:105:22: error: variable or field ‘OnUnsubscribe’ declared void
  105 |         virtual void OnUnsubscribe(ModuleEventListener* subscriber) { }
      |                      ^~~~~~~~~~~~~
/usr/include/inspircd/event.h:105:36: error: ‘ModuleEventListener’ was not declared in this scope; did you mean ‘Events::ModuleEventListener’?
  105 |         virtual void OnUnsubscribe(ModuleEventListener* subscriber) { }
      |                                    ^~~~~~~~~~~~~~~~~~~
      |                                    Events::ModuleEventListener
/usr/include/inspircd/event.h:27:15: note: ‘Events::ModuleEventListener’ declared here
   27 |         class ModuleEventListener;
      |               ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:105:57: error: ‘subscriber’ was not declared in this scope
  105 |         virtual void OnUnsubscribe(ModuleEventListener* subscriber) { }
      |                                                         ^~~~~~~~~~
/usr/include/inspircd/event.h:112:9: error: ‘dynamic_reference_nocheck’ does not name a type
  112 |         dynamic_reference_nocheck<ModuleEventProvider> prov;
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:117:9: error: ‘SubscriberList’ does not name a type
  117 |         SubscriberList subscribers;
      |         ^~~~~~~~~~~~~~
/usr/include/inspircd/event.h:118:1: error: expected declaration before ‘}’ token
  118 | };
      | ^
/usr/include/inspircd/event.h:123:45: error: ‘dynamic_reference_base’ has not been declared
  123 | class Events::ModuleEventListener : private dynamic_reference_base::CaptureHook
      |                                             ^~~~~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:123:69: error: expected ‘{’ before ‘CaptureHook’
  123 | class Events::ModuleEventListener : private dynamic_reference_base::CaptureHook
      |                                                                     ^~~~~~~~~~~
/usr/include/inspircd/event.h:123:69: error: redefinition of ‘int CaptureHook’
/usr/include/inspircd/event.h:37:93: note: ‘int CaptureHook’ previously defined here
   37 | class Events::ModuleEventProvider : public ServiceProvider, private dynamic_reference_base::CaptureHook
      |                                                                                             ^~~~~~~~~~~
/usr/include/inspircd/event.h:127:9: error: ‘dynamic_reference_nocheck’ was not declared in this scope
  127 |         dynamic_reference_nocheck<ModuleEventProvider> prov;
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:127:56: error: ‘prov’ was not declared in this scope
  127 |         dynamic_reference_nocheck<ModuleEventProvider> prov;
      |                                                        ^~~~
/usr/include/inspircd/event.h:127:60: error: expected ‘}’ before ‘;’ token
  127 |         dynamic_reference_nocheck<ModuleEventProvider> prov;
      |                                                            ^
/usr/include/inspircd/event.h:124:1: note: to match this ‘{’
  124 | {
      | ^
In file included from /usr/include/inspircd/base.h:31:
/usr/include/inspircd/compat.h:72:25: error: virt-specifiers in ‘OnCapture’ not allowed outside a class definition
   72 | # define CXX11_OVERRIDE override
      |                         ^~~~~~~~
/usr/include/inspircd/event.h:133:26: note: in expansion of macro ‘CXX11_OVERRIDE’
  133 |         void OnCapture() CXX11_OVERRIDE
      |                          ^~~~~~~~~~~~~~
/usr/include/inspircd/event.h: In function ‘void OnCapture()’:
/usr/include/inspircd/event.h:135:17: error: ‘prov’ was not declared in this scope
  135 |                 prov->Subscribe(this);
      |                 ^~~~
/usr/include/inspircd/event.h:135:33: error: invalid use of ‘this’ in non-member function
  135 |                 prov->Subscribe(this);
      |                                 ^~~~
/usr/include/inspircd/event.h: At global scope:
/usr/include/inspircd/event.h:138:2: error: expected unqualified-id before ‘public’
  138 |  public:
      |  ^~~~~~
/usr/include/inspircd/event.h:146:95: error: ‘DefaultPriority’ was not declared in this scope; did you mean ‘eventpriority’?
  146 |         ModuleEventListener(Module* mod, const std::string& eventid, unsigned int eventprio = DefaultPriority)
      |                                                                                               ^~~~~~~~~~~~~~~
      |                                                                                               eventpriority
/usr/include/inspircd/event.h: In function ‘int ModuleEventListener(Module*, const std::string&, unsigned int)’:
/usr/include/inspircd/event.h:147:19: error: only constructors take member initializers
  147 |                 : prov(mod, eventid)
      |                   ^~~~
/usr/include/inspircd/event.h:150:17: error: ‘prov’ was not declared in this scope
  150 |                 prov.SetCaptureHook(this);
      |                 ^~~~
/usr/include/inspircd/event.h:150:37: error: invalid use of ‘this’ in non-member function
  150 |                 prov.SetCaptureHook(this);
      |                                     ^~~~
/usr/include/inspircd/event.h:153:25: error: ‘ModuleEventListener’ is not a class, namespace, or enumeration
  153 |                         ModuleEventListener::OnCapture();
      |                         ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h: At global scope:
/usr/include/inspircd/event.h:156:29: error: expected class-name before ‘(’ token
  156 |         ~ModuleEventListener()
      |                             ^
/usr/include/inspircd/event.h:163:35: error: non-member function ‘const Module* GetModule()’ cannot have cv-qualifier
  163 |         const Module* GetModule() const { return prov.creator; }
      |                                   ^~~~~
/usr/include/inspircd/event.h:163:23: error: redefinition of ‘const Module* GetModule()’
  163 |         const Module* GetModule() const { return prov.creator; }
      |                       ^~~~~~~~~
/usr/include/inspircd/event.h:64:23: note: ‘const Module* GetModule()’ previously defined here
   64 |         const Module* GetModule() const { return prov.creator; }
      |                       ^~~~~~~~~
/usr/include/inspircd/event.h: In function ‘const Module* GetModule()’:
/usr/include/inspircd/event.h:163:50: error: ‘prov’ was not declared in this scope
  163 |         const Module* GetModule() const { return prov.creator; }
      |                                                  ^~~~
/usr/include/inspircd/event.h: At global scope:
/usr/include/inspircd/event.h:166:36: error: non-member function ‘unsigned int GetPriority()’ cannot have cv-qualifier
  166 |         unsigned int GetPriority() const { return eventpriority; }
      |                                    ^~~~~
/usr/include/inspircd/event.h:167:1: error: expected declaration before ‘}’ token
  167 | };
      | ^
/usr/include/inspircd/event.h:169:42: error: ‘Events::ModuleEventProvider::Comp’ has not been declared
  169 | inline bool Events::ModuleEventProvider::Comp::operator()(Events::ModuleEventListener* lhs, Events::ModuleEventListener* rhs) const
      |                                          ^~~~
/usr/include/inspircd/event.h:169:127: error: non-member function ‘bool operator()(Events::ModuleEventListener*, Events::ModuleEventListener*)’ cannot have cv-qualifier
  169 | inline bool Events::ModuleEventProvider::Comp::operator()(Events::ModuleEventListener* lhs, Events::ModuleEventListener* rhs) const
      |                                                                                                                               ^~~~~
/usr/include/inspircd/event.h:169:13: error: ‘bool operator()(Events::ModuleEventListener*, Events::ModuleEventListener*)’ must be a non-static member function
  169 | inline bool Events::ModuleEventProvider::Comp::operator()(Events::ModuleEventListener* lhs, Events::ModuleEventListener* rhs) const
      |             ^~~~~~
/usr/include/inspircd/event.h:174:42: error: ‘Events::ModuleEventProvider::ElementComp’ has not been declared
  174 | inline bool Events::ModuleEventProvider::ElementComp::operator()(Events::ModuleEventListener* lhs, Events::ModuleEventListener* rhs) const
      |                                          ^~~~~~~~~~~
/usr/include/inspircd/event.h:174:134: error: non-member function ‘bool operator()(Events::ModuleEventListener*, Events::ModuleEventListener*)’ cannot have cv-qualifier
  174 | inline bool Events::ModuleEventProvider::ElementComp::operator()(Events::ModuleEventListener* lhs, Events::ModuleEventListener* rhs) const
      |                                                                                                                                      ^~~~~
/usr/include/inspircd/event.h:174:13: error: ‘bool operator()(Events::ModuleEventListener*, Events::ModuleEventListener*)’ must be a non-static member function
  174 | inline bool Events::ModuleEventProvider::ElementComp::operator()(Events::ModuleEventListener* lhs, Events::ModuleEventListener* rhs) const
      |             ^~~~~~
/usr/include/inspircd/clientprotocol.h:45:25: error: ‘ParamList’ in namespace ‘ClientProtocol’ does not name a type
   45 |         ClientProtocol::ParamList params;
      |                         ^~~~~~~~~
/usr/include/inspircd/clientprotocol.h:49:25: error: ‘TagMap’ in namespace ‘ClientProtocol’ does not name a type
   49 |         ClientProtocol::TagMap tags;
      |                         ^~~~~~
/usr/include/inspircd/clientprotocol.h:56:14: error: ‘bitset’ in namespace ‘std’ does not name a template type
   56 |         std::bitset<64> selection;
      |              ^~~~~~
/usr/include/inspircd/clientprotocol.h:24:1: note: ‘std::bitset’ is defined in header ‘<bitset>’; did you forget to ‘#include <bitset>’?
   23 | #include "event.h"
  +++ |+#include <bitset>
   24 | 
/usr/include/inspircd/clientprotocol.h:65:31: error: ‘TagMap’ does not name a type
   65 |         bool IsSelected(const TagMap& tags, TagMap::const_iterator it) const
      |                               ^~~~~~
/usr/include/inspircd/clientprotocol.h:65:45: error: ‘TagMap’ has not been declared
   65 |         bool IsSelected(const TagMap& tags, TagMap::const_iterator it) const
      |                                             ^~~~~~
/usr/include/inspircd/clientprotocol.h:65:68: error: expected ‘,’ or ‘...’ before ‘it’
   65 |         bool IsSelected(const TagMap& tags, TagMap::const_iterator it) const
      |                                                                    ^~
/usr/include/inspircd/clientprotocol.h:76:27: error: ‘TagMap’ does not name a type
   76 |         void Select(const TagMap& tags, TagMap::const_iterator it)
      |                           ^~~~~~
/usr/include/inspircd/clientprotocol.h:76:41: error: ‘TagMap’ has not been declared
   76 |         void Select(const TagMap& tags, TagMap::const_iterator it)
      |                                         ^~~~~~
/usr/include/inspircd/clientprotocol.h:76:64: error: expected ‘,’ or ‘...’ before ‘it’
   76 |         void Select(const TagMap& tags, TagMap::const_iterator it)
      |                                                                ^~
/usr/include/inspircd/clientprotocol.h: In member function ‘bool ClientProtocol::TagSelection::IsSelected(const int&, int) const’:
/usr/include/inspircd/clientprotocol.h:67:57: error: request for member ‘begin’ in ‘tags’, which is of non-class type ‘const int’
   67 |                 const size_t index = std::distance(tags.begin(), it);
      |                                                         ^~~~~
/usr/include/inspircd/clientprotocol.h:67:66: error: ‘it’ was not declared in this scope; did you mean ‘int’?
   67 |                 const size_t index = std::distance(tags.begin(), it);
      |                                                                  ^~
      |                                                                  int
/usr/include/inspircd/clientprotocol.h:68:34: error: ‘selection’ was not declared in this scope; did you mean ‘select’?
   68 |                 return ((index < selection.size()) && (selection[index]));
      |                                  ^~~~~~~~~
      |                                  select
/usr/include/inspircd/clientprotocol.h: In member function ‘void ClientProtocol::TagSelection::Select(const int&, int)’:
/usr/include/inspircd/clientprotocol.h:78:57: error: request for member ‘begin’ in ‘tags’, which is of non-class type ‘const int’
   78 |                 const size_t index = std::distance(tags.begin(), it);
      |                                                         ^~~~~
/usr/include/inspircd/clientprotocol.h:78:66: error: ‘it’ was not declared in this scope; did you mean ‘int’?
   78 |                 const size_t index = std::distance(tags.begin(), it);
      |                                                                  ^~
      |                                                                  int
/usr/include/inspircd/clientprotocol.h:79:29: error: ‘selection’ was not declared in this scope; did you mean ‘select’?
   79 |                 if (index < selection.size())
      |                             ^~~~~~~~~
      |                             select
/usr/include/inspircd/clientprotocol.h: In member function ‘bool ClientProtocol::TagSelection::operator==(const ClientProtocol::TagSelection&) const’:
/usr/include/inspircd/clientprotocol.h:89:31: error: ‘const class ClientProtocol::TagSelection’ has no member named ‘selection’; did you mean ‘Select’?
   89 |                 return (this->selection == other.selection);
      |                               ^~~~~~~~~
      |                               Select
/usr/include/inspircd/clientprotocol.h:89:50: error: ‘const class ClientProtocol::TagSelection’ has no member named ‘selection’; did you mean ‘Select’?
   89 |                 return (this->selection == other.selection);
      |                                                  ^~~~~~~~~
      |                                                  Select
/usr/include/inspircd/clientprotocol.h: At global scope:
/usr/include/inspircd/clientprotocol.h:95:9: error: ‘User’ does not name a type
   95 |         User* sourceuser;
      |         ^~~~
/usr/include/inspircd/clientprotocol.h:104:27: error: expected ‘)’ before ‘*’ token
  104 |         MessageSource(User* Sourceuser = NULL)
      |                      ~    ^
      |                           )
/usr/include/inspircd/clientprotocol.h:116:53: error: ‘User’ has not been declared
  116 |         MessageSource(const std::string& Sourcestr, User* Sourceuser = NULL)
      |                                                     ^~~~
/usr/include/inspircd/clientprotocol.h:138:9: error: ‘User’ does not name a type
  138 |         User* GetSourceUser() const { return sourceuser; }
      |         ^~~~
/usr/include/inspircd/clientprotocol.h:144:28: error: ‘User’ has not been declared
  144 |         void SetSourceUser(User* Sourceuser)
      |                            ^~~~
/usr/include/inspircd/clientprotocol.h:156:54: error: ‘User’ has not been declared
  156 |         void SetSource(const std::string& Sourcestr, User* Sourceuser = NULL)
      |                                                      ^~~~
/usr/include/inspircd/clientprotocol.h: In member function ‘const std::string* ClientProtocol::MessageSource::GetSource() const’:
/usr/include/inspircd/clientprotocol.h:129:21: error: ‘sourceuser’ was not declared in this scope; did you mean ‘sourcestr’?
  129 |                 if (sourceuser)
      |                     ^~~~~~~~~~
      |                     sourcestr
/usr/include/inspircd/clientprotocol.h: In member function ‘void ClientProtocol::MessageSource::SetSourceUser(int*)’:
/usr/include/inspircd/clientprotocol.h:146:17: error: ‘sourceuser’ was not declared in this scope; did you mean ‘Sourceuser’?
  146 |                 sourceuser = Sourceuser;
      |                 ^~~~~~~~~~
      |                 Sourceuser
/usr/include/inspircd/clientprotocol.h: In member function ‘void ClientProtocol::MessageSource::SetSource(const std::string&, int*)’:
/usr/include/inspircd/clientprotocol.h:159:17: error: ‘sourceuser’ was not declared in this scope; did you mean ‘Sourceuser’?
  159 |                 sourceuser = Sourceuser;
      |                 ^~~~~~~~~~
      |                 Sourceuser
/usr/include/inspircd/clientprotocol.h: In member function ‘void ClientProtocol::MessageSource::SetSource(const ClientProtocol::MessageSource&)’:
/usr/include/inspircd/clientprotocol.h:168:17: error: ‘sourceuser’ was not declared in this scope; did you mean ‘sourcestr’?
  168 |                 sourceuser = other.sourceuser;
      |                 ^~~~~~~~~~
      |                 sourcestr
/usr/include/inspircd/clientprotocol.h:168:36: error: ‘const class ClientProtocol::MessageSource’ has no member named ‘sourceuser’; did you mean ‘sourcestr’?
  168 |                 sourceuser = other.sourceuser;
      |                                    ^~~~~~~~~~
      |                                    sourcestr
/usr/include/inspircd/clientprotocol.h: At global scope:
/usr/include/inspircd/clientprotocol.h:181:42: error: qualified name does not name a class before ‘:’ token
  181 | class CoreExport ClientProtocol::Message : public ClientProtocol::MessageSource
      |                                          ^
/usr/include/inspircd/clientprotocol.h:181:42: error: expected ‘{’ before ‘:’ token
/usr/include/inspircd/clientprotocol.h:181:42: error: expected unqualified-id before ‘:’ token
/usr/include/inspircd/clientprotocol.h:470:1: error: qualified name does not name a class before ‘{’ token
  470 | {
      | ^
/usr/include/inspircd/clientprotocol.h:527:9: error: qualified name does not name a class before ‘:’ token
  527 |         : public Events::ModuleEventProvider
      |         ^
/usr/include/inspircd/clientprotocol.h:527:9: error: expected ‘{’ before ‘:’ token
/usr/include/inspircd/clientprotocol.h:527:9: error: expected unqualified-id before ‘:’ token
/usr/include/inspircd/clientprotocol.h:541:53: error: qualified name does not name a class before ‘:’ token
  541 | class CoreExport ClientProtocol::MessageTagProvider : public Events::ModuleEventListener
      |                                                     ^
/usr/include/inspircd/clientprotocol.h:541:53: error: expected ‘{’ before ‘:’ token
/usr/include/inspircd/clientprotocol.h:541:53: error: expected unqualified-id before ‘:’ token
/usr/include/inspircd/clientprotocol.h:588:61: error: invalid use of incomplete type ‘class Events::ModuleEventListener’
  588 | class CoreExport ClientProtocol::EventHook : public Events::ModuleEventListener
      |                                                             ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:123:15: note: forward declaration of ‘class Events::ModuleEventListener’
  123 | class Events::ModuleEventListener : private dynamic_reference_base::CaptureHook
      |               ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/clientprotocol.h:611:56: error: ‘Event’ in namespace ‘ClientProtocol’ does not name a type
  611 |         virtual void OnEventInit(const ClientProtocol::Event& ev)
      |                                                        ^~~~~
/usr/include/inspircd/clientprotocol.h:625:17: error: ‘ModResult’ does not name a type; did you mean ‘CmdResult’?
  625 |         virtual ModResult OnPreEventSend(LocalUser* user, const ClientProtocol::Event& ev, ClientProtocol::MessageList& messagelist) = 0;
      |                 ^~~~~~~~~
      |                 CmdResult
/usr/include/inspircd/clientprotocol.h:602:110: error: incomplete type ‘Events::ModuleEventListener’ used in nested name specifier
  602 |         EventHook(Module* mod, const std::string& name, unsigned int priority = Events::ModuleEventListener::DefaultPriority)
      |                                                                                                              ^~~~~~~~~~~~~~~
/usr/include/inspircd/clientprotocol.h: In constructor ‘ClientProtocol::EventHook::EventHook(Module*, const std::string&, unsigned int)’:
/usr/include/inspircd/clientprotocol.h:603:27: error: type ‘Events::ModuleEventListener’ is not a direct base of ‘ClientProtocol::EventHook’
  603 |                 : Events::ModuleEventListener(mod, GetEventName(name), priority)
      |                           ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/clientprotocol.h: At global scope:
/usr/include/inspircd/clientprotocol.h:632:48: error: qualified name does not name a class before ‘:’ token
  632 | class CoreExport ClientProtocol::EventProvider : public Events::ModuleEventProvider
      |                                                ^
/usr/include/inspircd/clientprotocol.h:632:48: error: expected ‘{’ before ‘:’ token
/usr/include/inspircd/clientprotocol.h:632:48: error: expected unqualified-id before ‘:’ token
/usr/include/inspircd/clientprotocol.h:651:9: error: ‘EventProvider’ does not name a type; did you mean ‘ServiceProvider’?
  651 |         EventProvider numeric;
      |         ^~~~~~~~~~~~~
      |         ServiceProvider
/usr/include/inspircd/clientprotocol.h:652:9: error: ‘EventProvider’ does not name a type; did you mean ‘ServiceProvider’?
  652 |         EventProvider join;
      |         ^~~~~~~~~~~~~
      |         ServiceProvider
/usr/include/inspircd/clientprotocol.h:653:9: error: ‘EventProvider’ does not name a type; did you mean ‘ServiceProvider’?
  653 |         EventProvider part;
      |         ^~~~~~~~~~~~~
      |         ServiceProvider
/usr/include/inspircd/clientprotocol.h:654:9: error: ‘EventProvider’ does not name a type; did you mean ‘ServiceProvider’?
  654 |         EventProvider kick;
      |         ^~~~~~~~~~~~~
      |         ServiceProvider
/usr/include/inspircd/clientprotocol.h:655:9: error: ‘EventProvider’ does not name a type; did you mean ‘ServiceProvider’?
  655 |         EventProvider quit;
      |         ^~~~~~~~~~~~~
      |         ServiceProvider
/usr/include/inspircd/clientprotocol.h:656:9: error: ‘EventProvider’ does not name a type; did you mean ‘ServiceProvider’?
  656 |         EventProvider nick;
      |         ^~~~~~~~~~~~~
      |         ServiceProvider
/usr/include/inspircd/clientprotocol.h:657:9: error: ‘EventProvider’ does not name a type; did you mean ‘ServiceProvider’?
  657 |         EventProvider mode;
      |         ^~~~~~~~~~~~~
      |         ServiceProvider
/usr/include/inspircd/clientprotocol.h:658:9: error: ‘EventProvider’ does not name a type; did you mean ‘ServiceProvider’?
  658 |         EventProvider topic;
      |         ^~~~~~~~~~~~~
      |         ServiceProvider
/usr/include/inspircd/clientprotocol.h:659:9: error: ‘EventProvider’ does not name a type; did you mean ‘ServiceProvider’?
  659 |         EventProvider privmsg;
      |         ^~~~~~~~~~~~~
      |         ServiceProvider
/usr/include/inspircd/clientprotocol.h:660:9: error: ‘EventProvider’ does not name a type; did you mean ‘ServiceProvider’?
  660 |         EventProvider invite;
      |         ^~~~~~~~~~~~~
      |         ServiceProvider
/usr/include/inspircd/clientprotocol.h:661:9: error: ‘EventProvider’ does not name a type; did you mean ‘ServiceProvider’?
  661 |         EventProvider ping;
      |         ^~~~~~~~~~~~~
      |         ServiceProvider
/usr/include/inspircd/clientprotocol.h:662:9: error: ‘EventProvider’ does not name a type; did you mean ‘ServiceProvider’?
  662 |         EventProvider pong;
      |         ^~~~~~~~~~~~~
      |         ServiceProvider
/usr/include/inspircd/clientprotocol.h:663:9: error: ‘EventProvider’ does not name a type; did you mean ‘ServiceProvider’?
  663 |         EventProvider error;
      |         ^~~~~~~~~~~~~
      |         ServiceProvider
/usr/include/inspircd/clientprotocol.h: In constructor ‘ClientProtocol::RFCEvents::RFCEvents()’:
/usr/include/inspircd/clientprotocol.h:666:19: error: class ‘ClientProtocol::RFCEvents’ does not have any field named ‘numeric’
  666 |                 : numeric(NULL, "NUMERIC")
      |                   ^~~~~~~
/usr/include/inspircd/clientprotocol.h:667:19: error: class ‘ClientProtocol::RFCEvents’ does not have any field named ‘join’
  667 |                 , join(NULL, "JOIN")
      |                   ^~~~
/usr/include/inspircd/clientprotocol.h:668:19: error: class ‘ClientProtocol::RFCEvents’ does not have any field named ‘part’
  668 |                 , part(NULL, "PART")
      |                   ^~~~
/usr/include/inspircd/clientprotocol.h:669:19: error: class ‘ClientProtocol::RFCEvents’ does not have any field named ‘kick’
  669 |                 , kick(NULL, "KICK")
      |                   ^~~~
/usr/include/inspircd/clientprotocol.h:670:19: error: class ‘ClientProtocol::RFCEvents’ does not have any field named ‘quit’
  670 |                 , quit(NULL, "QUIT")
      |                   ^~~~
/usr/include/inspircd/clientprotocol.h:671:19: error: class ‘ClientProtocol::RFCEvents’ does not have any field named ‘nick’
  671 |                 , nick(NULL, "NICK")
      |                   ^~~~
/usr/include/inspircd/clientprotocol.h:672:19: error: class ‘ClientProtocol::RFCEvents’ does not have any field named ‘mode’
  672 |                 , mode(NULL, "MODE")
      |                   ^~~~
/usr/include/inspircd/clientprotocol.h:673:19: error: class ‘ClientProtocol::RFCEvents’ does not have any field named ‘topic’
  673 |                 , topic(NULL, "TOPIC")
      |                   ^~~~~
/usr/include/inspircd/clientprotocol.h:674:19: error: class ‘ClientProtocol::RFCEvents’ does not have any field named ‘privmsg’
  674 |                 , privmsg(NULL, "PRIVMSG")
      |                   ^~~~~~~
/usr/include/inspircd/clientprotocol.h:675:19: error: class ‘ClientProtocol::RFCEvents’ does not have any field named ‘invite’
  675 |                 , invite(NULL, "INVITE")
      |                   ^~~~~~
/usr/include/inspircd/clientprotocol.h:676:19: error: class ‘ClientProtocol::RFCEvents’ does not have any field named ‘ping’
  676 |                 , ping(NULL, "PING")
      |                   ^~~~
/usr/include/inspircd/clientprotocol.h:677:19: error: class ‘ClientProtocol::RFCEvents’ does not have any field named ‘pong’
  677 |                 , pong(NULL, "PONG")
      |                   ^~~~
/usr/include/inspircd/clientprotocol.h:678:19: error: class ‘ClientProtocol::RFCEvents’ does not have any field named ‘error’
  678 |                 , error(NULL, "ERROR")
      |                   ^~~~~
/usr/include/inspircd/clientprotocol.h: At global scope:
/usr/include/inspircd/clientprotocol.h:686:45: error: qualified name does not name a class before ‘:’ token
  686 | class CoreExport ClientProtocol::Serializer : public DataProvider
      |                                             ^
/usr/include/inspircd/clientprotocol.h:686:45: error: expected ‘{’ before ‘:’ token
/usr/include/inspircd/clientprotocol.h:686:45: error: expected unqualified-id before ‘:’ token
/usr/include/inspircd/clientprotocol.h:740:24: error: ‘MessageTagData’ in namespace ‘ClientProtocol’ does not name a type
  740 | inline ClientProtocol::MessageTagData::MessageTagData(MessageTagProvider* prov, const std::string& val, void* data)
      |                        ^~~~~~~~~~~~~~
In file included from /tmp/XDrPsg2cTs/dump1.h:18:
/usr/include/inspircd/clientprotocolevent.h:32:73: error: ‘ClientProtocol::Messages’ has not been declared
   32 | struct CoreExport ClientProtocol::Events::Join : public ClientProtocol::Messages::Join, public ClientProtocol::Event
      |                                                                         ^~~~~~~~
/usr/include/inspircd/clientprotocolevent.h:32:83: error: expected ‘{’ before ‘Join’
   32 | struct CoreExport ClientProtocol::Events::Join : public ClientProtocol::Messages::Join, public ClientProtocol::Event
      |                                                                                   ^~~~
/usr/include/inspircd/clientprotocolevent.h:32:89: error: expected unqualified-id before ‘public’
   32 | struct CoreExport ClientProtocol::Events::Join : public ClientProtocol::Messages::Join, public ClientProtocol::Event
      |                                                                                         ^~~~~~
/usr/include/inspircd/clientprotocolevent.h:53:1: error: expected class-name before ‘{’ token
   53 | {
      | ^
/usr/include/inspircd/clientprotocolevent.h:54:14: error: ‘list’ in namespace ‘std’ does not name a template type
   54 |         std::list<ClientProtocol::Messages::Mode> modelist;
      |              ^~~~
/usr/include/inspircd/clientprotocolevent.h:1:1: note: ‘std::list’ is defined in header ‘<list>’; did you forget to ‘#include <list>’?
  +++ |+#include <list>
    1 | /*
/usr/include/inspircd/clientprotocolevent.h:55:21: error: ‘Message’ was not declared in this scope
   55 |         std::vector<Message*> modemsgplist;
      |                     ^~~~~~~
/usr/include/inspircd/clientprotocolevent.h:55:29: error: template argument 1 is invalid
   55 |         std::vector<Message*> modemsgplist;
      |                             ^
/usr/include/inspircd/clientprotocolevent.h:55:29: error: template argument 2 is invalid
/usr/include/inspircd/clientprotocolevent.h:59:35: error: ‘User’ has not been declared
   59 |         static void BuildMessages(User* source, Channel* Chantarget, User* Usertarget, const Modes::ChangeList& changelist, std::list<ClientProtocol::Messages::Mode>& modelist, std::vector<Message*>& modemsgplist)
      |                                   ^~~~
/usr/include/inspircd/clientprotocolevent.h:59:70: error: ‘User’ has not been declared
   59 |         static void BuildMessages(User* source, Channel* Chantarget, User* Usertarget, const Modes::ChangeList& changelist, std::list<ClientProtocol::Messages::Mode>& modelist, std::vector<Message*>& modemsgplist)
      |                                                                      ^~~~
/usr/include/inspircd/clientprotocolevent.h:59:125: error: ‘std::list’ has not been declared
   59 |         static void BuildMessages(User* source, Channel* Chantarget, User* Usertarget, const Modes::ChangeList& changelist, std::list<ClientProtocol::Messages::Mode>& modelist, std::vector<Message*>& modemsgplist)
      |                                                                                                                             ^~~
/usr/include/inspircd/clientprotocolevent.h:59:134: error: expected ‘,’ or ‘...’ before ‘<’ token
   59 |         static void BuildMessages(User* source, Channel* Chantarget, User* Usertarget, const Modes::ChangeList& changelist, std::list<ClientProtocol::Messages::Mode>& modelist, std::vector<Message*>& modemsgplist)
      |                                                                                                                                      ^
/usr/include/inspircd/clientprotocolevent.h:69:18: error: expected ‘)’ before ‘*’ token
   69 |         Mode(User* source, Channel* Chantarget, User* Usertarget, const Modes::ChangeList& changelist)
      |             ~    ^
      |                  )
/usr/include/inspircd/clientprotocolevent.h:78:20: error: ‘list’ in namespace ‘std’ does not name a template type
   78 |         const std::list<ClientProtocol::Messages::Mode>& GetMessages() const { return modelist; }
      |                    ^~~~
/usr/include/inspircd/clientprotocolevent.h:78:15: note: ‘std::list’ is defined in header ‘<list>’; did you forget to ‘#include <list>’?
   78 |         const std::list<ClientProtocol::Messages::Mode>& GetMessages() const { return modelist; }
      |               ^~~
/usr/include/inspircd/clientprotocolevent.h: In static member function ‘static void ClientProtocol::Events::Mode::BuildMessages(int*, Channel*, int*, const Modes::ChangeList&, int)’:
/usr/include/inspircd/clientprotocolevent.h:62:133: error: ‘modelist’ was not declared in this scope; did you mean ‘mode_t’?
   62 |                 for (Modes::ChangeList::List::const_iterator i = changelist.getlist().begin(); i != changelist.getlist().end(); i = modelist.back().GetEndIterator())
      |                                                                                                                                     ^~~~~~~~
      |                                                                                                                                     mode_t
/usr/include/inspircd/clientprotocolevent.h:64:60: error: ‘ClientProtocol::Messages’ has not been declared
   64 |                         modelist.push_back(ClientProtocol::Messages::Mode(source, Chantarget, Usertarget, changelist, i));
      |                                                            ^~~~~~~~
/usr/include/inspircd/clientprotocolevent.h:65:25: error: invalid use of member ‘ClientProtocol::Events::Mode::modemsgplist’ in static member function
   65 |                         modemsgplist.push_back(&modelist.back());
      |                         ^~~~~~~~~~~~
/usr/include/inspircd/clientprotocolevent.h:55:31: note: declared here
   55 |         std::vector<Message*> modemsgplist;
      |                               ^~~~~~~~~~~~
In file included from /tmp/XDrPsg2cTs/dump1.h:19:
/usr/include/inspircd/clientprotocolmsg.h: At global scope:
/usr/include/inspircd/clientprotocolmsg.h:49:1: error: expected class-name before ‘{’ token
   49 | {
      | ^
/usr/include/inspircd/clientprotocolmsg.h:58:38: error: ‘Numeric’ in namespace ‘::’ does not name a type
   58 |         void InitFromNumeric(const ::Numeric::Numeric& numeric)
      |                                      ^~~~~~~
/usr/include/inspircd/clientprotocolmsg.h:58:54: error: expected unqualified-id before ‘&’ token
   58 |         void InitFromNumeric(const ::Numeric::Numeric& numeric)
      |                                                      ^
/usr/include/inspircd/clientprotocolmsg.h:58:54: error: expected ‘)’ before ‘&’ token
   58 |         void InitFromNumeric(const ::Numeric::Numeric& numeric)
      |                             ~                        ^
      |                                                      )
/usr/include/inspircd/clientprotocolmsg.h:58:54: error: expected ‘;’ at end of member declaration
   58 |         void InitFromNumeric(const ::Numeric::Numeric& numeric)
      |                                                      ^
      |                                                       ;
/usr/include/inspircd/clientprotocolmsg.h:58:56: error: ‘numeric’ does not name a type; did you mean ‘Numeric’?
   58 |         void InitFromNumeric(const ::Numeric::Numeric& numeric)
      |                                                        ^~~~~~~
      |                                                        Numeric
/usr/include/inspircd/clientprotocolmsg.h:71:25: error: ‘Numeric’ in namespace ‘::’ does not name a type
   71 |         Numeric(const ::Numeric::Numeric& num, User* user)
      |                         ^~~~~~~
/usr/include/inspircd/clientprotocolmsg.h:71:41: error: expected unqualified-id before ‘&’ token
   71 |         Numeric(const ::Numeric::Numeric& num, User* user)
      |                                         ^
/usr/include/inspircd/clientprotocolmsg.h:71:41: error: expected ‘)’ before ‘&’ token
   71 |         Numeric(const ::Numeric::Numeric& num, User* user)
      |                ~                        ^
      |                                         )
/usr/include/inspircd/clientprotocolmsg.h:71:41: error: constructors may not be ref-qualified
/usr/include/inspircd/clientprotocolmsg.h:71:41: error: expected ‘;’ at end of member declaration
   71 |         Numeric(const ::Numeric::Numeric& num, User* user)
      |                                         ^
      |                                          ;
/usr/include/inspircd/clientprotocolmsg.h:71:43: error: ‘num’ does not name a type; did you mean ‘enum’?
   71 |         Numeric(const ::Numeric::Numeric& num, User* user)
      |                                           ^~~
      |                                           enum
/usr/include/inspircd/clientprotocolmsg.h:85:25: error: ‘Numeric’ in namespace ‘::’ does not name a type
   85 |         Numeric(const ::Numeric::Numeric& num, const std::string& target)
      |                         ^~~~~~~
/usr/include/inspircd/clientprotocolmsg.h:85:41: error: expected unqualified-id before ‘&’ token
   85 |         Numeric(const ::Numeric::Numeric& num, const std::string& target)
      |                                         ^
/usr/include/inspircd/clientprotocolmsg.h:85:41: error: expected ‘)’ before ‘&’ token
   85 |         Numeric(const ::Numeric::Numeric& num, const std::string& target)
      |                ~                        ^
      |                                         )
/usr/include/inspircd/clientprotocolmsg.h:85:41: error: constructors may not be ref-qualified
/usr/include/inspircd/clientprotocolmsg.h:85:41: error: expected ‘;’ at end of member declaration
   85 |         Numeric(const ::Numeric::Numeric& num, const std::string& target)
      |                                         ^
      |                                          ;
/usr/include/inspircd/clientprotocolmsg.h:85:9: error: ‘ClientProtocol::Messages::Numeric::Numeric(...)’ cannot be overloaded with ‘ClientProtocol::Messages::Numeric::Numeric(...)’
   85 |         Numeric(const ::Numeric::Numeric& num, const std::string& target)
      |         ^~~~~~~
/usr/include/inspircd/clientprotocolmsg.h:71:9: note: previous declaration ‘ClientProtocol::Messages::Numeric::Numeric(...)’
   71 |         Numeric(const ::Numeric::Numeric& num, User* user)
      |         ^~~~~~~
/usr/include/inspircd/clientprotocolmsg.h:85:43: error: ‘num’ does not name a type; did you mean ‘enum’?
   85 |         Numeric(const ::Numeric::Numeric& num, const std::string& target)
      |                                           ^~~
      |                                           enum
/usr/include/inspircd/clientprotocolmsg.h: In member function ‘void ClientProtocol::Messages::Numeric::InitCommand(unsigned int)’:
/usr/include/inspircd/clientprotocolmsg.h:55:17: error: ‘SetCommand’ was not declared in this scope; did you mean ‘InitCommand’?
   55 |                 SetCommand(numericstr);
      |                 ^~~~~~~~~~
      |                 InitCommand
/usr/include/inspircd/clientprotocolmsg.h: In constructor ‘ClientProtocol::Messages::Numeric::Numeric(unsigned int)’:
/usr/include/inspircd/clientprotocolmsg.h:96:42: error: expected class-name before ‘(’ token
   96 |                 : ClientProtocol::Message(NULL, ServerInstance->Config->GetServerName())
      |                                          ^
/usr/include/inspircd/clientprotocolmsg.h:96:42: error: expected ‘{’ before ‘(’ token
/usr/include/inspircd/clientprotocolmsg.h: At global scope:
/usr/include/inspircd/clientprotocolmsg.h:107:1: error: expected class-name before ‘{’ token
  107 | {
      | ^
/usr/include/inspircd/clientprotocolmsg.h: In constructor ‘ClientProtocol::Messages::Join::Join()’:
/usr/include/inspircd/clientprotocolmsg.h:114:42: error: expected class-name before ‘(’ token
  114 |                 : ClientProtocol::Message("JOIN")
      |                                          ^
/usr/include/inspircd/clientprotocolmsg.h:114:42: error: expected ‘{’ before ‘(’ token
/usr/include/inspircd/clientprotocolmsg.h: In constructor ‘ClientProtocol::Messages::Join::Join(Membership*)’:
/usr/include/inspircd/clientprotocolmsg.h:123:42: error: expected class-name before ‘(’ token
  123 |                 : ClientProtocol::Message("JOIN", Memb->user)
      |                                          ^
/usr/include/inspircd/clientprotocolmsg.h:123:42: error: expected ‘{’ before ‘(’ token
/usr/include/inspircd/clientprotocolmsg.h: In constructor ‘ClientProtocol::Messages::Join::Join(Membership*, const std::string&)’:
/usr/include/inspircd/clientprotocolmsg.h:133:42: error: expected class-name before ‘(’ token
  133 |                 : ClientProtocol::Message("JOIN", sourcestrref, Memb->user)
      |                                          ^
/usr/include/inspircd/clientprotocolmsg.h:133:42: error: expected ‘{’ before ‘(’ token
/usr/include/inspircd/clientprotocolmsg.h: In member function ‘void ClientProtocol::Messages::Join::SetParams(Membership*)’:
/usr/include/inspircd/clientprotocolmsg.h:144:34: error: invalid use of incomplete type ‘class Membership’
  144 |                 PushParamRef(memb->chan->name);
      |                                  ^~
/usr/include/inspircd/membership.h:34:18: note: forward declaration of ‘class Membership’
   34 | class CoreExport Membership : public Extensible, public insp::intrusive_list_node<Membership>
      |                  ^~~~~~~~~~
/usr/include/inspircd/clientprotocolmsg.h:144:17: error: ‘PushParamRef’ was not declared in this scope
  144 |                 PushParamRef(memb->chan->name);
      |                 ^~~~~~~~~~~~
/usr/include/inspircd/clientprotocolmsg.h: At global scope:
/usr/include/inspircd/clientprotocolmsg.h:157:1: error: expected class-name before ‘{’ token
  157 | {
      | ^
/usr/include/inspircd/clientprotocolmsg.h: In constructor ‘ClientProtocol::Messages::Part::Part(Membership*, const std::string&)’:
/usr/include/inspircd/clientprotocolmsg.h:163:42: error: expected class-name before ‘(’ token
  163 |                 : ClientProtocol::Message("PART", memb->user)
      |                                          ^
/usr/include/inspircd/clientprotocolmsg.h:163:42: error: expected ‘{’ before ‘(’ token
/usr/include/inspircd/clientprotocolmsg.h: At global scope:
/usr/include/inspircd/clientprotocolmsg.h:175:1: error: expected class-name before ‘{’ token
  175 | {
      | ^
/usr/include/inspircd/clientprotocolmsg.h:181:18: error: expected ‘)’ before ‘*’ token
  181 |         Kick(User* source, Membership* memb, const std::string& reason)
      |             ~    ^
      |                  )
/usr/include/inspircd/clientprotocolmsg.h:194:1: error: expected class-name before ‘{’ token
  194 | {
      | ^
/usr/include/inspircd/clientprotocolmsg.h:199:18: error: expected ‘)’ before ‘*’ token
  199 |         Quit(User* source, const std::string& reason)
      |             ~    ^
      |                  )
/usr/include/inspircd/clientprotocolmsg.h:211:1: error: expected class-name before ‘{’ token
  211 | {
      | ^
/usr/include/inspircd/clientprotocolmsg.h:216:18: error: expected ‘)’ before ‘*’ token
  216 |         Nick(User* source, const std::string& newnick)
      |             ~    ^
      |                  )
/usr/include/inspircd/clientprotocolmsg.h:227:1: error: expected class-name before ‘{’ token
  227 | {
      | ^
/usr/include/inspircd/clientprotocolmsg.h:229:9: error: ‘User’ does not name a type
  229 |         User* usertarget;
      |         ^~~~
/usr/include/inspircd/clientprotocolmsg.h:306:18: error: expected ‘)’ before ‘*’ token
  306 |         Mode(User* source, Channel* Chantarget, User* Usertarget, const Modes::ChangeList& changelist, Modes::ChangeList::List::const_iterator beginiter)
      |             ~    ^
      |                  )
/usr/include/inspircd/clientprotocolmsg.h:323:18: error: expected ‘)’ before ‘*’ token
  323 |         Mode(User* source, Channel* Chantarget, User* Usertarget, const Modes::ChangeList& changelist)
      |             ~    ^
      |                  )
/usr/include/inspircd/clientprotocolmsg.h:349:45: error: ‘User’ has not been declared
  349 |         void SetParams(Channel* Chantarget, User* Usertarget, const Modes::ChangeList& changelist)
      |                                             ^~~~
/usr/include/inspircd/clientprotocolmsg.h:382:9: error: ‘User’ does not name a type
  382 |         User* GetUserTarget() const { return usertarget; }
      |         ^~~~
/usr/include/inspircd/clientprotocolmsg.h: In static member function ‘static std::string ClientProtocol::Messages::Mode::ToModeLetters(const Modes::ChangeList::List&, std::__cxx11::basic_string<char>::size_type, std::vector<Modes::Change>::const_iterator, std::vector<Modes::Change>::const_iterator&)’:
/usr/include/inspircd/clientprotocolmsg.h:268:44: error: ‘const struct Modes::Change’ has no member named ‘mh’
  268 |                         ret.push_back(item.mh->GetModeChar());
      |                                            ^~
/usr/include/inspircd/clientprotocolmsg.h: In member function ‘void ClientProtocol::Messages::Mode::PushModeParams()’:
/usr/include/inspircd/clientprotocolmsg.h:283:33: error: ‘PushParamRef’ was not declared in this scope
  283 |                                 PushParamRef(item.param);
      |                                 ^~~~~~~~~~~~
/usr/include/inspircd/clientprotocolmsg.h: In static member function ‘static std::string ClientProtocol::Messages::Mode::ToModeLetters(const Modes::ChangeList&)’:
/usr/include/inspircd/clientprotocolmsg.h:296:60: error: ‘UINT_MAX’ was not declared in this scope
  296 |                 return ToModeLetters(changelist.getlist(), UINT_MAX, changelist.getlist().begin(), dummy);
      |                                                            ^~~~~~~~
/usr/include/inspircd/clientprotocolmsg.h:1:1: note: ‘UINT_MAX’ is defined in header ‘<climits>’; did you forget to ‘#include <climits>’?
  +++ |+#include <climits>
    1 | /*
/usr/include/inspircd/clientprotocolmsg.h: In constructor ‘ClientProtocol::Messages::Mode::Mode()’:
/usr/include/inspircd/clientprotocolmsg.h:338:42: error: expected class-name before ‘(’ token
  338 |                 : ClientProtocol::Message("MODE", ServerInstance->FakeClient)
      |                                          ^
/usr/include/inspircd/clientprotocolmsg.h:338:42: error: expected ‘{’ before ‘(’ token
/usr/include/inspircd/clientprotocolmsg.h: In member function ‘void ClientProtocol::Messages::Mode::SetParams(Channel*, int*, const Modes::ChangeList&)’:
/usr/include/inspircd/clientprotocolmsg.h:351:17: error: ‘ClearParams’ was not declared in this scope; did you mean ‘SetParams’?
  351 |                 ClearParams();
      |                 ^~~~~~~~~~~
      |                 SetParams
/usr/include/inspircd/clientprotocolmsg.h:354:17: error: ‘usertarget’ was not declared in this scope; did you mean ‘Usertarget’?
  354 |                 usertarget = Usertarget;
      |                 ^~~~~~~~~~
      |                 Usertarget
/usr/include/inspircd/clientprotocolmsg.h:357:17: error: ‘PushParamRef’ was not declared in this scope
  357 |                 PushParamRef(GetStrTarget());
      |                 ^~~~~~~~~~~~
/usr/include/inspircd/clientprotocolmsg.h:358:17: error: ‘PushParam’ was not declared in this scope; did you mean ‘PushModeParams’?
  358 |                 PushParam(ToModeLetters(changelist.getlist(), 450, beginit, lastit));
      |                 ^~~~~~~~~
      |                 PushModeParams
/usr/include/inspircd/clientprotocolmsg.h: In member function ‘const std::string& ClientProtocol::Messages::Mode::GetStrTarget() const’:
/usr/include/inspircd/clientprotocolmsg.h:377:91: error: ‘usertarget’ was not declared in this scope
  377 |         const std::string& GetStrTarget() const { return (chantarget ? chantarget->name : usertarget->nick); }
      |                                                                                           ^~~~~~~~~~
/usr/include/inspircd/clientprotocolmsg.h: At global scope:
/usr/include/inspircd/clientprotocolmsg.h:393:1: error: expected class-name before ‘{’ token
  393 | {
      | ^
/usr/include/inspircd/clientprotocolmsg.h:399:19: error: expected ‘)’ before ‘*’ token
  399 |         Topic(User* source, const Channel* chan, const std::string& newtopic)
      |              ~    ^
      |                   )
/usr/include/inspircd/clientprotocolmsg.h:410:1: error: expected class-name before ‘{’ token
  410 | {
      | ^
/usr/include/inspircd/clientprotocolmsg.h:425:35: error: ‘User’ does not name a type
  425 |         void PushTargetUser(const User* targetuser)
      |                                   ^~~~
/usr/include/inspircd/clientprotocolmsg.h:442:50: error: ‘MessageType’ has not been declared
  442 |         static const char* CommandStrFromMsgType(MessageType mt)
      |                                                  ^~~~~~~~~~~
/usr/include/inspircd/clientprotocolmsg.h:453:21: error: expected ‘)’ before ‘*’ token
  453 |         Privmsg(User* source, const std::string& target, const std::string& text, MessageType mt = MSG_PRIVMSG)
      |                ~    ^
      |                     )
/usr/include/inspircd/clientprotocolmsg.h:467:21: error: expected ‘)’ before ‘*’ token
  467 |         Privmsg(User* source, const Channel* targetchan, const std::string& text, MessageType mt = MSG_PRIVMSG, char status = 0)
      |                ~    ^
      |                     )
/usr/include/inspircd/clientprotocolmsg.h:480:21: error: expected ‘)’ before ‘*’ token
  480 |         Privmsg(User* source, const User* targetuser, const std::string& text, MessageType mt = MSG_PRIVMSG)
      |                ~    ^
      |                     )
/usr/include/inspircd/clientprotocolmsg.h:494:96: error: ‘MessageType’ has not been declared
  494 |         Privmsg(const std::string& source, const std::string& target, const std::string& text, MessageType mt = MSG_PRIVMSG, char status = 0)
      |                                                                                                ^~~~~~~~~~~
/usr/include/inspircd/clientprotocolmsg.h:517:96: error: ‘MessageType’ has not been declared
  517 |         Privmsg(const std::string& source, const Channel* targetchan, const std::string& text, MessageType mt = MSG_PRIVMSG, char status = 0)
      |                                                                                                ^~~~~~~~~~~
/usr/include/inspircd/clientprotocolmsg.h:530:50: error: ‘User’ does not name a type
  530 |         Privmsg(const std::string& source, const User* targetuser, const std::string& text, MessageType mt = MSG_PRIVMSG)
      |                                                  ^~~~
/usr/include/inspircd/clientprotocolmsg.h:530:93: error: ‘MessageType’ has not been declared
  530 |         Privmsg(const std::string& source, const User* targetuser, const std::string& text, MessageType mt = MSG_PRIVMSG)
      |                                                                                             ^~~~~~~~~~~
/usr/include/inspircd/clientprotocolmsg.h:543:25: error: ‘User’ has not been declared
  543 |         Privmsg(NoCopy, User* source, const std::string& target, const std::string& text, MessageType mt = MSG_PRIVMSG)
      |                         ^~~~
/usr/include/inspircd/clientprotocolmsg.h:543:91: error: ‘MessageType’ has not been declared
  543 |         Privmsg(NoCopy, User* source, const std::string& target, const std::string& text, MessageType mt = MSG_PRIVMSG)
      |                                                                                           ^~~~~~~~~~~
/usr/include/inspircd/clientprotocolmsg.h:557:25: error: ‘User’ has not been declared
  557 |         Privmsg(NoCopy, User* source, const Channel* targetchan, const std::string& text, MessageType mt = MSG_PRIVMSG, char status = 0)
      |                         ^~~~
/usr/include/inspircd/clientprotocolmsg.h:557:91: error: ‘MessageType’ has not been declared
  557 |         Privmsg(NoCopy, User* source, const Channel* targetchan, const std::string& text, MessageType mt = MSG_PRIVMSG, char status = 0)
      |                                                                                           ^~~~~~~~~~~
/usr/include/inspircd/clientprotocolmsg.h:570:25: error: ‘User’ has not been declared
  570 |         Privmsg(NoCopy, User* source, const User* targetuser, const std::string& text, MessageType mt = MSG_PRIVMSG)
      |                         ^~~~
/usr/include/inspircd/clientprotocolmsg.h:570:45: error: ‘User’ does not name a type
  570 |         Privmsg(NoCopy, User* source, const User* targetuser, const std::string& text, MessageType mt = MSG_PRIVMSG)
      |                                             ^~~~
/usr/include/inspircd/clientprotocolmsg.h:570:88: error: ‘MessageType’ has not been declared
  570 |         Privmsg(NoCopy, User* source, const User* targetuser, const std::string& text, MessageType mt = MSG_PRIVMSG)
      |                                                                                        ^~~~~~~~~~~
/usr/include/inspircd/clientprotocolmsg.h:583:104: error: ‘MessageType’ has not been declared
  583 |         Privmsg(NoCopy, const std::string& source, const std::string& target, const std::string& text, MessageType mt = MSG_PRIVMSG)
      |                                                                                                        ^~~~~~~~~~~
/usr/include/inspircd/clientprotocolmsg.h:597:104: error: ‘MessageType’ has not been declared
  597 |         Privmsg(NoCopy, const std::string& source, const Channel* targetchan, const std::string& text, MessageType mt = MSG_PRIVMSG, char status = 0)
      |                                                                                                        ^~~~~~~~~~~
/usr/include/inspircd/clientprotocolmsg.h:610:58: error: ‘User’ does not name a type
  610 |         Privmsg(NoCopy, const std::string& source, const User* targetuser, const std::string& text, MessageType mt = MSG_PRIVMSG)
      |                                                          ^~~~
/usr/include/inspircd/clientprotocolmsg.h:610:101: error: ‘MessageType’ has not been declared
  610 |         Privmsg(NoCopy, const std::string& source, const User* targetuser, const std::string& text, MessageType mt = MSG_PRIVMSG)
      |                                                                                                     ^~~~~~~~~~~
/usr/include/inspircd/clientprotocolmsg.h:494:113: error: ‘MSG_PRIVMSG’ was not declared in this scope
  494 |         Privmsg(const std::string& source, const std::string& target, const std::string& text, MessageType mt = MSG_PRIVMSG, char status = 0)
      |                                                                                                                 ^~~~~~~~~~~
/usr/include/inspircd/clientprotocolmsg.h:517:113: error: ‘MSG_PRIVMSG’ was not declared in this scope
  517 |         Privmsg(const std::string& source, const Channel* targetchan, const std::string& text, MessageType mt = MSG_PRIVMSG, char status = 0)
      |                                                                                                                 ^~~~~~~~~~~
/usr/include/inspircd/clientprotocolmsg.h:530:110: error: ‘MSG_PRIVMSG’ was not declared in this scope
  530 |         Privmsg(const std::string& source, const User* targetuser, const std::string& text, MessageType mt = MSG_PRIVMSG)
      |                                                                                                              ^~~~~~~~~~~
/usr/include/inspircd/clientprotocolmsg.h:543:108: error: ‘MSG_PRIVMSG’ was not declared in this scope
  543 |         Privmsg(NoCopy, User* source, const std::string& target, const std::string& text, MessageType mt = MSG_PRIVMSG)
      |                                                                                                            ^~~~~~~~~~~
/usr/include/inspircd/clientprotocolmsg.h:557:108: error: ‘MSG_PRIVMSG’ was not declared in this scope
  557 |         Privmsg(NoCopy, User* source, const Channel* targetchan, const std::string& text, MessageType mt = MSG_PRIVMSG, char status = 0)
      |                                                                                                            ^~~~~~~~~~~
/usr/include/inspircd/clientprotocolmsg.h:570:105: error: ‘MSG_PRIVMSG’ was not declared in this scope
  570 |         Privmsg(NoCopy, User* source, const User* targetuser, const std::string& text, MessageType mt = MSG_PRIVMSG)
      |                                                                                                         ^~~~~~~~~~~
/usr/include/inspircd/clientprotocolmsg.h:583:121: error: ‘MSG_PRIVMSG’ was not declared in this scope
  583 |         Privmsg(NoCopy, const std::string& source, const std::string& target, const std::string& text, MessageType mt = MSG_PRIVMSG)
      |                                                                                                                         ^~~~~~~~~~~
/usr/include/inspircd/clientprotocolmsg.h:597:121: error: ‘MSG_PRIVMSG’ was not declared in this scope
  597 |         Privmsg(NoCopy, const std::string& source, const Channel* targetchan, const std::string& text, MessageType mt = MSG_PRIVMSG, char status = 0)
      |                                                                                                                         ^~~~~~~~~~~
/usr/include/inspircd/clientprotocolmsg.h:610:118: error: ‘MSG_PRIVMSG’ was not declared in this scope
  610 |         Privmsg(NoCopy, const std::string& source, const User* targetuser, const std::string& text, MessageType mt = MSG_PRIVMSG)
      |                                                                                                                      ^~~~~~~~~~~
/usr/include/inspircd/clientprotocolmsg.h: In member function ‘void ClientProtocol::Messages::Privmsg::PushTargetChan(char, const Channel*)’:
/usr/include/inspircd/clientprotocolmsg.h:417:25: error: ‘PushParam’ was not declared in this scope
  417 |                         PushParam(rawtarget);
      |                         ^~~~~~~~~
/usr/include/inspircd/clientprotocolmsg.h:421:25: error: ‘PushParamRef’ was not declared in this scope
  421 |                         PushParamRef(targetchan->name);
      |                         ^~~~~~~~~~~~
/usr/include/inspircd/clientprotocolmsg.h: In member function ‘void ClientProtocol::Messages::Privmsg::PushTargetUser(const int*)’:
/usr/include/inspircd/clientprotocolmsg.h:427:33: error: request for member ‘registered’ in ‘* targetuser’, which is of non-class type ‘const int’
  427 |                 if (targetuser->registered & REG_NICK)
      |                                 ^~~~~~~~~~
/usr/include/inspircd/clientprotocolmsg.h:427:46: error: ‘REG_NICK’ was not declared in this scope
  427 |                 if (targetuser->registered & REG_NICK)
      |                                              ^~~~~~~~
/usr/include/inspircd/clientprotocolmsg.h:428:50: error: request for member ‘nick’ in ‘* targetuser’, which is of non-class type ‘const int’
  428 |                         PushParamRef(targetuser->nick);
      |                                                  ^~~~
/usr/include/inspircd/clientprotocolmsg.h:428:25: error: ‘PushParamRef’ was not declared in this scope
  428 |                         PushParamRef(targetuser->nick);
      |                         ^~~~~~~~~~~~
/usr/include/inspircd/clientprotocolmsg.h:430:25: error: ‘PushParam’ was not declared in this scope
  430 |                         PushParam("*");
      |                         ^~~~~~~~~
/usr/include/inspircd/clientprotocolmsg.h: In static member function ‘static const char* ClientProtocol::Messages::Privmsg::CommandStrFromMsgType(int)’:
/usr/include/inspircd/clientprotocolmsg.h:444:32: error: ‘MSG_PRIVMSG’ was not declared in this scope
  444 |                 return ((mt == MSG_PRIVMSG) ? "PRIVMSG" : "NOTICE");
      |                                ^~~~~~~~~~~
/usr/include/inspircd/clientprotocolmsg.h: In constructor ‘ClientProtocol::Messages::Privmsg::Privmsg(const std::string&, const std::string&, const std::string&, int, char)’:
/usr/include/inspircd/clientprotocolmsg.h:495:42: error: expected class-name before ‘(’ token
  495 |                 : ClientProtocol::Message(CommandStrFromMsgType(mt), source)
      |                                          ^
/usr/include/inspircd/clientprotocolmsg.h:495:42: error: expected ‘{’ before ‘(’ token
/usr/include/inspircd/clientprotocolmsg.h: In constructor ‘ClientProtocol::Messages::Privmsg::Privmsg(const std::string&, const Channel*, const std::string&, int, char)’:
/usr/include/inspircd/clientprotocolmsg.h:518:42: error: expected class-name before ‘(’ token
  518 |                 : ClientProtocol::Message(CommandStrFromMsgType(mt), source)
      |                                          ^
/usr/include/inspircd/clientprotocolmsg.h:518:42: error: expected ‘{’ before ‘(’ token
/usr/include/inspircd/clientprotocolmsg.h: In constructor ‘ClientProtocol::Messages::Privmsg::Privmsg(const std::string&, const int*, const std::string&, int)’:
/usr/include/inspircd/clientprotocolmsg.h:531:42: error: expected class-name before ‘(’ token
  531 |                 : ClientProtocol::Message(CommandStrFromMsgType(mt), source)
      |                                          ^
/usr/include/inspircd/clientprotocolmsg.h:531:42: error: expected ‘{’ before ‘(’ token
/usr/include/inspircd/clientprotocolmsg.h: In constructor ‘ClientProtocol::Messages::Privmsg::Privmsg(NoCopy, int*, const std::string&, const std::string&, int)’:
/usr/include/inspircd/clientprotocolmsg.h:544:42: error: expected class-name before ‘(’ token
  544 |                 : ClientProtocol::Message(CommandStrFromMsgType(mt), source)
      |                                          ^
/usr/include/inspircd/clientprotocolmsg.h:544:42: error: expected ‘{’ before ‘(’ token
/usr/include/inspircd/clientprotocolmsg.h: In constructor ‘ClientProtocol::Messages::Privmsg::Privmsg(NoCopy, int*, const Channel*, const std::string&, int, char)’:
/usr/include/inspircd/clientprotocolmsg.h:558:42: error: expected class-name before ‘(’ token
  558 |                 : ClientProtocol::Message(CommandStrFromMsgType(mt), source)
      |                                          ^
/usr/include/inspircd/clientprotocolmsg.h:558:42: error: expected ‘{’ before ‘(’ token
/usr/include/inspircd/clientprotocolmsg.h: In constructor ‘ClientProtocol::Messages::Privmsg::Privmsg(NoCopy, int*, const int*, const std::string&, int)’:
/usr/include/inspircd/clientprotocolmsg.h:571:42: error: expected class-name before ‘(’ token
  571 |                 : ClientProtocol::Message(CommandStrFromMsgType(mt), source)
      |                                          ^
/usr/include/inspircd/clientprotocolmsg.h:571:42: error: expected ‘{’ before ‘(’ token
/usr/include/inspircd/clientprotocolmsg.h: In constructor ‘ClientProtocol::Messages::Privmsg::Privmsg(NoCopy, const std::string&, const std::string&, const std::string&, int)’:
/usr/include/inspircd/clientprotocolmsg.h:584:42: error: expected class-name before ‘(’ token
  584 |                 : ClientProtocol::Message(CommandStrFromMsgType(mt), source)
      |                                          ^
/usr/include/inspircd/clientprotocolmsg.h:584:42: error: expected ‘{’ before ‘(’ token
/usr/include/inspircd/clientprotocolmsg.h: In constructor ‘ClientProtocol::Messages::Privmsg::Privmsg(NoCopy, const std::string&, const Channel*, const std::string&, int, char)’:
/usr/include/inspircd/clientprotocolmsg.h:598:42: error: expected class-name before ‘(’ token
  598 |                 : ClientProtocol::Message(CommandStrFromMsgType(mt), source)
      |                                          ^
/usr/include/inspircd/clientprotocolmsg.h:598:42: error: expected ‘{’ before ‘(’ token
/usr/include/inspircd/clientprotocolmsg.h: In constructor ‘ClientProtocol::Messages::Privmsg::Privmsg(NoCopy, const std::string&, const int*, const std::string&, int)’:
/usr/include/inspircd/clientprotocolmsg.h:611:42: error: expected class-name before ‘(’ token
  611 |                 : ClientProtocol::Message(CommandStrFromMsgType(mt), source)
      |                                          ^
/usr/include/inspircd/clientprotocolmsg.h:611:42: error: expected ‘{’ before ‘(’ token
/usr/include/inspircd/clientprotocolmsg.h: At global scope:
/usr/include/inspircd/clientprotocolmsg.h:622:1: error: expected class-name before ‘{’ token
  622 | {
      | ^
/usr/include/inspircd/clientprotocolmsg.h:628:20: error: expected ‘)’ before ‘*’ token
  628 |         Invite(User* source, User* target, Channel* chan)
      |               ~    ^
      |                    )
/usr/include/inspircd/clientprotocolmsg.h:640:1: error: expected class-name before ‘{’ token
  640 | {
      | ^
/usr/include/inspircd/clientprotocolmsg.h: In constructor ‘ClientProtocol::Messages::Ping::Ping()’:
/usr/include/inspircd/clientprotocolmsg.h:645:42: error: expected class-name before ‘(’ token
  645 |                 : ClientProtocol::Message("PING")
      |                                          ^
/usr/include/inspircd/clientprotocolmsg.h:645:42: error: expected ‘{’ before ‘(’ token
/usr/include/inspircd/clientprotocolmsg.h: In constructor ‘ClientProtocol::Messages::Ping::Ping(const std::string&)’:
/usr/include/inspircd/clientprotocolmsg.h:654:42: error: expected class-name before ‘(’ token
  654 |                 : ClientProtocol::Message("PING")
      |                                          ^
/usr/include/inspircd/clientprotocolmsg.h:654:42: error: expected ‘{’ before ‘(’ token
/usr/include/inspircd/clientprotocolmsg.h: At global scope:
/usr/include/inspircd/clientprotocolmsg.h:664:1: error: expected class-name before ‘{’ token
  664 | {
      | ^
/usr/include/inspircd/clientprotocolmsg.h: In constructor ‘ClientProtocol::Messages::Pong::Pong(const std::string&, const std::string&)’:
/usr/include/inspircd/clientprotocolmsg.h:670:42: error: expected class-name before ‘(’ token
  670 |                 : ClientProtocol::Message("PONG", ServerInstance->Config->GetServerName())
      |                                          ^
/usr/include/inspircd/clientprotocolmsg.h:670:42: error: expected ‘{’ before ‘(’ token
/usr/include/inspircd/clientprotocolmsg.h: At global scope:
/usr/include/inspircd/clientprotocolmsg.h:684:1: error: expected class-name before ‘{’ token
  684 | {
      | ^
/usr/include/inspircd/clientprotocolmsg.h: In constructor ‘ClientProtocol::Messages::Error::Error(const std::string&)’:
/usr/include/inspircd/clientprotocolmsg.h:689:50: error: expected class-name before ‘(’ token
  689 |                         : ClientProtocol::Message("ERROR")
      |                                                  ^
/usr/include/inspircd/clientprotocolmsg.h:689:50: error: expected ‘{’ before ‘(’ token
In file included from /tmp/XDrPsg2cTs/dump1.h:20:
/usr/include/inspircd/command_parse.h: At global scope:
/usr/include/inspircd/command_parse.h:36:61: error: ‘irc’ was not declared in this scope
   36 |         typedef TR1NS::unordered_map<std::string, Command*, irc::insensitive, irc::StrHashComp> CommandMap;
      |                                                             ^~~
/usr/include/inspircd/command_parse.h:36:95: error: template argument 3 is invalid
   36 |         typedef TR1NS::unordered_map<std::string, Command*, irc::insensitive, irc::StrHashComp> CommandMap;
      |                                                                                               ^
/usr/include/inspircd/command_parse.h:44:29: error: ‘LocalUser’ has not been declared
   44 |         void ProcessCommand(LocalUser* user, std::string& command, CommandBase::Params& parameters);
      |                             ^~~~~~~~~
/usr/include/inspircd/command_parse.h:72:102: error: ‘User’ has not been declared
   72 |         CmdResult CallHandler(const std::string& commandname, const CommandBase::Params& parameters, User* user, Command** cmd = NULL);
      |                                                                                                      ^~~~
/usr/include/inspircd/command_parse.h:117:30: error: ‘User’ has not been declared
  117 |         static bool LoopCall(User* user, Command* handler, const CommandBase::Params& parameters, unsigned int splithere, int extra = -1, bool usemax = true);
      |                              ^~~~
/usr/include/inspircd/command_parse.h:123:28: error: ‘LocalUser’ has not been declared
  123 |         void ProcessBuffer(LocalUser* user, const std::string& buffer);
      |                            ^~~~~~~~~
In file included from /tmp/XDrPsg2cTs/dump1.h:23:
/usr/include/inspircd/configparser.h:28:15: error: ‘flat_map’ in namespace ‘insp’ does not name a template type
   28 |         insp::flat_map<std::string, std::string, irc::insensitive_swo> vars;
      |               ^~~~~~~~
/usr/include/inspircd/configparser.h:29:9: error: ‘ConfigDataHash’ does not name a type
   29 |         ConfigDataHash& output;
      |         ^~~~~~~~~~~~~~
/usr/include/inspircd/configparser.h:30:9: error: ‘ConfigFileCache’ does not name a type
   30 |         ConfigFileCache& FilesOutput;
      |         ^~~~~~~~~~~~~~~
/usr/include/inspircd/configparser.h:33:32: error: expected ‘)’ before ‘*’ token
   33 |         ParseStack(ServerConfig* conf);
      |                   ~            ^
      |                                )
/usr/include/inspircd/configparser.h:35:24: error: ‘ConfigTag’ has not been declared
   35 |         void DoInclude(ConfigTag* includeTag, int flags);
      |                        ^~~~~~~~~
In file included from /usr/include/inspircd/inspircd.h:88,
                 from /usr/include/inspircd/configreader.h:33,
                 from /tmp/XDrPsg2cTs/dump1.h:24:
/usr/include/inspircd/numeric.h: In constructor ‘Numeric::Numeric::Numeric(unsigned int)’:
/usr/include/inspircd/numeric.h:50:36: error: call of overloaded ‘Params()’ is ambiguous
   50 |                 , sourceserver(NULL)
      |                                    ^
/usr/include/inspircd/ctables.h:145:17: note: candidate: ‘CommandBase::Params::Params()’
  145 |                 Params() { }
      |                 ^~~~~~
/usr/include/inspircd/ctables.h:128:17: note: candidate: ‘CommandBase::Params::Params(...)’
  128 |                 Params(const std::vector<std::string>& paramsref, const ClientProtocol::TagMap& tagsref)
      |                 ^~~~~~
In file included from /usr/include/inspircd/inspircd.h:91:
/usr/include/inspircd/users.h: At global scope:
/usr/include/inspircd/users.h:273:33: error: incomplete type ‘ModeParser’ used in nested name specifier
  273 |         std::bitset<ModeParser::MODEID_MAX> modes;
      |                                 ^~~~~~~~~~
/usr/include/inspircd/users.h:273:43: error: template argument 1 is invalid
  273 |         std::bitset<ModeParser::MODEID_MAX> modes;
      |                                           ^
/usr/include/inspircd/users.h: In member function ‘bool User::IsModeSet(const ModeHandler*) const’:
/usr/include/inspircd/users.h:962:45: error: incomplete type ‘ModeParser’ used in nested name specifier
  962 |         return ((mh->GetId() != ModeParser::MODEID_MAX) && (modes[mh->GetId()]));
      |                                             ^~~~~~~~~~
/usr/include/inspircd/users.h:962:66: error: invalid types ‘const int[ModeHandler::Id {aka unsigned int}]’ for array subscript
  962 |         return ((mh->GetId() != ModeParser::MODEID_MAX) && (modes[mh->GetId()]));
      |                                                                  ^
/usr/include/inspircd/users.h: In member function ‘void User::SetMode(ModeHandler*, bool)’:
/usr/include/inspircd/users.h:974:46: error: incomplete type ‘ModeParser’ used in nested name specifier
  974 |         if (mh && mh->GetId() != ModeParser::MODEID_MAX)
      |                                              ^~~~~~~~~~
/usr/include/inspircd/users.h:975:22: error: invalid types ‘int[ModeHandler::Id {aka unsigned int}]’ for array subscript
  975 |                 modes[mh->GetId()] = value;
      |                      ^
In file included from /usr/include/inspircd/inspircd.h:104:
/usr/include/inspircd/modules.h: At global scope:
/usr/include/inspircd/modules.h:639:117: error: ‘ModeParser::ModeProcessFlag’ has not been declared
  639 |         virtual void OnMode(User* user, User* usertarget, Channel* chantarget, const Modes::ChangeList& changelist, ModeParser::ModeProcessFlag processflags);
      |                                                                                                                     ^~~~~~~~~~
/usr/include/inspircd/inspircd.h:239:20: error: field ‘Modes’ has incomplete type ‘ModeParser’
  239 |         ModeParser Modes;
      |                    ^~~~~
/usr/include/inspircd/mode.h:566:18: note: forward declaration of ‘class ModeParser’
  566 | class CoreExport ModeParser : public fakederef<ModeParser>
      |                  ^~~~~~~~~~
/usr/include/inspircd/inspircd.h:251:9: error: ‘ConfigReaderThread’ does not name a type
  251 |         ConfigReaderThread* ConfigThread;
      |         ^~~~~~~~~~~~~~~~~~
/usr/include/inspircd/inspircd.h:265:9: error: ‘BanCacheManager’ does not name a type
  265 |         BanCacheManager BanCache;
      |         ^~~~~~~~~~~~~~~
/usr/include/inspircd/inspircd.h:607:13: error: no declaration matches ‘void Channel::Write(ClientProtocol::EventProvider&, ClientProtocol::Message&, char, const CUList&)’
  607 | inline void Channel::Write(ClientProtocol::EventProvider& protoevprov, ClientProtocol::Message& msg, char status, const CUList& except_list)
      |             ^~~~~~~
/usr/include/inspircd/channels.h:242:14: note: candidate is: ‘void Channel::Write(int)’
  242 |         void Write(ClientProtocol::Event& protoev, char status = 0, const CUList& except_list = CUList());
      |              ^~~~~
/usr/include/inspircd/channels.h:40:18: note: ‘class Channel’ defined here
   40 | class CoreExport Channel : public Extensible
      |                  ^~~~~~~
/usr/include/inspircd/inspircd.h: In member function ‘void LocalUser::Send(ClientProtocol::EventProvider&, ClientProtocol::Message&)’:
/usr/include/inspircd/inspircd.h:615:37: error: variable ‘ClientProtocol::Event event’ has initializer but incomplete type
  615 |         ClientProtocol::Event event(protoevprov, msg);
      |                                     ^~~~~~~~~~~
In file included from /tmp/XDrPsg2cTs/dump1.h:45:
/usr/include/inspircd/listmode.h: At global scope:
/usr/include/inspircd/listmode.h:149:14: error: ‘void ListModeBase::DisplayList(User*, Channel*)’ marked ‘override’, but does not override
  149 |         void DisplayList(User* user, Channel* channel) CXX11_OVERRIDE;
      |              ^~~~~~~~~~~
/usr/include/inspircd/listmode.h:157:14: error: ‘void ListModeBase::DisplayEmptyList(User*, Channel*)’ marked ‘override’, but does not override
  157 |         void DisplayEmptyList(User* user, Channel* channel) CXX11_OVERRIDE;
      |              ^~~~~~~~~~~~~~~~
/usr/include/inspircd/listmode.h:166:14: error: ‘void ListModeBase::RemoveMode(Channel*, Modes::ChangeList&)’ marked ‘override’, but does not override
  166 |         void RemoveMode(Channel* channel, Modes::ChangeList& changelist) CXX11_OVERRIDE;
      |              ^~~~~~~~~~
/usr/include/inspircd/listmode.h:175:20: error: ‘ModeAction ListModeBase::OnModeChange(User*, User*, Channel*, std::string&, bool)’ marked ‘override’, but does not override
  175 |         ModeAction OnModeChange(User* source, User*, Channel* channel, std::string &parameter, bool adding) CXX11_OVERRIDE;
      |                    ^~~~~~~~~~~~
/usr/include/inspircd/listmode.h:193:22: error: ‘virtual void ListModeBase::OnParameterMissing(User*, User*, Channel*)’ marked ‘override’, but does not override
  193 |         virtual void OnParameterMissing(User* user, User* dest, Channel* channel) CXX11_OVERRIDE;
      |                      ^~~~~~~~~~~~~~~~~~
/usr/include/inspircd/listmode.h: In member function ‘ListModeBase::ModeList* ListModeBase::GetList(Channel*)’:
/usr/include/inspircd/listmode.h:222:36: error: cannot convert ‘Channel*’ to ‘const Extensible*’
  222 |         ChanData* cd = extItem.get(channel);
      |                                    ^~~~~~~
      |                                    |
      |                                    Channel*
In file included from /usr/include/inspircd/inspircd.h:84:
/usr/include/inspircd/extensible.h:215:41: note:   initializing argument 1 of ‘T* SimpleExtItem<T, Del>::get(const Extensible*) const [with T = ListModeBase::ChanData; Del = stdalgo::defaultdeleter<ListModeBase::ChanData>]’
  215 |         inline T* get(const Extensible* container) const
      |                       ~~~~~~~~~~~~~~~~~~^~~~~~~~~
In file included from /tmp/XDrPsg2cTs/dump1.h:52:
/usr/include/inspircd/modules/account.h: At global scope:
/usr/include/inspircd/modules/account.h:44:45: error: invalid use of incomplete type ‘class Events::ModuleEventListener’
   44 | class AccountEventListener : public Events::ModuleEventListener
      |                                             ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:123:15: note: forward declaration of ‘class Events::ModuleEventListener’
  123 | class Events::ModuleEventListener : private dynamic_reference_base::CaptureHook
      |               ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/modules/account.h: In constructor ‘AccountEventListener::AccountEventListener(Module*)’:
/usr/include/inspircd/modules/account.h:48:19: error: class ‘AccountEventListener’ does not have any field named ‘ModuleEventListener’
   48 |                 : ModuleEventListener(mod, "event/account")
      |                   ^~~~~~~~~~~~~~~~~~~
In file included from /tmp/XDrPsg2cTs/dump1.h:53:
/usr/include/inspircd/modules/away.h: At global scope:
/usr/include/inspircd/modules/away.h:31:26: error: invalid use of incomplete type ‘class Events::ModuleEventListener’
   31 |         : public Events::ModuleEventListener
      |                          ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:123:15: note: forward declaration of ‘class Events::ModuleEventListener’
  123 | class Events::ModuleEventListener : private dynamic_reference_base::CaptureHook
      |               ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/modules/away.h: In constructor ‘Away::EventListener::EventListener(Module*)’:
/usr/include/inspircd/modules/away.h:35:19: error: class ‘Away::EventListener’ does not have any field named ‘ModuleEventListener’
   35 |                 : ModuleEventListener(mod, "event/away")
      |                   ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/modules/away.h: At global scope:
/usr/include/inspircd/modules/away.h:75:26: error: invalid use of incomplete type ‘class Events::ModuleEventProvider’
   75 |         : public Events::ModuleEventProvider
      |                          ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:37:15: note: forward declaration of ‘class Events::ModuleEventProvider’
   37 | class Events::ModuleEventProvider : public ServiceProvider, private dynamic_reference_base::CaptureHook
      |               ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/modules/away.h: In constructor ‘Away::EventProvider::EventProvider(Module*)’:
/usr/include/inspircd/modules/away.h:79:19: error: class ‘Away::EventProvider’ does not have any field named ‘ModuleEventProvider’
   79 |                 : ModuleEventProvider(mod, "event/away")
      |                   ^~~~~~~~~~~~~~~~~~~
In file included from /tmp/XDrPsg2cTs/dump1.h:55:
/usr/include/inspircd/modules/cap.h: At global scope:
/usr/include/inspircd/modules/cap.h:54:46: error: invalid use of incomplete type ‘class Events::ModuleEventListener’
   54 |         class EventListener : public Events::ModuleEventListener
      |                                              ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:123:15: note: forward declaration of ‘class Events::ModuleEventListener’
  123 | class Events::ModuleEventListener : private dynamic_reference_base::CaptureHook
      |               ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/modules/cap.h: In constructor ‘Cap::EventListener::EventListener(Module*)’:
/usr/include/inspircd/modules/cap.h:58:27: error: class ‘Cap::EventListener’ does not have any field named ‘ModuleEventListener’
   58 |                         : ModuleEventListener(mod, "event/cap")
      |                           ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/modules/cap.h: At global scope:
/usr/include/inspircd/modules/cap.h:325:52: error: invalid use of incomplete type ‘class ClientProtocol::Message’
  325 |         class MessageBase : public ClientProtocol::Message
      |                                                    ^~~~~~~
In file included from /usr/include/inspircd/inspircd.h:62:
/usr/include/inspircd/typedefs.h:58:15: note: forward declaration of ‘class ClientProtocol::Message’
   58 |         class Message;
      |               ^~~~~~~
/usr/include/inspircd/modules/cap.h: In constructor ‘Cap::MessageBase::MessageBase(const std::string&)’:
/usr/include/inspircd/modules/cap.h:329:43: error: type ‘ClientProtocol::Message’ is not a direct base of ‘Cap::MessageBase’
  329 |                         : ClientProtocol::Message("CAP", ServerInstance->Config->GetServerName())
      |                                           ^~~~~~~
/usr/include/inspircd/modules/cap.h:331:25: error: ‘PushParamPlaceholder’ was not declared in this scope
  331 |                         PushParamPlaceholder();
      |                         ^~~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/modules/cap.h:332:25: error: ‘PushParam’ was not declared in this scope
  332 |                         PushParam(subcmd);
      |                         ^~~~~~~~~
/usr/include/inspircd/modules/cap.h: In member function ‘void Cap::MessageBase::SetUser(LocalUser*)’:
/usr/include/inspircd/modules/cap.h:338:33: error: ‘ReplaceParamRef’ was not declared in this scope
  338 |                                 ReplaceParamRef(0, user->nick);
      |                                 ^~~~~~~~~~~~~~~
/usr/include/inspircd/modules/cap.h:340:33: error: ‘ReplaceParam’ was not declared in this scope
  340 |                                 ReplaceParam(0, "*");
      |                                 ^~~~~~~~~~~~
In file included from /tmp/XDrPsg2cTs/dump1.h:56:
/usr/include/inspircd/modules/ctctags.h: At global scope:
/usr/include/inspircd/modules/ctctags.h:42:52: error: invalid use of incomplete type ‘class ClientProtocol::Message’
   42 | class CTCTags::TagMessage : public ClientProtocol::Message
      |                                                    ^~~~~~~
/usr/include/inspircd/typedefs.h:58:15: note: forward declaration of ‘class ClientProtocol::Message’
   58 |         class Message;
      |               ^~~~~~~
/usr/include/inspircd/modules/ctctags.h: In member function ‘void CTCTags::TagMessage::PushTarget(const char*, char)’:
/usr/include/inspircd/modules/ctctags.h:51:25: error: ‘PushParam’ was not declared in this scope
   51 |                         PushParam(rawtarget);
      |                         ^~~~~~~~~
/usr/include/inspircd/modules/ctctags.h:54:25: error: ‘PushParam’ was not declared in this scope
   54 |                         PushParam(target);
      |                         ^~~~~~~~~
/usr/include/inspircd/modules/ctctags.h: In constructor ‘CTCTags::TagMessage::TagMessage(User*, const Channel*, const ClientProtocol::TagMap&, char)’:
/usr/include/inspircd/modules/ctctags.h:59:35: error: type ‘ClientProtocol::Message’ is not a direct base of ‘CTCTags::TagMessage’
   59 |                 : ClientProtocol::Message("TAGMSG", source)
      |                                   ^~~~~~~
/usr/include/inspircd/modules/ctctags.h:62:17: error: ‘AddTags’ was not declared in this scope
   62 |                 AddTags(Tags);
      |                 ^~~~~~~
/usr/include/inspircd/modules/ctctags.h: In constructor ‘CTCTags::TagMessage::TagMessage(User*, const User*, const ClientProtocol::TagMap&)’:
/usr/include/inspircd/modules/ctctags.h:66:35: error: type ‘ClientProtocol::Message’ is not a direct base of ‘CTCTags::TagMessage’
   66 |                 : ClientProtocol::Message("TAGMSG", source)
      |                                   ^~~~~~~
/usr/include/inspircd/modules/ctctags.h:69:25: error: ‘PushParamRef’ was not declared in this scope
   69 |                         PushParamRef(targetuser->nick);
      |                         ^~~~~~~~~~~~
/usr/include/inspircd/modules/ctctags.h:71:25: error: ‘PushParam’ was not declared in this scope
   71 |                         PushParam("*");
      |                         ^~~~~~~~~
/usr/include/inspircd/modules/ctctags.h:72:17: error: ‘AddTags’ was not declared in this scope
   72 |                 AddTags(Tags);
      |                 ^~~~~~~
/usr/include/inspircd/modules/ctctags.h: In constructor ‘CTCTags::TagMessage::TagMessage(User*, const char*, const ClientProtocol::TagMap&, char)’:
/usr/include/inspircd/modules/ctctags.h:76:35: error: type ‘ClientProtocol::Message’ is not a direct base of ‘CTCTags::TagMessage’
   76 |                 : ClientProtocol::Message("TAGMSG", source)
      |                                   ^~~~~~~
/usr/include/inspircd/modules/ctctags.h:79:17: error: ‘AddTags’ was not declared in this scope
   79 |                 AddTags(Tags);
      |                 ^~~~~~~
/usr/include/inspircd/modules/ctctags.h: In constructor ‘CTCTags::TagMessage::TagMessage(const char*, const char*, const ClientProtocol::TagMap&, char)’:
/usr/include/inspircd/modules/ctctags.h:83:35: error: type ‘ClientProtocol::Message’ is not a direct base of ‘CTCTags::TagMessage’
   83 |                 : ClientProtocol::Message("TAGMSG", source)
      |                                   ^~~~~~~
/usr/include/inspircd/modules/ctctags.h:86:17: error: ‘AddTags’ was not declared in this scope
   86 |                 AddTags(Tags);
      |                 ^~~~~~~
/usr/include/inspircd/modules/ctctags.h: At global scope:
/usr/include/inspircd/modules/ctctags.h:121:26: error: invalid use of incomplete type ‘class Events::ModuleEventListener’
  121 |         : public Events::ModuleEventListener
      |                          ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:123:15: note: forward declaration of ‘class Events::ModuleEventListener’
  123 | class Events::ModuleEventListener : private dynamic_reference_base::CaptureHook
      |               ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/modules/ctctags.h:124:61: error: ‘DefaultPriority’ was not declared in this scope; did you mean ‘GetPriority’?
  124 |         EventListener(Module* mod, unsigned int eventprio = DefaultPriority)
      |                                                             ^~~~~~~~~~~~~~~
      |                                                             GetPriority
/usr/include/inspircd/modules/ctctags.h: In constructor ‘CTCTags::EventListener::EventListener(Module*, unsigned int)’:
/usr/include/inspircd/modules/ctctags.h:125:19: error: class ‘CTCTags::EventListener’ does not have any field named ‘ModuleEventListener’
  125 |                 : ModuleEventListener(mod, "event/tagmsg", eventprio)
      |                   ^~~~~~~~~~~~~~~~~~~
In file included from /tmp/XDrPsg2cTs/dump1.h:58:
/usr/include/inspircd/modules/exemption.h: At global scope:
/usr/include/inspircd/modules/exemption.h:41:26: error: invalid use of incomplete type ‘class Events::ModuleEventListener’
   41 |         : public Events::ModuleEventListener
      |                          ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:123:15: note: forward declaration of ‘class Events::ModuleEventListener’
  123 | class Events::ModuleEventListener : private dynamic_reference_base::CaptureHook
      |               ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/modules/exemption.h:44:61: error: ‘DefaultPriority’ was not declared in this scope; did you mean ‘GetPriority’?
   44 |         EventListener(Module* mod, unsigned int eventprio = DefaultPriority)
      |                                                             ^~~~~~~~~~~~~~~
      |                                                             GetPriority
/usr/include/inspircd/modules/exemption.h: In constructor ‘CheckExemption::EventListener::EventListener(Module*, unsigned int)’:
/usr/include/inspircd/modules/exemption.h:45:19: error: class ‘CheckExemption::EventListener’ does not have any field named ‘ModuleEventListener’
   45 |                 : ModuleEventListener(mod, "event/exemption", eventprio)
      |                   ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/modules/exemption.h: At global scope:
/usr/include/inspircd/modules/exemption.h:61:26: error: invalid use of incomplete type ‘class Events::ModuleEventProvider’
   61 |         : public Events::ModuleEventProvider
      |                          ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:37:15: note: forward declaration of ‘class Events::ModuleEventProvider’
   37 | class Events::ModuleEventProvider : public ServiceProvider, private dynamic_reference_base::CaptureHook
      |               ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/modules/exemption.h: In constructor ‘CheckExemption::EventProvider::EventProvider(Module*)’:
/usr/include/inspircd/modules/exemption.h:65:19: error: class ‘CheckExemption::EventProvider’ does not have any field named ‘ModuleEventProvider’
   65 |                 : ModuleEventProvider(mod, "event/exemption")
      |                   ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/modules/exemption.h: In function ‘ModResult CheckExemption::Call(const EventProvider&, User*, Channel*, const std::string&)’:
/usr/include/inspircd/event.h:211:21: error: ‘const class CheckExemption::EventProvider’ has no member named ‘GetModule’
  211 |         if (!(prov).GetModule() || !(prov).GetModule()->dying) \
      |                     ^~~~~~~~~
/usr/include/inspircd/modules/exemption.h:73:9: note: in expansion of macro ‘FIRST_MOD_RESULT_CUSTOM’
   73 |         FIRST_MOD_RESULT_CUSTOM(prov, CheckExemption::EventListener, OnCheckExemption, result, (user, chan, restriction));
      |         ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:211:44: error: ‘const class CheckExemption::EventProvider’ has no member named ‘GetModule’
  211 |         if (!(prov).GetModule() || !(prov).GetModule()->dying) \
      |                                            ^~~~~~~~~
/usr/include/inspircd/modules/exemption.h:73:9: note: in expansion of macro ‘FIRST_MOD_RESULT_CUSTOM’
   73 |         FIRST_MOD_RESULT_CUSTOM(prov, CheckExemption::EventListener, OnCheckExemption, result, (user, chan, restriction));
      |         ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:213:54: error: invalid use of incomplete type ‘class Events::ModuleEventProvider’
  213 |                 const ::Events::ModuleEventProvider::SubscriberList& _handlers = (prov).GetSubscribers(); \
      |                                                      ^~~~~~~~~~~~~~
/usr/include/inspircd/modules/exemption.h:73:9: note: in expansion of macro ‘FIRST_MOD_RESULT_CUSTOM’
   73 |         FIRST_MOD_RESULT_CUSTOM(prov, CheckExemption::EventListener, OnCheckExemption, result, (user, chan, restriction));
      |         ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:37:15: note: forward declaration of ‘class Events::ModuleEventProvider’
   37 | class Events::ModuleEventProvider : public ServiceProvider, private dynamic_reference_base::CaptureHook
      |               ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:214:53: error: ‘Events::ModuleEventProvider::SubscriberList’ has not been declared
  214 |                 for (::Events::ModuleEventProvider::SubscriberList::const_iterator _i = _handlers.begin(); _i != _handlers.end(); ++_i) \
      |                                                     ^~~~~~~~~~~~~~
/usr/include/inspircd/modules/exemption.h:73:9: note: in expansion of macro ‘FIRST_MOD_RESULT_CUSTOM’
   73 |         FIRST_MOD_RESULT_CUSTOM(prov, CheckExemption::EventListener, OnCheckExemption, result, (user, chan, restriction));
      |         ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:214:108: error: ‘_i’ was not declared in this scope
  214 |                 for (::Events::ModuleEventProvider::SubscriberList::const_iterator _i = _handlers.begin(); _i != _handlers.end(); ++_i) \
      |                                                                                                            ^~
/usr/include/inspircd/modules/exemption.h:73:9: note: in expansion of macro ‘FIRST_MOD_RESULT_CUSTOM’
   73 |         FIRST_MOD_RESULT_CUSTOM(prov, CheckExemption::EventListener, OnCheckExemption, result, (user, chan, restriction));
      |         ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:214:114: error: ‘_handlers’ was not declared in this scope; did you mean ‘sa_handler’?
  214 |                 for (::Events::ModuleEventProvider::SubscriberList::const_iterator _i = _handlers.begin(); _i != _handlers.end(); ++_i) \
      |                                                                                                                  ^~~~~~~~~
/usr/include/inspircd/modules/exemption.h:73:9: note: in expansion of macro ‘FIRST_MOD_RESULT_CUSTOM’
   73 |         FIRST_MOD_RESULT_CUSTOM(prov, CheckExemption::EventListener, OnCheckExemption, result, (user, chan, restriction));
      |         ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:217:48: error: ‘class CheckExemption::EventListener’ has no member named ‘GetModule’
  217 |                         const Module* _m = _t->GetModule(); \
      |                                                ^~~~~~~~~
/usr/include/inspircd/modules/exemption.h:73:9: note: in expansion of macro ‘FIRST_MOD_RESULT_CUSTOM’
   73 |         FIRST_MOD_RESULT_CUSTOM(prov, CheckExemption::EventListener, OnCheckExemption, result, (user, chan, restriction));
      |         ^~~~~~~~~~~~~~~~~~~~~~~
In file included from /tmp/XDrPsg2cTs/dump1.h:61:
/usr/include/inspircd/modules/httpd.h: At global scope:
/usr/include/inspircd/modules/httpd.h:305:45: error: invalid use of incomplete type ‘class Events::ModuleEventListener’
  305 | class HTTPACLEventListener : public Events::ModuleEventListener
      |                                             ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:123:15: note: forward declaration of ‘class Events::ModuleEventListener’
  123 | class Events::ModuleEventListener : private dynamic_reference_base::CaptureHook
      |               ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/modules/httpd.h: In constructor ‘HTTPACLEventListener::HTTPACLEventListener(Module*)’:
/usr/include/inspircd/modules/httpd.h:309:19: error: class ‘HTTPACLEventListener’ does not have any field named ‘ModuleEventListener’
  309 |                 : ModuleEventListener(mod, "event/http-acl")
      |                   ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/modules/httpd.h: At global scope:
/usr/include/inspircd/modules/httpd.h:316:49: error: invalid use of incomplete type ‘class Events::ModuleEventListener’
  316 | class HTTPRequestEventListener : public Events::ModuleEventListener
      |                                                 ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:123:15: note: forward declaration of ‘class Events::ModuleEventListener’
  123 | class Events::ModuleEventListener : private dynamic_reference_base::CaptureHook
      |               ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/modules/httpd.h: In constructor ‘HTTPRequestEventListener::HTTPRequestEventListener(Module*)’:
/usr/include/inspircd/modules/httpd.h:320:19: error: class ‘HTTPRequestEventListener’ does not have any field named ‘ModuleEventListener’
  320 |                 : ModuleEventListener(mod, "event/http-request")
      |                   ^~~~~~~~~~~~~~~~~~~
In file included from /tmp/XDrPsg2cTs/dump1.h:63:
/usr/include/inspircd/modules/ircv3.h: At global scope:
/usr/include/inspircd/modules/ircv3.h:73:46: error: invalid use of incomplete type ‘class ClientProtocol::MessageTagProvider’
   73 | class IRCv3::CapTag : public ClientProtocol::MessageTagProvider
      |                                              ^~~~~~~~~~~~~~~~~~
/usr/include/inspircd/typedefs.h:60:15: note: forward declaration of ‘class ClientProtocol::MessageTagProvider’
   60 |         class MessageTagProvider;
      |               ^~~~~~~~~~~~~~~~~~
In file included from /tmp/XDrPsg2cTs/dump1.h:64:
/usr/include/inspircd/modules/ircv3_batch.h:46:75: error: invalid use of incomplete type ‘class ClientProtocol::MessageTagProvider’
   46 | class IRCv3::Batch::Manager : public DataProvider, public ClientProtocol::MessageTagProvider
      |                                                                           ^~~~~~~~~~~~~~~~~~
/usr/include/inspircd/typedefs.h:60:15: note: forward declaration of ‘class ClientProtocol::MessageTagProvider’
   60 |         class MessageTagProvider;
      |               ^~~~~~~~~~~~~~~~~~
/usr/include/inspircd/modules/ircv3_batch.h: In constructor ‘IRCv3::Batch::Manager::Manager(Module*)’:
/usr/include/inspircd/modules/ircv3_batch.h:54:35: error: type ‘ClientProtocol::MessageTagProvider’ is not a direct base of ‘IRCv3::Batch::Manager’
   54 |                 , ClientProtocol::MessageTagProvider(mod)
      |                                   ^~~~~~~~~~~~~~~~~~
/usr/include/inspircd/modules/ircv3_batch.h: In member function ‘void IRCv3::Batch::Batch::AddToBatch(ClientProtocol::Message&)’:
/usr/include/inspircd/modules/ircv3_batch.h:135:25: error: invalid use of incomplete type ‘class ClientProtocol::Message’
  135 |                         msg.AddTag("batch", manager, reftagstr, this);
      |                         ^~~
/usr/include/inspircd/typedefs.h:58:15: note: forward declaration of ‘class ClientProtocol::Message’
   58 |         class Message;
      |               ^~~~~~~
In file included from /tmp/XDrPsg2cTs/dump1.h:65:
/usr/include/inspircd/modules/ircv3_replies.h: At global scope:
/usr/include/inspircd/modules/ircv3_replies.h:55:39: error: field ‘evprov’ has incomplete type ‘ClientProtocol::EventProvider’
   55 |         ClientProtocol::EventProvider evprov;
      |                                       ^~~~~~
/usr/include/inspircd/typedefs.h:57:15: note: forward declaration of ‘class ClientProtocol::EventProvider’
   57 |         class EventProvider;
      |               ^~~~~~~~~~~~~
/usr/include/inspircd/modules/ircv3_replies.h: In member function ‘void IRCv3::Replies::Reply::SendInternal(LocalUser*, ClientProtocol::Message&)’:
/usr/include/inspircd/modules/ircv3_replies.h:63:42: error: variable ‘ClientProtocol::Event ev’ has initializer but incomplete type
   63 |                 ClientProtocol::Event ev(evprov, msg);
      |                                          ^~~~~~
/usr/include/inspircd/modules/ircv3_replies.h: In member function ‘void IRCv3::Replies::Reply::Send(LocalUser*, Command*, const std::string&, const std::string&)’:
/usr/include/inspircd/modules/ircv3_replies.h:96:45: error: variable ‘ClientProtocol::Message msg’ has initializer but incomplete type
   96 |                 ClientProtocol::Message msg(cmd.c_str(), ServerInstance->Config->GetServerName());
      |                                             ^~~
/usr/include/inspircd/modules/ircv3_replies.h: In member function ‘void IRCv3::Replies::Reply::Send(LocalUser*, Command*, const std::string&, const T1&, const std::string&)’:
/usr/include/inspircd/modules/ircv3_replies.h:109:41: error: ‘msg’ has incomplete type
  109 |                 ClientProtocol::Message msg(cmd.c_str(), ServerInstance->Config->GetServerName());
      |                                         ^~~
/usr/include/inspircd/typedefs.h:58:15: note: forward declaration of ‘class ClientProtocol::Message’
   58 |         class Message;
      |               ^~~~~~~
/usr/include/inspircd/modules/ircv3_replies.h:109:41: error: ‘msg’ has incomplete type
  109 |                 ClientProtocol::Message msg(cmd.c_str(), ServerInstance->Config->GetServerName());
      |                                         ^~~
/usr/include/inspircd/typedefs.h:58:15: note: forward declaration of ‘class ClientProtocol::Message’
   58 |         class Message;
      |               ^~~~~~~
/usr/include/inspircd/modules/ircv3_replies.h:109:41: error: ‘msg’ has incomplete type
  109 |                 ClientProtocol::Message msg(cmd.c_str(), ServerInstance->Config->GetServerName());
      |                                         ^~~
/usr/include/inspircd/typedefs.h:58:15: note: forward declaration of ‘class ClientProtocol::Message’
   58 |         class Message;
      |               ^~~~~~~
/usr/include/inspircd/modules/ircv3_replies.h:109:41: error: ‘msg’ has incomplete type
  109 |                 ClientProtocol::Message msg(cmd.c_str(), ServerInstance->Config->GetServerName());
      |                                         ^~~
/usr/include/inspircd/typedefs.h:58:15: note: forward declaration of ‘class ClientProtocol::Message’
   58 |         class Message;
      |               ^~~~~~~
/usr/include/inspircd/modules/ircv3_replies.h:109:41: error: ‘msg’ has incomplete type
  109 |                 ClientProtocol::Message msg(cmd.c_str(), ServerInstance->Config->GetServerName());
      |                                         ^~~
/usr/include/inspircd/typedefs.h:58:15: note: forward declaration of ‘class ClientProtocol::Message’
   58 |         class Message;
      |               ^~~~~~~
/usr/include/inspircd/modules/ircv3_replies.h: In member function ‘void IRCv3::Replies::Reply::Send(LocalUser*, Command*, const std::string&, const T1&, const T2&, const std::string&)’:
/usr/include/inspircd/modules/ircv3_replies.h:124:41: error: ‘msg’ has incomplete type
  124 |                 ClientProtocol::Message msg(cmd.c_str(), ServerInstance->Config->GetServerName());
      |                                         ^~~
/usr/include/inspircd/typedefs.h:58:15: note: forward declaration of ‘class ClientProtocol::Message’
   58 |         class Message;
      |               ^~~~~~~
/usr/include/inspircd/modules/ircv3_replies.h:124:41: error: ‘msg’ has incomplete type
  124 |                 ClientProtocol::Message msg(cmd.c_str(), ServerInstance->Config->GetServerName());
      |                                         ^~~
/usr/include/inspircd/typedefs.h:58:15: note: forward declaration of ‘class ClientProtocol::Message’
   58 |         class Message;
      |               ^~~~~~~
/usr/include/inspircd/modules/ircv3_replies.h:124:41: error: ‘msg’ has incomplete type
  124 |                 ClientProtocol::Message msg(cmd.c_str(), ServerInstance->Config->GetServerName());
      |                                         ^~~
/usr/include/inspircd/typedefs.h:58:15: note: forward declaration of ‘class ClientProtocol::Message’
   58 |         class Message;
      |               ^~~~~~~
/usr/include/inspircd/modules/ircv3_replies.h:124:41: error: ‘msg’ has incomplete type
  124 |                 ClientProtocol::Message msg(cmd.c_str(), ServerInstance->Config->GetServerName());
      |                                         ^~~
/usr/include/inspircd/typedefs.h:58:15: note: forward declaration of ‘class ClientProtocol::Message’
   58 |         class Message;
      |               ^~~~~~~
/usr/include/inspircd/modules/ircv3_replies.h:124:41: error: ‘msg’ has incomplete type
  124 |                 ClientProtocol::Message msg(cmd.c_str(), ServerInstance->Config->GetServerName());
      |                                         ^~~
/usr/include/inspircd/typedefs.h:58:15: note: forward declaration of ‘class ClientProtocol::Message’
   58 |         class Message;
      |               ^~~~~~~
/usr/include/inspircd/modules/ircv3_replies.h:124:41: error: ‘msg’ has incomplete type
  124 |                 ClientProtocol::Message msg(cmd.c_str(), ServerInstance->Config->GetServerName());
      |                                         ^~~
/usr/include/inspircd/typedefs.h:58:15: note: forward declaration of ‘class ClientProtocol::Message’
   58 |         class Message;
      |               ^~~~~~~
/usr/include/inspircd/modules/ircv3_replies.h: In member function ‘void IRCv3::Replies::Reply::Send(LocalUser*, Command*, const std::string&, const T1&, const T2&, const T3&, const std::string&)’:
/usr/include/inspircd/modules/ircv3_replies.h:140:41: error: ‘msg’ has incomplete type
  140 |                 ClientProtocol::Message msg(cmd.c_str(), ServerInstance->Config->GetServerName());
      |                                         ^~~
/usr/include/inspircd/typedefs.h:58:15: note: forward declaration of ‘class ClientProtocol::Message’
   58 |         class Message;
      |               ^~~~~~~
/usr/include/inspircd/modules/ircv3_replies.h:140:41: error: ‘msg’ has incomplete type
  140 |                 ClientProtocol::Message msg(cmd.c_str(), ServerInstance->Config->GetServerName());
      |                                         ^~~
/usr/include/inspircd/typedefs.h:58:15: note: forward declaration of ‘class ClientProtocol::Message’
   58 |         class Message;
      |               ^~~~~~~
/usr/include/inspircd/modules/ircv3_replies.h:140:41: error: ‘msg’ has incomplete type
  140 |                 ClientProtocol::Message msg(cmd.c_str(), ServerInstance->Config->GetServerName());
      |                                         ^~~
/usr/include/inspircd/typedefs.h:58:15: note: forward declaration of ‘class ClientProtocol::Message’
   58 |         class Message;
      |               ^~~~~~~
/usr/include/inspircd/modules/ircv3_replies.h:140:41: error: ‘msg’ has incomplete type
  140 |                 ClientProtocol::Message msg(cmd.c_str(), ServerInstance->Config->GetServerName());
      |                                         ^~~
/usr/include/inspircd/typedefs.h:58:15: note: forward declaration of ‘class ClientProtocol::Message’
   58 |         class Message;
      |               ^~~~~~~
/usr/include/inspircd/modules/ircv3_replies.h:140:41: error: ‘msg’ has incomplete type
  140 |                 ClientProtocol::Message msg(cmd.c_str(), ServerInstance->Config->GetServerName());
      |                                         ^~~
/usr/include/inspircd/typedefs.h:58:15: note: forward declaration of ‘class ClientProtocol::Message’
   58 |         class Message;
      |               ^~~~~~~
/usr/include/inspircd/modules/ircv3_replies.h:140:41: error: ‘msg’ has incomplete type
  140 |                 ClientProtocol::Message msg(cmd.c_str(), ServerInstance->Config->GetServerName());
      |                                         ^~~
/usr/include/inspircd/typedefs.h:58:15: note: forward declaration of ‘class ClientProtocol::Message’
   58 |         class Message;
      |               ^~~~~~~
/usr/include/inspircd/modules/ircv3_replies.h:140:41: error: ‘msg’ has incomplete type
  140 |                 ClientProtocol::Message msg(cmd.c_str(), ServerInstance->Config->GetServerName());
      |                                         ^~~
/usr/include/inspircd/typedefs.h:58:15: note: forward declaration of ‘class ClientProtocol::Message’
   58 |         class Message;
      |               ^~~~~~~
/usr/include/inspircd/modules/ircv3_replies.h: In member function ‘void IRCv3::Replies::Reply::Send(LocalUser*, Command*, const std::string&, const T1&, const T2&, const T3&, const T4&, const std::string&)’:
/usr/include/inspircd/modules/ircv3_replies.h:157:41: error: ‘msg’ has incomplete type
  157 |                 ClientProtocol::Message msg(cmd.c_str(), ServerInstance->Config->GetServerName());
      |                                         ^~~
/usr/include/inspircd/typedefs.h:58:15: note: forward declaration of ‘class ClientProtocol::Message’
   58 |         class Message;
      |               ^~~~~~~
/usr/include/inspircd/modules/ircv3_replies.h:157:41: error: ‘msg’ has incomplete type
  157 |                 ClientProtocol::Message msg(cmd.c_str(), ServerInstance->Config->GetServerName());
      |                                         ^~~
/usr/include/inspircd/typedefs.h:58:15: note: forward declaration of ‘class ClientProtocol::Message’
   58 |         class Message;
      |               ^~~~~~~
/usr/include/inspircd/modules/ircv3_replies.h:157:41: error: ‘msg’ has incomplete type
  157 |                 ClientProtocol::Message msg(cmd.c_str(), ServerInstance->Config->GetServerName());
      |                                         ^~~
/usr/include/inspircd/typedefs.h:58:15: note: forward declaration of ‘class ClientProtocol::Message’
   58 |         class Message;
      |               ^~~~~~~
/usr/include/inspircd/modules/ircv3_replies.h:157:41: error: ‘msg’ has incomplete type
  157 |                 ClientProtocol::Message msg(cmd.c_str(), ServerInstance->Config->GetServerName());
      |                                         ^~~
/usr/include/inspircd/typedefs.h:58:15: note: forward declaration of ‘class ClientProtocol::Message’
   58 |         class Message;
      |               ^~~~~~~
/usr/include/inspircd/modules/ircv3_replies.h:157:41: error: ‘msg’ has incomplete type
  157 |                 ClientProtocol::Message msg(cmd.c_str(), ServerInstance->Config->GetServerName());
      |                                         ^~~
/usr/include/inspircd/typedefs.h:58:15: note: forward declaration of ‘class ClientProtocol::Message’
   58 |         class Message;
      |               ^~~~~~~
/usr/include/inspircd/modules/ircv3_replies.h:157:41: error: ‘msg’ has incomplete type
  157 |                 ClientProtocol::Message msg(cmd.c_str(), ServerInstance->Config->GetServerName());
      |                                         ^~~
/usr/include/inspircd/typedefs.h:58:15: note: forward declaration of ‘class ClientProtocol::Message’
   58 |         class Message;
      |               ^~~~~~~
/usr/include/inspircd/modules/ircv3_replies.h:157:41: error: ‘msg’ has incomplete type
  157 |                 ClientProtocol::Message msg(cmd.c_str(), ServerInstance->Config->GetServerName());
      |                                         ^~~
/usr/include/inspircd/typedefs.h:58:15: note: forward declaration of ‘class ClientProtocol::Message’
   58 |         class Message;
      |               ^~~~~~~
/usr/include/inspircd/modules/ircv3_replies.h:157:41: error: ‘msg’ has incomplete type
  157 |                 ClientProtocol::Message msg(cmd.c_str(), ServerInstance->Config->GetServerName());
      |                                         ^~~
/usr/include/inspircd/typedefs.h:58:15: note: forward declaration of ‘class ClientProtocol::Message’
   58 |         class Message;
      |               ^~~~~~~
/usr/include/inspircd/modules/ircv3_replies.h: In member function ‘void IRCv3::Replies::Reply::Send(LocalUser*, Command*, const std::string&, const T1&, const T2&, const T3&, const T4&, const T5&, const std::string&)’:
/usr/include/inspircd/modules/ircv3_replies.h:175:41: error: ‘msg’ has incomplete type
  175 |                 ClientProtocol::Message msg(cmd.c_str(), ServerInstance->Config->GetServerName());
      |                                         ^~~
/usr/include/inspircd/typedefs.h:58:15: note: forward declaration of ‘class ClientProtocol::Message’
   58 |         class Message;
      |               ^~~~~~~
/usr/include/inspircd/modules/ircv3_replies.h:175:41: error: ‘msg’ has incomplete type
  175 |                 ClientProtocol::Message msg(cmd.c_str(), ServerInstance->Config->GetServerName());
      |                                         ^~~
/usr/include/inspircd/typedefs.h:58:15: note: forward declaration of ‘class ClientProtocol::Message’
   58 |         class Message;
      |               ^~~~~~~
/usr/include/inspircd/modules/ircv3_replies.h:175:41: error: ‘msg’ has incomplete type
  175 |                 ClientProtocol::Message msg(cmd.c_str(), ServerInstance->Config->GetServerName());
      |                                         ^~~
/usr/include/inspircd/typedefs.h:58:15: note: forward declaration of ‘class ClientProtocol::Message’
   58 |         class Message;
      |               ^~~~~~~
/usr/include/inspircd/modules/ircv3_replies.h:175:41: error: ‘msg’ has incomplete type
  175 |                 ClientProtocol::Message msg(cmd.c_str(), ServerInstance->Config->GetServerName());
      |                                         ^~~
/usr/include/inspircd/typedefs.h:58:15: note: forward declaration of ‘class ClientProtocol::Message’
   58 |         class Message;
      |               ^~~~~~~
/usr/include/inspircd/modules/ircv3_replies.h:175:41: error: ‘msg’ has incomplete type
  175 |                 ClientProtocol::Message msg(cmd.c_str(), ServerInstance->Config->GetServerName());
      |                                         ^~~
/usr/include/inspircd/typedefs.h:58:15: note: forward declaration of ‘class ClientProtocol::Message’
   58 |         class Message;
      |               ^~~~~~~
/usr/include/inspircd/modules/ircv3_replies.h:175:41: error: ‘msg’ has incomplete type
  175 |                 ClientProtocol::Message msg(cmd.c_str(), ServerInstance->Config->GetServerName());
      |                                         ^~~
/usr/include/inspircd/typedefs.h:58:15: note: forward declaration of ‘class ClientProtocol::Message’
   58 |         class Message;
      |               ^~~~~~~
/usr/include/inspircd/modules/ircv3_replies.h:175:41: error: ‘msg’ has incomplete type
  175 |                 ClientProtocol::Message msg(cmd.c_str(), ServerInstance->Config->GetServerName());
      |                                         ^~~
/usr/include/inspircd/typedefs.h:58:15: note: forward declaration of ‘class ClientProtocol::Message’
   58 |         class Message;
      |               ^~~~~~~
/usr/include/inspircd/modules/ircv3_replies.h:175:41: error: ‘msg’ has incomplete type
  175 |                 ClientProtocol::Message msg(cmd.c_str(), ServerInstance->Config->GetServerName());
      |                                         ^~~
/usr/include/inspircd/typedefs.h:58:15: note: forward declaration of ‘class ClientProtocol::Message’
   58 |         class Message;
      |               ^~~~~~~
/usr/include/inspircd/modules/ircv3_replies.h:175:41: error: ‘msg’ has incomplete type
  175 |                 ClientProtocol::Message msg(cmd.c_str(), ServerInstance->Config->GetServerName());
      |                                         ^~~
/usr/include/inspircd/typedefs.h:58:15: note: forward declaration of ‘class ClientProtocol::Message’
   58 |         class Message;
      |               ^~~~~~~
In file included from /tmp/XDrPsg2cTs/dump1.h:66:
/usr/include/inspircd/modules/ircv3_servertime.h: In member function ‘void IRCv3::ServerTime::Manager::Set(ClientProtocol::Message&, const std::string&)’:
/usr/include/inspircd/modules/ircv3_servertime.h:79:17: error: invalid use of incomplete type ‘class ClientProtocol::Message’
   79 |                 msg.AddTag("time", tagprov, timestr);
      |                 ^~~
/usr/include/inspircd/typedefs.h:58:15: note: forward declaration of ‘class ClientProtocol::Message’
   58 |         class Message;
      |               ^~~~~~~
In file included from /tmp/XDrPsg2cTs/dump1.h:69:
/usr/include/inspircd/modules/names.h: At global scope:
/usr/include/inspircd/modules/names.h:29:45: error: invalid use of incomplete type ‘class Events::ModuleEventListener’
   29 | class Names::EventListener : public Events::ModuleEventListener
      |                                             ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:123:15: note: forward declaration of ‘class Events::ModuleEventListener’
  123 | class Events::ModuleEventListener : private dynamic_reference_base::CaptureHook
      |               ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/modules/names.h: In constructor ‘Names::EventListener::EventListener(Module*)’:
/usr/include/inspircd/modules/names.h:33:19: error: class ‘Names::EventListener’ does not have any field named ‘ModuleEventListener’
   33 |                 : ModuleEventListener(mod, "event/names")
      |                   ^~~~~~~~~~~~~~~~~~~
In file included from /tmp/XDrPsg2cTs/dump1.h:71:
/usr/include/inspircd/modules/reload.h: At global scope:
/usr/include/inspircd/modules/reload.h:58:46: error: invalid use of incomplete type ‘class Events::ModuleEventListener’
   58 |         class EventListener : public Events::ModuleEventListener
      |                                              ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:123:15: note: forward declaration of ‘class Events::ModuleEventListener’
  123 | class Events::ModuleEventListener : private dynamic_reference_base::CaptureHook
      |               ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/modules/reload.h: In constructor ‘ReloadModule::EventListener::EventListener(Module*)’:
/usr/include/inspircd/modules/reload.h:62:27: error: class ‘ReloadModule::EventListener’ does not have any field named ‘ModuleEventListener’
   62 |                         : ModuleEventListener(mod, "event/reloadmodule")
      |                           ^~~~~~~~~~~~~~~~~~~
In file included from /tmp/XDrPsg2cTs/dump1.h:72:
/usr/include/inspircd/modules/sasl.h: At global scope:
/usr/include/inspircd/modules/sasl.h:27:42: error: invalid use of incomplete type ‘class Events::ModuleEventListener’
   27 | class SASLEventListener : public Events::ModuleEventListener
      |                                          ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:123:15: note: forward declaration of ‘class Events::ModuleEventListener’
  123 | class Events::ModuleEventListener : private dynamic_reference_base::CaptureHook
      |               ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/modules/sasl.h: In constructor ‘SASLEventListener::SASLEventListener(Module*)’:
/usr/include/inspircd/modules/sasl.h:31:19: error: class ‘SASLEventListener’ does not have any field named ‘ModuleEventListener’
   31 |                 : ModuleEventListener(mod, "event/sasl")
      |                   ^~~~~~~~~~~~~~~~~~~
In file included from /tmp/XDrPsg2cTs/dump1.h:73:
/usr/include/inspircd/modules/server.h: At global scope:
/usr/include/inspircd/modules/server.h:43:26: error: invalid use of incomplete type ‘class Events::ModuleEventListener’
   43 |         : public Events::ModuleEventListener
      |                          ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:123:15: note: forward declaration of ‘class Events::ModuleEventListener’
  123 | class Events::ModuleEventListener : private dynamic_reference_base::CaptureHook
      |               ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/modules/server.h: In constructor ‘ServerProtocol::BroadcastEventListener::BroadcastEventListener(Module*)’:
/usr/include/inspircd/modules/server.h:47:19: error: class ‘ServerProtocol::BroadcastEventListener’ does not have any field named ‘ModuleEventListener’
   47 |                 : ModuleEventListener(mod, "event/server-broadcast")
      |                   ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/modules/server.h: At global scope:
/usr/include/inspircd/modules/server.h:61:26: error: invalid use of incomplete type ‘class Events::ModuleEventListener’
   61 |         : public Events::ModuleEventListener
      |                          ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:123:15: note: forward declaration of ‘class Events::ModuleEventListener’
  123 | class Events::ModuleEventListener : private dynamic_reference_base::CaptureHook
      |               ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/modules/server.h: In constructor ‘ServerProtocol::LinkEventListener::LinkEventListener(Module*)’:
/usr/include/inspircd/modules/server.h:65:19: error: class ‘ServerProtocol::LinkEventListener’ does not have any field named ‘ModuleEventListener’
   65 |                 : ModuleEventListener(mod, "event/server-link")
      |                   ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/modules/server.h: At global scope:
/usr/include/inspircd/modules/server.h:92:26: error: invalid use of incomplete type ‘class Events::ModuleEventListener’
   92 |         : public Events::ModuleEventListener
      |                          ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:123:15: note: forward declaration of ‘class Events::ModuleEventListener’
  123 | class Events::ModuleEventListener : private dynamic_reference_base::CaptureHook
      |               ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/modules/server.h: In constructor ‘ServerProtocol::MessageEventListener::MessageEventListener(Module*)’:
/usr/include/inspircd/modules/server.h:96:19: error: class ‘ServerProtocol::MessageEventListener’ does not have any field named ‘ModuleEventListener’
   96 |                 : ModuleEventListener(mod, "event/server-message")
      |                   ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/modules/server.h: At global scope:
/usr/include/inspircd/modules/server.h:116:26: error: invalid use of incomplete type ‘class Events::ModuleEventListener’
  116 |         : public Events::ModuleEventListener
      |                          ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:123:15: note: forward declaration of ‘class Events::ModuleEventListener’
  123 | class Events::ModuleEventListener : private dynamic_reference_base::CaptureHook
      |               ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/modules/server.h: In constructor ‘ServerProtocol::SyncEventListener::SyncEventListener(Module*)’:
/usr/include/inspircd/modules/server.h:120:19: error: class ‘ServerProtocol::SyncEventListener’ does not have any field named ‘ModuleEventListener’
  120 |                 : ModuleEventListener(mod, "event/server-sync")
      |                   ^~~~~~~~~~~~~~~~~~~
In file included from /tmp/XDrPsg2cTs/dump1.h:77:
/usr/include/inspircd/modules/stats.h: At global scope:
/usr/include/inspircd/modules/stats.h:32:45: error: invalid use of incomplete type ‘class Events::ModuleEventListener’
   32 | class Stats::EventListener : public Events::ModuleEventListener
      |                                             ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:123:15: note: forward declaration of ‘class Events::ModuleEventListener’
  123 | class Events::ModuleEventListener : private dynamic_reference_base::CaptureHook
      |               ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/modules/stats.h: In constructor ‘Stats::EventListener::EventListener(Module*)’:
/usr/include/inspircd/modules/stats.h:36:19: error: class ‘Stats::EventListener’ does not have any field named ‘ModuleEventListener’
   36 |                 : ModuleEventListener(mod, "event/stats")
      |                   ^~~~~~~~~~~~~~~~~~~
In file included from /tmp/XDrPsg2cTs/dump1.h:78:
/usr/include/inspircd/modules/webirc.h: At global scope:
/usr/include/inspircd/modules/webirc.h:32:26: error: invalid use of incomplete type ‘class Events::ModuleEventListener’
   32 |         : public Events::ModuleEventListener
      |                          ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:123:15: note: forward declaration of ‘class Events::ModuleEventListener’
  123 | class Events::ModuleEventListener : private dynamic_reference_base::CaptureHook
      |               ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/modules/webirc.h: In constructor ‘WebIRC::EventListener::EventListener(Module*)’:
/usr/include/inspircd/modules/webirc.h:36:19: error: class ‘WebIRC::EventListener’ does not have any field named ‘ModuleEventListener’
   36 |                 : ModuleEventListener(mod, "event/webirc")
      |                   ^~~~~~~~~~~~~~~~~~~
In file included from /tmp/XDrPsg2cTs/dump1.h:79:
/usr/include/inspircd/modules/who.h: At global scope:
/usr/include/inspircd/modules/who.h:33:43: error: invalid use of incomplete type ‘class Events::ModuleEventListener’
   33 | class Who::EventListener : public Events::ModuleEventListener
      |                                           ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:123:15: note: forward declaration of ‘class Events::ModuleEventListener’
  123 | class Events::ModuleEventListener : private dynamic_reference_base::CaptureHook
      |               ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/modules/who.h: In constructor ‘Who::EventListener::EventListener(Module*)’:
/usr/include/inspircd/modules/who.h:37:19: error: class ‘Who::EventListener’ does not have any field named ‘ModuleEventListener’
   37 |                 : ModuleEventListener(mod, "event/who")
      |                   ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/modules/who.h: At global scope:
/usr/include/inspircd/modules/who.h:54:26: error: invalid use of incomplete type ‘class Events::ModuleEventListener’
   54 |         : public Events::ModuleEventListener
      |                          ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:123:15: note: forward declaration of ‘class Events::ModuleEventListener’
  123 | class Events::ModuleEventListener : private dynamic_reference_base::CaptureHook
      |               ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/modules/who.h: In constructor ‘Who::MatchEventListener::MatchEventListener(Module*)’:
/usr/include/inspircd/modules/who.h:58:19: error: class ‘Who::MatchEventListener’ does not have any field named ‘ModuleEventListener’
   58 |                 : ModuleEventListener(mod, "event/who-match")
      |                   ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/modules/who.h: At global scope:
/usr/include/inspircd/modules/who.h:73:26: error: invalid use of incomplete type ‘class Events::ModuleEventListener’
   73 |         : public Events::ModuleEventListener
      |                          ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:123:15: note: forward declaration of ‘class Events::ModuleEventListener’
  123 | class Events::ModuleEventListener : private dynamic_reference_base::CaptureHook
      |               ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/modules/who.h: In constructor ‘Who::VisibleEventListener::VisibleEventListener(Module*)’:
/usr/include/inspircd/modules/who.h:77:19: error: class ‘Who::VisibleEventListener’ does not have any field named ‘ModuleEventListener’
   77 |                 : ModuleEventListener(mod, "event/who-visible")
      |                   ^~~~~~~~~~~~~~~~~~~
In file included from /tmp/XDrPsg2cTs/dump1.h:80:
/usr/include/inspircd/modules/whois.h: At global scope:
/usr/include/inspircd/modules/whois.h:63:45: error: invalid use of incomplete type ‘class Events::ModuleEventListener’
   63 | class Whois::EventListener : public Events::ModuleEventListener
      |                                             ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:123:15: note: forward declaration of ‘class Events::ModuleEventListener’
  123 | class Events::ModuleEventListener : private dynamic_reference_base::CaptureHook
      |               ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/modules/whois.h: In constructor ‘Whois::EventListener::EventListener(Module*)’:
/usr/include/inspircd/modules/whois.h:67:19: error: class ‘Whois::EventListener’ does not have any field named ‘ModuleEventListener’
   67 |                 : ModuleEventListener(mod, "event/whois")
      |                   ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/modules/whois.h: At global scope:
/usr/include/inspircd/modules/whois.h:77:49: error: invalid use of incomplete type ‘class Events::ModuleEventListener’
   77 | class Whois::LineEventListener : public Events::ModuleEventListener
      |                                                 ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/event.h:123:15: note: forward declaration of ‘class Events::ModuleEventListener’
  123 | class Events::ModuleEventListener : private dynamic_reference_base::CaptureHook
      |               ^~~~~~~~~~~~~~~~~~~
/usr/include/inspircd/modules/whois.h: In constructor ‘Whois::LineEventListener::LineEventListener(Module*)’:
/usr/include/inspircd/modules/whois.h:81:19: error: class ‘Whois::LineEventListener’ does not have any field named ‘ModuleEventListener’
   81 |                 : ModuleEventListener(mod, "event/whoisline")
      |                   ^~~~~~~~~~~~~~~~~~~
In file included from /tmp/XDrPsg2cTs/dump1.h:95:
/usr/include/inspircd/threadengines/threadengine_win32.h: At global scope:
/usr/include/inspircd/threadengines/threadengine_win32.h:41:18: error: redefinition of ‘class ThreadEngine’
   41 | class CoreExport ThreadEngine
      |                  ^~~~~~~~~~~~
In file included from /usr/include/inspircd/compat.h:102:
/usr/include/inspircd/threadengines/threadengine_pthread.h:40:18: note: previous definition of ‘class ThreadEngine’
   40 | class CoreExport ThreadEngine
      |                  ^~~~~~~~~~~~
/usr/include/inspircd/threadengines/threadengine_win32.h:82:18: error: redefinition of ‘class Mutex’
   82 | class CoreExport Mutex
      |                  ^~~~~
/usr/include/inspircd/threadengines/threadengine_pthread.h:79:18: note: previous definition of ‘class Mutex’
   79 | class CoreExport Mutex
      |                  ^~~~~
/usr/include/inspircd/threadengines/threadengine_win32.h:105:7: error: redefinition of ‘class ThreadQueueData’
  105 | class ThreadQueueData : public Mutex
      |       ^~~~~~~~~~~~~~~
/usr/include/inspircd/threadengines/threadengine_pthread.h:110:7: note: previous definition of ‘class ThreadQueueData’
  110 | class ThreadQueueData : public Mutex
      |       ^~~~~~~~~~~~~~~
/usr/include/inspircd/threadengines/threadengine_win32.h:134:7: error: redefinition of ‘class ThreadSignalData’
  134 | class ThreadSignalData
      |       ^~~~~~~~~~~~~~~~
/usr/include/inspircd/threadengines/threadengine_pthread.h:136:7: note: previous definition of ‘class ThreadSignalData’
  136 | class ThreadSignalData
      |       ^~~~~~~~~~~~~~~~

