From 7f9931b3f92d05c7c641d08fed50e19bc9e2050f Mon Sep 17 00:00:00 2001 From: Ivan Donchevskii Date: Tue, 22 Jan 2019 09:34:14 +0100 Subject: [PATCH] Fix MSVC2015 build - error C3431: 'LanguageExtension': a scoped enumeration cannot be redeclared as an unscoped enumeration - add constructors to SlotUsage - do not use pointers for back_insert_iterator. Change-Id: Id6df08436de639b70fdf6ccc4914f8dee2cb8628 Reviewed-by: Marco Bubke Reviewed-by: Ivan Donchevskii --- src/libs/utils/cpplanguage_details.h | 5 ++--- src/plugins/cpptools/projectpart.h | 2 +- .../source/modifiedtimechecker.h | 18 +++++++++--------- .../source/taskschedulerinterface.h | 5 +++++ 4 files changed, 17 insertions(+), 13 deletions(-) diff --git a/src/libs/utils/cpplanguage_details.h b/src/libs/utils/cpplanguage_details.h index a4defb32622..7666ee7fcf1 100644 --- a/src/libs/utils/cpplanguage_details.h +++ b/src/libs/utils/cpplanguage_details.h @@ -60,14 +60,13 @@ enum class LanguageExtension : unsigned char { Q_DECLARE_FLAGS(LanguageExtensions, LanguageExtension) -constexpr enum LanguageExtension operator|(const LanguageExtension first, - const LanguageExtension second) +constexpr LanguageExtension operator|(LanguageExtension first, LanguageExtension second) { return static_cast( (static_cast(first) | static_cast(second))); } -constexpr bool operator&&(const LanguageExtension first, const LanguageExtension second) +constexpr bool operator&&(LanguageExtension first, LanguageExtension second) { return static_cast(first) & static_cast(second); } diff --git a/src/plugins/cpptools/projectpart.h b/src/plugins/cpptools/projectpart.h index e357db3a3de..71df5e1ee5f 100644 --- a/src/plugins/cpptools/projectpart.h +++ b/src/plugins/cpptools/projectpart.h @@ -93,7 +93,7 @@ public: QString callGroupId; // Versions, features and extensions - ::Utils::Language language = Utils::Language::Cxx; + ::Utils::Language language = ::Utils::Language::Cxx; ::Utils::LanguageVersion languageVersion = ::Utils::LanguageVersion::LatestCxx; ::Utils::LanguageExtensions languageExtensions = ::Utils::LanguageExtension::None; CPlusPlus::LanguageFeatures languageFeatures; diff --git a/src/tools/clangpchmanagerbackend/source/modifiedtimechecker.h b/src/tools/clangpchmanagerbackend/source/modifiedtimechecker.h index 9e67a27b14d..9d6e2bf6f6c 100644 --- a/src/tools/clangpchmanagerbackend/source/modifiedtimechecker.h +++ b/src/tools/clangpchmanagerbackend/source/modifiedtimechecker.h @@ -55,18 +55,18 @@ public: void pathsChanged(const FilePathIds &filePathIds) { - using SourceTimeStampPointers = std::vector; + using SourceTimeStampReferences = std::vector>; - class BackInserterIterator : public std::back_insert_iterator + class BackInserterIterator : public std::back_insert_iterator { public: - BackInserterIterator(SourceTimeStampPointers &container) - : std::back_insert_iterator(container) + BackInserterIterator(SourceTimeStampReferences &container) + : std::back_insert_iterator(container) {} BackInserterIterator &operator=(SourceTimeStamp &timeStamp) { - container->push_back(&timeStamp); + container->push_back(std::ref(timeStamp)); return *this; } @@ -74,7 +74,7 @@ public: BackInserterIterator &operator*() { return *this; } }; - SourceTimeStampPointers timeStampsToUpdate; + SourceTimeStampReferences timeStampsToUpdate; timeStampsToUpdate.reserve(filePathIds.size()); std::set_intersection(m_currentSourceTimeStamps.begin(), @@ -83,9 +83,9 @@ public: filePathIds.end(), BackInserterIterator(timeStampsToUpdate)); - for (SourceTimeStamp *sourceTimeStamp : timeStampsToUpdate) { - sourceTimeStamp->lastModified = m_getModifiedTime( - m_filePathCache.filePath(sourceTimeStamp->sourceId)); + for (SourceTimeStamp &sourceTimeStamp : timeStampsToUpdate) { + sourceTimeStamp.lastModified = m_getModifiedTime( + m_filePathCache.filePath(sourceTimeStamp.sourceId)); } } diff --git a/src/tools/clangpchmanagerbackend/source/taskschedulerinterface.h b/src/tools/clangpchmanagerbackend/source/taskschedulerinterface.h index daff16cff80..a0835d3c633 100644 --- a/src/tools/clangpchmanagerbackend/source/taskschedulerinterface.h +++ b/src/tools/clangpchmanagerbackend/source/taskschedulerinterface.h @@ -33,6 +33,11 @@ using uint = unsigned int; struct SlotUsage { + SlotUsage() = default; + SlotUsage(uint free, uint used) + : free(free) + , used(used) + {} uint free = 0; uint used = 0; };