Move void_t to where it's used

This commit is contained in:
Victor Zverovich 2020-05-18 10:46:25 -07:00
parent 7aafa6bc64
commit 8d78045e7c
2 changed files with 7 additions and 6 deletions

View File

@ -278,9 +278,6 @@ namespace detail {
// warnings.
template <typename T> constexpr T const_check(T value) { return value; }
// A workaround for gcc 4.8 to make void_t work in a SFINAE context.
template <typename... Ts> struct void_t_impl { using type = void; };
FMT_NORETURN FMT_API void assert_fail(const char* file, int line,
const char* message);
@ -342,9 +339,6 @@ enum char8_type : unsigned char {};
namespace internal = detail; // DEPRECATED
template <typename... Ts>
using void_t = typename detail::void_t_impl<Ts...>::type;
/**
An implementation of ``std::basic_string_view`` for pre-C++17. It provides a
subset of the API. ``fmt::basic_string_view`` is used for format strings even

View File

@ -288,6 +288,13 @@ template <> constexpr int num_bits<fallback_uintptr>() {
std::numeric_limits<unsigned char>::digits);
}
// A workaround for gcc 4.8 to make void_t work in a SFINAE context.
template <typename... Ts> struct void_t_impl { using type = void; };
template <typename... Ts>
using void_t = typename detail::void_t_impl<Ts...>::type;
// An approximation of iterator_t for pre-C++20 systems.
template <typename T>
using iterator_t = decltype(std::begin(std::declval<T&>()));