该函数模板是创建 std::any 对象

emplate< class T, class... Args >
std::any make_any( Args&&... args );

(1) (C++17 起)

template< class T, class U, class... Args >
std::any make_any( std::initializer_list<U> il, Args&&... args );

(2) (C++17 起)

构造含 T 类型对象的 any 对象,传递提供的参数给 T 的构造函数。

1) 等价于 return std::any(std::in_place_type<T>, std::forward<Args>(args)...);

2) 等价于 return std::any(std::in_place_type<T>, il, std::forward<Args>(args)...);


#include <any>
#include <complex>
#include <functional>
#include <iostream>
#include <string>int main()
{auto a0 = std::make_any<std::string>("Hello, std::any!\n");auto a1 = std::make_any<std::complex<double>>(0.1, 2.3);std::cout << std::any_cast<std::string&>(a0);std::cout << std::any_cast<std::complex<double>&>(a1) << '\n';using lambda = std::function<void(void)>;// 把 lambda 放入 std::any。尝试 #1 (失败)。std::any a2 = [] { std::cout << "Lambda #1.\n"; };std::cout << "a2.type() = \"" << a2.type().name() << "\"\n";// any_cast 转型到 <void(void)> 但实际类型不是// std::function ……,而是 ~ main::{lambda()#1} ,且它对// 每个 lambda 唯一。所以这会抛出……try {std::any_cast<lambda>(a2)();}catch (std::bad_any_cast const& ex) {std::cout << ex.what() << '\n';}// 将 lambda 放入 std::any 中。尝试 #2 (成功)auto a3 = std::make_any<lambda>([] { std::cout << "Lambda #2.\n"; });std::cout << "a3.type() = \"" << a3.type().name() << "\"\n";std::any_cast<lambda>(a3)();system("pause()");return 0;
}

运行结果如下:

std::make_any相关推荐

  1. C++ std::any、std::variant和std::optional的原位构造(In-Place Construction)

    本文翻译自 Bartlomiej Filipek 的博客文章 In-Place Construction for std::any, std::variant and std::optional,翻译 ...

  2. 【Overload游戏引擎】源码分析之六:OvRendering函数库(四)

    2021SC@SDUSC 目录 1.Uniform 1.1UniformType 1.2UniformInfo 2.Shader 2.1SetUniform和GetUniform 2.2GetUnif ...

  3. C++11标准下实现std::any类

    链接地址:https://gitee.com/shaoguangcn/cpp-any any.h /************************************************** ...

  4. C++ 笔记(36)—— std::cout 输出保留小数位数

    需要头文件 #include <iomanip> setprecision() 来用来保存有效数字,fixed 和 setprecision() 一起用就变成保存小数点后有效数字. fix ...

  5. C++ 笔记(35)— std::to_string 转换整形数字为字符串

    1. 函数原型 string to_string (int val); string to_string (long val); string to_string (long long val); s ...

  6. gcc 自动识别的文件扩展名,gcc/g++ -x 选项指定语言,不同 gcc 版本 -std 编译选项支持列表

    对于执行 C 或者 C++ 程序,需要借助 gcc(g++)指令来调用 GCC 编译器. 对于以 .c 为扩展名的文件,GCC 会自动将其视为 C 源代码文件 对于以 .cpp 为扩展名的文件,GCC ...

  7. OpenCV 笔记(08)— 二维点、三维点、基于 Mat 的 std::vector 等常用数据结构的定义和输出

    1. 定义和输出二维点 Point2f p2(3, 4);cout << "[二维点] is "<< endl << p2 << e ...

  8. PyTorch 笔记(07)— Tensor 的归并运算(torch.mean、sum、median、mode、norm、dist、std、var、cumsum、cumprod)

    1. Tensor 归并运算函数 此类操作会使输出形状小于输入形状,并可以沿着某一维度进行指定操作,如加法, 既可以计算整个 tensor 的和,也可以计算 tensor 每一行或者 每一列的和, 常 ...

  9. 函数指针amp;绑定: boost::functoin/std::function/bind

    see link: https://isocpp.org/wiki/faq/pointers-to-members function vs template: http://stackoverflow ...

最新文章

  1. 多目标跟踪:CVPR2019论文阅读
  2. 软件开发生命周期中的设计阶段_BIM咨询在设计阶段包含哪些内容?体现了哪些价值?...
  3. BERT Word Embeddings Tutorial
  4. 汉拓中国CRM评估报告简介
  5. boot lib分离 spring_spring boot + gradle打包bootJar分离lib
  6. class(一)--类的创建
  7. android真实项目教程(四)——MY APP MY STYLE_by_CJJ
  8. 《从0到1学习Flink》—— 如何自定义 Data Source ?
  9. WampServer 常见问题
  10. 常见电平转换电路--超简单
  11. HTML/CSS居中对齐的方式大全
  12. win2008 SP2下USB鼠标不能使用的一个解决方案
  13. 在 ubuntu 的桌面上创建快捷方式
  14. Mac PS 之 简单去除背景并设置背景透明,变更图片宽高。。。
  15. “征信污点”可消除?征信中心:不可能
  16. 负317是几位数在计算机课中,计算机应用基础数据在计算机中的表示ppt课件
  17. asp.net Repeater等数据控件模版内部2个DropDownList控件级联
  18. 以太坊客户端mist和geth加快区块同步速度的方法
  19. 开通微信公众号留言功能的开通问题
  20. python社区发现对gml文件的分析,用Python将gml文件中边的信息输出为csv(或者txt)格式...

热门文章

  1. 为什么8位数据范围是-128到127,而不是-127到128?
  2. c语言高中while题目,东风一中高中生智能机器人班c语言上机试题.doc
  3. VHDL基本门电路和数值比较器的设计
  4. mysql高级之子查询,多表查询,外连接,集合操作,内部函数与数据控制_月隐学python第24课
  5. 电路常识性概念(3)-TTL与CMOS集成电路
  6. matlab余割平方方向图,基于余割平方赋形波束的宽带微带阵列天线设计
  7. 会议论文_InVisor会议论文辅导发表
  8. P4390 [BOI2007]Mokia 摩基亚 (CDQ解决三维偏序问题)
  9. 10 个实用的 GitHub 插件
  10. Delphi 正则表达式语法(9): 临界匹配 - 也叫预搜索与反向预搜索