value у emplace_back поменяли с void на T&, а у push_back — нет.
В этой связи меня удивляет, что у std::list::remove в C++20 поменяли return value с void на size_t и никто не бил тревогу. Может пора issue заводить?
В libstdc++ решили проблему std::list::remove с помощью abi_tag: https://github.com/gcc-mirror/gcc/commit/43c7ee54a2c49b8c153f1a072d87574be0de72a4
Почему у emplace_back поменять return type с void это нормально, а у list::remove это проблема? Мне кажется под ABI библиотеки подразумевают обычно совместимость между динамическими модулями. Никто не будет статически линковать несколько объектников скомпилированных с разной стандартной библиотекой. С этой точки зрения замена return типа с void не сломает совместимость.
Обсуждают сегодня