From 30aa5e7c223cb959494ae05daefd6b4e43b20c58 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Sat, 15 Jul 2023 17:35:16 +0300 Subject: [PATCH] Fix incompatibility with GCC < 10.1. --- src/libs/vlayout/vtextmanager.h | 3 ++- src/libs/vmisc/def.h | 14 +++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/libs/vlayout/vtextmanager.h b/src/libs/vlayout/vtextmanager.h index 21fb12914..c8c22a647 100644 --- a/src/libs/vlayout/vtextmanager.h +++ b/src/libs/vlayout/vtextmanager.h @@ -39,6 +39,7 @@ #include #include +#include "../vmisc/def.h" #include "../vmisc/defglobal.h" class VPieceLabelData; @@ -74,7 +75,7 @@ class VTextManager Q_DECLARE_TR_FUNCTIONS(VTextManager) // NOLINT public: - VTextManager() noexcept = default; + DEF_CONSTRUCTOR(VTextManager) virtual ~VTextManager() = default; VTextManager(const VTextManager &text) = default; diff --git a/src/libs/vmisc/def.h b/src/libs/vmisc/def.h index d2571e3bf..a3813471f 100644 --- a/src/libs/vmisc/def.h +++ b/src/libs/vmisc/def.h @@ -68,7 +68,7 @@ template class QSharedPointer; #endif #endif -#if defined(Q_COMPILER_GCC) && defined(Q_CC_GNU) && defined(Q_CC_GNU_VERSION) && (Q_CC_GNU_VERSION <= 40900) +#if (defined(Q_CC_GNU) && Q_CC_GNU <= 409) && !defined(Q_CC_CLANG) // NOLINTNEXTLINE(cppcoreguidelines-macro-usage) #define COPY_CONSTRUCTOR_IMPL(className) \ className::className(const className &item) \ @@ -90,6 +90,18 @@ template class QSharedPointer; #define COPY_CONSTRUCTOR_IMPL_2(className, baseClassName) className::className(const className &) = default; #endif +// https://stackoverflow.com/questions/75008386/constructor-is-implicitly-deleted-because-its-exception-specification-does-not-m +#if (defined(Q_CC_GNU) && Q_CC_GNU < 1001) && !defined(Q_CC_CLANG) +// NOLINTNEXTLINE(cppcoreguidelines-macro-usage) +#define DEF_CONSTRUCTOR(className) \ + className() noexcept \ + { \ + } +#else +// NOLINTNEXTLINE(cppcoreguidelines-macro-usage) +#define DEF_CONSTRUCTOR(className) className() noexcept = default; +#endif + class QComboBox; class QMarginsF; class VTranslateMeasurements;