- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
#include <new>
template <typename Lhs, typename Rhs>
auto replace(Lhs *lhs, Rhs) {
return *new (reinterpret_cast<void*>(lhs)) Rhs{};
}
int main() {
auto f1 = &add;
auto f2 = replace(add, [](int a, int b) { return a - b; });
f1(4, 2);
f2(4, 2);
}
Ах да, вдохновение отсюда: http://govnokod.ru/24916#comment435346
* У лямбды без захвата есть конструктор по умолчанию
* У лямбды с захватом есть копирующий и move-constructor (а конструктор по умолчанию =delete)
Припоминается тип говорил о протекающих абстракциях (SFW): https://www.youtube.com/watch?v=S9_mYmvO4Ow
В качестве предупредительной меры въебал минус.
Советский static_assert?