Fixed compiling under GCC and introduced Timer events

This commit is contained in:
feedc0de committed 2024-01-02 21:38:41 +01:00
1 parent ce791f5ff3
commit 59d591267e
7 files changed
+96 -29

No files matched your search

+11 -5
View File
@@ -136,6 +136,16 @@ QDataStream &operator<<(QDataStream &ds, const std::variant<T...> &variant)
return ds;
}
// for idiotic GCC we cannot use the usual lambda syntax but instead
// have to provide a template method, GCC sucks
template<typename T, typename ...Tvariant>
std::variant<Tvariant...> variantUnpacker(QDataStream& ds)
{
T value;
ds >> value;
return value;
}
template<typename ...T>
QDataStream &operator>>(QDataStream &ds, std::variant<T...> &variant)
{
@@ -144,11 +154,7 @@ QDataStream &operator>>(QDataStream &ds, std::variant<T...> &variant)
using func_t = std::variant<T...> (QDataStream&);
static constexpr func_t *funcs[] = {
[](QDataStream& ds) -> std::variant<T...> {
T value;
ds >> value;
return value;
}...
variantUnpacker<T, T...>...
};
variant = funcs[index](ds);