Веб-версияОткрыть в Telegram

Ветка#include <type_traits>

10 сообщений · –
Ы
#include <type_traits> template <template <typename...> typename M, typename T> struct meta_checker : std::enable_if<M<T>::value, int> {}; template <template <typename...> typename M, typename T> using meta_checker_t = meta_checker<M, T>::type; template <typename... Ts> struct type_list {}; template <typename Tag, template <typename...> typename M, std::size_t Priority> struct declare : declare<Tag, M, Priority - 1> { template <typename T> friend consteval auto foo(declare, meta_checker_t<M, T>, type_list<T>); }; template <typename Tag, template <typename...> typename M> struct declare<Tag, M, 0> { template <typename T> friend consteval auto foo(declare, meta_checker_t<M, T>, type_list<T>); }; template <typename Tag, template <typename...> typename M, typename T, std::size_t Priority> struct define { template <typename T2 = T> friend consteval auto foo(declare<Tag, M, Priority>, meta_checker_t<M, T2>, type_list<T2>) { return type_list<T>{}; } }; struct a {}; int main() { define<int, std::is_class, a, 0>{}; define<int, std::is_class, int, 1>{}; type_list<a> _ = foo(declare<int, std::is_class, 1>{}, {}, {}); } смарите чо за гавно есть.
  1. Ы
    по стандарту так конеш нельзя но и ладна (или можно хз как толковать)
  2. X
    шо это делает
    1. Ы
      записывает говно через дефолтное состояние в шаблонах с добавлением нового типа в список за O(1) и потом поиск чисто перегрузками
        1. Ы
          ой тьфу какое дефолтное состояние. дефолтные аргументы в шаблонах
Ppro.std::vector<T>.cxx | векторчайpro.std::vector<T>.cxx | векторчай@stdvector · группа · Технологии
249участников30пишущих за 30 дней
Лента площадки Открыть в Telegram

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Чего мы не делаем · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем