diff --git a/share/qtcreator/qml/qmlpuppet/commands/childrenchangedcommand.cpp b/share/qtcreator/qml/qmlpuppet/commands/childrenchangedcommand.cpp
index 39a429968e3caa593b3d04dcc5bc28da490de8f2..61221e062c8e35c21f660bac68af98399b01c67d 100644
--- a/share/qtcreator/qml/qmlpuppet/commands/childrenchangedcommand.cpp
+++ b/share/qtcreator/qml/qmlpuppet/commands/childrenchangedcommand.cpp
@@ -27,6 +27,8 @@
 
 #include <QDebug>
 
+#include <algorithm>
+
 namespace QmlDesigner {
 
 ChildrenChangedCommand::ChildrenChangedCommand()
@@ -58,8 +60,8 @@ QVector<InformationContainer> ChildrenChangedCommand::informations() const
 
 void ChildrenChangedCommand::sort()
 {
-    qSort(m_childrenVector);
-    qSort(m_informationVector);
+    std::sort(m_childrenVector.begin(), m_childrenVector.end());
+    std::sort(m_informationVector.begin(), m_informationVector.end());
 }
 
 QDataStream &operator<<(QDataStream &out, const ChildrenChangedCommand &command)
diff --git a/share/qtcreator/qml/qmlpuppet/commands/componentcompletedcommand.cpp b/share/qtcreator/qml/qmlpuppet/commands/componentcompletedcommand.cpp
index d0ec69f3624c8cd12fbf9d6d361ed6a665c70e48..38f5d53c9a37e17e902f8493baa0fef65320318a 100644
--- a/share/qtcreator/qml/qmlpuppet/commands/componentcompletedcommand.cpp
+++ b/share/qtcreator/qml/qmlpuppet/commands/componentcompletedcommand.cpp
@@ -28,6 +28,8 @@
 #include <QDataStream>
 #include <QDebug>
 
+#include <algorithm>
+
 namespace QmlDesigner {
 
 ComponentCompletedCommand::ComponentCompletedCommand()
@@ -46,7 +48,7 @@ QVector<qint32> ComponentCompletedCommand::instances() const
 
 void ComponentCompletedCommand::sort()
 {
-    qSort(m_instanceVector);
+    std::sort(m_instanceVector.begin(), m_instanceVector.end());
 }
 
 QDataStream &operator<<(QDataStream &out, const ComponentCompletedCommand &command)
diff --git a/share/qtcreator/qml/qmlpuppet/commands/informationchangedcommand.cpp b/share/qtcreator/qml/qmlpuppet/commands/informationchangedcommand.cpp
index 27dd5c29157f7b82372209679c66eb48710b2391..82521f223a1696c37854e60b2358bd260fcb1dfd 100644
--- a/share/qtcreator/qml/qmlpuppet/commands/informationchangedcommand.cpp
+++ b/share/qtcreator/qml/qmlpuppet/commands/informationchangedcommand.cpp
@@ -30,6 +30,8 @@
 
 #include "propertyvaluecontainer.h"
 
+#include <algorithm>
+
 namespace QmlDesigner {
 
 InformationChangedCommand::InformationChangedCommand()
@@ -48,7 +50,7 @@ QVector<InformationContainer> InformationChangedCommand::informations() const
 
 void InformationChangedCommand::sort()
 {
-    qSort(m_informationVector);
+    std::sort(m_informationVector.begin(), m_informationVector.end());
 }
 
 QDataStream &operator<<(QDataStream &out, const InformationChangedCommand &command)
diff --git a/share/qtcreator/qml/qmlpuppet/commands/pixmapchangedcommand.cpp b/share/qtcreator/qml/qmlpuppet/commands/pixmapchangedcommand.cpp
index e4f461d4035996042234f9240c2584c01f8c9c54..e5ea2d3298ac007377dd0844fb350e0eb6d4410e 100644
--- a/share/qtcreator/qml/qmlpuppet/commands/pixmapchangedcommand.cpp
+++ b/share/qtcreator/qml/qmlpuppet/commands/pixmapchangedcommand.cpp
@@ -29,6 +29,8 @@
 
 #include <QVarLengthArray>
 
+#include <algorithm>
+
 namespace QmlDesigner {
 
 PixmapChangedCommand::PixmapChangedCommand()
@@ -47,7 +49,7 @@ QVector<ImageContainer> PixmapChangedCommand::images() const
 
 void PixmapChangedCommand::sort()
 {
-    qSort(m_imageVector);
+    std::sort(m_imageVector.begin(), m_imageVector.end());
 }
 
 QDataStream &operator<<(QDataStream &out, const PixmapChangedCommand &command)
diff --git a/share/qtcreator/qml/qmlpuppet/commands/statepreviewimagechangedcommand.cpp b/share/qtcreator/qml/qmlpuppet/commands/statepreviewimagechangedcommand.cpp
index 4de138e12177e5aa75a908098350955a003990de..1aa49d16521a7915c7f6c605146cc2a0228e2ce8 100644
--- a/share/qtcreator/qml/qmlpuppet/commands/statepreviewimagechangedcommand.cpp
+++ b/share/qtcreator/qml/qmlpuppet/commands/statepreviewimagechangedcommand.cpp
@@ -27,6 +27,8 @@
 
 #include <QDebug>
 
+#include <algorithm>
+
 namespace QmlDesigner {
 
 StatePreviewImageChangedCommand::StatePreviewImageChangedCommand()
@@ -45,7 +47,7 @@ QVector<ImageContainer> StatePreviewImageChangedCommand::previews()const
 
 void StatePreviewImageChangedCommand::sort()
 {
-    qSort(m_previewVector);
+    std::sort(m_previewVector.begin(), m_previewVector.end());
 }
 
 QDataStream &operator<<(QDataStream &out, const StatePreviewImageChangedCommand &command)
diff --git a/share/qtcreator/qml/qmlpuppet/commands/tokencommand.cpp b/share/qtcreator/qml/qmlpuppet/commands/tokencommand.cpp
index bcad1b34487e15d1c3d7af7e81c8fa2ae81573dc..f54aa6fd8831bb444de1006ff650fbe66deac9ad 100644
--- a/share/qtcreator/qml/qmlpuppet/commands/tokencommand.cpp
+++ b/share/qtcreator/qml/qmlpuppet/commands/tokencommand.cpp
@@ -28,6 +28,8 @@
 #include <QDataStream>
 #include <QDebug>
 
+#include <algorithm>
+
 namespace QmlDesigner {
 
 TokenCommand::TokenCommand()
@@ -59,7 +61,7 @@ QVector<qint32> TokenCommand::instances() const
 
 void TokenCommand::sort()
 {
-    qSort(m_instanceIdVector);
+    std::sort(m_instanceIdVector.begin(), m_instanceIdVector.end());
 }
 
 QDataStream &operator<<(QDataStream &out, const TokenCommand &command)
diff --git a/share/qtcreator/qml/qmlpuppet/commands/valueschangedcommand.cpp b/share/qtcreator/qml/qmlpuppet/commands/valueschangedcommand.cpp
index 65cd22bbf108d6f320cf1f2fc963bac2a16279f7..e53d87b9ace56d5115d315a654d1c21355c65f88 100644
--- a/share/qtcreator/qml/qmlpuppet/commands/valueschangedcommand.cpp
+++ b/share/qtcreator/qml/qmlpuppet/commands/valueschangedcommand.cpp
@@ -31,6 +31,8 @@
 
 #include <cstring>
 
+#include <algorithm>
+
 namespace QmlDesigner {
 
 // using cache as a container which deletes sharedmemory pointers at process exit
@@ -68,7 +70,7 @@ void ValuesChangedCommand::removeSharedMemorys(const QVector<qint32> &keyNumberV
 
 void ValuesChangedCommand::sort()
 {
-    qSort(m_valueChangeVector);
+    std::sort(m_valueChangeVector.begin(), m_valueChangeVector.end());
 }
 
 static const QLatin1String valueKeyTemplateString("Values-%1");
diff --git a/src/libs/extensionsystem/pluginmanager.cpp b/src/libs/extensionsystem/pluginmanager.cpp
index cf8fd1b85e49f2339a45c39335d9a70baaf4dd58..554861729c9f2c31db9aad1d48b51b44a6480fe7 100644
--- a/src/libs/extensionsystem/pluginmanager.cpp
+++ b/src/libs/extensionsystem/pluginmanager.cpp
@@ -275,11 +275,6 @@ using namespace ExtensionSystem::Internal;
 static Internal::PluginManagerPrivate *d = 0;
 static PluginManager *m_instance = 0;
 
-static bool lessThanByPluginName(const PluginSpec *one, const PluginSpec *two)
-{
-    return one->name() < two->name();
-}
-
 /*!
     Gets the unique plugin manager instance.
 */
@@ -588,7 +583,7 @@ static QStringList subList(const QStringList &in, const QString &key)
     QStringList rc;
     // Find keyword and copy arguments until end or next keyword
     const QStringList::const_iterator inEnd = in.constEnd();
-    QStringList::const_iterator it = qFind(in.constBegin(), inEnd, key);
+    QStringList::const_iterator it = std::find(in.constBegin(), inEnd, key);
     if (it != inEnd) {
         const QChar nextIndicator = QLatin1Char(':');
         for (++it; it != inEnd && !it->startsWith(nextIndicator); ++it)
@@ -1468,7 +1463,7 @@ void PluginManagerPrivate::readPluginPaths()
     }
     resolveDependencies();
     // ensure deterministic plugin load order by sorting
-    qSort(pluginSpecs.begin(), pluginSpecs.end(), lessThanByPluginName);
+    Utils::sort(pluginSpecs, &PluginSpec::name);
     emit q->pluginsChanged();
 }
 
diff --git a/src/libs/modelinglib/qmt/style/defaultstyleengine.cpp b/src/libs/modelinglib/qmt/style/defaultstyleengine.cpp
index 22a1e122b55620d600b0b19519631204acfc9dad..e6438e96c95b510c8809a53533ddc4974aa7a9e2 100644
--- a/src/libs/modelinglib/qmt/style/defaultstyleengine.cpp
+++ b/src/libs/modelinglib/qmt/style/defaultstyleengine.cpp
@@ -37,6 +37,8 @@
 #include "qmt/diagram/dannotation.h"
 #include "qmt/infrastructure/qmtassert.h"
 
+#include <utils/algorithm.h>
+
 #include <QSet>
 #include <QDebug>
 
@@ -292,7 +294,7 @@ const Style *DefaultStyleEngine::applyObjectStyle(const Style *baseStyle, const
     int depth = 0;
     if (!depths.isEmpty()) {
         QList<int> keys = depths.keys();
-        qSort(keys);
+        Utils::sort(keys);
         foreach (int d, keys) {
             DepthProperties properties = depths.value(d);
             if (properties.m_elementType == elementType
diff --git a/src/libs/qmljs/qmljsmodelmanagerinterface.cpp b/src/libs/qmljs/qmljsmodelmanagerinterface.cpp
index bdd6e6eeab2afe5f719adb1bc9a449a475089db2..e098343391654c8c9874fbf5b23c39ce6f82a2ed 100644
--- a/src/libs/qmljs/qmljsmodelmanagerinterface.cpp
+++ b/src/libs/qmljs/qmljsmodelmanagerinterface.cpp
@@ -34,6 +34,7 @@
 #include "qmljsviewercontext.h"
 
 #include <cplusplus/cppmodelmanagerbase.h>
+#include <utils/algorithm.h>
 #include <utils/hostosinfo.h>
 #include <utils/runextensions.h>
 
@@ -439,9 +440,9 @@ void ModelManagerInterface::iterateQrcFiles(ProjectExplorer::Project *project,
     } else {
         pInfos = projectInfos();
         if (resources == ActiveQrcResources) // make the result predictable
-            qSort(pInfos.begin(), pInfos.end(), &pInfoLessThanActive);
+            Utils::sort(pInfos, &pInfoLessThanActive);
         else
-            qSort(pInfos.begin(), pInfos.end(), &pInfoLessThanAll);
+            Utils::sort(pInfos, &pInfoLessThanAll);
     }
 
     QSet<QString> pathsChecked;
diff --git a/src/libs/qmljs/qmljsscanner.cpp b/src/libs/qmljs/qmljsscanner.cpp
index 971334da71f4a227efd74593fd0711edb90f4aa3..433b3d6f43144c3ef579004ea918a78911fff01c 100644
--- a/src/libs/qmljs/qmljsscanner.cpp
+++ b/src/libs/qmljs/qmljsscanner.cpp
@@ -25,6 +25,8 @@
 
 #include <qmljs/qmljsscanner.h>
 
+#include <algorithm>
+
 using namespace QmlJS;
 
 namespace {
@@ -410,10 +412,7 @@ int Scanner::state() const
 
 bool Scanner::isKeyword(const QString &text) const
 {
-    if (qBinaryFind(begin(js_keywords), end(js_keywords), text) != end(js_keywords))
-        return true;
-
-    return false;
+    return std::binary_search(begin(js_keywords), end(js_keywords), text);
 }
 
 QStringList Scanner::keywords()
diff --git a/src/libs/utils/crumblepath.cpp b/src/libs/utils/crumblepath.cpp
index 6e7016ef80afe434231db07e1b1efbe308fabf76..c906acc6e1eec8a5bf0f9229bb51d56635dceb9c 100644
--- a/src/libs/utils/crumblepath.cpp
+++ b/src/libs/utils/crumblepath.cpp
@@ -32,6 +32,8 @@
 #include <QResizeEvent>
 #include <QPainter>
 
+#include <algorithm>
+
 namespace Utils {
 
 static const int ArrowBorderSize = 12;
@@ -292,10 +294,8 @@ void CrumblePath::sortChildren(Qt::SortOrder order)
     QTC_ASSERT(childList, return);
     QList<QAction *> actions = childList->actions();
 
-    if (order == Qt::AscendingOrder)
-        qStableSort(actions.begin(), actions.end(), lessThan);
-    else
-        qStableSort(actions.begin(), actions.end(), greaterThan);
+    std::stable_sort(actions.begin(), actions.end(),
+                     order == Qt::AscendingOrder ? lessThan : greaterThan);
 
     childList->clear();
     childList->addActions(actions);
diff --git a/src/libs/utils/environment.cpp b/src/libs/utils/environment.cpp
index 50c32f9a07af1346ff1e3f5f105a00e0fd9edb11..9e7f73c6b3de5def6ec2e5c729c005461a9f2827 100644
--- a/src/libs/utils/environment.cpp
+++ b/src/libs/utils/environment.cpp
@@ -23,6 +23,7 @@
 **
 ****************************************************************************/
 
+#include "algorithm.h"
 #include "environment.h"
 
 #include <QDir>
@@ -55,14 +56,9 @@ Q_GLOBAL_STATIC(SystemEnvironment, staticSystemEnvironment)
 
 namespace Utils {
 
-static bool sortEnvironmentItem(const EnvironmentItem &a, const EnvironmentItem &b)
-{
-    return a.name < b.name;
-}
-
 void EnvironmentItem::sort(QList<EnvironmentItem> *list)
 {
-    qSort(list->begin(), list->end(), &sortEnvironmentItem);
+    Utils::sort(*list, &EnvironmentItem::name);
 }
 
 QList<EnvironmentItem> EnvironmentItem::fromStringList(const QStringList &list)
diff --git a/src/libs/utils/fancymainwindow.cpp b/src/libs/utils/fancymainwindow.cpp
index 14262fb94d678919a725bc9c7f2df38f95d6408f..697ff4fb3370deb5a15e989f210b182b2d829136 100644
--- a/src/libs/utils/fancymainwindow.cpp
+++ b/src/libs/utils/fancymainwindow.cpp
@@ -25,6 +25,7 @@
 
 #include "fancymainwindow.h"
 
+#include "algorithm.h"
 #include "qtcassert.h"
 
 #include <QAbstractButton>
@@ -505,13 +506,6 @@ bool FancyMainWindow::autoHideTitleBars() const
     return d->m_autoHideTitleBars.isChecked();
 }
 
-static bool actionLessThan(const QAction *action1, const QAction *action2)
-{
-    QTC_ASSERT(action1, return true);
-    QTC_ASSERT(action2, return false);
-    return action1->text().toLower() < action2->text().toLower();
-}
-
 void FancyMainWindow::addDockActionsToMenu(QMenu *menu)
 {
     QList<QAction *> actions;
@@ -523,7 +517,11 @@ void FancyMainWindow::addDockActionsToMenu(QMenu *menu)
             actions.append(dockwidgets.at(i)->toggleViewAction());
         }
     }
-    qSort(actions.begin(), actions.end(), actionLessThan);
+    Utils::sort(actions, [](const QAction *action1, const QAction *action2) {
+        QTC_ASSERT(action1, return true);
+        QTC_ASSERT(action2, return false);
+        return action1->text().toLower() < action2->text().toLower();
+    });
     foreach (QAction *action, actions)
         menu->addAction(action);
     menu->addAction(&d->m_menuSeparator1);
diff --git a/src/plugins/android/androidconfigurations.cpp b/src/plugins/android/androidconfigurations.cpp
index eb39966d37ac21434f0147932c13f3d195ac118e..dca3d0c977e9f849a9955f9b7ac93fd08d03c9a4 100644
--- a/src/plugins/android/androidconfigurations.cpp
+++ b/src/plugins/android/androidconfigurations.cpp
@@ -409,16 +409,16 @@ void AndroidConfig::updateAvailableSdkPlatforms() const
         } else if (line.startsWith(QLatin1String("---")) || line.startsWith(QLatin1String("==="))) {
             if (platform.apiLevel == -1)
                 continue;
-            auto it = qLowerBound(m_availableSdkPlatforms.begin(), m_availableSdkPlatforms.end(),
-                                  platform, sortSdkPlatformByApiLevel);
+            auto it = std::lower_bound(m_availableSdkPlatforms.begin(), m_availableSdkPlatforms.end(),
+                                       platform, sortSdkPlatformByApiLevel);
             m_availableSdkPlatforms.insert(it, platform);
             platform = SdkPlatform();
         }
     }
 
     if (platform.apiLevel != -1) {
-        auto it = qLowerBound(m_availableSdkPlatforms.begin(), m_availableSdkPlatforms.end(),
-                              platform, sortSdkPlatformByApiLevel);
+        auto it = std::lower_bound(m_availableSdkPlatforms.begin(), m_availableSdkPlatforms.end(),
+                                   platform, sortSdkPlatformByApiLevel);
         m_availableSdkPlatforms.insert(it, platform);
     }
 
diff --git a/src/plugins/android/androidmanifesteditorwidget.cpp b/src/plugins/android/androidmanifesteditorwidget.cpp
index cba5ecab1a2abe7b7233b9c4345cfdb06cf0d557..a2d1d8beed8dcd24fd5b1f9febbf944a7c6e50b1 100644
--- a/src/plugins/android/androidmanifesteditorwidget.cpp
+++ b/src/plugins/android/androidmanifesteditorwidget.cpp
@@ -67,6 +67,7 @@
 #include <QCheckBox>
 #include <QScrollArea>
 
+#include <algorithm>
 #include <limits>
 
 using namespace ProjectExplorer;
@@ -1337,7 +1338,8 @@ const QStringList &PermissionsModel::permissions()
 
 QModelIndex PermissionsModel::addPermission(const QString &permission)
 {
-    const int idx = qLowerBound(m_permissions, permission) - m_permissions.constBegin();
+    auto it = std::lower_bound(m_permissions.constBegin(), m_permissions.constEnd(), permission);
+    const int idx = it - m_permissions.constBegin();
     beginInsertRows(QModelIndex(), idx, idx);
     m_permissions.insert(idx, permission);
     endInsertRows();
@@ -1351,7 +1353,8 @@ bool PermissionsModel::updatePermission(const QModelIndex &index, const QString
     if (m_permissions[index.row()] == permission)
         return false;
 
-    int newIndex = qLowerBound(m_permissions.constBegin(), m_permissions.constEnd(), permission) - m_permissions.constBegin();
+    auto it = std::lower_bound(m_permissions.constBegin(), m_permissions.constEnd(), permission);
+    const int newIndex = it - m_permissions.constBegin();
     if (newIndex == index.row() || newIndex == index.row() + 1) {
         m_permissions[index.row()] = permission;
         emit dataChanged(index, index);
diff --git a/src/plugins/coreplugin/dialogs/newdialog.cpp b/src/plugins/coreplugin/dialogs/newdialog.cpp
index 15d0511eb4c71370b6b80bed8150acdbb8fe1d32..e3ddc0eab038361dedb3bed5faa9ef1128036cfc 100644
--- a/src/plugins/coreplugin/dialogs/newdialog.cpp
+++ b/src/plugins/coreplugin/dialogs/newdialog.cpp
@@ -251,7 +251,7 @@ void NewDialog::setWizardFactories(QList<IWizardFactory *> factories,
 {
     m_defaultLocation = defaultLocation;
     m_extraVariables = extraVariables;
-    qStableSort(factories.begin(), factories.end(), wizardFactoryLessThan);
+    std::stable_sort(factories.begin(), factories.end(), wizardFactoryLessThan);
 
     m_model->clear();
     QStandardItem *parentItem = m_model->invisibleRootItem();
diff --git a/src/plugins/coreplugin/dialogs/settingsdialog.cpp b/src/plugins/coreplugin/dialogs/settingsdialog.cpp
index fd23a004ddb90e7352b0a1599afa35594a80e8e2..05912c00872567fad1afbdfd57e345a88597b028 100644
--- a/src/plugins/coreplugin/dialogs/settingsdialog.cpp
+++ b/src/plugins/coreplugin/dialogs/settingsdialog.cpp
@@ -70,7 +70,7 @@ bool optionsPageLessThan(const IOptionsPage *p1, const IOptionsPage *p2)
 static inline QList<IOptionsPage*> sortedOptionsPages()
 {
     QList<IOptionsPage*> rc = ExtensionSystem::PluginManager::getObjects<IOptionsPage>();
-    qStableSort(rc.begin(), rc.end(), optionsPageLessThan);
+    std::stable_sort(rc.begin(), rc.end(), optionsPageLessThan);
     return rc;
 }
 
@@ -222,7 +222,7 @@ void CategoryModel::ensurePages(Category *category)
 
         category->pages += createdPages;
         category->providerPagesCreated = true;
-        qStableSort(category->pages.begin(), category->pages.end(), optionsPageLessThan);
+        std::stable_sort(category->pages.begin(), category->pages.end(), optionsPageLessThan);
     }
 }
 
diff --git a/src/plugins/coreplugin/find/searchresulttreeitems.cpp b/src/plugins/coreplugin/find/searchresulttreeitems.cpp
index afc9ac9cdfbeaf3ac51aa867a6c5e92d7aab44a2..e87681023b178702f56a6ec597a0329d6c85f9a9 100644
--- a/src/plugins/coreplugin/find/searchresulttreeitems.cpp
+++ b/src/plugins/coreplugin/find/searchresulttreeitems.cpp
@@ -91,7 +91,7 @@ static bool lessThanByText(SearchResultTreeItem *a, const QString &b)
 int SearchResultTreeItem::insertionIndex(const QString &text, SearchResultTreeItem **existingItem) const
 {
     QList<SearchResultTreeItem *>::const_iterator insertionPosition =
-            qLowerBound(m_children.begin(), m_children.end(), text, lessThanByText);
+            std::lower_bound(m_children.begin(), m_children.end(), text, lessThanByText);
     if (existingItem) {
         if (insertionPosition != m_children.end() && (*insertionPosition)->item.text == text)
             (*existingItem) = (*insertionPosition);
diff --git a/src/plugins/coreplugin/find/searchresulttreemodel.cpp b/src/plugins/coreplugin/find/searchresulttreemodel.cpp
index b31cd5fcb6b39c33f49b955c570106bc6f3cf124..61890ccb95d9f3ccdd4bcd610cbf12540a9a053c 100644
--- a/src/plugins/coreplugin/find/searchresulttreemodel.cpp
+++ b/src/plugins/coreplugin/find/searchresulttreemodel.cpp
@@ -390,7 +390,7 @@ QList<QModelIndex> SearchResultTreeModel::addResults(const QList<SearchResultIte
 {
     QSet<SearchResultTreeItem *> pathNodes;
     QList<SearchResultItem> sortedItems = items;
-    qStableSort(sortedItems.begin(), sortedItems.end(), lessThanByPath);
+    std::stable_sort(sortedItems.begin(), sortedItems.end(), lessThanByPath);
     QList<SearchResultItem> itemSet;
     foreach (const SearchResultItem &item, sortedItems) {
         m_editorFontIsUsed |= item.useTextEditorFont;
diff --git a/src/plugins/cppeditor/cppcodemodelinspectordialog.cpp b/src/plugins/cppeditor/cppcodemodelinspectordialog.cpp
index 0e5fa4dd97e66a3e3d8bf4c89b530e91027d9a76..c5f9d2e706ced2d55e429100fb6f0c9885d625a2 100644
--- a/src/plugins/cppeditor/cppcodemodelinspectordialog.cpp
+++ b/src/plugins/cppeditor/cppcodemodelinspectordialog.cpp
@@ -48,6 +48,8 @@
 #include <QPushButton>
 #include <QSortFilterProxyModel>
 
+#include <algorithm>
+
 using namespace CPlusPlus;
 using namespace CppTools;
 namespace CMI = CppCodeModelInspector;
@@ -410,7 +412,7 @@ void IncludesModel::configure(const QList<Document::Include> &includes)
 {
     emit layoutAboutToBeChanged();
     m_includes = includes;
-    qStableSort(m_includes.begin(), m_includes.end(), includesSorter);
+    std::stable_sort(m_includes.begin(), m_includes.end(), includesSorter);
     emit layoutChanged();
 }
 
@@ -513,7 +515,7 @@ void DiagnosticMessagesModel::configure(
 {
     emit layoutAboutToBeChanged();
     m_messages = messages;
-    qStableSort(m_messages.begin(), m_messages.end(), diagnosticMessagesModelSorter);
+    std::stable_sort(m_messages.begin(), m_messages.end(), diagnosticMessagesModelSorter);
     emit layoutChanged();
 }
 
diff --git a/src/plugins/cppeditor/cpppreprocessordialog.cpp b/src/plugins/cppeditor/cpppreprocessordialog.cpp
index 7501694c1b09a0608dc3fc6a03d75e20cf419859..0e770405c6c1b261f3a48e701603393861e9f23e 100644
--- a/src/plugins/cppeditor/cpppreprocessordialog.cpp
+++ b/src/plugins/cppeditor/cpppreprocessordialog.cpp
@@ -31,6 +31,8 @@
 
 #include <projectexplorer/session.h>
 
+#include <algorithm>
+
 using namespace CppEditor::Internal;
 
 static bool projectPartLessThan(const CppTools::ProjectPart::Ptr &projectPart1,
@@ -58,7 +60,7 @@ CppPreProcessorDialog::CppPreProcessorDialog(QWidget *parent, const QString &fil
     int currentIndex = 0;
 
     QList<CppTools::ProjectPart::Ptr> sortedProjectParts(projectParts);
-    qStableSort(sortedProjectParts.begin(), sortedProjectParts.end(), projectPartLessThan);
+    std::stable_sort(sortedProjectParts.begin(), sortedProjectParts.end(), projectPartLessThan);
 
     foreach (CppTools::ProjectPart::Ptr projectPart, sortedProjectParts) {
         m_ui->projectComboBox->addItem(projectPart->displayName);
diff --git a/src/plugins/cpptools/cpplocatorfilter.cpp b/src/plugins/cpptools/cpplocatorfilter.cpp
index cd50cc2bcdd229c33d283cffc6fb073074def206..6c735582711fb2ab4cb9c1de75b4c7c1d9980328 100644
--- a/src/plugins/cpptools/cpplocatorfilter.cpp
+++ b/src/plugins/cpptools/cpplocatorfilter.cpp
@@ -30,6 +30,8 @@
 
 #include <QStringMatcher>
 
+#include <algorithm>
+
 using namespace CppTools;
 using namespace CppTools::Internal;
 
@@ -107,9 +109,9 @@ QList<Core::LocatorFilterEntry> CppLocatorFilter::matchesFor(
     });
 
     if (goodEntries.size() < 1000)
-        qStableSort(goodEntries.begin(), goodEntries.end(), compareLexigraphically);
+        std::stable_sort(goodEntries.begin(), goodEntries.end(), compareLexigraphically);
     if (betterEntries.size() < 1000)
-        qStableSort(betterEntries.begin(), betterEntries.end(), compareLexigraphically);
+        std::stable_sort(betterEntries.begin(), betterEntries.end(), compareLexigraphically);
 
     betterEntries += goodEntries;
     return betterEntries;
diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp
index 3878cb337b1b87516fcf41af0e02bd30f2314a1d..628c693d71f82b1cb4b8598bb9935c76f0b0c29d 100644
--- a/src/plugins/debugger/watchhandler.cpp
+++ b/src/plugins/debugger/watchhandler.cpp
@@ -1273,7 +1273,7 @@ int WatchModel::memberVariableRecursion(WatchItem *item,
             const QString toolTip = variableToolTip(childName, item->type, childOffset);
             const ColorNumberToolTip colorNumberNamePair((*colorNumberIn)++, toolTip);
             const ColorNumberToolTips::iterator begin = cnmv->begin() + childOffset;
-            qFill(begin, begin + item->size, colorNumberNamePair);
+            std::fill(begin, begin + item->size, colorNumberNamePair);
             childCount++;
             childCount += memberVariableRecursion(child, childName, start, end, colorNumberIn, cnmv);
         }
diff --git a/src/plugins/designer/formeditorw.cpp b/src/plugins/designer/formeditorw.cpp
index 58f82a0a7f91b1a0bc1611fb4dbda193014fb4e0..edafb26f0797d7e16f06510a0d72b77fb297c656 100644
--- a/src/plugins/designer/formeditorw.cpp
+++ b/src/plugins/designer/formeditorw.cpp
@@ -78,6 +78,8 @@
 #include <QPluginLoader>
 #include <QTime>
 
+#include <algorithm>
+
 static const char settingsGroupC[] = "Designer";
 
 /* Actions of the designer plugin:
@@ -249,8 +251,8 @@ FormEditorData::FormEditorData() :
     QTC_ASSERT(!d, return);
     d = this;
 
-    qFill(m_designerSubWindows, m_designerSubWindows + DesignerSubWindowCount,
-          static_cast<QWidget *>(0));
+    std::fill(m_designerSubWindows, m_designerSubWindows + DesignerSubWindowCount,
+              static_cast<QWidget *>(0));
 
     m_formeditor->setTopLevel(ICore::mainWindow());
     m_formeditor->setSettingsManager(new SettingsManager());
@@ -449,7 +451,7 @@ void FormEditorData::fullInit()
 
 void FormEditorData::initDesignerSubWindows()
 {
-    qFill(m_designerSubWindows, m_designerSubWindows + DesignerSubWindowCount, static_cast<QWidget*>(0));
+    std::fill(m_designerSubWindows, m_designerSubWindows + DesignerSubWindowCount, static_cast<QWidget*>(0));
 
     QDesignerWidgetBoxInterface *wb = QDesignerComponents::createWidgetBox(m_formeditor, 0);
     wb->setWindowTitle(tr("Widget Box"));
diff --git a/src/plugins/git/gerrit/gerritmodel.cpp b/src/plugins/git/gerrit/gerritmodel.cpp
index 42da70807c077d57f54e0d092501560f2c234e46..a3a0c96cdcd28b03f35f58bc9b29aec54b1f1185 100644
--- a/src/plugins/git/gerrit/gerritmodel.cpp
+++ b/src/plugins/git/gerrit/gerritmodel.cpp
@@ -640,9 +640,9 @@ static bool parseOutput(const QSharedPointer<GerritParameters> &parameters,
             approval.description = ao.value(approvalsDescriptionKey).toString();
             change->currentPatchSet.approvals.push_back(approval);
         }
-        qStableSort(change->currentPatchSet.approvals.begin(),
-                    change->currentPatchSet.approvals.end(),
-                    gerritApprovalLessThan);
+        std::stable_sort(change->currentPatchSet.approvals.begin(),
+                         change->currentPatchSet.approvals.end(),
+                         gerritApprovalLessThan);
         // Remaining
         change->number = object.value(numberKey).toString().toInt();
         change->url = object.value(urlKey).toString();
@@ -779,7 +779,7 @@ void GerritModel::queryFinished(const QByteArray &output)
         }
     }
     // Sort by depth (root nodes first) and by date.
-    qStableSort(changes.begin(), changes.end(), gerritChangeLessThan);
+    std::stable_sort(changes.begin(), changes.end(), gerritChangeLessThan);
     numberIndexHash.clear();
 
     foreach (const GerritChangePtr &c, changes) {
diff --git a/src/plugins/projectexplorer/kitmanager.cpp b/src/plugins/projectexplorer/kitmanager.cpp
index a3f46e4979dad76fc1c0a1468415fc9f5e77be7e..d23712cda97247be3248ac3bf98de86e27f64e7d 100644
--- a/src/plugins/projectexplorer/kitmanager.cpp
+++ b/src/plugins/projectexplorer/kitmanager.cpp
@@ -269,9 +269,8 @@ void KitManager::registerKitInformation(KitInformation *ki)
     QTC_CHECK(!isLoaded());
     QTC_ASSERT(!d->m_informationList.contains(ki), return);
 
-    QList<KitInformation *>::iterator it
-            = qLowerBound(d->m_informationList.begin(),
-                          d->m_informationList.end(), ki, greaterPriority);
+    auto it = std::lower_bound(d->m_informationList.begin(), d->m_informationList.end(),
+                               ki, greaterPriority);
     d->m_informationList.insert(it, ki);
 
     if (!isLoaded())
diff --git a/src/plugins/projectexplorer/projectmodels.cpp b/src/plugins/projectexplorer/projectmodels.cpp
index 311bf89e056e46564cb3bea31c30597e1a671b2a..dcaf3c19326fad3ac31a60972210dbdf0564342c 100644
--- a/src/plugins/projectexplorer/projectmodels.cpp
+++ b/src/plugins/projectexplorer/projectmodels.cpp
@@ -869,7 +869,7 @@ void FlatModel::changedSortKey(FolderNode *folderNode, Node *node)
     int oldIndex = nodes.indexOf(node);
 
     nodes.removeAt(oldIndex);
-    QList<Node *>::iterator newPosIt = qLowerBound(nodes.begin(), nodes.end(), node, sortNodes);
+    QList<Node *>::iterator newPosIt = std::lower_bound(nodes.begin(), nodes.end(), node, sortNodes);
     int newIndex = newPosIt - nodes.begin();
 
     if (newIndex == oldIndex)
diff --git a/src/plugins/projectexplorer/projectnodes.cpp b/src/plugins/projectexplorer/projectnodes.cpp
index 74dca37a42d901e6120c1d23fda27d760b96d10d..eb110272cc9a143c84abd888a8b6173ecada3509 100644
--- a/src/plugins/projectexplorer/projectnodes.cpp
+++ b/src/plugins/projectexplorer/projectnodes.cpp
@@ -370,7 +370,7 @@ void FolderNode::addFileNodes(const QList<FileNode *> &files)
             // empty list or greater then last node
             m_fileNodes.append(file);
         } else {
-            auto it = qLowerBound(m_fileNodes.begin(), m_fileNodes.end(), file);
+            auto it = std::lower_bound(m_fileNodes.begin(), m_fileNodes.end(), file);
             m_fileNodes.insert(it, file);
         }
     }
@@ -438,7 +438,7 @@ void FolderNode::addFolderNodes(const QList<FolderNode*> &subFolders)
             m_subFolderNodes.append(folder);
         } else {
             // Binary Search for insertion point
-            auto it = qLowerBound(m_subFolderNodes.begin(), m_subFolderNodes.end(), folder);
+            auto it = std::lower_bound(m_subFolderNodes.begin(), m_subFolderNodes.end(), folder);
             m_subFolderNodes.insert(it, folder);
         }
 
diff --git a/src/plugins/projectexplorer/taskmodel.cpp b/src/plugins/projectexplorer/taskmodel.cpp
index 468763857599be411a60b34af2b280c450afeb18..b3e23f840b20071e5532a5e167ef7c4a106b0bb2 100644
--- a/src/plugins/projectexplorer/taskmodel.cpp
+++ b/src/plugins/projectexplorer/taskmodel.cpp
@@ -32,6 +32,8 @@
 
 #include <QFontMetrics>
 
+#include <algorithm>
+
 namespace ProjectExplorer {
 namespace Internal {
 
@@ -106,7 +108,7 @@ void TaskModel::addTask(const Task &task)
     CategoryData &data = m_categories[task.category];
     CategoryData &global = m_categories[Core::Id()];
 
-    auto it = qLowerBound(m_tasks.begin(), m_tasks.end(),task.taskId, sortById);
+    auto it = std::lower_bound(m_tasks.begin(), m_tasks.end(),task.taskId, sortById);
     int i = it - m_tasks.begin();
     beginInsertRows(QModelIndex(), i, i);
     m_tasks.insert(it, task);
@@ -131,7 +133,7 @@ void TaskModel::removeTask(const Task &task)
 
 int TaskModel::rowForId(unsigned int id)
 {
-    auto it = qLowerBound(m_tasks.constBegin(), m_tasks.constEnd(), id, sortById);
+    auto it = std::lower_bound(m_tasks.constBegin(), m_tasks.constEnd(), id, sortById);
     if (it == m_tasks.constEnd())
         return -1;
     return it - m_tasks.constBegin();
@@ -374,8 +376,8 @@ QVariant TaskFilterModel::data(const QModelIndex &index, int role) const
 
 static QPair<int, int> findFilteredRange(int first, int last, const QList<int> &list)
 {
-    auto filteredFirst = qLowerBound(list, first);
-    auto filteredLast = qUpperBound(filteredFirst, list.constEnd(), last);
+    auto filteredFirst = std::lower_bound(list.constBegin(), list.constEnd(), first);
+    auto filteredLast = std::upper_bound(filteredFirst, list.constEnd(), last);
     return qMakePair(filteredFirst - list.constBegin(), filteredLast - list.constBegin() - 1);
 }
 
@@ -399,7 +401,7 @@ void TaskFilterModel::handleNewRows(const QModelIndex &index, int first, int las
     if (last == m_sourceModel->rowCount() - 1)
         filteredFirst = m_mapping.count();
     else
-        filteredFirst = qLowerBound(m_mapping, first) - m_mapping.constBegin();
+        filteredFirst = std::lower_bound(m_mapping.constBegin(), m_mapping.constEnd(), first) - m_mapping.constBegin();
 
     const int filteredLast = filteredFirst + newItems - 1;
     beginInsertRows(QModelIndex(), filteredFirst, filteredLast);
@@ -449,8 +451,8 @@ void TaskFilterModel::handleReset()
 
 QModelIndex TaskFilterModel::mapFromSource(const QModelIndex &idx) const
 {
-    auto it = qBinaryFind(m_mapping.constBegin(), m_mapping.constEnd(), idx.row());
-    if (it == m_mapping.constEnd())
+    auto it = std::lower_bound(m_mapping.constBegin(), m_mapping.constEnd(), idx.row());
+    if (it == m_mapping.constEnd() || idx.row() != *it)
         return QModelIndex();
     return index(it - m_mapping.constBegin(), 0);
 }
diff --git a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp
index 68518b26d5437c32df83cb401279d597f7de82a4..f5e476aeaed3de0e233c5349e949130213c14fc7 100644
--- a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp
+++ b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp
@@ -59,6 +59,7 @@
 #include <QCoreApplication>
 #include <QByteArray>
 
+#include <algorithm>
 #include <functional>
 
 namespace QmlDesigner {
@@ -568,7 +569,7 @@ static inline QList<IOptionsPage*> sortedOptionsPages()
 static PropertyNameList sortedPropertyNameList(const PropertyNameList &nameList)
 {
     PropertyNameList sortedPropertyNameList = nameList;
-    qStableSort(sortedPropertyNameList);
+    std::stable_sort(sortedPropertyNameList.begin(), sortedPropertyNameList.end());
     return sortedPropertyNameList;
 }
 
diff --git a/src/plugins/qmlprojectmanager/qmlprojectrunconfigurationwidget.cpp b/src/plugins/qmlprojectmanager/qmlprojectrunconfigurationwidget.cpp
index 29bbf198d431b903e0cab141c36cb7caa7b50935..e7097b9aa5a3c1f4522ffd2abd8c05b5852a3db6 100644
--- a/src/plugins/qmlprojectmanager/qmlprojectrunconfigurationwidget.cpp
+++ b/src/plugins/qmlprojectmanager/qmlprojectrunconfigurationwidget.cpp
@@ -38,6 +38,8 @@
 #include <QLabel>
 #include <QStandardItemModel>
 
+#include <algorithm>
+
 using Core::ICore;
 using ProjectExplorer::ProjectExplorerPlugin;
 
@@ -121,7 +123,7 @@ void QmlProjectRunConfigurationWidget::updateFileComboBox()
     }
     sortedFiles = relativeFiles;
 
-    qStableSort(sortedFiles.begin(), sortedFiles.end(), caseInsensitiveLessThan);
+    std::stable_sort(sortedFiles.begin(), sortedFiles.end(), caseInsensitiveLessThan);
 
     QString mainScriptPath;
     if (m_runConfiguration->mainScriptSource() != QmlProjectRunConfiguration::FileInEditor)
diff --git a/src/plugins/texteditor/codeassist/keywordscompletionassist.cpp b/src/plugins/texteditor/codeassist/keywordscompletionassist.cpp
index 56918becab0ad1ec0f57a7588e12a378f53f3f17..e93b1fd6650b4851dd2a4bfd81318723503cac7f 100644
--- a/src/plugins/texteditor/codeassist/keywordscompletionassist.cpp
+++ b/src/plugins/texteditor/codeassist/keywordscompletionassist.cpp
@@ -33,6 +33,8 @@
 #include <texteditor/texteditorsettings.h>
 #include <texteditor/texteditor.h>
 
+#include <algorithm>
+
 namespace TextEditor {
 
 // --------------------------
@@ -51,12 +53,12 @@ Keywords::Keywords(const QStringList &variabels, const QStringList &functions, c
 
 bool Keywords::isVariable(const QString &word) const
 {
-    return qBinaryFind(m_variables, word) != m_variables.constEnd();
+    return std::binary_search(m_variables.constBegin(), m_variables.constEnd(), word);
 }
 
 bool Keywords::isFunction(const QString &word) const
 {
-    return qBinaryFind(m_functions, word) != m_functions.constEnd();
+    return std::binary_search(m_functions.constBegin(), m_functions.constEnd(), word);
 }
 
 QStringList Keywords::variables() const