MCPcopy Create free account
hub / github.com/boostorg/parser / operator()

Method operator()

include/boost/parser/parser.hpp:4167–4205  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4165 {
4166 template<typename T, typename U>
4167 auto operator()(
4168 T final_types_and_result, U x_index_and_prev_merged) const
4169 {
4170 using namespace literals;
4171 using detail::merge_wrap;
4172 using detail::merge_kind;
4173
4174 auto final_types = parser::get(final_types_and_result, 0_c);
4175 auto result = parser::get(final_types_and_result, 1_c);
4176
4177 auto x_type_wrapper = parser::get(x_index_and_prev_merged, 0_c);
4178 auto index = parser::get(x_index_and_prev_merged, 1_c);
4179 auto prev_merged = parser::get(x_index_and_prev_merged, 2_c);
4180
4181 auto type_at_index_wrapper = parser::get(final_types, index);
4182 using x_type = typename decltype(x_type_wrapper)::type;
4183 using type_at_index =
4184 typename decltype(type_at_index_wrapper)::type;
4185 if constexpr (
4186 decltype(prev_merged)::kind ==
4187 merge_kind::second_pass_detect) {
4188 if constexpr (
4189 !std::is_same_v<x_type, type_at_index> &&
4190 container<type_at_index>) {
4191 return detail::hl::make_tuple(
4192 final_types,
4193 detail::hl::append(
4194 result, merge_wrap<merge_kind::merged>));
4195 } else {
4196 return detail::hl::make_tuple(
4197 final_types,
4198 detail::hl::append(
4199 result, merge_wrap<merge_kind::singleton>));
4200 }
4201 } else {
4202 return detail::hl::make_tuple(
4203 final_types, detail::hl::append(result, prev_merged));
4204 }
4205 }
4206 };
4207
4208 template<long long I>

Callers

nothing calls this directly

Calls 3

make_tupleFunction · 0.85
appendFunction · 0.85
getFunction · 0.70

Tested by

no test coverage detected