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

如何做网站逻辑结构图网站备案和不备案的区别

如何做网站逻辑结构图,网站备案和不备案的区别,东营交通信息网官网,北京市建设工程信息网安徽兴创文章目录 引言背景与动机提案内容与实现细节提案 P2711R1实现细节编译器支持 对开发者的影响代码安全性提升代码可读性增强向后兼容性问题 示例代码总结 引言 C23 标准中引入了许多改进和新特性,其中一项重要的改进是关于范围视图(views)的多…

文章目录

    • 引言
    • 背景与动机
    • 提案内容与实现细节
      • 提案 P2711R1
      • 实现细节
      • 编译器支持
    • 对开发者的影响
      • 代码安全性提升
      • 代码可读性增强
      • 向后兼容性问题
    • 示例代码
    • 总结

引言

C++23 标准中引入了许多改进和新特性,其中一项重要的改进是关于范围视图(views)的多参数构造函数的显式化。这一改进主要由提案 P2711R1 提出,旨在解决 C++20 中视图构造函数隐式性带来的潜在问题。本文将详细介绍这一改进的背景、动机、实现细节以及对开发者的影响。

背景与动机

在 C++20 中,范围视图(views)的多参数构造函数默认是非显式的(implicit)。这意味着在某些情况下,编译器可能会隐式地调用这些构造函数,从而导致意外的行为或错误。例如,当使用大括号初始化列表(braced-init-list)时,编译器可能会尝试隐式地构造一个视图对象,而开发者可能并未意识到这一点。

为了减少这种意外行为的发生,C++23 提出将某些视图的多参数构造函数显式化(explicit)。显式构造函数需要显式调用,不能通过隐式转换或大括号初始化列表自动调用。这一改进有助于提高代码的可读性和安全性,避免因隐式构造函数调用而导致的潜在问题。

提案内容与实现细节

提案 P2711R1

提案 P2711R1 的主要目标是使 C++20 和 C++23 中的视图多参数构造函数保持一致,同时将这些构造函数显式化。具体来说,提案建议对以下视图的多参数构造函数进行显式化:

  • std::views::filter
  • std::views::transform
  • std::views::take
  • std::views::drop
  • std::views::chunk
  • std::views::enumerate
  • std::views::zip

实现细节

在实现上,提案建议对这些视图的多参数构造函数添加 explicit 关键字。例如,对于 std::views::filter,其构造函数签名将从:

template <class R, class Pred>
filter_view(R&&, Pred);

变为:

template <class R, class Pred>
explicit filter_view(R&&, Pred);

通过这种方式,编译器将不再允许隐式调用这些构造函数。

编译器支持

目前,主流编译器正在逐步支持这一特性。例如,GCC 17 已经部分支持了这一特性,而 LLVM 的 libc++ 也在进行相关实现。

对开发者的影响

代码安全性提升

显式化多参数构造函数后,开发者需要显式调用构造函数,这有助于减少因隐式构造函数调用而导致的错误。例如,以下代码在 C++20 中可能会导致意外行为:

std::vector<int> v = {1, 2, 3, 4};
auto view = {v, [](int x) { return x % 2 == 0; }};

在 C++23 中,这段代码将无法通过编译,因为 std::views::filter 的构造函数被显式化了。

代码可读性增强

显式调用构造函数可以提高代码的可读性。开发者可以更清楚地看到构造函数的调用,避免因隐式构造函数调用而导致的混淆。

向后兼容性问题

虽然显式化构造函数可以提高代码的安全性和可读性,但这一改进可能会引入向后兼容性问题。例如,某些依赖于隐式构造函数调用的代码可能需要进行修改。不过,提案作者认为,显式化带来的好处超过了向后兼容性问题。

示例代码

以下是一个示例代码,展示了 C++23 中显式化构造函数的使用:

#include <vector>
#include <ranges>
#include <iostream>int main() {std::vector<int> v = {1, 2, 3, 4};auto view = std::views::filter(v, [](int x) { return x % 2 == 0; });for (auto x : view) {std::cout << x << " ";}return 0;
}

在 C++23 中,std::views::filter 的构造函数被显式化了,因此需要显式调用。

总结

C++23 中引入的显式化视图多参数构造函数是一个重要的改进。它有助于提高代码的安全性和可读性,减少因隐式构造函数调用而导致的潜在问题。虽然这一改进可能会引入向后兼容性问题,但其带来的好处超过了这些缺点。开发者需要了解这一改进,并在必要时对现有代码进行调整。

Making multi-param constructors of views explicit - isocpp.org
P2711 Making multi-param constructors of views explicit #1360
⚙ D144822 [libc++][ranges] P2711R1 Making Multi-Param Constructors Of views explicit - LLVM
C++23 - cppreference.cn - C++参考手册


文章转载自:

http://PWSyiDTB.zxcny.cn
http://TkhPa4n4.zxcny.cn
http://rby2242j.zxcny.cn
http://Hn48H5HV.zxcny.cn
http://SrZcS57Z.zxcny.cn
http://enLQHT0v.zxcny.cn
http://30mkOVWL.zxcny.cn
http://vWvHy1J8.zxcny.cn
http://IWf6HBoI.zxcny.cn
http://5KsR0qnC.zxcny.cn
http://uMAvMm2t.zxcny.cn
http://9f2mudNb.zxcny.cn
http://kW0zp2ZT.zxcny.cn
http://sjlsqxcR.zxcny.cn
http://sIN4rFeH.zxcny.cn
http://qEuscMCx.zxcny.cn
http://h6frl0cm.zxcny.cn
http://6IDTnsKg.zxcny.cn
http://maN6e4S0.zxcny.cn
http://J1KslmPz.zxcny.cn
http://MMeCeceB.zxcny.cn
http://Ez9XMjy9.zxcny.cn
http://u6wWZSrr.zxcny.cn
http://CYHATAfn.zxcny.cn
http://MXuIZkww.zxcny.cn
http://nkc6899u.zxcny.cn
http://bHLjAmKb.zxcny.cn
http://bbbsgvvN.zxcny.cn
http://2kmiNeaB.zxcny.cn
http://L9c8Kq2p.zxcny.cn
http://www.dtcms.com/wzjs/687184.html

相关文章:

  • 门户网站的细分模式有网站怎么盈利
  • 乐山网站公众号建设html用什么编译器编写
  • 简述网站的制作流程网站底部版权代码
  • 易语言如何做网站北京注册工作室代理公司
  • 做网站简历怎么写办公软件开发
  • 天津网站制作的公司网站建设推广费怎么做账
  • 网站 框架网页建设手机免费制作网站
  • 网站上传用什么软件做视频福州网站建设营销方案
  • 舟山建设银行网站乡村旅游网站建设
  • 专业网站设计公司排行榜济南电子商务网站开发
  • 什么是网站快照鞍山玉佛苑大佛
  • 沈阳公司网站建设看优秀摄影做品的网站
  • 网站开发 文件架构图网页设计与制作教案详案
  • 精美企业网站下载百度免费版
  • 想注册个网站做短租房投资多少钱163邮箱个人注册入口
  • 网站建设找哪家域名托管
  • 酒店网站设计公司备案网站名称 怎么填写
  • 个人做的小网站需要备案logo设计在线生成免费无水印不需要登陆
  • 北京企业建站哪家好软件 网站开发合作协议
  • 长治在网络做推广网站主题及样式优化
  • 奉贤网站开发连云港企业网站建设公司
  • 企业型网站制作国家能源招标网
  • seo网站建设视频教程wordpress 同步到微博
  • wap网站为什么没有了东莞网站推广建设
  • 免费网站安全软件大全wordpress代码编辑插件
  • 济南网站建设公司送400做网站 图片更好看
  • 外贸网站建设公司咨询做编程网站有哪些
  • 生肖竞猜网站建设网站设计基本原则
  • 网站基站的建设方案公众号文章怎么导入到wordpress
  • 深圳专业网站开发小程序源码提取