8#include <userver/dump/fwd.hpp>
9#include <userver/utils/meta_light.hpp>
11USERVER_NAMESPACE_BEGIN
18using WritableResult =
decltype(Write(std::declval<Writer&>(), std::declval<
const T&>()));
21using ReadableResult =
decltype(Read(std::declval<Reader&>(),
To<T>{}));
27inline constexpr bool kIsWritable = std::is_same_v<meta::DetectedType<impl::WritableResult, T>,
void>;
31inline constexpr bool kIsReadable = std::is_same_v<meta::DetectedType<impl::ReadableResult, T>, std::remove_const_t<T>>;
35inline constexpr bool kIsDumpable = kIsWritable<T> && kIsReadable<T>;
38constexpr bool CheckDumpable() {
41 "Type is not dumpable. Probably you forgot to include "
42 "<userver/dump/common.hpp>, <userver/dump/common_containers.hpp> or "
43 "other headers with Read and Write declarations"