37 #ifndef GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_ 38 #define GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_ 41 #include <type_traits> 48 #if GTEST_HAS_CXXABI_H_ 50 #elif defined(__HP_aCC) 51 #include <acxx_demangle.h> 52 #endif // GTEST_HASH_CXXABI_H_ 62 static const char prefix[] =
"std::__";
63 if (s.compare(0, strlen(prefix), prefix) == 0) {
64 std::string::size_type end = s.find(
"::", strlen(prefix));
67 s.erase(strlen(
"std"), end - strlen(
"std"));
76 const char*
const name = type.name();
77 #if GTEST_HAS_CXXABI_H_ || defined(__HP_aCC) 81 #if GTEST_HAS_CXXABI_H_ 82 using abi::__cxa_demangle;
83 #endif // GTEST_HAS_CXXABI_H_ 84 char*
const readable_name = __cxa_demangle(name,
nullptr,
nullptr, &status);
85 const std::string name_str(status == 0 ? readable_name : name);
90 #endif // GTEST_HAS_CXXABI_H_ || __HP_aCC 92 #endif // GTEST_HAS_RTTI 104 #endif // GTEST_HAS_RTTI 110 #define GTEST_TEMPLATE_ \ 111 template <typename T> \ 122 template <GTEST_TEMPLATE_ Tmpl>
124 template <
typename T>
130 #define GTEST_BIND_(TmplSel, T) TmplSel::template Bind<T>::type 138 template <GTEST_TEMPLATE_ Head_>
145 template <
typename Head_,
typename... Tail_>
151 template <
typename Head_>
159 template <
typename... Ts>
167 template <
typename... Ts>
173 template <
typename T>
176 using proxy =
typename std::conditional<is_proxy_type_list<T>::value, T,
185 template <
typename... Ts>
190 #endif // GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
std::string GetTypeName()
std::string CanonicalizeForStdLibVersioning(std::string s)