#include <iostream>
#include <type_traits>

template <typename T>
struct helper
{
    void f(T &&)
    {
      std::cout << "&&" << std::endl;
    }
    
    void f(const T&)
    {
      std::cout << "const &" << std::endl;
    }

};

template <typename T>
void f(T &&t)
{
     helper<typename std::decay<T>::type>().f(std::forward<T>(t));
}


int main()
{
  int i;
  f(i);
  f(i + 1);
}