Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
yangql
googletest
Commits
6729a136
Commit
6729a136
authored
Dec 27, 2018
by
Ryohei Machida
Committed by
Gennadiy Civil
Dec 27, 2018
Browse files
Merge #2002
PiperOrigin-RevId: 227030722
parent
77004096
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
15 additions
and
22 deletions
+15
-22
googletest/include/gtest/internal/gtest-internal.h
googletest/include/gtest/internal/gtest-internal.h
+9
-22
googletest/test/googletest-printers-test.cc
googletest/test/googletest-printers-test.cc
+6
-0
No files found.
googletest/include/gtest/internal/gtest-internal.h
View file @
6729a136
...
...
@@ -967,37 +967,24 @@ struct IsHashTable {
template
<
typename
T
>
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
,
bool
=
sizeof
(
IsContainerTest
<
C
>(
0
))
==
sizeof
(
IsContainer
),
bool
=
HasValueType
<
C
>::
value
>
bool
=
sizeof
(
IsContainerTest
<
C
>(
0
))
==
sizeof
(
IsContainer
)
>
struct
IsRecursiveContainerImpl
;
template
<
typename
C
,
bool
HV
>
struct
IsRecursiveContainerImpl
<
C
,
false
,
HV
>
:
public
false_type
{};
template
<
typename
C
>
struct
IsRecursiveContainerImpl
<
C
,
false
>
:
public
false_type
{};
// Since the IsRecursiveContainerImpl depends on the IsContainerTest we need to
// obey the same inconsistencies as the IsContainerTest, namely check if
// something is a container is relying on only const_iterator in C++11 and
// is relying on both const_iterator and iterator otherwise
template
<
typename
C
>
struct
IsRecursiveContainerImpl
<
C
,
true
,
false
>
:
public
false_type
{};
template
<
typename
C
>
struct
IsRecursiveContainerImpl
<
C
,
true
,
true
>
{
typedef
typename
IteratorTraits
<
typename
C
::
const_iterator
>::
value_type
value_type
;
typedef
is_same
<
value_type
,
C
>
type
;
struct
IsRecursiveContainerImpl
<
C
,
true
>
{
using
value_type
=
decltype
(
*
std
::
declval
<
typename
C
::
const_iterator
>
());
using
type
=
is_same
<
typename
std
::
remove_const
<
typename
std
::
remove_reference
<
value_type
>::
type
>::
type
,
C
>
;
};
// IsRecursiveContainer<Type> is a unary compile-time predicate that
...
...
googletest/test/googletest-printers-test.cc
View file @
6729a136
...
...
@@ -183,8 +183,14 @@ class PathLike {
public:
struct
iterator
{
typedef
PathLike
value_type
;
iterator
&
operator
++
();
PathLike
&
operator
*
();
};
using
value_type
=
char
;
using
const_iterator
=
iterator
;
PathLike
()
{}
iterator
begin
()
const
{
return
iterator
();
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment