Я пытаюсь понять ссылки rvalue
. Я видел, как они используются в конструкторах с такими вещами, как std::move
и std::forward
, но я до сих пор не понимаю, почему это не работает:
void func(string&& str)
{
cout << str << endl;
}
int main(int argc, char* argv[])
{
string s("string");
func(s);
}
И это делает:
template<typename T>
void func(T&& str)
{
cout << str << endl;
}
int main(int argc, char* argv[])
{
string s("string");
func(s);
}
Почему он работает с версией шаблона функции?