Size: a a a

2021 February 15

AB

Aleksei Budyakov in supapro.cxx
Ofee
CRTP позволяет подмешивать какой-то свой бойлерплейт в пользовательские классы, завязанный на типы пользовательских же классов. В остальных случаях лучше принимать полиси класс
Вы имеете ввиду что отнаследованый класс, если включен в пользовательский класс имеет признаки базового ?
А в чем разница если я возьму базовый, параметризованный полиси классом и включающий его и буду его использовать ?
источник

AB

Aleksei Budyakov in supapro.cxx
Mikhail Kalugin
В CRTP в методе base можно сделать так static_cast<derived*>(this)->some_method();
Я в курсе. Вопрос в том, почему не полиси
источник

AB

Aleksei Budyakov in supapro.cxx
Mikhail Kalugin
В старые времена, Microsoft обожало использовать этот прием, чтобы обходиться без vtbl (ATL, WTL)
Почему отказались, и что стало альтернативой ?
источник

AB

Aleksei Budyakov in supapro.cxx
Stanislav Ershov
mixin для бедных
шо
источник

MK

Mikhail Kalugin in supapro.cxx
Aleksei Budyakov
Вы имеете ввиду что отнаследованый класс, если включен в пользовательский класс имеет признаки базового ?
А в чем разница если я возьму базовый, параметризованный полиси классом и включающий его и буду его использовать ?
Трейта ничего не знает ни о природе базового класса, ни о природе потомка в общем случае и все равно может делать что-то полезное.
источник

MK

Mikhail Kalugin in supapro.cxx
Aleksei Budyakov
Почему отказались, и что стало альтернативой ?
.Net, в ATL ничего не поменялось в общем.
источник

AF

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

MK

Mikhail Kalugin in supapro.cxx
Aleksei Budyakov
Вы имеете ввиду что отнаследованый класс, если включен в пользовательский класс имеет признаки базового ?
А в чем разница если я возьму базовый, параметризованный полиси классом и включающий его и буду его использовать ?
В общем вот так: D:B<D> это CRTP. D d; сделать в B не получится (что такое D? оно не определено в этот момент) сделать D* d; Можно как и каст выше.
источник

AF

Aidar Fattakhov in supapro.cxx
template<template<typename> Policy>
class Foo : public Policy<Foo>
источник

C

CodeDetector in supapro.cxx
Aidar Fattakhov
template<template<typename> Policy>
class Foo : public Policy<Foo>
Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!
источник

MK

Mikhail Kalugin in supapro.cxx
Aidar Fattakhov
template<template<typename> Policy>
class Foo : public Policy<Foo>
Это оно :) и есть CRTP в чистом виде.
источник

AF

Aidar Fattakhov in supapro.cxx
нет это policy Александреску
источник

AB

Aleksei Budyakov in supapro.cxx
Aidar Fattakhov
нет это policy Александреску
Насколько я знаю crtp это разновидность полиси
источник

AF

Aidar Fattakhov in supapro.cxx
наоборот мб
источник

MK

Mikhail Kalugin in supapro.cxx
Aidar Fattakhov
нет это policy Александреску
источник

AF

Aidar Fattakhov in supapro.cxx
источник

MK

Mikhail Kalugin in supapro.cxx
На самом деле, одно и то же по разному названо в разных источниках, бывает.
источник

AF

Aidar Fattakhov in supapro.cxx
Mikhail Kalugin
На самом деле, одно и то же по разному названо в разных источниках, бывает.
так ключевая разница в том что это параметр
источник

MK

Mikhail Kalugin in supapro.cxx
Aidar Fattakhov
так ключевая разница в том что это параметр
А? Какой параметр? Везде один и тот же принцип: базовый класс это шаблон, параметризованный прямым потомком.
источник

AF

Aidar Fattakhov in supapro.cxx
Mikhail Kalugin
А? Какой параметр? Везде один и тот же принцип: базовый класс это шаблон, параметризованный прямым потомком.
полиси это параметр
источник