Entry tags:
Генератор лінійних ієрархій
Хто читав Алєксандреску той знає, а хто не читав - картинко під катом:

Код:
fmap бо там із усіх щілин стирчать вуха функтора.
Можна розглядати це як контейнер контейнерів типів.
Код було написано задовго то сортування типів, бо сортування мені знадобилось у самому кінці.
Уже як запостив - побачив. Там F & треба передавати константно. Ну то дрібниці.
У наступному пості напишу про те, нафіга все це потрібно. Яке воно має практичне застосування. Окрім fun, звісно :)

Код:
template <template <typename> class TypeWrapper, typename ... Ts> struct HBuilder; template <template <typename> class TypeWrapper, typename T> struct HBuilder<TypeWrapper, T> : TypeWrapper<T> { typedef TypeWrapper<T> WrappedType; template <typename F> void fmap(F & f) { f(*static_cast<WrappedType *>(this)); } }; template <template <typename> class TypeWrapper, typename T, typename ... Ts> struct HBuilder<TypeWrapper, T, Ts ...> : TypeWrapper<T>, HBuilder<TypeWrapper, Ts ...> { typedef HBuilder<TypeWrapper, Ts ...> Next; typedef TypeWrapper<T> WrappedType; template <typename F> void fmap(F & f) { f(*static_cast<WrappedType *>(this)); Next::fmap(f); } }; |
| _Winnie C++ Colorizer |
fmap бо там із усіх щілин стирчать вуха функтора.
Можна розглядати це як контейнер контейнерів типів.
Код було написано задовго то сортування типів, бо сортування мені знадобилось у самому кінці.
Уже як запостив - побачив. Там F & треба передавати константно. Ну то дрібниці.
У наступному пості напишу про те, нафіга все це потрібно. Яке воно має практичне застосування. Окрім fun, звісно :)