From 9d4558de2b2ba9fc1ad7e8c797880afc93c790d7 Mon Sep 17 00:00:00 2001 From: John Preston <johnprestonmail@gmail.com> Date: Mon, 11 Dec 2017 16:28:58 +0400 Subject: [PATCH] Fix build in Visual Studio 15.5.1. Looks like compiler had some regressions when updating from 15.4.5. Range-V3-VS2015 also needs to cherry-pick this commit: https://github.com/ericniebler/range-v3/commit/9f990c48d0 See https://github.com/Microsoft/Range-V3-VS2015/issues/26 --- Telegram/SourceFiles/boxes/peer_list_box.h | 8 +++---- .../info/profile/info_profile_cover.cpp | 24 +++++++++++++++---- Telegram/gyp/settings_win.gypi | 4 ++-- 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/Telegram/SourceFiles/boxes/peer_list_box.h b/Telegram/SourceFiles/boxes/peer_list_box.h index 3982d5d41..07cf310cc 100644 --- a/Telegram/SourceFiles/boxes/peer_list_box.h +++ b/Telegram/SourceFiles/boxes/peer_list_box.h @@ -715,10 +715,10 @@ public: } void peerListSortRows( base::lambda<bool(const PeerListRow &a, const PeerListRow &b)> compare) override { - _content->reorderRows([compare = std::move(compare)]( + _content->reorderRows([&]( auto &&begin, auto &&end) { - std::sort(begin, end, [&compare](auto &&a, auto &&b) { + std::sort(begin, end, [&](auto &&a, auto &&b) { return compare(*a, *b); }); }); @@ -726,10 +726,10 @@ public: int peerListPartitionRows( base::lambda<bool(const PeerListRow &a)> border) override { auto result = 0; - _content->reorderRows([border = std::move(border), &result]( + _content->reorderRows([&]( auto &&begin, auto &&end) { - auto edge = std::stable_partition(begin, end, [&border]( + auto edge = std::stable_partition(begin, end, [&]( auto &¤t) { return border(*current); }); diff --git a/Telegram/SourceFiles/info/profile/info_profile_cover.cpp b/Telegram/SourceFiles/info/profile/info_profile_cover.cpp index bf3a6b919..56cd1d08c 100644 --- a/Telegram/SourceFiles/info/profile/info_profile_cover.cpp +++ b/Telegram/SourceFiles/info/profile/info_profile_cover.cpp @@ -260,10 +260,18 @@ Cover::Cover( void Cover::setupChildGeometry() { using namespace rpl::mappers; + // + // Visual Studio 2017 15.5.1 internal compiler error here. + // See https://developercommunity.visualstudio.com/content/problem/165155/ice-regression-in-1551-after-successfull-build-in.html + // + //rpl::combine( + // toggleShownValue(), + // widthValue(), + // _2) rpl::combine( toggleShownValue(), - widthValue(), - _2) + widthValue()) + | rpl::map([](bool shown, int width) { return width; }) | rpl::start_with_next([this](int newWidth) { _userpic->moveToLeft( st::infoProfilePhotoLeft, @@ -449,10 +457,18 @@ void SharedMediaCover::createLabel() { Lang::Viewer(lng_profile_shared_media) | ToUpperValue(), st::infoBlockHeaderLabel); label->setAttribute(Qt::WA_TransparentForMouseEvents); + // + // Visual Studio 2017 15.5.1 internal compiler error here. + // See https://developercommunity.visualstudio.com/content/problem/165155/ice-regression-in-1551-after-successfull-build-in.html + // + //rpl::combine( + // toggleShownValue(), + // widthValue(), + // _2) rpl::combine( toggleShownValue(), - widthValue(), - _2) + widthValue()) + | rpl::map([](bool shown, int width) { return width; }) | rpl::start_with_next([this, weak = label.data()](int newWidth) { auto availableWidth = newWidth - st::infoBlockHeaderPosition.x() diff --git a/Telegram/gyp/settings_win.gypi b/Telegram/gyp/settings_win.gypi index be93f25a6..898e9c463 100644 --- a/Telegram/gyp/settings_win.gypi +++ b/Telegram/gyp/settings_win.gypi @@ -35,12 +35,12 @@ 'VCCLCompilerTool': { 'ProgramDataBaseFileName': '$(OutDir)\\$(ProjectName).pdb', 'DebugInformationFormat': '3', # Program Database (/Zi) + 'WarnAsError': 'true', 'AdditionalOptions': [ '/std:c++latest', - '/permissive-', + '/permissive-', '/MP', # Enable multi process build. '/EHsc', # Catch C++ exceptions only, extern C functions never throw a C++ exception. - '/WX', # Treat warnings as errors. '/w14834', # [[nodiscard]] ], 'TreatWChar_tAsBuiltInType': 'false',