#include <iostream>
using namespace std;
#define FWD(v) \
std::forward<decltype(v)>(v)
void foo(int& a) { cout << "ref" << endl; }
void foo(const int& a) { cout << "cref" << endl; }
template <typename T>
void call_foo(T&& t) { foo(FWD(t)); }
int main() {
int a = 10;
foo(10);
foo(a);
call_foo(10);
call_foo(a);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBGV0QodikgXAogICAgc3RkOjpmb3J3YXJkPGRlY2x0eXBlKHYpPih2KQoKdm9pZCBmb28oaW50JiBhKSB7IGNvdXQgPDwgInJlZiIgPDwgZW5kbDsgfQp2b2lkIGZvbyhjb25zdCBpbnQmIGEpIHsgY291dCA8PCAiY3JlZiIgPDwgZW5kbDsgfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CnZvaWQgY2FsbF9mb28oVCYmIHQpIHsgZm9vKEZXRCh0KSk7IH0KCmludCBtYWluKCkgewoJaW50IGEgPSAxMDsKCWZvbygxMCk7Cglmb28oYSk7CgkKCWNhbGxfZm9vKDEwKTsKCWNhbGxfZm9vKGEpOwoJcmV0dXJuIDA7Cn0K