Skip to content

Commit 536839b

Browse files
author
pawel.wojciechowski
committed
Fixed returned nullptr typo and removed lambda return type declaration
1 parent eb29b28 commit 536839b

File tree

1 file changed

+21
-6
lines changed

1 file changed

+21
-6
lines changed

include/graphqlservice/GraphQLService.h

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -506,6 +506,16 @@ struct is_union<Union<Types...>> : std::true_type
506506
{
507507
};
508508

509+
// helper type for the visitor #4
510+
template <class... Ts>
511+
struct overloaded : Ts...
512+
{
513+
using Ts::operator()...;
514+
};
515+
// explicit deduction guide (not needed as of C++20)
516+
template <class... Ts>
517+
overloaded(Ts...) -> overloaded<Ts...>;
518+
509519
template <typename T>
510520
struct GraphQLBuilder
511521
{
@@ -552,14 +562,19 @@ struct GraphQLBuilder
552562
if (u)
553563
return std::visit(
554564
[]<typename V>(V&& arg) {
555-
if constexpr(std::is_same_v<typename std::remove_reference_t<U>::element_type,std::monostate>){
565+
using model_t =
566+
typename GraphQLUnion<typename std::remove_reference_t<U>::element_type,
567+
typename T::element_type>::model_map::
568+
find<typename std::remove_reference_t<V>::element_type>;
569+
if constexpr (std::is_same_v<model_t, std::monostate>)
570+
{
556571
throw std::logic_error("Unsupported variant type");
557-
}else{
572+
return std::shared_ptr<typename T::element_type>();
573+
}
574+
else
575+
{
558576
return GraphQLBuilder<T>::build(
559-
GraphQLBuilder<std::shared_ptr<typename GraphQLUnion<
560-
typename std::remove_reference_t<U>::element_type,
561-
typename T::element_type>::model_map::find<typename std::
562-
remove_reference_t<V>::element_type>>>::build(std::move(arg)));
577+
GraphQLBuilder<std::shared_ptr<model_t>>::build(std::move(arg)));
563578
}
564579
},
565580
std::move(u->value));

0 commit comments

Comments
 (0)