userver: userver/utils/underlying_value.hpp Source File
Loading...
Searching...
No Matches
underlying_value.hpp
Go to the documentation of this file.
1#pragma once
2
3/// @file userver/utils/underlying_value.hpp
4/// @brief @copybrief utils::UnderlyingValue
5/// @ingroup userver_universal
6
7#include <type_traits>
8
9USERVER_NAMESPACE_BEGIN
10
11namespace utils {
12
13/// @brief Function that extracts integral value from enum or StrongTypedef
14template <class T>
15constexpr auto UnderlyingValue(T v) noexcept {
16 static_assert(std::is_enum<T>::value,
17 "UnderlyingValue works only with enums or StrongTypedef");
18
19 return static_cast<std::underlying_type_t<T>>(v);
20}
21
22} // namespace utils
23
24USERVER_NAMESPACE_END