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