Мне потребовалось довольно много времени, чтобы понять разницу между значением и временным объектом. Но теперь окончательный проект комитета на странице 75 гласит:
Значение r * [...] является значением x, временным объектом или его подобъектом или значением, которое не связано с объектом.
Я не могу поверить своим глазам. Это должно быть ошибкой, верно?
Чтобы уточнить, вот как я понимаю термины:
#include <string>
void foo(std::string&& str)
{
std::cout << str << std::endl;
}
int main()
{
foo(std::string("hello"));
}
В этой программе есть два выражения , которые обозначают один и тот же временный объект : значение std::string("hello")
и значение str
. Выражения не являются объектами, но их оценка может дать один. В частности, оценка prvalue дает временный объект, но prvalue НЕ является временным объектом. Кто-нибудь согласен со мной или я сошел с ума? :)