Re: warning C4239, auto_ptr, VS2005
От: Were  
Дата: 20.01.10 09:12
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Объясните инвалиду детства на голову, почему компилируя следующий код с помощью VS2005 я получаю предупреждение C4239?

А>По какой причине такое преобразование запрещено стандартом? Где тут грабли?
А>И как добиться желаемого результат без предупреждений?

Можно решить так
auto_ptr1 Func()
{
    return new int;
}


или так
auto_ptr1 Func()
{
    auto_ptr1 ptr(new int);
    return ptr;
}

Связано с тем, что auto_ptr1 копируется при выходе из функции. Но его конструктор копирования принимает неконстантную ссылку. А временный объект не может быть передан по неконстантой ссылке.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.