cl 189032107, again
This commit is contained in:
parent
080fcbe0aa
commit
a3c2e107ae
@ -933,19 +933,34 @@ struct IsHashTable {
|
|||||||
template <typename T>
|
template <typename T>
|
||||||
const bool IsHashTable<T>::value;
|
const bool IsHashTable<T>::value;
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
struct VoidT {
|
||||||
|
typedef void value_type;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename T, typename = void>
|
||||||
|
struct HasValueType : false_type {};
|
||||||
|
template <typename T>
|
||||||
|
struct HasValueType<T, VoidT<typename T::value_type> > : true_type {
|
||||||
|
};
|
||||||
|
|
||||||
template <typename C,
|
template <typename C,
|
||||||
bool = sizeof(IsContainerTest<C>(0)) == sizeof(IsContainer)>
|
bool = sizeof(IsContainerTest<C>(0)) == sizeof(IsContainer),
|
||||||
|
bool = HasValueType<C>::value>
|
||||||
struct IsRecursiveContainerImpl;
|
struct IsRecursiveContainerImpl;
|
||||||
|
|
||||||
template <typename C>
|
template <typename C, bool HV>
|
||||||
struct IsRecursiveContainerImpl<C, false> : public false_type {};
|
struct IsRecursiveContainerImpl<C, false, HV> : public false_type {};
|
||||||
|
|
||||||
// Since the IsRecursiveContainerImpl depends on the IsContainerTest we need to
|
// Since the IsRecursiveContainerImpl depends on the IsContainerTest we need to
|
||||||
// obey the same inconsistencies as the IsContainerTest, namely check if
|
// obey the same inconsistencies as the IsContainerTest, namely check if
|
||||||
// something is a container is relying on only const_iterator in C++11 and
|
// something is a container is relying on only const_iterator in C++11 and
|
||||||
// is relying on both const_iterator and iterator otherwise
|
// is relying on both const_iterator and iterator otherwise
|
||||||
template <typename C>
|
template <typename C>
|
||||||
struct IsRecursiveContainerImpl<C, true> {
|
struct IsRecursiveContainerImpl<C, true, false> : public false_type {};
|
||||||
|
|
||||||
|
template <typename C>
|
||||||
|
struct IsRecursiveContainerImpl<C, true, true> {
|
||||||
#if GTEST_LANG_CXX11
|
#if GTEST_LANG_CXX11
|
||||||
typedef typename IteratorTraits<typename C::const_iterator>::value_type
|
typedef typename IteratorTraits<typename C::const_iterator>::value_type
|
||||||
value_type;
|
value_type;
|
||||||
|
@ -195,7 +195,6 @@ class PathLike {
|
|||||||
struct iterator {
|
struct iterator {
|
||||||
typedef PathLike value_type;
|
typedef PathLike value_type;
|
||||||
};
|
};
|
||||||
typedef iterator const_iterator;
|
|
||||||
|
|
||||||
PathLike() {}
|
PathLike() {}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user