auto_ptr_ref
От: jdan  
Дата: 26.12.06 13:16
Оценка:
решил использовать auto_ptr_ref и обнаружил интересное поведение, что на разных компиляторах получаются разные значения, пример кода:

template<class T> std::auto_ptr_ref<T> function(std::auto_ptr_ref<T> p)
{
    std::auto_ptr<T> p1(p);
    std::cout<<typeid(T).name()<<" "<<p1.get()<<std::endl;
    return p1;
}

int main()
{
    std::auto_ptr<int> p(new int(123));
    p = function<int>(p);
}

на gcc все работает отлично, но реализация auto_ptr_ref не соответствует описанной в стандарте по С++
на cl 8 от майка все падает, поскольку auto_ptr_ref соответсвует стандарту по С++
Цитата из стандарта:
"Template auto_ptr_ref holds a reference to an auto_ptr. It is used by the auto_ptr conversions
to allow auto_ptr objects to be passed to and returned from functions."
соответственно возвращать из функции ссылку на что-то непонятное очень нехорошо...
соответственно на майке если сделать статической p1 в функции function то все будет работать.
Вот я и думаю, кто же в этом случае не прав — я (как всегда ), майк, gcc или, блин, стандарт какую-то фигню описывает?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.