move detection code to nheko namespace and fix a few other bugs

This commit is contained in:
targetakhil 2021-04-17 22:58:04 +05:30
parent eb13f7c169
commit 06e12a0a16
6 changed files with 80 additions and 114 deletions

View file

@ -11,32 +11,8 @@
#include <type_traits>
namespace {
struct nonesuch
{
~nonesuch() = delete;
nonesuch(nonesuch const &) = delete;
void operator=(nonesuch const &) = delete;
};
namespace detail {
template<class Default, class AlwaysVoid, template<class...> class Op, class... Args>
struct detector
{
using value_t = std::false_type;
using type = Default;
};
template<class Default, template<class...> class Op, class... Args>
struct detector<Default, std::void_t<Op<Args...>>, Op, Args...>
{
using value_t = std::true_type;
using type = Op<Args...>;
};
} // namespace detail
template<template<class...> class Op, class... Args>
using is_detected = typename detail::detector<nonesuch, void, Op, Args...>::value_t;
using is_detected = typename nheko::detail::detector<nheko::nonesuch, void, Op, Args...>::value_t;
struct IsStateEvent
{