#include <iostream>
#include <algorithm>
void alpha(int& x)
{
std::cout << "Normal ref " << x << std::endl;
}
void alpha(int&& x)
{
std::cout << "Temp ref " << x << std::endl;
}
template <typename T>
decltype(auto) my_forward(T&& arg) // universal reference (can be rvalue- or lvalue-reference)
{
return static_cast<T&&>(arg);
}
template <class T>
void bravo(T&& x)
{
alpha(my_forward(x));
}
int main()
{
bravo(42);
int many = 100500;
bravo(many);
return 0;
}
Спасибо за статью. В семантике Си++ должно быть что-то похожее.