В следующем сценарии:временный объект, параметры функции и неявное приведение
struct Foo
{
// ...
operator Bar() {... } // implicit cast to Bar
}
Foo GetFoo() { ... }
void CallMeBar(Bar x) { ... }
// ...
CallMeBar(GetFoo());
[редактировать] фиксированный оператор приведения, д о [/ править]
GetFoo
возвращает временный объект типа Foo , Сохраняется ли этот объект до тех пор, пока CallMe не вернется? Что говорит стандарт?
Я понимаю, что если CallMe
примет Foo, временный объект не будет уничтожен до тех пор, пока не вернется CallMe
. Тем не менее, я не уверен, что имплицитные изменения меняются, и только временный Bar
, как ожидается, выживет.
Типичный случай будет Foo = CString, Бар = символ *, то есть бар ссылок на данные, принадлежащие (и), освобожденные от Foo.
Все здесь по значению, является то, что предназначено или некоторые ссылки участвует? – Naveen