Skip to content

Commit 7028ef9

Browse files
authored
Merge pull request #118 from wravery/master
Explicit cast from std::vector<bool>::reference
2 parents 8bc56f7 + 647cb3b commit 7028ef9

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

include/graphqlservice/GraphQLService.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -589,13 +589,15 @@ struct ModifiedResult
589589

590590
wrappedParams.errorPath.push(size_t { 0 });
591591

592-
if constexpr (!std::is_reference_v<typename std::decay_t<decltype(wrappedFuture.get())>::reference>)
592+
using vector_type = std::decay_t<decltype(wrappedFuture.get())>;
593+
594+
if constexpr (!std::is_same_v<std::decay_t<typename vector_type::reference>, typename vector_type::value_type>)
593595
{
594596
// Special handling for std::vector<> specializations which don't return a reference to the underlying type,
595597
// i.e. std::vector<bool> on many platforms. Copy the values from the std::vector<> rather than moving them.
596-
for (auto entry : wrappedResult)
598+
for (typename vector_type::value_type entry : wrappedResult)
597599
{
598-
children.push(ModifiedResult::convert<Other...>(entry, ResolverParams(wrappedParams)));
600+
children.push(ModifiedResult::convert<Other...>(std::move(entry), ResolverParams(wrappedParams)));
599601
++std::get<size_t>(wrappedParams.errorPath.back());
600602
}
601603
}

0 commit comments

Comments
 (0)