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#ifndef ARCADIA_ROOT
13
14#if (__cpp_lib_void_t >= 201411 && !defined(__clang__)) || defined(DOXYGEN)
15/// @brief std::void_t implementation with workarounds for compiler bugs
16///
17/// @ingroup userver_universal
18template <typename... T>
19using void_t = std::void_t<T...>;
20#else
21
22template <typename... T>
23struct make_void_t { // NOLINT(readability-identifier-naming)
24 using type = void;
25};
26template <typename... T>
27using void_t = typename make_void_t<T...>::type;
28
29#endif
30
31#endif
32
33} // namespace utils
34
35USERVER_NAMESPACE_END