Unconditionally use std::tuple.
Remove all mention of TR1 tuple and our own implementation of tuple. PiperOrigin-RevId: 216395043
This commit is contained in:
committed by
Gennadiy Civil
parent
5434989dbd
commit
7d3b73c85a
@@ -85,8 +85,6 @@
|
||||
// GTEST_HAS_STD_WSTRING - Define it to 1/0 to indicate that
|
||||
// std::wstring does/doesn't work (Google Test can
|
||||
// be used where std::wstring is unavailable).
|
||||
// GTEST_HAS_TR1_TUPLE - Define it to 1/0 to indicate tr1::tuple
|
||||
// is/isn't available.
|
||||
// GTEST_HAS_SEH - Define it to 1/0 to indicate whether the
|
||||
// compiler supports Microsoft's "Structured
|
||||
// Exception Handling".
|
||||
@@ -94,10 +92,6 @@
|
||||
// - Define it to 1/0 to indicate whether the
|
||||
// platform supports I/O stream redirection using
|
||||
// dup() and dup2().
|
||||
// GTEST_USE_OWN_TR1_TUPLE - Define it to 1/0 to indicate whether Google
|
||||
// Test's own tr1 tuple implementation should be
|
||||
// used. Unused when the user sets
|
||||
// GTEST_HAS_TR1_TUPLE to 0.
|
||||
// GTEST_LANG_CXX11 - Define it to 1/0 to indicate that Google Test
|
||||
// is building in C++11/C++98 mode.
|
||||
// GTEST_LINKED_AS_SHARED_LIBRARY
|
||||
@@ -172,8 +166,6 @@
|
||||
// EXPECT_DEATH(DoSomethingDeadly());
|
||||
// #endif
|
||||
//
|
||||
// GTEST_HAS_COMBINE - the Combine() function (for value-parameterized
|
||||
// tests)
|
||||
// GTEST_HAS_DEATH_TEST - death tests
|
||||
// GTEST_HAS_TYPED_TEST - typed tests
|
||||
// GTEST_HAS_TYPED_TEST_P - type-parameterized tests
|
||||
@@ -280,10 +272,11 @@
|
||||
|
||||
// Brings in the definition of HAS_GLOBAL_STRING. This must be done
|
||||
// BEFORE we test HAS_GLOBAL_STRING.
|
||||
#include <string> // NOLINT
|
||||
#include <string> // NOLINT
|
||||
#include <algorithm> // NOLINT
|
||||
#include <iostream> // NOLINT
|
||||
#include <sstream> // NOLINT
|
||||
#include <iostream> // NOLINT
|
||||
#include <sstream> // NOLINT
|
||||
#include <tuple>
|
||||
#include <utility>
|
||||
#include <vector> // NOLINT
|
||||
|
||||
@@ -381,31 +374,6 @@
|
||||
# define GTEST_HAS_UNORDERED_SET_ 1
|
||||
#endif
|
||||
|
||||
// C++11 specifies that <tuple> provides std::tuple.
|
||||
// Some platforms still might not have it, however.
|
||||
#if GTEST_LANG_CXX11
|
||||
# define GTEST_HAS_STD_TUPLE_ 1
|
||||
# if defined(__clang__)
|
||||
// Inspired by
|
||||
// https://clang.llvm.org/docs/LanguageExtensions.html#include-file-checking-macros
|
||||
# if defined(__has_include) && !__has_include(<tuple>)
|
||||
# undef GTEST_HAS_STD_TUPLE_
|
||||
# endif
|
||||
# elif defined(_MSC_VER)
|
||||
// Inspired by boost/config/stdlib/dinkumware.hpp
|
||||
# if defined(_CPPLIB_VER) && _CPPLIB_VER < 520
|
||||
# undef GTEST_HAS_STD_TUPLE_
|
||||
# endif
|
||||
# elif defined(__GLIBCXX__)
|
||||
// Inspired by boost/config/stdlib/libstdcpp3.hpp,
|
||||
// http://gcc.gnu.org/gcc-4.2/changes.html and
|
||||
// https://web.archive.org/web/20140227044429/gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt01ch01.html#manual.intro.status.standard.200x
|
||||
# if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 2)
|
||||
# undef GTEST_HAS_STD_TUPLE_
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
// Brings in definitions for functions used in the testing::internal::posix
|
||||
// namespace (read, write, close, chdir, isatty, stat). We do not currently
|
||||
// use them on Windows Mobile.
|
||||
@@ -647,127 +615,6 @@ typedef struct _RTL_CRITICAL_SECTION GTEST_CRITICAL_SECTION;
|
||||
# endif // _MSC_VER
|
||||
#endif // !defined(GTEST_HAS_HASH_MAP_)
|
||||
|
||||
// Determines whether Google Test can use tr1/tuple. You can define
|
||||
// this macro to 0 to prevent Google Test from using tuple (any
|
||||
// feature depending on tuple with be disabled in this mode).
|
||||
#ifndef GTEST_HAS_TR1_TUPLE
|
||||
# if GTEST_OS_LINUX_ANDROID && defined(_STLPORT_MAJOR)
|
||||
// STLport, provided with the Android NDK, has neither <tr1/tuple> or <tuple>.
|
||||
# define GTEST_HAS_TR1_TUPLE 0
|
||||
# elif defined(_MSC_VER) && (_MSC_VER >= 1910)
|
||||
// Prevent `warning C4996: 'std::tr1': warning STL4002:
|
||||
// The non-Standard std::tr1 namespace and TR1-only machinery
|
||||
// are deprecated and will be REMOVED.`
|
||||
# define GTEST_HAS_TR1_TUPLE 0
|
||||
# elif GTEST_LANG_CXX11 && defined(_LIBCPP_VERSION)
|
||||
// libc++ doesn't support TR1.
|
||||
# define GTEST_HAS_TR1_TUPLE 0
|
||||
# else
|
||||
// The user didn't tell us not to do it, so we assume it's OK.
|
||||
# define GTEST_HAS_TR1_TUPLE 1
|
||||
# endif
|
||||
#endif // GTEST_HAS_TR1_TUPLE
|
||||
|
||||
// Determines whether Google Test's own tr1 tuple implementation
|
||||
// should be used.
|
||||
#ifndef GTEST_USE_OWN_TR1_TUPLE
|
||||
// We use our own tuple implementation on Symbian.
|
||||
# if GTEST_OS_SYMBIAN
|
||||
# define GTEST_USE_OWN_TR1_TUPLE 1
|
||||
# else
|
||||
// The user didn't tell us, so we need to figure it out.
|
||||
|
||||
// We use our own TR1 tuple if we aren't sure the user has an
|
||||
// implementation of it already. At this time, libstdc++ 4.0.0+ and
|
||||
// MSVC 2010 are the only mainstream standard libraries that come
|
||||
// with a TR1 tuple implementation. NVIDIA's CUDA NVCC compiler
|
||||
// pretends to be GCC by defining __GNUC__ and friends, but cannot
|
||||
// compile GCC's tuple implementation. MSVC 2008 (9.0) provides TR1
|
||||
// tuple in a 323 MB Feature Pack download, which we cannot assume the
|
||||
// user has. QNX's QCC compiler is a modified GCC but it doesn't
|
||||
// support TR1 tuple. libc++ only provides std::tuple, in C++11 mode,
|
||||
// and it can be used with some compilers that define __GNUC__.
|
||||
# if (defined(__GNUC__) && !defined(__CUDACC__) && (GTEST_GCC_VER_ >= 40000) \
|
||||
&& !GTEST_OS_QNX && !defined(_LIBCPP_VERSION)) \
|
||||
|| (_MSC_VER >= 1600 && _MSC_VER < 1900)
|
||||
# define GTEST_ENV_HAS_TR1_TUPLE_ 1
|
||||
# endif
|
||||
|
||||
// C++11 specifies that <tuple> provides std::tuple. Use that if gtest is used
|
||||
// in C++11 mode and libstdc++ isn't very old (binaries targeting OS X 10.6
|
||||
// can build with clang but need to use gcc4.2's libstdc++).
|
||||
# if GTEST_LANG_CXX11 && (!defined(__GLIBCXX__) || __GLIBCXX__ > 20110325)
|
||||
# define GTEST_ENV_HAS_STD_TUPLE_ 1
|
||||
# endif
|
||||
|
||||
# if GTEST_ENV_HAS_TR1_TUPLE_ || GTEST_ENV_HAS_STD_TUPLE_
|
||||
# define GTEST_USE_OWN_TR1_TUPLE 0
|
||||
# else
|
||||
# define GTEST_USE_OWN_TR1_TUPLE 1
|
||||
# endif
|
||||
# endif // GTEST_OS_SYMBIAN
|
||||
#endif // GTEST_USE_OWN_TR1_TUPLE
|
||||
|
||||
// To avoid conditional compilation we make it gtest-port.h's responsibility
|
||||
// to #include the header implementing tuple.
|
||||
#if GTEST_HAS_STD_TUPLE_
|
||||
# include <tuple> // IWYU pragma: export
|
||||
# define GTEST_TUPLE_NAMESPACE_ ::std
|
||||
#endif // GTEST_HAS_STD_TUPLE_
|
||||
|
||||
// We include tr1::tuple even if std::tuple is available to define printers for
|
||||
// them.
|
||||
#if GTEST_HAS_TR1_TUPLE
|
||||
# ifndef GTEST_TUPLE_NAMESPACE_
|
||||
# define GTEST_TUPLE_NAMESPACE_ ::std::tr1
|
||||
# endif // GTEST_TUPLE_NAMESPACE_
|
||||
|
||||
# if GTEST_USE_OWN_TR1_TUPLE
|
||||
# include "third_party/googletest/googletest/include/gtest/internal/gtest-tuple.h" // IWYU pragma: export // NOLINT
|
||||
# elif GTEST_OS_SYMBIAN
|
||||
|
||||
// On Symbian, BOOST_HAS_TR1_TUPLE causes Boost's TR1 tuple library to
|
||||
// use STLport's tuple implementation, which unfortunately doesn't
|
||||
// work as the copy of STLport distributed with Symbian is incomplete.
|
||||
// By making sure BOOST_HAS_TR1_TUPLE is undefined, we force Boost to
|
||||
// use its own tuple implementation.
|
||||
# ifdef BOOST_HAS_TR1_TUPLE
|
||||
# undef BOOST_HAS_TR1_TUPLE
|
||||
# endif // BOOST_HAS_TR1_TUPLE
|
||||
|
||||
// This prevents <boost/tr1/detail/config.hpp>, which defines
|
||||
// BOOST_HAS_TR1_TUPLE, from being #included by Boost's <tuple>.
|
||||
# define BOOST_TR1_DETAIL_CONFIG_HPP_INCLUDED
|
||||
# include <tuple> // IWYU pragma: export // NOLINT
|
||||
|
||||
# elif defined(__GNUC__) && (GTEST_GCC_VER_ >= 40000)
|
||||
// GCC 4.0+ implements tr1/tuple in the <tr1/tuple> header. This does
|
||||
// not conform to the TR1 spec, which requires the header to be <tuple>.
|
||||
|
||||
# if !GTEST_HAS_RTTI && GTEST_GCC_VER_ < 40302
|
||||
// Until version 4.3.2, gcc has a bug that causes <tr1/functional>,
|
||||
// which is #included by <tr1/tuple>, to not compile when RTTI is
|
||||
// disabled. _TR1_FUNCTIONAL is the header guard for
|
||||
// <tr1/functional>. Hence the following #define is used to prevent
|
||||
// <tr1/functional> from being included.
|
||||
# define _TR1_FUNCTIONAL 1
|
||||
# include <tr1/tuple>
|
||||
# undef _TR1_FUNCTIONAL // Allows the user to #include
|
||||
// <tr1/functional> if they choose to.
|
||||
# else
|
||||
# include <tr1/tuple> // NOLINT
|
||||
# endif // !GTEST_HAS_RTTI && GTEST_GCC_VER_ < 40302
|
||||
|
||||
// VS 2010 now has tr1 support.
|
||||
# elif _MSC_VER >= 1600
|
||||
# include <tuple> // IWYU pragma: export // NOLINT
|
||||
|
||||
# else // GTEST_USE_OWN_TR1_TUPLE
|
||||
# include <tr1/tuple> // IWYU pragma: export // NOLINT
|
||||
# endif // GTEST_USE_OWN_TR1_TUPLE
|
||||
|
||||
#endif // GTEST_HAS_TR1_TUPLE
|
||||
|
||||
// Determines whether clone(2) is supported.
|
||||
// Usually it will only be available on Linux, excluding
|
||||
// Linux on the Itanium architecture.
|
||||
@@ -832,14 +679,6 @@ typedef struct _RTL_CRITICAL_SECTION GTEST_CRITICAL_SECTION;
|
||||
# define GTEST_HAS_TYPED_TEST_P 1
|
||||
#endif
|
||||
|
||||
// Determines whether to support Combine(). This only makes sense when
|
||||
// value-parameterized tests are enabled. The implementation doesn't
|
||||
// work on Sun Studio since it doesn't understand templated conversion
|
||||
// operators.
|
||||
#if (GTEST_HAS_TR1_TUPLE || GTEST_HAS_STD_TUPLE_) && !defined(__SUNPRO_CC)
|
||||
# define GTEST_HAS_COMBINE 1
|
||||
#endif
|
||||
|
||||
// Determines whether the system compiler uses UTF-16 for encoding wide strings.
|
||||
#define GTEST_WIDE_STRING_USES_UTF16_ \
|
||||
(GTEST_OS_WINDOWS || GTEST_OS_CYGWIN || GTEST_OS_SYMBIAN || GTEST_OS_AIX)
|
||||
@@ -1049,16 +888,13 @@ namespace testing {
|
||||
|
||||
class Message;
|
||||
|
||||
#if defined(GTEST_TUPLE_NAMESPACE_)
|
||||
// Import tuple and friends into the ::testing namespace.
|
||||
// It is part of our interface, having them in ::testing allows us to change
|
||||
// their types as needed.
|
||||
using GTEST_TUPLE_NAMESPACE_::get;
|
||||
using GTEST_TUPLE_NAMESPACE_::make_tuple;
|
||||
using GTEST_TUPLE_NAMESPACE_::tuple;
|
||||
using GTEST_TUPLE_NAMESPACE_::tuple_size;
|
||||
using GTEST_TUPLE_NAMESPACE_::tuple_element;
|
||||
#endif // defined(GTEST_TUPLE_NAMESPACE_)
|
||||
// Legacy imports for backwards compatibility.
|
||||
// New code should use std:: names directly.
|
||||
using std::get;
|
||||
using std::make_tuple;
|
||||
using std::tuple;
|
||||
using std::tuple_element;
|
||||
using std::tuple_size;
|
||||
|
||||
namespace internal {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user