This commit addresses a compatibility issue introduced by GCC
in version 13 (refer to [1]). The issue is present in both
the Arch base system and the latest version of Fedora.
To resolve this, the commit introduces a Kernel-mimicking approach
through a new `Compiler.hpp` file. In this file, we define various
compiler hacks required to enhance code readability by reducing verbosity.
For more details on the issue, see [1]: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107134
```
In file included from ./Boss/Msg/RequestPeerFromScid.hpp:4,
from Boss/Mod/PeerFromScidMapper.cpp:3:
./Ln/Scid.hpp:16:14: error: 'uint64_t' in namespace 'std' does not name a type; did you mean 'wint_t'?
16 | std::uint64_t val;
| ^~~~~~~~
| wint_t
./Ln/Scid.hpp: In constructor 'Ln::Scid::Scid(std::nullptr_t)':
./Ln/Scid.hpp:19:44: error: class 'Ln::Scid' does not have any field named 'val'
19 | Scid(std::nullptr_t _ = nullptr) : val(0) { }
| ^~~
./Ln/Scid.hpp: In member function 'Ln::Scid::operator bool() const':
./Ln/Scid.hpp:25:24: error: 'val' was not declared in this scope
25 | return val != 0;
| ^~~
./Ln/Scid.hpp: In member function 'bool Ln::Scid::operator==(const Ln::Scid&) const':
./Ln/Scid.hpp:32:24: error: 'val' was not declared in this scope
32 | return val == i.val;
| ^~~
./Ln/Scid.hpp:32:33: error: 'const class Ln::Scid' has no member named 'val'
32 | return val == i.val;
| ^~~
./Ln/Scid.hpp: In member function 'bool Ln::Scid::operator<(const Ln::Scid&) const':
./Ln/Scid.hpp:39:24: error: 'val' was not declared in this scope
39 | return val < i.val;
| ^~~
./Ln/Scid.hpp:39:32: error: 'const class Ln::Scid' has no member named 'val'
39 | return val < i.val;
| ^~~
/bin/sh ./libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I./external/basicsecure/ -I./external/bitcoin-ripemd160/ -I./external/bitcoin-sha256/ -I./external/secp256k1/include/ -I./external/jsmn -Wall -Werror -pthread -Wno-noexcept-type -DUSE_VALGRIND -O2 -MT Boss/Mod/libclboss_la-UnmanagedManager.lo -MD -MP -MF Boss/Mod/.deps/libclboss_la-UnmanagedManager.Tpo -c -o Boss/Mod/libclboss_la-UnmanagedManager.lo `test -f 'Boss/Mod/UnmanagedManager.cpp' || echo './'`Boss/Mod/UnmanagedManager.cpp
libtool: compile: g++ -DHAVE_CONFIG_H -I. -I./external/basicsecure/ -I./external/bitcoin-ripemd160/ -I./external/bitcoin-sha256/ -I./external/secp256k1/include/ -I./external/jsmn -Wall -Werror -pthread -Wno-noexcept-type -DUSE_VALGRIND -O2 -MT Boss/Mod/libclboss_la-UnmanagedManager.lo -MD -MP -MF Boss/Mod/.deps/libclboss_la-UnmanagedManager.Tpo -c Boss/Mod/UnmanagedManager.cpp -o Boss/Mod/libclboss_la-UnmanagedManager.o
```
Reported-by: Lakshya Singh <@king-11>
Co-Developed-by: Lakshya Singh <@king-11>
Signed-off-by: Vincenzo Palazzo <vincenzopalazzodev@gmail.com>