#include <iostream>
int main()
{
// If I change T x to T& x, it won't compile. Why not?
auto l = []<typename T>(T x, int y){ return x + y; };
std::cout << l(3,5) << std::endl;
std::cout << l(3.14,5.7) << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKaW50IG1haW4oKQp7Ci8vIElmIEkgY2hhbmdlIFQgeCB0byBUJiB4LCBpdCB3b24ndCBjb21waWxlLiAgV2h5IG5vdD8KCglhdXRvIGwgPSBbXTx0eXBlbmFtZSBUPihUIHgsIGludCB5KXsgcmV0dXJuIHggKyB5OyB9OwoKCXN0ZDo6Y291dCA8PCBsKDMsNSkgPDwgc3RkOjplbmRsOwoJc3RkOjpjb3V0IDw8IGwoMy4xNCw1LjcpIDw8IHN0ZDo6ZW5kbDsKCglyZXR1cm4gMDsKfQ==