int main() { using detail::memo; auto g = memo(f); cout << g(2) << endl; cout << g(2) << endl; cout << g(2) << endl; cout << g(3) << endl; cout << g(3) << endl; cout << g(3) << endl; auto h = memo(g); cout << h(10) << endl; return 0; }