diff --git a/src/libs/utils/algorithm.h b/src/libs/utils/algorithm.h index 7692b987fee..13aa992efc0 100644 --- a/src/libs/utils/algorithm.h +++ b/src/libs/utils/algorithm.h @@ -626,6 +626,20 @@ Container qobject_container_cast(const Container &container) return result; } +////////////////// +// static_container_cast +///////////////// +template class Container, typename Base> +Container static_container_cast(const Container &container) +{ + Container result; + reserve(result, container.size()); + auto ins = inserter(result); + for (Base val : container) + ins = static_cast(val); + return result; +} + ////////////////// // sort ///////////////// diff --git a/src/plugins/android/androidconfigurations.cpp b/src/plugins/android/androidconfigurations.cpp index c281f25dda7..fbc99f29b4a 100644 --- a/src/plugins/android/androidconfigurations.cpp +++ b/src/plugins/android/androidconfigurations.cpp @@ -1032,9 +1032,7 @@ void AndroidConfigurations::updateAutomaticKitList() && tc->typeId() == Constants::ANDROID_TOOLCHAIN_ID && !static_cast(tc)->isSecondaryToolChain(); }); - const QList toolchains = Utils::transform(tmp, [](ToolChain *tc) { - return static_cast(tc); - }); + const auto toolchains = Utils::static_container_cast(tmp); for (AndroidToolChain *tc : toolchains) { if (tc->isSecondaryToolChain() || tc->language() != Core::Id(ProjectExplorer::Constants::CXX_LANGUAGE_ID)) continue; diff --git a/src/plugins/android/androidsdkmanager.cpp b/src/plugins/android/androidsdkmanager.cpp index 846fe9bdd9f..af88d750749 100644 --- a/src/plugins/android/androidsdkmanager.cpp +++ b/src/plugins/android/androidsdkmanager.cpp @@ -313,7 +313,7 @@ SdkPlatformList AndroidSdkManager::installedSdkPlatforms() { AndroidSdkPackageList list = m_d->filteredPackages(AndroidSdkPackage::Installed, AndroidSdkPackage::SdkPlatformPackage); - return Utils::qobject_container_cast(list); + return Utils::static_container_cast(list); } const AndroidSdkPackageList &AndroidSdkManager::allSdkPackages() diff --git a/src/plugins/ios/iosconfigurations.cpp b/src/plugins/ios/iosconfigurations.cpp index 4e8dd41aa25..4289542954a 100644 --- a/src/plugins/ios/iosconfigurations.cpp +++ b/src/plugins/ios/iosconfigurations.cpp @@ -596,7 +596,7 @@ QList IosToolChainFactory::autoDetect(const QList &exi { QList existingClangToolChains = clangToolChains(existingToolChains); const QList platforms = XcodeProbe::detectPlatforms().values(); - QList toolChains; + QList toolChains; toolChains.reserve(platforms.size()); foreach (const XcodePlatform &platform, platforms) { for (const XcodePlatform::ToolchainTarget &target : platform.targets) { @@ -614,7 +614,7 @@ QList IosToolChainFactory::autoDetect(const QList &exi createOrAdd(platformToolchains.second, ProjectExplorer::Constants::CXX_LANGUAGE_ID); } } - return Utils::transform(toolChains, [](ClangToolChain *tc) -> ToolChain * { return tc; }); + return toolChains; } QString DevelopmentTeam::identifier() const diff --git a/src/plugins/projectexplorer/target.cpp b/src/plugins/projectexplorer/target.cpp index d09ac5f3618..1d37a011016 100644 --- a/src/plugins/projectexplorer/target.cpp +++ b/src/plugins/projectexplorer/target.cpp @@ -358,9 +358,9 @@ BuildTargetInfoList Target::applicationTargets() const QList Target::projectConfigurations() const { QList result; - result.append(Utils::qobject_container_cast(buildConfigurations())); - result.append(Utils::qobject_container_cast(deployConfigurations())); - result.append(Utils::qobject_container_cast(runConfigurations())); + result.append(Utils::static_container_cast(buildConfigurations())); + result.append(Utils::static_container_cast(deployConfigurations())); + result.append(Utils::static_container_cast(runConfigurations())); return result; }