#include <iostream>

class foo
{
public:
    foo(const int&) {std::cout << "const int &\n";}
    template <typename T>
    foo(T &&) {std::cout << "T &&\n";}
};
 
void bar(const int &) {std::cout << "const int &\n";}
template <typename T> void bar(T &&) {std::cout << "T &&\n";}
 
void foobar(const int &) {std::cout << "const int &\n";}
template <typename T> void foobar(T) {std::cout << "T\n";}
 
int main()
{
    int i;
    foo f(i);
    bar(i);
    foobar(i);
}