为什么`std :: unary_function`仍然在c 17中编译?

weixin_38050648 2019-09-12 01:11:11
std::unary_function特性在c 11中已弃用,在c 17中已删除.但是使用c 17编译器标志,此代码仍会编译: struct less_than_7 : std::unary_function<int, bool> { bool operator()(int i) const { return i < 7; } }; 使用g -std = c 17 -O0 -Wall -pedantic main.cpp here.构建 功能删除是否可选,以便编译器实现?
...全文
288 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38071769 2019-09-12
  • 打赏
  • 举报
回复
由于它不再是C 17标准的一部分,因此它包含在您的一个源代码文件中与将内容引入std的代码属于同一类别. 换句话说,程序行为是未定义的. 程序工作是未定义行为的表现.也许您的实现定义了未定义的行为.但即便如此,您的代码也不是C17.

474

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧