boost::make_function_output_iterator报错: C4996
用VS2013运行boost::make_function_output_iterator的官方例子:
https://www.boost.org/doc/libs/1_68_0/libs/iterator/doc/function_output_iterator.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
struct string_appender { string_appender(std::string& s) : m_str(&s) {} void operator()( const std::string& x) const { *m_str += x; } std::string* m_str; }; int main( int , char *[]) { std::vector<std::string> x; x.push_back( "hello" ); x.push_back( " " ); x.push_back( "world" ); x.push_back( "!" ); std::string s = "" ; std::copy(x.begin(), x.end(), boost::make_function_output_iterator(string_appender(s))); std::cout << s << std::endl; return 0; } |
结果报如下的编译错误:
1
|
Error 1 error C4996: 'std::_Copy_impl': Function call with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'Checked Iterators' c:\program files (x86)\microsoft visual studio 12.0\vc\include\xutility 2132 1
|
[解决方法]
加入预处理器(项目属性----C/C++----预处理----预处理器定义):
_SCL_SECURE_NO_WARNINGS
[分析]
这个编译错误是由于vc++的checked iterators规则(https://msdn.microsoft.com/en-us/library/aa985965.aspx), 加入_SCL_SECURE_NO_WARNINGS预处理器后, 编译会通过,然后将风险交给运行时,由于boost库比较完善,所以这种风险应该不存在.
把链接中的Checked iterators内容拷贝如下:
Checked IteratorsVisual Studio 2015
Other Versions
![]() Checked iterators ensure that the bounds of your container are not overwritten. Checked iterators apply to both release builds and debug builds. For more information about how to use debug iterators when you compile in debug mode, see Debug Iterator Support. For information about how to disable warnings that are generated by checked iterators, see _SCL_SECURE_NO_WARNINGS. You can use the _ITERATOR_DEBUG_LEVEL preprocessor macro to enable or disable the checked iterators feature. If
When
When
A checked iterator refers to an iterator that will call checked_array_iterator Class and unchecked_array_iterator Class are the iterator adaptors that support checked iterators. When you compile by using // checked_iterators_1.cpp This program prints "67" then pops up an assertion failure dialog box with additional information about the failure. Similarly, when you compile by using // checked_iterators_2.cpp This program pops up an assertion failure dialog box with additional information about the failure. The following code demonstrates various iterator use-case scenarios with comments about each. By default, // checked_iterators_3.cpp When you compile this code by using algorithm(1026) : warning C4996: 'std::_Transform1': Function call with parameters When run at the command line, the executable generates this output: v: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
boost::make_function_output_iterator报错: C4996的更多相关文章
- boost pool_allocator 报错 'rebind'
#include "stdafx.h" #include <vector> #include <boost/pool/pool.hpp> int _tmai ...
- 在Visual Studio 2019中使用scanf报错C4996解决办法
错误警告信息 错误C4996 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To ...
- C++解决error C4996报错
今天用c++写了个数独程序,在编译过程中报了一个错误: 1>------ 已启动生成: 项目: sudoku, 配置: Debug Win32 ------1> main.cpp1> ...
- GCC 高版本7.4 编译链接 boost 报错 boost::thread::XXX’未定义的引用 解决方法
背景:开发中的项目之前一直用GCC4.8,boost库1.48版本的开发环境.现在因业务需求,需要更换GCC7.4,boost库1.70. 问题:可以正常编译BOOST的链接库文件,但是链接时候报错. ...
- 16061701(地图灯光编译Beast报错)
[目标] 地图灯光编译报错 [思路] 1 我自己测c2_cwd_rt 附件为当时log 2 ExampleGame\BeastCache\PersistentCache 3 重新删除掉BeastCac ...
- caffe ubuntu16安装报错和程序总结
我最近安装安装了老版本的caffe,安装过程真是两个字"想死",所以我的错误一般都是比较经典的. 我是使用cuda的版本,所以可能会出现undefined refference t ...
- caffe编译报错解决
添加ssd中的一些层之后,编译报错: ../lib/libcaffe.so.1.0.0-rc5:对‘boost::match_results<__gnu_cxx::__normal_iterat ...
- 【PaddlePaddle系列】报错解决方法合集 (不定时更新)
1.PaddlePaddle使用CPU时正常运行,但是使用GPU时却报出一堆错误信息,节选如下: paddle.fluid.core.EnforceNotMet: enforce allocating ...
- 。。。。。。不带http https : 不报错 spring boot elasticsearch rest
......不带http https : 不报错 先telnet http://onf:8080/getES653/道路桥梁正在“理疗”%20这14条道路纳入市政中修 @GetMapping(&qu ...
随机推荐
- BZOJ5291/洛谷P4458/LOJ#2512 [Bjoi2018]链上二次求和 线段树
原文链接http://www.cnblogs.com/zhouzhendong/p/9031130.html 题目传送门 - LOJ#2512 题目传送门 - 洛谷P4458 题目传送门 - BZOJ ...
- BZOJ2212 [Poi2011]Tree Rotations 线段树合并 逆序对
原文链接http://www.cnblogs.com/zhouzhendong/p/8079786.html 题目传送门 - BZOJ2212 题意概括 给一棵n(1≤n≤200000个叶子的二叉树, ...
- Cforeach的详细用法--【转】
运行截图: <!-- 多选框-还需要实现true选中和分行 --> <c:forEach items="${users}" var="item" ...
- Hdu-2008
杭电OJ-2008 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2008 #include<stdio.h> int main() { i ...
- 2017-2018-2 20165220『Java程序设计』课程 结对编程练习_四则运算
需求分析 题目要求 一个命令行程序实现: 自动生成小学四则运算题目(加.减.乘.除) 支持整数 支持多运算符(比如生成包含100个运算符的题目) 支持真分数 统计正确率 需求理解 输入:需要计算的式子 ...
- java设计模式之-观察者模式(发布-订阅模式)
1.观察者模式定义 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象. 这个主题对象在状态上发生变化时,会通知所有观察者对象,让它们能够自动更新自己. 2.观察者模式结构 ...
- linux 学习笔记 groupadd创建组
1> groupadd -g test2 2>usermod -d /home/test -G test2 test 3>su user 4>groups 注意:root用户才 ...
- angular笔记_6
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- js的cookie和sesession详解
会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端 ...
- [ONTAK2015]OR-XOR
[ONTAK2015]OR-XOR 题目大意: 一个长度为\(n(n\le5\times10^5)\)的序列\(A(0\le A_i\le10^{18})\),将其分为恰好\(m\)个连续段,设每一段 ...