userver: userver/chaotic/io/std/size_t.hpp Source File
Loading...
Searching...
No Matches
size_t.hpp
1#pragma once
2
3#include <cstddef>
4
5#include <userver/chaotic/convert/to.hpp>
6#include <userver/chaotic/io/std/uint64_t.hpp>
7#include <userver/utils/numeric_cast.hpp>
8
9USERVER_NAMESPACE_BEGIN
10
11namespace chaotic::convert {
12
13template <typename T>
14std::enable_if_t<
15 std::is_integral_v<T> && !std::is_same_v<std::size_t, std::uint64_t>, T>
16Convert(const std::size_t& value, To<T>) {
17 return utils::numeric_cast<T>(value);
18}
19
20template <typename T>
21std::enable_if_t<std::is_integral_v<T> &&
22 !std::is_same_v<std::size_t, std::uint64_t>,
23 std::size_t>
24Convert(const T& value, To<std::size_t>) {
25 return utils::numeric_cast<std::size_t>(value);
26}
27
28} // namespace chaotic::convert
29
30USERVER_NAMESPACE_END