in include/ylt/struct_pack/type_id.hpp [84:127]
constexpr type_id get_varint_type() {
if constexpr (is_enable_fast_varint_coding(parent_tag)) {
if constexpr (std::is_same_v<var_int32_t, T> ||
std::is_same_v<int32_t, T>) {
return type_id::fast_vint32_t;
}
else if constexpr (std::is_same_v<var_int64_t, T> ||
std::is_same_v<int64_t, T>) {
return type_id::fast_vint64_t;
}
else if constexpr (std::is_same_v<var_uint32_t, T> ||
std::is_same_v<uint32_t, T>) {
return type_id::fast_vuint32_t;
}
else if constexpr (std::is_same_v<var_uint64_t, T> ||
std::is_same_v<uint64_t, T>) {
return type_id::fast_vuint64_t;
}
else {
static_assert(!sizeof(T), "unsupported varint type!");
}
}
else {
if constexpr (std::is_same_v<var_int32_t, T> ||
std::is_same_v<int32_t, T>) {
return type_id::vint32_t;
}
else if constexpr (std::is_same_v<var_int64_t, T> ||
std::is_same_v<int64_t, T>) {
return type_id::vint64_t;
}
else if constexpr (std::is_same_v<var_uint32_t, T> ||
std::is_same_v<uint32_t, T>) {
return type_id::vuint32_t;
}
else if constexpr (std::is_same_v<var_uint64_t, T> ||
std::is_same_v<uint64_t, T>) {
return type_id::vuint64_t;
}
else {
static_assert(!sizeof(T), "unsupported varint type!");
}
}
}