#include <iostream>
#include <utility>
void bar(int&) {std::cout << "int&" << std::endl;}
void bar(const int&) {std::cout << "const int&" << std::endl;}
void bar(int&&) {std::cout << "int&&" << std::endl;}
template <typename... Args>
void foo(Args&&... args)
{
return bar(std::forward<Args>(args)...);
}
int main()
{
int i = 0;
const int ci = 0;
foo(i);
foo(ci);
foo(5);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dXRpbGl0eT4KCnZvaWQgYmFyKGludCYpIHtzdGQ6OmNvdXQgPDwgImludCYiIDw8IHN0ZDo6ZW5kbDt9CnZvaWQgYmFyKGNvbnN0IGludCYpIHtzdGQ6OmNvdXQgPDwgImNvbnN0IGludCYiIDw8IHN0ZDo6ZW5kbDt9CnZvaWQgYmFyKGludCYmKSB7c3RkOjpjb3V0IDw8ICJpbnQmJiIgPDwgc3RkOjplbmRsO30KCnRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgp2b2lkIGZvbyhBcmdzJiYuLi4gYXJncykKewoJcmV0dXJuIGJhcihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwp9CgppbnQgbWFpbigpCnsKCWludCBpID0gMDsKCWNvbnN0IGludCBjaSA9IDA7CgkKCWZvbyhpKTsKCWZvbyhjaSk7Cglmb28oNSk7Cn0=