If, as I do on occasion, you choose not to suppress the warnings (by ignoring 4996, or by defining _SCL_SECURE_NO_WARNINGS) but instead want to ignore specifically for std::copy(), you can do it as follows:
#include <stlsoft/algorithms/std/alt.hpp>
#include <stlsoft/internal/safestr.h>
defined(STLSOFT_COMPILER_IS_MSVC)
namespace std
{
using ::stlsoft::std_copy;
# define copy std_copy
}
#endif // compiler
By all means it's breaking the rules and introducing names into the std namespace. Nonetheless, we can sleep easy, since, hey, we didn't start the undermining of the standard!
The other problem is that, currently, stlsoft::std_copy() has no specialisations. It always uses long-hand iteration; no memcpy()-based block copying for random access iterators to POD types.
I hope you know me well enough by now for this to not need to be said. But it's important enough for me to have to say it explicitly, just in case: do not use this technique in library headers!
No comments:
Post a Comment