deque, array и т.д.? Мне в аргументы к функции надо обозначить, что это что угодно, что реализует интерфейс .find, .end
Они не наследуются
Но их же наверное как-то можно объединить? или просто через T какой-нибудь?
можно шаблонов нагородить
используй концепты, либо просто ренжи
https://en.cppreference.com/w/cpp/ranges#Range_concepts
Никак, такого типа не существует
Рубрика пришел с джавы?
интерфейса find нет в векторе
блин, точно, имел ввиду begin/end
Проверь через sfinae/концепты
При желании тебе тут набросают, как это делается, но вообще примеры написания и того, и другого в интернете есть
я просто делал функцию, которая показывает в лёгкочитаемом формате есть ли элемент в массиве, грубо говоря питоновский in. Сейчас пришёл к решению ещё одного typename'а, но туда можно запихнуть в таком случае не только контейнеры. Компилятор, конечно, не скомпилирует подобное, но когда будет процесс написания кода, наверное это вызовет головную боль :Р
Давай код в студию. Во-первых, тебе достаточно двух(трех) шаблонных параметров, контейнер, значение и возможно куда ты это всё пихать будешь
https://nekobin.com/tizigatipo
запихать можно не только контейнер, тогда иде особо ничего не покажет, а когда уже будет написана куча кода, оно просто не скомпилируется. да и к тому же темплейты же тяжёлые, доплонительную нагрузку хз нужно ли создавать
Какая версия стандарта?
Ну напиши концепт, сделай перегрузку шаблонную по концепьу
Тяжёлые для чего?
для времени компиляции
Ну это мягко говоря не так
так есть ведь find, функция та же, найдено? - есть, не найдено? - нет. Ты пытаешься сделать обёртку над find, которая принимает контейнер стл целиком?
ну можно ещё std::ranges::begin/end взять, чтобы на си-стайл массивах тоже работало и появилось тёплое ощущение в животике
К черту си стайл массивы
я пытаюсь сделать обёртку, которая принимает контейнер ( а не итераторы ). получается туда можно запихнуть любой контейнер где есть begin/end
теперь ты знаешь как это было решено в стандарте) Есть бегин и енд, значит это контейнер 🤙
Ну так у контейнера по соглашению должен быть inner type с названием value_type по наличию оного можно понять, что это контейнер (к примеру всего лишь). Ты по какому признаку хочешь сделать отсев нужного типа?
Не знаю, мог ошибиться, возможно отвечаю не тебе. Но на всякий случай нашел код проверки на предмет контейнера https://godbolt.org/z/W6zvzMzv7
Обсуждают сегодня