From ef1b3c2ea0f3f44845f0db3419780584cb1aa545 Mon Sep 17 00:00:00 2001 From: Kitzunu <24550914+Kitzunu@users.noreply.github.com> Date: Mon, 27 Nov 2023 00:07:39 +0100 Subject: [PATCH] chore(Core/Misc): Clean up workarounds (#17870) * Clean advstd to use std c++20 features * Use ABORT instead of std::abort Co-authored-by: Shauren --- src/common/Utilities/EventProcessor.h | 3 +-- src/common/Utilities/Types.h | 4 +--- src/common/Utilities/advstd.h | 16 ---------------- src/server/database/Database/MySQLConnection.cpp | 8 ++++---- src/server/game/Chat/ChatCommands/ChatCommand.h | 3 +-- .../game/Chat/ChatCommands/ChatCommandTags.h | 3 +-- 6 files changed, 8 insertions(+), 29 deletions(-) diff --git a/src/common/Utilities/EventProcessor.h b/src/common/Utilities/EventProcessor.h index 40ff62a49..0ebd48077 100644 --- a/src/common/Utilities/EventProcessor.h +++ b/src/common/Utilities/EventProcessor.h @@ -21,7 +21,6 @@ #include "Define.h" #include "Duration.h" #include "Random.h" -#include "advstd.h" #include #include @@ -90,7 +89,7 @@ class LambdaBasicEvent : public BasicEvent }; template -using is_lambda_event = std::enable_if_t>>>; +using is_lambda_event = std::enable_if_t>>>; typedef std::multimap EventList; diff --git a/src/common/Utilities/Types.h b/src/common/Utilities/Types.h index 0fb811255..ad7b2c498 100644 --- a/src/common/Utilities/Types.h +++ b/src/common/Utilities/Types.h @@ -18,8 +18,6 @@ #ifndef _TYPES_H_ #define _TYPES_H_ -#include "advstd.h" - namespace Acore { // end "iterator" tag for find_type_if @@ -35,7 +33,7 @@ namespace Acore }; template typename Check, typename T1, typename... Ts> - struct find_type_if : std::conditional_t::value, advstd::type_identity, find_type_if> + struct find_type_if : std::conditional_t::value, std::type_identity, find_type_if> { }; diff --git a/src/common/Utilities/advstd.h b/src/common/Utilities/advstd.h index 09485ff4b..eafe58e4c 100644 --- a/src/common/Utilities/advstd.h +++ b/src/common/Utilities/advstd.h @@ -24,22 +24,6 @@ // this namespace holds implementations of upcoming stdlib features that our c++ version doesn't have yet namespace advstd { - // This workaround for std::remove_cvref_t, std::type_identify is needed for GCC 8... - /// @todo: remove when we drop GCC 8 support. https://en.cppreference.com/w/cpp/compiler_support/20 - // C++20 advstd::remove_cvref_t - template - using remove_cvref_t = std::remove_cv_t>; - - // C++20 std::type_identity - template - struct type_identity - { - using type = T; - }; - - // C++20 std::type_identity_t - template - using type_identity_t = typename type_identity::type; } #endif // _ADV_STD_H_ diff --git a/src/server/database/Database/MySQLConnection.cpp b/src/server/database/Database/MySQLConnection.cpp index 20c410de0..73c3653cb 100644 --- a/src/server/database/Database/MySQLConnection.cpp +++ b/src/server/database/Database/MySQLConnection.cpp @@ -581,7 +581,7 @@ bool MySQLConnection::_HandleMySQLErrno(uint32 errNo, uint8 attempts /*= 5*/) { LOG_FATAL("sql.sql", "Could not re-prepare statements!"); std::this_thread::sleep_for(10s); - std::abort(); + ABORT(); } LOG_INFO("sql.sql", "Successfully reconnected to {} @{}:{} ({}).", @@ -600,7 +600,7 @@ bool MySQLConnection::_HandleMySQLErrno(uint32 errNo, uint8 attempts /*= 5*/) // We could also initiate a shutdown through using std::raise(SIGTERM) std::this_thread::sleep_for(10s); - std::abort(); + ABORT(); } else { @@ -624,12 +624,12 @@ bool MySQLConnection::_HandleMySQLErrno(uint32 errNo, uint8 attempts /*= 5*/) case ER_NO_SUCH_TABLE: LOG_ERROR("sql.sql", "Your database structure is not up to date. Please make sure you've executed all queries in the sql/updates folders."); std::this_thread::sleep_for(10s); - std::abort(); + ABORT(); return false; case ER_PARSE_ERROR: LOG_ERROR("sql.sql", "Error while parsing SQL. Core fix required."); std::this_thread::sleep_for(10s); - std::abort(); + ABORT(); return false; default: LOG_ERROR("sql.sql", "Unhandled MySQL errno {}. Unexpected behaviour possible.", errNo); diff --git a/src/server/game/Chat/ChatCommands/ChatCommand.h b/src/server/game/Chat/ChatCommands/ChatCommand.h index 21a45409a..2351b1b03 100644 --- a/src/server/game/Chat/ChatCommands/ChatCommand.h +++ b/src/server/game/Chat/ChatCommands/ChatCommand.h @@ -27,7 +27,6 @@ #include "Optional.h" #include "StringFormat.h" #include "Util.h" -#include "advstd.h" #include #include #include @@ -115,7 +114,7 @@ namespace Acore::Impl::ChatCommands } template struct HandlerToTuple { static_assert(Acore::dependant_false_v, "Invalid command handler signature"); }; - template struct HandlerToTuple { using type = std::tuple...>; }; + template struct HandlerToTuple { using type = std::tuple...>; }; template using TupleType = typename HandlerToTuple::type; struct CommandInvoker diff --git a/src/server/game/Chat/ChatCommands/ChatCommandTags.h b/src/server/game/Chat/ChatCommands/ChatCommandTags.h index 75dd4cc53..bea015ef4 100644 --- a/src/server/game/Chat/ChatCommands/ChatCommandTags.h +++ b/src/server/game/Chat/ChatCommands/ChatCommandTags.h @@ -23,7 +23,6 @@ #include "ObjectGuid.h" #include "Optional.h" #include "Util.h" -#include "advstd.h" #include #include #include @@ -204,7 +203,7 @@ namespace Acore::ChatCommands struct Hyperlink : Acore::Impl::ChatCommands::ContainerTag { using value_type = typename linktag::value_type; - using storage_type = advstd::remove_cvref_t; + using storage_type = std::remove_cvref_t; operator value_type() const { return val; } value_type operator*() const { return val; }