y combinator in cpp