- 1
- 2
- 3
- 4
template <class F, class G>
auto operator*(F&& f, G&& g) -> decltype(auto) {
return [=](auto ...args) { return f(g(args...)); };
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+2
template <class F, class G>
auto operator*(F&& f, G&& g) -> decltype(auto) {
return [=](auto ...args) { return f(g(args...)); };
}
Композиция функций
Итить, ита у них шо, даже валюта своя есть?
auto f= [](auto x) -> int;
auto g =[](auto y) -> int;
(f*g)(4)
Чистый функциональный кодинг. Прям Haskell
Хули на идеоне не роботает?
https://ideone.com/Ffcjmq
https://ideone.com/Nv1RTy
https://ideone.com/NBk0Re
Можно, конечно, но так только в g все аргументы передадутся, а f в пролёте.
В отличие от хаскеля или даже C++, где компилятор типы проверяет, пользоваться этим говном можно только в примитивных случаях.
А теперь представим, что g возвращает список, и f принимает один аргумент — список.
Ты всё сломал.