Skip to content

Commit cc42c50

Browse files
author
Pawel Wojciechowski
committed
Allow variant subsetting using std::monostate as model
1 parent 7189f3d commit cc42c50

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

include/graphqlservice/GraphQLService.h

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -552,11 +552,15 @@ struct GraphQLBuilder
552552
if (u)
553553
return std::visit(
554554
[]<typename V>(V&& arg) {
555-
return GraphQLBuilder<T>::build(
556-
GraphQLBuilder<std::shared_ptr<typename GraphQLUnion<
557-
typename std::remove_reference_t<U>::element_type,
558-
typename T::element_type>::model_map::find<typename std::
559-
remove_reference_t<V>::element_type>>>::build(std::move(arg)));
555+
if constexpr(std::is_same_v<V,std::monostate>){
556+
throw std::logic_error("Unsupported variant type");
557+
}else{
558+
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)));
563+
}
560564
},
561565
std::move(u->value));
562566
return std::shared_ptr<typename T::element_type>();

0 commit comments

Comments
 (0)