userver: userver/utils/void_t.hpp Source File
Loading...
Searching...
No Matches
void_t.hpp
Go to the documentation of this file.
1#pragma once
2
3/// @file userver/utils/void_t.hpp
4/// @brief @copybrief utils::void_t
5
6#include <type_traits>
7
8USERVER_NAMESPACE_BEGIN
9
10namespace utils {
11
12#if (__cpp_lib_void_t >= 201411 && !defined(__clang__)) || defined(DOXYGEN)
13/// @brief std::void_t implementation with workarounds for compiler bugs
14///
15/// @ingroup userver_universal
16template <typename... T>
17using void_t = std::void_t<T...>;
18#else
19
20template <typename... T>
21struct make_void_t {
22 using type = void;
23};
24template <typename... T>
25using void_t = typename make_void_t<T...>::type;
26
27#endif
28
29} // namespace utils
30
31USERVER_NAMESPACE_END