当前位置: 首页 > news >正文

做网站旅游销售青岛网站建设电话

做网站旅游销售,青岛网站建设电话,个人怎么做课程网站,镇江网站排名优化前言 std::visit 是 C17 中引入的一个模板函数,它用于对给定的 variant、union 类型或任何其他兼容的类型执行一个访问者操作。这个函数为多种可能类型的值提供了一种统一的访问机制。使用 std::visit,你可以编写更通用和灵活的代码,而无需关…

前言

std::visit 是 C++17 中引入的一个模板函数,它用于对给定的 variantunion 类型或任何其他兼容的类型执行一个访问者操作。这个函数为多种可能类型的值提供了一种统一的访问机制。使用 std::visit,你可以编写更通用和灵活的代码,而无需关心具体是哪种类型的值。

实践

 市面上大部分例子都是只访问一个variant, 我们写个不同的,实际visit支持一下放入多个variant, 参考语法:

 

#include <iostream>
#include <variant>
#include <string>
using namespace std;// Define alternative types
using Variant1 = std::variant<int, double>;
using Variant2 = std::variant<int,char>;struct MyVisitor {//对每一种组合都必须定义一个处理函数。少一个编译都会失败。void operator()(int value1, int value2) const {std::cout << value1<<value2<<endl;}void operator()(int value1, char value2) const {std::cout << value1<<value2<<endl;}void operator()(double value1, int value2) const {std::cout << value1<<value2<<endl;}void operator()(double value1, char value2) const {std::cout <<value1<<value2<<endl;}
};int main() {Variant1 var1;Variant2 var2;var1 = 42;var2 = 100;std::visit(MyVisitor{}, var1, var2); var1 = 3.14;var2 = 'a';std::visit(MyVisitor{}, var1, var2);return 0;
}

啰嗦一句,因为我们四个函数体相似,正是用模板的好时机,把它们改成一句话:

    void operator()(auto&& value1, auto&& value2) const {std::cout << value1<<value2<<endl;  }

如果不放心,丢到cppinsights里看看展开:

四个函数不论手写还是自动生成缺一不可,它们其实是两个variant的alternative types的组合,即int/double 与 int/char的所有组合。缺一不可和gcc的实现有关,下面会说到。

visit的原理

这次我们不看晦涩的代码,而是通过GDB快速理解visit的原理。

调试到21行 std::visit(MyVisitor{}, var1, var2);

s进入,慢慢到下面这个位置:

 打印__vtable: 它生成了一个2*2的二维数组,里面放了函数指针,对应所有组合。

不要被名字所误解,vtable不是virtual table的意思。

此时var1 var2里面装的都是int,都是各自类型列表中的第一个类型 (var1.index(), var2.index()), __func_ptr应该取得了__vtable[0][0]的值即0x40160f

 确实如此。

咱们这是从现象推原理,如果还想了解vtable怎么生成的,可能这篇文章对你有帮助:

Variant Visitation – Michael Park

Variant Visitation V2 – Michael Park

http://www.yayakq.cn/news/487462/

相关文章:

  • linux wordpress配置优化的网站做域名跳转
  • 青岛做网站的网络公司福田庆三价格
  • 购物网站建设的可行性南昌建筑工程公司
  • 江西网站设计欣赏莱芜网站优化怎么做
  • 淘宝店的网站建设分析小程序设计开发公司
  • dede网站怎么做404页面简述网络营销的定义
  • 做招聘信息的网站有哪些网站关键词优化的步骤
  • 网站建设宣传 mp4网页制作公司有哪些职位
  • 公考在哪个网站上做试题上传设计作品的网站
  • 做外汇消息面的网站网站设计网站类型
  • 陕西省建设厅特种工报名网站做网站小程序多少钱
  • 关于做公司网站建设你应该知道的网页美工设计的流程有哪些?
  • 全屏网站表现形式工商企业注册登记网官网
  • 常州天狼网站建设太原网站域名搭建
  • 服务器网站管理软件动漫设计与制作零基础教程
  • 徐州建立网站大型网站制作都有哪些
  • 网站建设公司初心买极速赛车网站会动手做不
  • 模板建站的网站深圳建设工程交易服务网中标
  • 邢台做网站推广的公司网站建设与管理就业方向
  • 有没有手机网站推荐深圳能源集团股份有限公司
  • 电子商城网站的设计与实现淮安网站建设案例
  • 寻花问柳一家专门做男人的网站搜房网站要怎么 做
  • 用什么网站做问卷zend studio 网站开发
  • 手机网站开发技术pdf营销活动
  • 网站制作与维护费用天津外贸网络推广
  • 南阳网站建设aokuo崇义网站建设
  • 北仑网站制作php发布wordpress接口
  • 手机wap购物网站模板安徽省安徽省建设工程信息网站
  • 优化网站排名怎么制作素材网站的素材可以商用吗
  • 广西网站建深圳展览公司排行