170 похожих чатов

Чем отличается crtp от передачи полиси класса, если и в

том и в том случае ты не можешь итерироваться по реализациям как по общим в иерархии классам ?

30 ответов

6 просмотров

В CRTP в методе base можно сделать так static_cast<derived*>(this)->some_method();

CRTP позволяет подмешивать какой-то свой бойлерплейт в пользовательские классы, завязанный на типы пользовательских же классов. В остальных случаях лучше принимать полиси класс

mixin для бедных

Ofee Oficsu
CRTP позволяет подмешивать какой-то свой бойлерпле...

В старые времена, Microsoft обожало использовать этот прием, чтобы обходиться без vtbl (ATL, WTL)

Aleksei-Budyakov Автор вопроса
Ofee Oficsu
CRTP позволяет подмешивать какой-то свой бойлерпле...

Вы имеете ввиду что отнаследованый класс, если включен в пользовательский класс имеет признаки базового ? А в чем разница если я возьму базовый, параметризованный полиси классом и включающий его и буду его использовать ?

Aleksei-Budyakov Автор вопроса
Mikhail Kalugin
В CRTP в методе base можно сделать так static_cast...

Я в курсе. Вопрос в том, почему не полиси

Aleksei-Budyakov Автор вопроса
Mikhail Kalugin
В старые времена, Microsoft обожало использовать э...

Почему отказались, и что стало альтернативой ?

Aleksei Budyakov
Вы имеете ввиду что отнаследованый класс, если вкл...

Трейта ничего не знает ни о природе базового класса, ни о природе потомка в общем случае и все равно может делать что-то полезное.

Aleksei Budyakov
Вы имеете ввиду что отнаследованый класс, если вкл...

В общем вот так: D:B<D> это CRTP. D d; сделать в B не получится (что такое D? оно не определено в этот момент) сделать D* d; Можно как и каст выше.

Aleksei Budyakov
Вы имеете ввиду что отнаследованый класс, если вкл...

Я имею ввиду, что можно написать какую-нибудь сложную многословную шаблонную функцию, завязанную на тип наследника в базовом классе, чтобы не писать её в каждом наследнике

Crtp знаю, а что такое "передача политики класса" - нет

Ilya Zviagin
В ATL-то и без vtbl ?

Да, хотя давно туда не заглядывал, раньше они обходились статическим полиморфизмом.

Anatoly Shirokov
COM

Ну это одно и то же

Ilya Zviagin
Ну это одно и то же

OLE частный случай COM

Anatoly Shirokov
OLE частный случай COM

А COM - частый случай OLE

Anatoly Shirokov
COM

Имел ввиду только классы ATL а не COM вообще, если что.

Mikhail Kalugin
Имел ввиду только классы ATL а не COM вообще, если...

Ну там каждый класс - COM объект, и с vtbl, смысл там от него (vtbl) избавляться?

Ilya Zviagin
Ну там каждый класс - COM объект, и с vtbl, смысл ...

в ATL львиная доля классов без базы, какие vtbl?

Ilya Zviagin
Ну там каждый класс - COM объект, и с vtbl, смысл ...

Вообще, CComObject ее имеет, сейчас проверил как оно устроенно.

Ilya Zviagin
А, тогда я понял зачем там crtp

Да, там идея была какая: все мешанина из макросов и миксинов - миксины CRTP

Ilya Zviagin
А, тогда я понял зачем там crtp

Ну и плюс всякие штуки типа CComPtr, который просто смарт-поинтер.

Aleksei-Budyakov Автор вопроса
Ilya Zviagin
Crtp знаю, а что такое "передача политики класса" ...

Второе я полагаю это просто передача шаблонного класса в объект. Я почитал про миксины, и теперь ещё больше непонятно кто, что и зачем crtp VS просто передача шаблонного класса в конструктор как политики VS миксины (передача множества шаблонных классов и наследование от них как я понял)

Похожие вопросы

Обсуждают сегодня

А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
Вопрос я правильно понимаю что в коде newtype ArrowMap k v = ArrowMap { getArrowMap :: k -> Maybe v } getArrowMap есть функция типа k -> Maybe v, если да, то не понимаю задач...
Fedor
64
что насчет пагинга? на осдеве непонятно(
Vi Chapmann 🪙
26
Народ, кто шарит в расширенных разделах (EBR/EPR) на дисках с разметками MBR? Везде пишут (в вики рус/англ) в частности + другие источники смотрел, что первый сектор расширенн...
Eugene Krasnikov (ᴊɪɴ x)
1
Как Вы считаете нормально ли в двадцатых годах 21 века в ВУЗах Российской Федерации обучать студентов работе с TASM? Не слишком ли это "архаично"? (Если оффтоп или флейм для э...
Spiker01
52
Ребят, что лучше для реверса: гидра или ида?
En Vind Av Sorg
26
Делаю велосипед логгер. К сообщению хочу прикрутить некоторую информацию, типа, кем отправлено, какой уровень, и всякое такое. И тут подумалось мне, почему бы не хранить весь...
Serjone
24
Привет. Кто-нибудь знает, как это называется? Или как этот препроцессор найти, не получается запрос адекватно сформулировать
Савеλий
6
помогите решить вопрос ктото решал это?
Михаил Helper
9
что лучше для раста, Clion или IntellJ IDEA?
dbxty
11
Карта сайта