From a55fc8e43ba88ae33dd15838bd3de84b7238fc7a Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Sun, 2 Oct 2022 02:06:09 +0200 Subject: [PATCH] Work around MSVC bug with structured bindings in lambdas Causes error messages like: error C3493: 'key_id' cannot be implicitly captured because no default capture mode has been specified --- src/encryption/DeviceVerificationFlow.cpp | 20 ++++++++++++++++++-- src/encryption/SelfVerificationStatus.cpp | 20 ++++++++++++++++++-- 2 files changed, 36 insertions(+), 4 deletions(-) diff --git a/src/encryption/DeviceVerificationFlow.cpp b/src/encryption/DeviceVerificationFlow.cpp index 2cf8b060..b0e8a73b 100644 --- a/src/encryption/DeviceVerificationFlow.cpp +++ b/src/encryption/DeviceVerificationFlow.cpp @@ -336,14 +336,30 @@ DeviceVerificationFlow::DeviceVerificationFlow(QObject *, static_cast(err->status_code)); } - for (const auto &[user_id, tmp] : res.errors) - for (const auto &[key_id, e] : tmp) + // MSVC bug, error C3493: 'key_id' cannot be implicitly captured because no + // default capture mode has been specified + // for (const auto &[user_id, tmp] : res.errors) + // for (const auto &[key_id, e] : tmp) + // nhlog::net()->error("signature error for user {} and key " + // "id {}: {}, {}", + // user_id, + // key_id, + // mtx::errors::to_string(e.errcode), + // e.error); + for (const auto &error : res.errors) { + const auto &user_id = error.first; + for (const auto &key_error : error.second) { + const auto &key_id = key_error.first; + const auto &e = key_error.second; + nhlog::net()->error("signature error for user {} and key " "id {}: {}, {}", user_id, key_id, mtx::errors::to_string(e.errcode), e.error); + } + } }); } diff --git a/src/encryption/SelfVerificationStatus.cpp b/src/encryption/SelfVerificationStatus.cpp index 46e71015..86733cee 100644 --- a/src/encryption/SelfVerificationStatus.cpp +++ b/src/encryption/SelfVerificationStatus.cpp @@ -172,14 +172,30 @@ SelfVerificationStatus::setupCrosssigning(bool useSSSS, QString password, bool u static_cast(err->status_code)); } - for (const auto &[user_id, tmp] : res.errors) - for (const auto &[key_id, e_] : tmp) + // MSVC bug, error C3493: 'key_id' cannot be implicitly captured because no + // default capture mode has been specified + // for (const auto &[user_id, tmp] : res.errors) + // for (const auto &[key_id, e_] : tmp) + // nhlog::net()->error("signature error for user {} and key " + // "id {}: {}, {}", + // user_id, + // key_id, + // mtx::errors::to_string(e_.errcode), + // e_.error); + for (const auto &error : res.errors) { + const auto &user_id = error.first; + for (const auto &key_error : error.second) { + const auto &key_id = key_error.first; + const auto &e_ = key_error.second; + nhlog::net()->error("signature error for user {} and key " "id {}: {}, {}", user_id, key_id, mtx::errors::to_string(e_.errcode), e_.error); + } + } }); } }