Здравствуйте, Аноним, Вы писали:
А>Объясните инвалиду детства на голову, почему компилируя следующий код с помощью VS2005 я получаю предупреждение C4239?
А>По какой причине такое преобразование запрещено стандартом? Где тут грабли?
А>И как добиться желаемого результат без предупреждений?
Можно решить так
auto_ptr1 Func()
{
return new int;
}
или так
auto_ptr1 Func()
{
auto_ptr1 ptr(new int);
return ptr;
}
Связано с тем, что auto_ptr1 копируется при выходе из функции. Но его конструктор копирования принимает неконстантную ссылку. А временный объект не может быть передан по неконстантой ссылке.