aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/src
diff options
context:
space:
mode:
authornicole mazzuca <mazzucan@outlook.com>2019-08-12 14:02:59 -0700
committerVictor Romero <romerosanchezv@gmail.com>2019-08-12 14:02:59 -0700
commit875648e10b2e5b5dfba6be75997171f10cb868ed (patch)
tree30b8b8a5f3c12a758c8259f3c92938e7abe0f712 /toolsrc/src
parentda61a933fc325d99eecc1b39cd29dbe1584e1bf9 (diff)
downloadvcpkg-875648e10b2e5b5dfba6be75997171f10cb868ed.tar.gz
vcpkg-875648e10b2e5b5dfba6be75997171f10cb868ed.zip
[vcpkg] Fix the build on VS2015 debug (#7637)
The VS2015 standard library requires, in debug mode, a comparison operator on `T × U` and `U × T` to also be a comparison operator on `T × T` and on `U × U`, and so in vcpkg::Install::install_package::intersection_compare, I've added two new `operator()` overloads which take those respectively, on VS2015. Also, `[nodiscard]` was added to somewhere in `vcpkg/base/strings.h`, which gives a warning in VS2015 -- thus, I added the `vcpkg/pragmas.h` include, since that fixes the warning.
Diffstat (limited to 'toolsrc/src')
-rw-r--r--toolsrc/src/vcpkg/install.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/toolsrc/src/vcpkg/install.cpp b/toolsrc/src/vcpkg/install.cpp
index 165f13126..974e5f798 100644
--- a/toolsrc/src/vcpkg/install.cpp
+++ b/toolsrc/src/vcpkg/install.cpp
@@ -202,6 +202,12 @@ namespace vcpkg::Install
struct intersection_compare
{
+ // The VS2015 standard library requires comparison operators of T and U
+ // to also support comparison of T and T, and of U and U, due to debug checks.
+#if _MSC_VER < 1910
+ bool operator()(const std::string& lhs, const std::string& rhs) { return lhs < rhs; }
+ bool operator()(const file_pack& lhs, const file_pack& rhs) { return lhs.first < rhs.first; }
+#endif
bool operator()(const std::string& lhs, const file_pack& rhs) { return lhs < rhs.first; }
bool operator()(const file_pack& lhs, const std::string& rhs) { return lhs.first < rhs; }
};