mirror of
https://github.com/google/googletest.git
synced 2024-12-27 10:11:03 +08:00
Workaround for Visual C++ error C2039 with std::tuple_element_t.
Fixes #3931 PiperOrigin-RevId: 480659507 Change-Id: I6fabef63b1285189a06375227273d9de2456e37a
This commit is contained in:
parent
d9bb8412d6
commit
d29b143bda
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user