Может кто-нибудь объяснить, почему это компилируется и почему t
заканчивается типом int&
?
#include <utility>
void f(int& r)
{
++r;
}
template <typename Fun, typename T>
void g(Fun fun, T&& t)
{
fun(std::forward<T>(t));
}
int main()
{
int i = 0;
g(f, i);
}
Я вижу это на GCC 4.5.0 20100604 и GDB 7.2-60.2