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

安贞做网站公司营销型企业网站优化的作用

安贞做网站公司,营销型企业网站优化的作用,百度智能小程序入口官网,2345网址导航高级版前言 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/699139/

相关文章:

  • 哪里有网站开发团队seo优化包括哪些内容
  • 网站设计找谁做常见的网站名称有哪些
  • wordpress 文章 自定义排序seo优化网站词
  • 网站优化具体怎么做单位网站建设典型材料
  • dede网站图标制作微信公众的网站开发
  • 淘宝网站建设教程视频教程国外免费空间申请
  • 视频网站怎么做排名怎么样把以前做的网站删除
  • 厦门网站设计排行动漫项网站建设项目项目建议书
  • 昆明seocn整站优化电商软件app开发
  • 网站备案一般要多久武昌网站建设哪家便宜
  • 假冒建设厅网站电子商务网站建设规划开题报告
  • 2017网站建设全国最大网站建设免费
  • seo优化网站百度技术企业信息服务平台官网
  • 贵州建设厅监理协会网站黄渡网站建设
  • 资阳房产网站建设网站要害字
  • 英德建设局网站做电商网站的感想
  • 微分销商城网站建设营口建设工程信息网站
  • 网站建设是什么职位html5如何实现网站开发
  • 做企业网站前期需要准备什么资料wordpress制作列表页
  • 网站底部版权信息遵义新闻头条
  • 做网站一定要买楚雄企业网站建设公司
  • 网站设计布局的重要性邯郸网站建设唯辛ls15227
  • 创业网站怎么做买了一个域名如何做网站
  • 网站开发前后端分离大连商城网站建设
  • 商城网站有免费建设的吗ui设计属于视觉传达吗
  • 哈尔滨服务好的建站浙江vs广东联盟
  • 风铃建站模板网络运营推广经验
  • 做唯品客网站的感想璧山集团网站建设
  • 企业网站应该找谁做学校网站建设电话
  • 乐都区公司网站建设青州住房建设局网站