Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- template <class CDOEngine, class copulaT>
- void RecursiveCdoEngine<CDOEngine, copulaT>::initialize() const {
- ....
- std::remove(lgds.begin(), lgds.end(), 0.);
- ....
- }
- The std::remove function does not remove elements from the container. It only shifts the elements and brings the iterator back to the beginning of the trash. Suppose we have the vector<int> container that contains elements 1,2,3,1,2,3,1,2,3. If we execute the code "remove( v.begin(), v.end(), 2 )", the container will contain elements 1,3,1,3,?,?,?, where ? is some trash. The function will bring the iterator back to the first senseless element, so if we want to remove these trash elements, we must write the code this way: "lgds.erase(std::remove(lgds.begin(), lgds.end(), 0.), lgds.end());".
- This suspicious code was found in QuantLib project by PVS-Studio static code analyzer.
- Warning message is:
- V530 The return value of function 'remove' is required to be utilized. recursivecdoengine.hpp 172
- PVS-Studio is a static analyzer for detecting bugs in the source code of applications written in C, C++, C++11, C++/CX. Site: http://www.viva64.com/en/pvs-studio/
Advertisement
Add Comment
Please, Sign In to add comment