userver: userver/utils/underlying_value.hpp Source File
⚠️ This is the documentation for an old userver version. Click here to switch to the latest version.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
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