diff options
author | Abseil Team <absl-team@google.com> | 2023-06-27 18:14:33 (GMT) |
---|---|---|
committer | Copybara-Service <copybara-worker@google.com> | 2023-06-27 18:17:00 (GMT) |
commit | f269e15c5cafa4ba7f4b543e0c395646bbbbd32d (patch) | |
tree | 5a477f55d220ade87076b3ae9fc8826a94017190 /googletest/test/gtest_unittest.cc | |
parent | 8e32de89cfe725dc9c084044b71e9c13246049c4 (diff) | |
download | googletest-f269e15c5cafa4ba7f4b543e0c395646bbbbd32d.zip googletest-f269e15c5cafa4ba7f4b543e0c395646bbbbd32d.tar.gz googletest-f269e15c5cafa4ba7f4b543e0c395646bbbbd32d.tar.bz2 |
Resolve an issue where the resolution of `operator<<` overloads would attempt to instantiate the incomplete `testing::internal::Secret` type.
PiperOrigin-RevId: 543799815
Change-Id: Ic0a4f48d825bef26cb8cc74d8a0117b3a5ef3f14
Diffstat (limited to 'googletest/test/gtest_unittest.cc')
-rw-r--r-- | googletest/test/gtest_unittest.cc | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/googletest/test/gtest_unittest.cc b/googletest/test/gtest_unittest.cc index dd049a0..6caa03f 100644 --- a/googletest/test/gtest_unittest.cc +++ b/googletest/test/gtest_unittest.cc @@ -67,11 +67,27 @@ TEST(CommandLineFlagsTest, CanBeAccessedInCodeOnceGTestHIsIncluded) { #include <string> #include <type_traits> #include <unordered_set> +#include <utility> #include <vector> #include "gtest/gtest-spi.h" #include "src/gtest-internal-inl.h" +struct ConvertibleGlobalType { + // The inner enable_if is to ensure invoking is_constructible doesn't fail. + // The outer enable_if is to ensure the overload resolution doesn't encounter + // an ambiguity. + template < + class T, + std::enable_if_t< + false, std::enable_if_t<std::is_constructible<T>::value, int>> = 0> + operator T() const; // NOLINT(google-explicit-constructor) +}; +void operator<<(ConvertibleGlobalType&, int); +static_assert(sizeof(decltype(std::declval<ConvertibleGlobalType&>() + << 1)(*)()) > 0, + "error in operator<< overload resolution"); + namespace testing { namespace internal { |