"git@developer.sourcefind.cn:yangql/googletest.git" did not exist on "9cb03aa702235e3665d3555214eeb45082ac678e"
Commit d29b143b authored by Abseil Team's avatar Abseil Team Committed by Copybara-Service
Browse files

Workaround for Visual C++ error C2039 with std::tuple_element_t.

Fixes #3931

PiperOrigin-RevId: 480659507
Change-Id: I6fabef63b1285189a06375227273d9de2456e37a
parent d9bb8412
......@@ -1428,8 +1428,10 @@ struct WithArgsAction {
// MSVC complains about the I parameter pack not being
// expanded (error C3520) despite it being expanded in the
// type alias.
OnceAction<R(typename std::tuple_element<
I, std::tuple<Args...>>::type...)>>::value,
// TupleElement is also an MSVC workaround.
// See its definition for details.
OnceAction<R(internal::TupleElement<
I, std::tuple<Args...>>...)>>::value,
int>::type = 0>
operator OnceAction<R(Args...)>() && { // NOLINT
struct OA {
......@@ -1453,8 +1455,10 @@ struct WithArgsAction {
// MSVC complains about the I parameter pack not being
// expanded (error C3520) despite it being expanded in the
// type alias.
Action<R(typename std::tuple_element<
I, std::tuple<Args...>>::type...)>>::value,
// TupleElement is also an MSVC workaround.
// See its definition for details.
Action<R(internal::TupleElement<
I, std::tuple<Args...>>...)>>::value,
int>::type = 0>
operator Action<R(Args...)>() const { // NOLINT
Action<InnerSignature<R, Args...>> converted(inner_action);
......
......@@ -453,6 +453,13 @@ struct Function<R(Args...)> {
template <typename R, typename... Args>
constexpr size_t Function<R(Args...)>::ArgumentCount;
// Workaround for MSVC error C2039: 'type': is not a member of 'std'
// when std::tuple_element is used.
// See: https://github.com/google/googletest/issues/3931
// Can be replaced with std::tuple_element_t in C++14.
template <size_t I, typename T>
using TupleElement = typename std::tuple_element<I, T>::type;
bool Base64Unescape(const std::string& encoded, std::string* decoded);
#ifdef _MSC_VER
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment