Re[2]: Как узнать хранит ли variant...
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 20.04.25 11:26
Оценка:
Здравствуйте, rg45, Вы писали:

R>Но только твой BasicFormatValueFilter — это же просто алиас, хоть и шаблонный. Его невозможно отличить от какого-нибудь совершенно левого шаблонного объявленния, сделанного похожим образом.


Именно. Пользователь может определять свой тип фильтра, и свои типы Input/Output итераторов


R>P.S. И вообще, объявление, подобное BasicFormatValueFilter, выгдлядит странным для меня. Обычно std::function используют тогда, когда нужно перейти от шаблонных функционалов к функционалам с фиксированными типами формальных параметров и возвращаемого значения. И превращать это дело опять в шаблон — ну, это что-то совсем странное для меня. Ведь наложить на шаблоныый функционал какие-то констрейнты (хоть с концептами, хоть со SFINAE) можно, не прибегая к использованию std::function с её скрытым виртуальным вызовом.


Ну, я хотел сделать фильтры, для преобразования выводимых строк после их форматирования, например, html/xml-escape, фильтры должны уметь передаваться как аргумент при вызове функции форматирования, наравне с самими форматируемыми величинами. А потом, внутри реализации, я решил присунуть стандартные фильтры, которые создаёт фабрика стандартных фильтров, которая задаётся параметром шаблона и возвращает такой же функтор, который может лежать в параметрах шаблона. Но конкретный тип функтора я не знаю, пользователь может не использовать мои алиасы. В аргументы стандартный фильтр я не могу запихивать, и я решил завести вектор фильтров, куда кладу либо созданный фабрикой стандартный фильтр, либо взятый из аргументов. А для этого мне надо знать тип функтора. Вот, как-то так. Пока даже что-то вырисовывается
Маньяк Робокряк колесит по городу
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.