diff --git a/ports/abseil/CONTROL b/ports/abseil/CONTROL index bcde132e82ecfc..bdfd2c6b82903e 100644 --- a/ports/abseil/CONTROL +++ b/ports/abseil/CONTROL @@ -1,5 +1,5 @@ Source: abseil -Version: 2020-03-03-2 +Version: 2020-03-03-3 Homepage: https://github.com/abseil/abseil-cpp Description: an open-source collection designed to augment the C++ standard library. Abseil is an open-source collection of C++ library code designed to augment the C++ standard library. The Abseil library code is collected from Google's own C++ code base, has been extensively tested and used in production, and is the same code we depend on in our daily coding lives. diff --git a/ports/abseil/fix-MSVCbuildfail.patch b/ports/abseil/fix-MSVCbuildfail.patch new file mode 100644 index 00000000000000..7c041c27bb9187 --- /dev/null +++ b/ports/abseil/fix-MSVCbuildfail.patch @@ -0,0 +1,65 @@ +diff --git a/absl/container/internal/compressed_tuple.h b/absl/container/internal/compressed_tuple.h +index 4bfe92f..02bfd03 100644 +--- a/absl/container/internal/compressed_tuple.h ++++ b/absl/container/internal/compressed_tuple.h +@@ -169,9 +169,33 @@ constexpr bool ShouldAnyUseBase() { + } + + template +-using TupleMoveConstructible = typename std::conditional< +- std::is_reference::value, std::is_convertible, +- std::is_constructible>::type; ++using TupleElementMoveConstructible = ++ typename std::conditional::value, ++ std::is_convertible, ++ std::is_constructible>::type; ++ ++template ++struct TupleMoveConstructible : std::false_type {}; ++ ++template ++struct TupleMoveConstructible, Vs...> ++ : std::integral_constant< ++ bool, absl::conjunction< ++ TupleElementMoveConstructible...>::value> {}; ++ ++template ++struct compressed_tuple_size; ++ ++template ++struct compressed_tuple_size> ++ : public std::integral_constant {}; ++ ++template ++struct TupleItemsMoveConstructible ++ : std::integral_constant< ++ bool, TupleMoveConstructible::value == ++ sizeof...(Vs), ++ T, Vs...>::value> {}; + + } // namespace internal_compressed_tuple + +@@ -217,17 +241,18 @@ class ABSL_INTERNAL_COMPRESSED_TUPLE_DECLSPEC CompressedTuple + explicit constexpr CompressedTuple(const Ts&... base) + : CompressedTuple::CompressedTupleImpl(absl::in_place, base...) {} + +- template ...)>>, +- internal_compressed_tuple::TupleMoveConstructible< +- Ts, Vs&&>...>::value, ++ void(absl::decay_t)>>, ++ internal_compressed_tuple::TupleItemsMoveConstructible< ++ CompressedTuple, First, Vs...>>::value, + bool> = true> +- explicit constexpr CompressedTuple(Vs&&... base) ++ explicit constexpr CompressedTuple(First&& first, Vs&&... base) + : CompressedTuple::CompressedTupleImpl(absl::in_place, ++ absl::forward(first), + absl::forward(base)...) {} + + template diff --git a/ports/abseil/portfile.cmake b/ports/abseil/portfile.cmake index 4c9196207691f6..495885572fb304 100644 --- a/ports/abseil/portfile.cmake +++ b/ports/abseil/portfile.cmake @@ -9,6 +9,7 @@ vcpkg_from_github( PATCHES fix-lnk2019-error.patch fix-uwp-build.patch + fix-MSVCbuildfail.patch #This patch is an upstream commit, the related PR: https://github.com/abseil/abseil-cpp/pull/637 ) set(CMAKE_CXX_STANDARD )