BOOST_FOREACH Итерация по boost :: shared_ptr

Я делаю что-то похожее на этот элемент Правильное использование BOOST_FOREACH?

Однако мой возвращенный список заключен в усиление :: shared_ptr. Если я не назначу список переменной перед циклом BOOST_FOREACH, я получу сбой во время выполнения, поскольку список разрушается, поскольку он временный.

boost::shared_ptr< list > GetList()
{
    boost::shared_ptr< list > myList( new list() );
    myList->push_back( 3 );
    myList->push_back( 4 );
    return myList;
}

Затем позже ..

// Works if I comment out the next line and iterate over myList instead
// boost::shared_ptr< list > myList = GetList();

BOOST_FOREACH( int i, *GetList() ) // Otherwise crashes here
{
    cout << i << endl;
}

Я хотел бы быть возможность использовать вышеуказанное, не имея чтобы ввести переменную myList. Возможно ли это?

7
задан Community 23 May 2017 в 11:55
поделиться