Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.15.219.217] |
|
Страницы: (4) « Первая ... 2 3 [4] все ( Перейти к последнему сообщению ) |
Сообщ.
#46
,
|
|
|
Парни, я осознаю, что для малоподготовленного (ну как для мня) - вышеприведенное есть лютая дичь.
Приведите примеры, плс, получаемого профита ... ну или обозначьте границы, когда он действительно может появиться. |
Сообщ.
#47
,
|
|
|
Цитата JoeUser @ Парни, я осознаю, что для малоподготовленного (ну как для мня) - вышеприведенное есть лютая дичь. Если делать это "старым" способом (и заглянуть под капот) - дичь будет не менее лютая. Цитата JoeUser @ Приведите примеры, плс, получаемого профита ... Получаемый профит в том, что производимые манипуляции с типами - более явные и (главное) в императивном, а не функциональном стиле. Попробуй реализовать тот же визитор на "обычном" C++ - и поймёшь, о чём речь. |
Сообщ.
#48
,
|
|
|
Если я правильно распознал происходящее, что совсем не факт, то это не совсем то. Смотри.
Ты в вариадик Types интегрируешь интерфейс dispIface. Это архитектурная ошибка, т.к. создаёт зависимость классов пользователя от класса абстрактного диспетчера. Это плохо, т.к. диспетчер создаёт интерфейс визитора в процессе своего инстанцирования, поэтому эта зависимость ведёт к циклу. Вместо этого подразумевается, что визит-метод документируется базовым классом в иерархии, и производные его лишь перекрывают, диспетчер же просто зовёт метод базового класса, а не какого-то интерфейса. Далее. Свои внутренние классы акцепторов диспетчер генерирует сам, метаклассы ему для этого не нужны. Поэтому цикл по вариадику по сути лишний. Его следовало бы делать по списку классов в иерархии. Вот его бы получить... К тому же это решение ограничено двупараметрическим мультиметодом, тогда как у меня ещё в C++03 были обобщённые n-параметрические. По списку параметров диспетчер тоже итерируется классически. |
Сообщ.
#49
,
|
|
|
Ну, я пытался на ходу что-то путное выдумать.
|