C++函数对象-函数包装器-(std::bad_function_call)

任何定义了函数调用操作符的对象都是函数对象。C++ 支持创建、操作新的函数对象,同时也提供了许多内置的函数对象。


函数包装器

std::function 提供存储任意类型函数对象的支持。

用空的 std::function 时抛出的异常

std::bad_function_call

class bad_function_call;

(C++11 起)

std::bad_function_call 是若函数包装器无目标,则 std::function::operator() 将抛出的异常类型。

成员函数

(构造函数)

构造 bad_function_call 对象
(公开成员函数)

std::bad_function_call::bad_function_call()

bad_function_call() noexcept;

构造新的 std::bad_function_call 实例。

继承图

参数

(无)

继承自 std::exception

成员函数

(析构函数)

[虚]

析构该异常对象
(std::exception 的虚公开成员函数)

what

[虚]

返回解释性字符串
(std::exception 的虚公开成员函数)

调用示例

#include <iostream>
#include <functional>int main()
{std::cout << std::boolalpha;std::function<int()> function1 = nullptr;std::cout << function1.target_type().name() << std::endl;std::cout << typeid(function1).name() << "  function1 bool : "<< (function1 ? true : false) << std::endl;try{function1();}catch (const std::bad_function_call& e){std::cout << e.what() << std::endl;}std::function<bool(int)> function2 = [](int num){return num % 2 == 1;};std::cout << function2.target_type().name() << "  function2(1024): "<< function2(1024) << std::endl;std::cout << typeid(function2).name() << "  function2 bool : "<< (function2 ? true : false) << std::endl;std::cout << typeid(function2).name() << "  target_type()  : "<< (function2.target_type() == typeid(bool(*)(int)) ? true : false) << std::endl;std::cout << typeid(function2).name() << "  function2.target<bool(*)(int)>() : "<< function2.target<bool(*)(int)>() << std::endl;return 0;
}

输出

v
St8functionIFivEE  function1 bool : false
bad_function_call
Z4mainEUliE_  function2(1024): false
St8functionIFbiEE  function2 bool : true
St8functionIFbiEE  target_type()  : false
St8functionIFbiEE  function2.target<bool(*)(int)>() : 0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/418645.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MSSQL-识别扩展extended event(扩展事件)中的时间单位

经常使用sqlserver extended event(扩展事件)&#xff0c;但是总是忘记扩展事件使用的时间单位&#xff0c;不确定它们是 秒、毫秒、还是微秒&#xff1f; 以下下代码能够从 相关DMV中提取description字段内容来识别时间单位&#xff1a; SELECT [p].[name] [package_name],[o…

跨平台开发:构建适配多设备的直播电商APP

如今&#xff0c;跨平台开发成为构建适配多设备的直播电商APP的关键之一。本文将深入探讨跨平台开发的优势、选择适当的技术栈以及解决多设备适配的挑战。 一、跨平台开发的优势 1.1节省开发成本 通过一套代码即可在iOS和Android等多个平台上运行&#xff0c;极大地提高了开…

Python多线程—threading模块

参考&#xff1a;《Python核心编程》 threading 模块的Thread 类是主要的执行对象&#xff0c;而且&#xff0c;使用Thread类可以有很多方法来创建线程&#xff0c;这里介绍以下两种方法&#xff1a; 创建 Thread 实例&#xff0c;传给它一个函数。派生 Thread 的子类&#xf…

03-黑马程序员大数据开发:Apache Hive

一、 Apache Hive概述 1. 目的&#xff1a;&#xfeff;了解什么是分布式SQL计算&#xff1b;了解什么是Apache Hive 2. 使用Hive处理数据的好处 &#xfeff;操作接口采用类SQL语法&#xff0c;提供快速开发的能力&#xff08;简单、容易上手)&#xfeff;底层执行MapReduc…

Java多线程知识汇总(三)

目录 一、线程池 ThreadPoolExecutor二、使用线程池执行定时任务三、取消正在运行的任务 一、线程池 ThreadPoolExecutor 首先&#xff0c;我们为什么需要线程池&#xff1f;让我们先来了解下什么是 对象池 技术。某些对象&#xff08;比如线程&#xff0c;数据库连接等&…

JVM问题分析处理手册

一.前言 各位开发和运维同学&#xff0c;在项目实施落地的过程中&#xff0c;尤其是使用EDAS、DRDS、MQ这些java中间件时&#xff0c;肯定会遇到不少JAVA程序运行和JVM的问题。我结合过去遇到的各种各样的问题和实际处理经验&#xff0c;总结了JAVA问题的处理方式&#xff0c;…

PostgreSQL命令大全

文章目录 连接与退出数据库操作表操作外键约束视图操作存储过程与函数权限管理事务管理查询优化与分析数据类型转换分区表操作复制与备份恢复 PostgreSQL是一个功能强大的开源关系型数据库管理系统&#xff0c;以下是一些基本且常用的命令按功能分类&#xff1a; 连接与退出 连…

【GitHub项目推荐--AI杀入斗地主领域】【转载】

AlphaGo&#xff1a;第一个战胜围棋世界冠军的人工智能机器人。 我不会玩围棋&#xff0c;没办法和 AlphaGO 对局。但是我喜欢玩斗地主&#xff0c;有斗地主人工智能机器人吗&#xff1f; 有&#xff0c;而且还开源了。DouZero&#xff1a;快手团队开发的斗地主AI。别的不说&…

ssrf漏洞代码审计之douphp解析(超详细)

1.进入douphp的安装界面 www.douphp.com/install/ 由此可知安装界面已经被锁定了&#xff0c;但是由于install.lock是可控的&#xff0c;删除了install.lock后即可进行安装&#xff0c;所以我们现在的目的就是找到怎么去删除install.lock的方法。 要删除目标网站的任意文件&a…

蓝桥杯准备

书籍获取&#xff1a;Z-Library – 世界上最大的电子图书馆。自由访问知识和文化。 (zlibrary-east.se) 书评&#xff1a;(豆瓣) (douban.com) 一、观千曲而后晓声 别人常说蓝桥杯拿奖很简单&#xff0c;但是拿奖是一回事&#xff0c;拿什么奖又是一回事。况且&#xff0c;如果…

蓝桥杯-dfs(一)

&#x1f4d1;前言 本文主要是【算法】——dfs使用的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304;每日一句&#xff1…

Redis 存在线程安全问题吗?为什么?

一个工作了 5 年的粉丝私信我。 他说自己准备了半年时间&#xff0c;想如蚂蚁金服&#xff0c;结果第一面就挂了&#xff0c;非常难过。 问题是&#xff1a; “Redis 存在线程安全问题吗&#xff1f;” 一、问题解析 关于这个问题&#xff0c;我从两个方面来回答。 第一个&a…