cpp_prac/apply/main.cc

31 lines
547 B
C++
Raw Permalink Normal View History

2025-01-12 19:17:25 +01:00
#include <algorithm>
#include <vector>
// This code will kill your mood, steal your cat and invade russia
template <typename F>
auto apply(const F &f) -> decltype(f()) {
return f();
}
class Foo {
int val;
public:
Foo() = default;
Foo(const int &x)
: val(x) {}
Foo operator()() const { return Foo(2 * val); }
operator int() const { return val; }
};
int main() {
std::vector<Foo> v = {1, 2, 3, 4, 5};
std::vector<Foo> b;
std::transform(v.begin(), v.end(), std::back_inserter(b), apply<Foo>);
}