remove a custom implementation of std::enable_if

This commit is contained in:
Krystian Kuzniarek 2019-08-13 23:35:11 +02:00
parent 90a443f9c2
commit 11471da793
3 changed files with 8 additions and 13 deletions

View File

@ -42,6 +42,7 @@
#include <memory> #include <memory>
#include <ostream> #include <ostream>
#include <string> #include <string>
#include <type_traits>
#include "gtest/gtest-printers.h" #include "gtest/gtest-printers.h"
#include "gtest/internal/gtest-internal.h" #include "gtest/internal/gtest-internal.h"
@ -299,8 +300,8 @@ class MatcherBase {
template <typename U> template <typename U>
explicit MatcherBase( explicit MatcherBase(
const MatcherInterface<U>* impl, const MatcherInterface<U>* impl,
typename internal::EnableIf< typename std::enable_if<!internal::IsSame<U, const U&>::value>::type* =
!internal::IsSame<U, const U&>::value>::type* = nullptr) nullptr)
: impl_(new internal::MatcherInterfaceAdapter<U>(impl)) {} : impl_(new internal::MatcherInterfaceAdapter<U>(impl)) {}
MatcherBase(const MatcherBase&) = default; MatcherBase(const MatcherBase&) = default;
@ -333,9 +334,10 @@ class Matcher : public internal::MatcherBase<T> {
: internal::MatcherBase<T>(impl) {} : internal::MatcherBase<T>(impl) {}
template <typename U> template <typename U>
explicit Matcher(const MatcherInterface<U>* impl, explicit Matcher(
typename internal::EnableIf< const MatcherInterface<U>* impl,
!internal::IsSame<U, const U&>::value>::type* = nullptr) typename std::enable_if<!internal::IsSame<U, const U&>::value>::type* =
nullptr)
: internal::MatcherBase<T>(impl) {} : internal::MatcherBase<T>(impl) {}
// Implicit constructor here allows people to write // Implicit constructor here allows people to write

View File

@ -292,7 +292,7 @@ class GTEST_API_ AssertionResult {
template <typename T> template <typename T>
explicit AssertionResult( explicit AssertionResult(
const T& success, const T& success,
typename internal::EnableIf< typename std::enable_if<
!std::is_convertible<T, AssertionResult>::value>::type* !std::is_convertible<T, AssertionResult>::value>::type*
/*enabler*/ /*enabler*/
= nullptr) = nullptr)

View File

@ -991,13 +991,6 @@ struct IsRecursiveContainerImpl<C, true> {
template <typename C> template <typename C>
struct IsRecursiveContainer : public IsRecursiveContainerImpl<C>::type {}; struct IsRecursiveContainer : public IsRecursiveContainerImpl<C>::type {};
// EnableIf<condition>::type is void when 'Cond' is true, and
// undefined when 'Cond' is false. To use SFINAE to make a function
// overload only apply when a particular expression is true, add
// "typename EnableIf<expression>::type* = 0" as the last parameter.
template<bool> struct EnableIf;
template<> struct EnableIf<true> { typedef void type; }; // NOLINT
// Utilities for native arrays. // Utilities for native arrays.
// ArrayEq() compares two k-dimensional native arrays using the // ArrayEq() compares two k-dimensional native arrays using the