diff options
author | kuzkry <krystian.kuzniarek@gmail.com> | 2019-09-16 05:46:55 (GMT) |
---|---|---|
committer | Shaindel Schwartz <shaindel@google.com> | 2019-09-16 15:47:35 (GMT) |
commit | f2fb48c3b3d79a75a88a99fba6576b25d42ec528 (patch) | |
tree | e0e97e09100ca73573c192952ac5fb2a9194727c /googletest | |
parent | cad3bc46c2ba8ec0bd7bb252d7279fe791140fbf (diff) | |
download | googletest-f2fb48c3b3d79a75a88a99fba6576b25d42ec528.zip googletest-f2fb48c3b3d79a75a88a99fba6576b25d42ec528.tar.gz googletest-f2fb48c3b3d79a75a88a99fba6576b25d42ec528.tar.bz2 |
Googletest export
Merge 3bdefdb473d304803d2a38e2a2cd5cdc1827c3bd into fb49e6c164490a227bbb7cf5223b846c836a0305
Closes #2407
COPYBARA_INTEGRATE_REVIEW=https://github.com/google/googletest/pull/2407 from kuzkry:StaticAssertTypeEq 3bdefdb473d304803d2a38e2a2cd5cdc1827c3bd
PiperOrigin-RevId: 269255328
Diffstat (limited to 'googletest')
-rw-r--r-- | googletest/docs/advanced.md | 7 | ||||
-rw-r--r-- | googletest/include/gtest/gtest.h | 5 | ||||
-rw-r--r-- | googletest/include/gtest/internal/gtest-internal.h | 7 | ||||
-rw-r--r-- | googletest/include/gtest/internal/gtest-port.h | 11 |
4 files changed, 10 insertions, 20 deletions
diff --git a/googletest/docs/advanced.md b/googletest/docs/advanced.md index 51005e9..3e5f779 100644 --- a/googletest/docs/advanced.md +++ b/googletest/docs/advanced.md @@ -464,9 +464,10 @@ You can call the function to assert that types `T1` and `T2` are the same. The function does nothing if the assertion is satisfied. If the types are different, the function call will -fail to compile, and the compiler error message will likely (depending on the -compiler) show you the actual values of `T1` and `T2`. This is mainly useful -inside template code. +fail to compile, the compiler error message will say that +`type1 and type2 are not the same type` and most likely (depending on the compiler) +show you the actual values of `T1` and `T2`. This is mainly useful inside +template code. **Caveat**: When used inside a member function of a class template or a function template, `StaticAssertTypeEq<T1, T2>()` is effective only if the function is diff --git a/googletest/include/gtest/gtest.h b/googletest/include/gtest/gtest.h index 8e125a4..dbe5b1c 100644 --- a/googletest/include/gtest/gtest.h +++ b/googletest/include/gtest/gtest.h @@ -2297,8 +2297,9 @@ class GTEST_API_ ScopedTrace { // // to cause a compiler error. template <typename T1, typename T2> -bool StaticAssertTypeEq() { - (void)internal::StaticAssertTypeEqHelper<T1, T2>(); +constexpr bool StaticAssertTypeEq() noexcept { + static_assert(std::is_same<T1, T2>::value, + "type1 and type2 are not the same type"); return true; } diff --git a/googletest/include/gtest/internal/gtest-internal.h b/googletest/include/gtest/internal/gtest-internal.h index 22127c7..82ec6e2 100644 --- a/googletest/include/gtest/internal/gtest-internal.h +++ b/googletest/include/gtest/internal/gtest-internal.h @@ -1069,10 +1069,9 @@ class NativeArray { } private: - enum { - kCheckTypeIsNotConstOrAReference = StaticAssertTypeEqHelper< - Element, GTEST_REMOVE_REFERENCE_AND_CONST_(Element)>::value - }; + static_assert(!std::is_const<Element>::value, "Type must not be const"); + static_assert(!std::is_reference<Element>::value, + "Type must not be a reference"); // Initializes this object with a copy of the input. void InitCopy(const Element* array, size_t a_size) { diff --git a/googletest/include/gtest/internal/gtest-port.h b/googletest/include/gtest/internal/gtest-port.h index 0813adc..063fcb1 100644 --- a/googletest/include/gtest/internal/gtest-port.h +++ b/googletest/include/gtest/internal/gtest-port.h @@ -856,17 +856,6 @@ class Secret; // expression is false, compiler will issue an error containing this identifier. #define GTEST_COMPILE_ASSERT_(expr, msg) static_assert(expr, #msg) -// StaticAssertTypeEqHelper is used by StaticAssertTypeEq defined in gtest.h. -// -// This template is declared, but intentionally undefined. -template <typename T1, typename T2> -struct StaticAssertTypeEqHelper; - -template <typename T> -struct StaticAssertTypeEqHelper<T, T> { - enum { value = true }; -}; - // Evaluates to the number of elements in 'array'. #define GTEST_ARRAY_SIZE_(array) (sizeof(array) / sizeof(array[0])) |