【C++】poly_functionが作れなかったのでジェネリックラムダ2つを受け取りどちらかを返す関数型言語のif式っぽいのを作った

前回(【C++雑記】半日ほどstd::functioinのジェネリック版について考えてたけどどう考えても難しい - TXT.TXT)
のだとあんまりにもあんまりなので、ナンカもうそれっぽい事が出来ればいいやとIf関数を作ってみた
https://gist.github.com/Fuyutsubaki/8536703


こんな感じに使う

std::cin >> r;
auto f = If(r>0
	, [](auto c){std::cout << "(" << c << ")";return 4; }
	, [](auto c){std::cout << "{" << c << "}";return 2; });
f(42);
f("abc");


見ての通りダイナミックに動く。これで多少はpoly_functioinの代わりになるだろうか?