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
This commit is contained in:
John Preston 2017-12-11 16:28:58 +04:00
parent 38f7f48c17
commit 9d4558de2b
3 changed files with 26 additions and 10 deletions

View File

@ -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 &&current) {
return border(*current);
});

View File

@ -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()

View File

@ -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',