Сообщение Re: Правомерно ли такое от 17.08.2020 12:10
Изменено 17.08.2020 12:24 Маркуша Шулин
Re: Правомерно ли такое
Здравствуйте, Marty, Вы писали:
M>Здравствуйте!
M>
под майкрософт может работать без проблем. Под gcc будет лик, после передачи инстанса вектора он умрет при свертке стека (а именно после возврата из push_back_helper(std::vector<int>(), ... ) )У майкрософта была какая-то "оптимизация" по продлению жизни ссылки
M>Вроде ничему не противоречит, но решил уточнить
M>Здравствуйте!
M>
M>template<typename ItemType>
M>inline
M>std::vector<ItemType>& push_back_helper( std::vector<ItemType> &v, const ItemType &elem )
M>{
M> v.push_back(elem);
M> return v;
M>}
M>inline
M>std::vector<int> makeVec( int i )
M>{
M> return push_back_helper( std::vector<int>(), i );
M>}
M>int main()
M>{
M> auto v = makeVec( 3 );
M>}
M>
под майкрософт может работать без проблем. Под gcc будет лик, после передачи инстанса вектора он умрет при свертке стека (а именно после возврата из push_back_helper(std::vector<int>(), ... ) )У майкрософта была какая-то "оптимизация" по продлению жизни ссылки
M>Вроде ничему не противоречит, но решил уточнить
Re: Правомерно ли такое
Здравствуйте, Marty, Вы писали:
M>Здравствуйте!
M>
под майкрософт может работать без проблем. Под gcc будет сигфолт, после передачи инстанса вектора он умрет при свертке стека (а именно после возврата из push_back_helper(std::vector<int>(), ... ) )У майкрософта была какая-то "оптимизация" по продлению жизни ссылки
M>Вроде ничему не противоречит, но решил уточнить
M>Здравствуйте!
M>
M>template<typename ItemType>
M>inline
M>std::vector<ItemType>& push_back_helper( std::vector<ItemType> &v, const ItemType &elem )
M>{
M> v.push_back(elem);
M> return v;
M>}
M>inline
M>std::vector<int> makeVec( int i )
M>{
M> return push_back_helper( std::vector<int>(), i );
M>}
M>int main()
M>{
M> auto v = makeVec( 3 );
M>}
M>
под майкрософт может работать без проблем. Под gcc будет сигфолт, после передачи инстанса вектора он умрет при свертке стека (а именно после возврата из push_back_helper(std::vector<int>(), ... ) )У майкрософта была какая-то "оптимизация" по продлению жизни ссылки
M>Вроде ничему не противоречит, но решил уточнить