Например, я хочу реализовать свою собственную универсальную функцию сортировки, я хочу, чтобы тип, который был бы передан, был Indexable
, а элемент внутри был бы Comparable
template <typename Cont>
**type_check: Cont is Indexable, Cont::Element is Comparable**
void my_sort(Cont& cont){
// do sorting work
}
Когда я сделаю my_sort(vector<int>{1,6,5,4})
все будет в порядке
Но когда my_sort(linkedlist<int>{1,6,5,4})
мне не удастся во время компиляции / выполнения, потому что linkedlist
не Indexable
.
Так есть ли способ сделать такое программирование типа контракта?
P.S. Я нахожусь в среде C ++ 11, но любое решение в более поздней версии C ++ также приветствуется