#include <functional>
#include <iostream>

using namespace std;

template <typename T>
void foo(function<T(const T&, const T&)> op, const T& lhs, const T& rhs) {
    cout << op(lhs, rhs) << endl;
}

int main() {
	function<int(const int&, const int&)> op = plus<int>();

	foo(op, 13, 42);
	
	//foo(plus<int>(), 13, 42);
}