В этом задании нужно реализовать несколько мета-функций/мета-переменных для работы с тайплистами:
contains<Type, List>
— возвращаетtrue
, еслиList
содержитType
, иначеfalse
;flip<List>
— принимает список пар типов (пара — тайплист размера 2), возвращает список, в котором у каждой пары элементы переставлены местами;index_of_unique<Type, List>
— возвращает индекс единственного вхожденияType
вList
;flatten<List>
— рекурсивно разворачивает все вложенные тайплисты в один одномерный;merge_sort<List, Compare>
— возвращает копиюList
, но с элементами, отсортированными компараторомCompare
(он принимает два типа, и возвращаетtrue
, если первый должен идти до второго).
Все присутствующие в вашем репозитории мета-функции (в том числе не перечисленные выше) должны уметь работать с произвольными тайплистами, а не только с tl::type_list
.