Информация об изменениях

Сообщение Re[6]: Философско-практические вопросы про метапрограммирова от 09.02.2023 13:19

Изменено 09.02.2023 14:33 Максим

Re[6]: Философско-практические вопросы про метапрограммирова
R>А, по каким критериям? Ну, проще всего это сделать через traits-ы. Ты свою обобщенную процедуру сразу делаешь заточенной на использование трейтсов. А в трейтсах уже можно навернуть аналитику любой сложности — от автоматического определения до ручной специализации. Использование трейтсов делает обощенные процедуры легко расширяемыми. Этот подход можно применить не ко всей обобщенной процедуре, а только к внутренней процедуре сортировке. В общем, все в зависимости от задачи.

А можете, если есть время, более подробно написать (может пару строчек кода) как такое делается? У меня пока только совсем простые вещи получаются, типа проверок есть ли определенный метод в классе или нет. А те же begin/end в set есть и просто так не отделить set от vector. Что-то типа std::is_set_v<T> вроде нет в библиотеке. Вероятнее всего, я пока просто не понимаю, что такое traits в плюсах . Спасибо за помощь!
Re[6]: Философско-практические вопросы про метапрограммирова
R>А, по каким критериям? Ну, проще всего это сделать через traits-ы. Ты свою обобщенную процедуру сразу делаешь заточенной на использование трейтсов. А в трейтсах уже можно навернуть аналитику любой сложности — от автоматического определения до ручной специализации. Использование трейтсов делает обощенные процедуры легко расширяемыми. Этот подход можно применить не ко всей обобщенной процедуре, а только к внутренней процедуре сортировке. В общем, все в зависимости от задачи.

А можете, если есть время, более подробно написать (может пару строчек кода) как такое делается? У меня пока только совсем простые вещи получаются, типа проверок есть ли определенный метод в классе или нет. А те же begin/end в set есть и просто так не отделить set от vector. Что-то типа std::is_set_v<T> вроде нет в библиотеке. Вероятнее всего, я пока просто не понимаю, что такое traits в плюсах . Спасибо за помощь!

UPD
Еще, наверно, можно попробовать оттолкнуться от std::is_same_v<T, std::set>