Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
abseil-cpp
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
open
abseil-cpp
Commits
b92f35f6
Unverified
Commit
b92f35f6
authored
Mar 12, 2020
by
i-do-cpp
Committed by
GitHub
Mar 12, 2020
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix CompressedTuple move constructor on MSVC (#637)
parent
a877af1f
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
33 additions
and
8 deletions
+33
-8
absl/container/internal/compressed_tuple.h
+33
-8
No files found.
absl/container/internal/compressed_tuple.h
View file @
b92f35f6
...
@@ -169,9 +169,33 @@ constexpr bool ShouldAnyUseBase() {
...
@@ -169,9 +169,33 @@ constexpr bool ShouldAnyUseBase() {
}
}
template
<
typename
T
,
typename
V
>
template
<
typename
T
,
typename
V
>
using
TupleMoveConstructible
=
typename
std
::
conditional
<
using
TupleElementMoveConstructible
=
std
::
is_reference
<
T
>::
value
,
std
::
is_convertible
<
V
,
T
>
,
typename
std
::
conditional
<
std
::
is_reference
<
T
>::
value
,
std
::
is_constructible
<
T
,
V
&&>>::
type
;
std
::
is_convertible
<
V
,
T
>
,
std
::
is_constructible
<
T
,
V
&&>>::
type
;
template
<
bool
SizeMatches
,
class
T
,
class
...
Vs
>
struct
TupleMoveConstructible
:
std
::
false_type
{};
template
<
class
...
Ts
,
class
...
Vs
>
struct
TupleMoveConstructible
<
true
,
CompressedTuple
<
Ts
...
>
,
Vs
...
>
:
std
::
integral_constant
<
bool
,
absl
::
conjunction
<
TupleElementMoveConstructible
<
Ts
,
Vs
&&>
...
>::
value
>
{};
template
<
typename
T
>
struct
compressed_tuple_size
;
template
<
typename
...
Es
>
struct
compressed_tuple_size
<
CompressedTuple
<
Es
...
>>
:
public
std
::
integral_constant
<
std
::
size_t
,
sizeof
...(
Es
)
>
{};
template
<
class
T
,
class
...
Vs
>
struct
TupleItemsMoveConstructible
:
std
::
integral_constant
<
bool
,
TupleMoveConstructible
<
compressed_tuple_size
<
T
>::
value
==
sizeof
...(
Vs
),
T
,
Vs
...
>::
value
>
{};
}
// namespace internal_compressed_tuple
}
// namespace internal_compressed_tuple
...
@@ -217,17 +241,18 @@ class ABSL_INTERNAL_COMPRESSED_TUPLE_DECLSPEC CompressedTuple
...
@@ -217,17 +241,18 @@ class ABSL_INTERNAL_COMPRESSED_TUPLE_DECLSPEC CompressedTuple
explicit
constexpr
CompressedTuple
(
const
Ts
&
...
base
)
explicit
constexpr
CompressedTuple
(
const
Ts
&
...
base
)
:
CompressedTuple
::
CompressedTupleImpl
(
absl
::
in_place
,
base
...)
{}
:
CompressedTuple
::
CompressedTupleImpl
(
absl
::
in_place
,
base
...)
{}
template
<
typename
...
Vs
,
template
<
typename
First
,
typename
...
Vs
,
absl
::
enable_if_t
<
absl
::
enable_if_t
<
absl
::
conjunction
<
absl
::
conjunction
<
// Ensure we are not hiding default copy/move constructors.
// Ensure we are not hiding default copy/move constructors.
absl
::
negation
<
std
::
is_same
<
void
(
CompressedTuple
),
absl
::
negation
<
std
::
is_same
<
void
(
CompressedTuple
),
void
(
absl
::
decay_t
<
Vs
>
...
)
>>
,
void
(
absl
::
decay_t
<
First
>
)
>>
,
internal_compressed_tuple
::
TupleMoveConstructible
<
internal_compressed_tuple
::
Tuple
Items
MoveConstructible
<
Ts
,
Vs
&&>
...
>::
value
,
CompressedTuple
<
Ts
...
>
,
First
,
Vs
...
>
>::
value
,
bool
>
=
true
>
bool
>
=
true
>
explicit
constexpr
CompressedTuple
(
Vs
&&
...
base
)
explicit
constexpr
CompressedTuple
(
First
&&
first
,
Vs
&&
...
base
)
:
CompressedTuple
::
CompressedTupleImpl
(
absl
::
in_place
,
:
CompressedTuple
::
CompressedTupleImpl
(
absl
::
in_place
,
absl
::
forward
<
First
>
(
first
),
absl
::
forward
<
Vs
>
(
base
)...)
{}
absl
::
forward
<
Vs
>
(
base
)...)
{}
template
<
int
I
>
template
<
int
I
>
...
...
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