diff options
| author | Lily <47812810+LilyWangL@users.noreply.github.com> | 2020-04-18 05:15:00 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-04-17 14:15:00 -0700 |
| commit | 87ebede04135a7effa1b55c22d1b194282f6603e (patch) | |
| tree | 1cd73c109d1fe4547648d56adf9ca7ac0c0fa3a0 | |
| parent | 4d8237b89ccefca3e50000406eebdc36d27aac07 (diff) | |
| download | vcpkg-87ebede04135a7effa1b55c22d1b194282f6603e.tar.gz vcpkg-87ebede04135a7effa1b55c22d1b194282f6603e.zip | |
[abseil] Fix CompressedTuple move constructor on MSVC (#10721)
* [abseil] Fix CompressedTuple move constructor on MSVC
* [abseil] Add comment for new patch
| -rw-r--r-- | ports/abseil/CONTROL | 2 | ||||
| -rw-r--r-- | ports/abseil/fix-MSVCbuildfail.patch | 65 | ||||
| -rw-r--r-- | ports/abseil/portfile.cmake | 1 |
3 files changed, 67 insertions, 1 deletions
diff --git a/ports/abseil/CONTROL b/ports/abseil/CONTROL index bcde132e8..bdfd2c6b8 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 000000000..7c041c27b --- /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 <typename T, typename V> +-using TupleMoveConstructible = typename std::conditional< +- std::is_reference<T>::value, std::is_convertible<V, T>, +- std::is_constructible<T, V&&>>::type; ++using TupleElementMoveConstructible = ++ typename std::conditional<std::is_reference<T>::value, ++ std::is_convertible<V, T>, ++ std::is_constructible<T, V&&>>::type; ++ ++template <bool SizeMatches, class T, class... Vs> ++struct TupleMoveConstructible : std::false_type {}; ++ ++template <class... Ts, class... Vs> ++struct TupleMoveConstructible<true, CompressedTuple<Ts...>, Vs...> ++ : std::integral_constant< ++ bool, absl::conjunction< ++ TupleElementMoveConstructible<Ts, Vs&&>...>::value> {}; ++ ++template <typename T> ++struct compressed_tuple_size; ++ ++template <typename... Es> ++struct compressed_tuple_size<CompressedTuple<Es...>> ++ : public std::integral_constant<std::size_t, sizeof...(Es)> {}; ++ ++template <class T, class... Vs> ++struct TupleItemsMoveConstructible ++ : std::integral_constant< ++ bool, TupleMoveConstructible<compressed_tuple_size<T>::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 <typename... Vs, ++ template <typename First, typename... Vs, + absl::enable_if_t< + absl::conjunction< + // Ensure we are not hiding default copy/move constructors. + absl::negation<std::is_same<void(CompressedTuple), +- void(absl::decay_t<Vs>...)>>, +- internal_compressed_tuple::TupleMoveConstructible< +- Ts, Vs&&>...>::value, ++ void(absl::decay_t<First>)>>, ++ internal_compressed_tuple::TupleItemsMoveConstructible< ++ CompressedTuple<Ts...>, 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>(first), + absl::forward<Vs>(base)...) {} + + template <int I> diff --git a/ports/abseil/portfile.cmake b/ports/abseil/portfile.cmake index 4c9196207..495885572 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 )
|
