diff --git a/CMakeLists.txt b/CMakeLists.txt index 5b7448b2e3625..0118cd8ad1742 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,8 +7,8 @@ if(APPLE) set(CMAKE_OSX_DEPLOYMENT_TARGET "11.0" CACHE STRING "Minimum OSX deployment version") endif() -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED 17) +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED 20) include(FeatureSummary) diff --git a/src/gui/accountstate.cpp b/src/gui/accountstate.cpp index a59fed2731750..6554e16dce42a 100644 --- a/src/gui/accountstate.cpp +++ b/src/gui/accountstate.cpp @@ -78,7 +78,7 @@ AccountState::AccountState(const AccountPtr &account) _termsOfServiceChecker.start(); }); - connect(this, &AccountState::isConnectedChanged, [=]{ + connect(this, &AccountState::isConnectedChanged, [=, this]{ // Get the Apps available on the server if we're now connected. if (isConnected()) { fetchNavigationApps(); diff --git a/src/gui/conflictdialog.cpp b/src/gui/conflictdialog.cpp index bae7b190f957a..d5ceb2817fae0 100644 --- a/src/gui/conflictdialog.cpp +++ b/src/gui/conflictdialog.cpp @@ -56,12 +56,12 @@ ConflictDialog::ConflictDialog(QWidget *parent) _ui->conflictMessage->setTextFormat(Qt::PlainText); connect(_ui->localVersionRadio, &QCheckBox::toggled, this, &ConflictDialog::updateButtonStates); - connect(_ui->localVersionButton, &QToolButton::clicked, this, [=] { + connect(_ui->localVersionButton, &QToolButton::clicked, this, [=, this] { QDesktopServices::openUrl(QUrl::fromLocalFile(_solver->localVersionFilename())); }); connect(_ui->remoteVersionRadio, &QCheckBox::toggled, this, &ConflictDialog::updateButtonStates); - connect(_ui->remoteVersionButton, &QToolButton::clicked, this, [=] { + connect(_ui->remoteVersionButton, &QToolButton::clicked, this, [=, this] { QDesktopServices::openUrl(QUrl::fromLocalFile(_solver->remoteVersionFilename())); }); diff --git a/src/gui/conflictsolver.cpp b/src/gui/conflictsolver.cpp index 780e4087b1dd4..7499e9ae8de07 100644 --- a/src/gui/conflictsolver.cpp +++ b/src/gui/conflictsolver.cpp @@ -110,7 +110,7 @@ bool ConflictSolver::renameLocalVersion() return false; } - const auto renamePattern = [=] { + const auto renamePattern = [=, this] { auto result = QString::fromUtf8(OCC::Utility::conflictFileBaseNameFromPattern(_localVersionFilename.toUtf8())); const auto dotIndex = result.lastIndexOf('.'); return QString(result.left(dotIndex) + "_%1" + result.mid(dotIndex)); diff --git a/src/gui/ignorelisteditor.cpp b/src/gui/ignorelisteditor.cpp index aba85c5cbe3c3..ac9d7043c29af 100644 --- a/src/gui/ignorelisteditor.cpp +++ b/src/gui/ignorelisteditor.cpp @@ -45,7 +45,7 @@ IgnoreListEditor::IgnoreListEditor(QWidget *parent) const auto userConfig = cfgFile.excludeFile(ConfigFile::Scope::UserScope); ui->ignoreTableWidget->readIgnoreFile(userConfig); - connect(this, &QDialog::accepted, [=]() { + connect(this, &QDialog::accepted, [=, this]() { ui->ignoreTableWidget->slotWriteIgnoreFile(userConfig); /* handle the hidden file checkbox */ diff --git a/src/gui/remotewipe.cpp b/src/gui/remotewipe.cpp index 7a146ce1bab65..ca24c09721000 100644 --- a/src/gui/remotewipe.cpp +++ b/src/gui/remotewipe.cpp @@ -31,7 +31,7 @@ RemoteWipe::RemoteWipe(AccountPtr account, QObject *parent) _networkManager(nullptr) { QObject::connect(AccountManager::instance(), &AccountManager::accountRemoved, - this, [=](AccountState *) { + this, [=, this](AccountState *) { _accountRemoved = true; }); if (FolderMan::instance()) { diff --git a/src/gui/sharemanager.cpp b/src/gui/sharemanager.cpp index af9156916c3fe..1865e1438ae2e 100644 --- a/src/gui/sharemanager.cpp +++ b/src/gui/sharemanager.cpp @@ -461,7 +461,7 @@ void ShareManager::createShare(const QString &path, auto job = new OcsShareJob(_account); connect(job, &OcsJob::ocsError, this, &ShareManager::slotOcsError); connect(job, &OcsShareJob::shareJobFinished, this, - [=](const QJsonDocument &reply) { + [=, this](const QJsonDocument &reply) { // Find existing share permissions (if this was shared with us) Share::Permissions existingPermissions = SharePermissionAll; for (const auto &element : reply.object()["ocs"].toObject()["data"].toArray()) { diff --git a/src/gui/socketapi/socketapi.cpp b/src/gui/socketapi/socketapi.cpp index c000ca8e20579..33bfda1622ded 100644 --- a/src/gui/socketapi/socketapi.cpp +++ b/src/gui/socketapi/socketapi.cpp @@ -894,7 +894,7 @@ void SocketApi::command_COPY_SECUREFILEDROP_LINK(const QString &localFile, Socke const auto account = fileData.folder->accountState()->account(); const auto getOrCreatePublicLinkShareJob = new GetOrCreatePublicLinkShare(account, fileData.serverRelativePath, true, this); connect(getOrCreatePublicLinkShareJob, &GetOrCreatePublicLinkShare::done, this, [](const QString &url) { copyUrlToClipboard(url); }); - connect(getOrCreatePublicLinkShareJob, &GetOrCreatePublicLinkShare::error, this, [=]() { emit shareCommandReceived(fileData.localPath); }); + connect(getOrCreatePublicLinkShareJob, &GetOrCreatePublicLinkShare::error, this, [=, this]() { emit shareCommandReceived(fileData.localPath); }); getOrCreatePublicLinkShareJob->run(); } diff --git a/src/gui/tray/usermodel.cpp b/src/gui/tray/usermodel.cpp index 65229590b3cad..18df717534184 100644 --- a/src/gui/tray/usermodel.cpp +++ b/src/gui/tray/usermodel.cpp @@ -73,7 +73,7 @@ User::User(AccountStatePtr &account, const bool &isCurrent, QObject *parent) this, &User::slotCheckExpiredActivities); connect(_account.data(), &AccountState::stateChanged, - [=]() { if (isConnected()) {slotRefreshImmediately();} }); + [=, this]() { if (isConnected()) {slotRefreshImmediately();} }); connect(_account.data(), &AccountState::stateChanged, this, &User::accountStateChanged); connect(_account.data(), &AccountState::hasFetchedNavigationApps, this, &User::slotRebuildNavigationAppList); diff --git a/src/gui/userinfo.cpp b/src/gui/userinfo.cpp index 6835cc6285b32..7f942f4bbb6d2 100644 --- a/src/gui/userinfo.cpp +++ b/src/gui/userinfo.cpp @@ -114,7 +114,7 @@ void UserInfo::slotUpdateLastInfo(const QJsonDocument &json) if (QString::compare(account->davUser(), newUserId, Qt::CaseInsensitive) != 0) { // TODO: the error message should be in the UI qInfo() << "Authenticated with the wrong user! Please login with the account:" << account->prettyName(); - if (const auto cred = account->credentials()) { + if (account->credentials()) { account->credentials()->askFromUser(); } return; diff --git a/src/libsync/discovery.cpp b/src/libsync/discovery.cpp index 1ada8a5b59b78..117c2ef040ad8 100644 --- a/src/libsync/discovery.cpp +++ b/src/libsync/discovery.cpp @@ -675,7 +675,7 @@ void ProcessDirectoryJob::postProcessServerNew(const SyncFileItemPtr &item, _pendingAsyncJobs++; _discoveryData->checkSelectiveSyncNewFolder(path._server, serverEntry.remotePerm, - [=](bool result) { + [=, this](bool result) { --_pendingAsyncJobs; if (!result) { processFileAnalyzeLocalInfo(item, path, localEntry, serverEntry, dbEntry, _queryServer); @@ -732,7 +732,7 @@ void ProcessDirectoryJob::processFileAnalyzeRemoteInfo(const SyncFileItemPtr &it item->_e2eEncryptionServerCapability = EncryptionStatusEnums::fromEndToEndEncryptionApiVersion(_discoveryData->_account->capabilities().clientSideEncryptionVersion()); item->_e2eCertificateFingerprint = serverEntry.e2eCertificateFingerprint; } - item->_encryptedFileName = [=] { + item->_encryptedFileName = [=, this] { if (serverEntry.e2eMangledName.isEmpty()) { return QString(); } @@ -1023,7 +1023,7 @@ void ProcessDirectoryJob::processFileAnalyzeRemoteInfo(const SyncFileItemPtr &it // we need to make a request to the server to know that the original file is deleted on the server _pendingAsyncJobs++; const auto job = new RequestEtagJob(_discoveryData->_account, _discoveryData->_remoteFolder + originalPath, this); - connect(job, &RequestEtagJob::finishedWithResult, this, [=](const HttpResult &etag) mutable { + connect(job, &RequestEtagJob::finishedWithResult, this, [=, this](const HttpResult &etag) mutable { _pendingAsyncJobs--; QTimer::singleShot(0, _discoveryData, &DiscoveryPhase::scheduleMoreJobs); if (etag || etag.error().code != 404 || @@ -1549,7 +1549,7 @@ void ProcessDirectoryJob::processFileAnalyzeLocalInfo( if (base.isVirtualFile() && isVfsWithSuffix()) chopVirtualFileSuffix(serverOriginalPath); auto job = new RequestEtagJob(_discoveryData->_account, serverOriginalPath, this); - connect(job, &RequestEtagJob::finishedWithResult, this, [=](const HttpResult &etag) mutable { + connect(job, &RequestEtagJob::finishedWithResult, this, [=, this](const HttpResult &etag) mutable { if (!etag || (etag.get() != base._etag && !item->isDirectory()) || _discoveryData->isRenamed(originalPath) diff --git a/src/libsync/discoveryphase.cpp b/src/libsync/discoveryphase.cpp index 469dec380165d..3cc1030853126 100644 --- a/src/libsync/discoveryphase.cpp +++ b/src/libsync/discoveryphase.cpp @@ -82,7 +82,7 @@ void DiscoveryPhase::checkFolderSizeLimit(const QString &path, const std::functi connect(propfindJob, &PropfindJob::finishedWithError, this, [=] { return completionCallback(false); }); - connect(propfindJob, &PropfindJob::result, this, [=](const QVariantMap &values) { + connect(propfindJob, &PropfindJob::result, this, [=, this](const QVariantMap &values) { const auto result = values.value(QLatin1String("size")).toLongLong(); const auto limit = _syncOptions._newBigFolderSizeLimit; qCDebug(lcDiscovery) << "Folder size check complete for" << path << "result:" << result << "limit:" << limit; @@ -773,7 +773,7 @@ void DiscoverySingleDirectoryJob::metadataReceived(const QJsonDocument &json, in } }; - std::transform(std::cbegin(_results), std::cend(_results), std::begin(_results), [=](const RemoteInfo &info) { + std::transform(std::cbegin(_results), std::cend(_results), std::begin(_results), [=, this](const RemoteInfo &info) { auto result = info; const auto encryptedFileInfo = findEncryptedFile(result.name); if (encryptedFileInfo) { diff --git a/src/libsync/vfs/xattr/vfs_xattr.cpp b/src/libsync/vfs/xattr/vfs_xattr.cpp index cf81294e9c247..fb6d7ae4dffaf 100644 --- a/src/libsync/vfs/xattr/vfs_xattr.cpp +++ b/src/libsync/vfs/xattr/vfs_xattr.cpp @@ -156,7 +156,7 @@ bool VfsXAttr::statTypeVirtualFile(csync_file_stat_t *stat, void *statData) Q_ASSERT(!stat->path.startsWith('/')); const auto path = QByteArray(*parentPath + '/' + stat->path); - const auto pin = [=] { + const auto pin = [=, this] { const auto absolutePath = QString::fromUtf8(path); Q_ASSERT(absolutePath.startsWith(params().filesystemPath.toUtf8())); const auto folderPath = absolutePath.mid(params().filesystemPath.length());