#ifndef FUZZTEST_FUZZTEST_INTERNAL_DOMAINS_MAP_IMPL_H_
#define FUZZTEST_FUZZTEST_INTERNAL_DOMAINS_MAP_IMPL_H_
#include <functional>
#include <optional>
#include <tuple>
#include <type_traits>
#include "absl/random/bit_gen_ref.h"
#include "absl/status/status.h"
#include "absl/strings/string_view.h"
#include "./fuzztest/internal/domains/domain_base.h"
#include "./fuzztest/internal/domains/serialization_helpers.h"
#include "./fuzztest/internal/meta.h"
#include "./fuzztest/internal/serialization.h"
#include "./fuzztest/internal/status.h"
#include "./fuzztest/internal/type_support.h"
namespace fuzztest::internal {
template <typename Mapper, typename... Inner>
class MapImpl
: public domain_implementor::DomainBase<
MapImpl<Mapper, Inner...>,
std::decay_t<std::invoke_result_t<Mapper, value_type_t<Inner>...>>,
std::tuple<corpus_type_t<Inner>...>> { … };
template <typename Mapper, typename InvMapper, typename... Inner>
class ReversibleMapImpl
: public domain_implementor::DomainBase<
ReversibleMapImpl<Mapper, InvMapper, Inner...>,
std::decay_t<std::invoke_result_t<Mapper, value_type_t<Inner>...>>,
std::tuple<corpus_type_t<Inner>...>> { … };
template <int&... ExplicitArgumentBarrier, typename Mapper, typename... Inner>
auto NamedMap(absl::string_view name, Mapper mapper, Inner... inner) { … }
}
#endif