Remove This Idiom
Most seasoned C++ developers are familiar with the erase-remove(_if) idiom when using STL. The std::remove(_if) algorithm is a showcase of the beauty of STL generic design and the power of algorithmic composition through iterators.
Yet this seemingly trivial task of removing elements from a collection (based on a predicate) is an epitome of C++ footguns. And no modern compiler or static analysis can warn you about it. We are on our own. Ask me how I know…
Fear not, C++20 has a better alternative for us and it’s 100% safe and much leaner to use.
Victor Ciura is a Principal Engineer at CAPHYON, Technical Lead on the Advanced Installer team and a Microsoft MVP (Developer Technologies).
He’s a regular guest at Computer Science Department of his Alma Mater, University of Craiova, where he gives student lectures & workshops on using C++ STL Algorithms.
Since 2005, he has been designing and implementing several core components and libraries of Advanced Installer. Currently, he spends most of his time working with his team on improving and extending the repackaging and virtualization technologies in Advanced Installer IDE, helping clients migrate their traditional desktop apps to the modern Windows application format: MSIX.
One of his “hobbies” is tidying-up and modernizing (C++20) the aging codebase of Advanced Installer and has been known to build tools that help this process: Clang Power Tools
More details: @ciura_victor & https://ciura.ro & linkedin.com/victor-ciura