Get rid of deprecated C/C++ functions
So far MSVC complains that these functions are deprecated and may be removed in newer MSVC versions:
- sprintf
- strncpy
- sscanf
- gmtime
- localtime
Also there is a complaint that std::iterator is deprecated in C++17, what affects our ContainerStoreIteratorBase class:
warning STL4015: The std::iterator class template (used as a base class to provide typedefs) is deprecated in C++17.
(The <iterator> header is NOT deprecated.)
The C++ Standard has never required user-defined iterators to derive from std::iterator.
To fix this warning, stop deriving from std::iterator and start providing publicly accessible typedefs
named iterator_category, value_type, difference_type, pointer, and reference.
Note that value_type is required to be non-const, even for constant iterators.
A last thing is a complaint about Boost:
boost/iostreams/positioning.hpp(96): warning C4996: 'std::fpos<_Mbstatet>::seekpos': warning STL4019:
The member std::fpos::seekpos() is non-Standard, and is preserved only for compatibility
with workarounds for old versions of Visual C++.
It will be removed in a future release, and in this release always returns 0.
This issue is supposed to be fixed in the Boost 1.69, while our Windows builds seem to use Boost 1.67.
Once these issues are solved, we can remove C4996 MSVC warning from our blacklist.
Edited by Andrei Kortunov