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

信用泰安网站2023必考十大时政热点

信用泰安网站,2023必考十大时政热点,凌美上海建设工程网站,做赌场网站犯法么C17 引入了结构化绑定用来声明变量, 到现在为止它能出现在if/while/for等语句中. P0963提议了新的语法增强, 允许结构化绑定作为条件使用, 这将简化代码写法. 通常在if中声明变量时, 我们会进一步对变量做判断, 比如: #include <charconv> #include <print>struc…

C++17 引入了结构化绑定用来声明变量, 到现在为止它能出现在if/while/for等语句中.
P0963提议了新的语法增强, 允许结构化绑定作为条件使用, 这将简化代码写法.

通常在if中声明变量时, 我们会进一步对变量做判断, 比如:

#include <charconv>
#include <print>struct parse_result {long result;const char* begin;const char* end;
};parse_result parse(const char* begin, const char* end) {char* last;auto ret = strtoll(begin, &last, 10);return {ret, last, end};
}int main() {std::string_view str = "123 456 789";auto begin = str.data();auto end = str.data() + str.size();
//{if (auto [ret, first, last] = parse(begin, end);first != last) {// interpret [first, last) into a valuestd::println("ok, got {}", ret);}
//}
}

first != last是分支判断条件, 它具有重复性. 我们可以重载操作符(), 返回布尔值, 从而在if中调用.

struct parse_result {long result;const char* begin;const char* end;explicit operator bool() const noexcept {std::println("operator () called");return begin != end;}
};

之前的代码就可以简化为:

#include <charconv>
#include <print>struct parse_result {long result;const char* begin;const char* end;explicit operator bool() const noexcept {std::println("operator () called");return begin != end;}
};parse_result parse(const char* begin, const char* end) {char* last;auto ret = strtoll(begin, &last, 10);return {ret, last, end};
}int main() {std::string_view str = "123 456 789";auto begin = str.data();auto end = str.data() + str.size();
//{if (auto [ret, first, last] = parse(begin, end)) {// interpret [first, last) into a valuestd::println("ok, got {}", ret);}
//}return 0;
}

对于标准库中已经实现类似功能的接口(std::from_chars/std::to_chars), 我们就可以利用它来简化代码:

#include <charconv>
#include <iostream>int main() {char buffer[16];char* p = buffer;char* last = buffer + sizeof(buffer);// before C++26if (auto result = std::to_chars(p, last, 42)) {auto [ptr, _] = result;// okay to proceed} else {auto [ptr, ec] = result;// handle errors}// C++26if (auto [ptr, ec] = std::to_chars(p, last, 42)) {// okay to proceed} else {// handle errors}return 0;
}

进一步阅读

  • C++26 新特性预览(Preview)
    • 契约(Contract)
    • C++26 编译时反射简介
    • C++26 占位符变量改进
http://www.dtcms.com/wzjs/325620.html

相关文章:

  • 邯郸网站建设浩森宇特竞价 推广
  • 网站制作aqqseo工资服务
  • 外网建筑设计网站宁波seo推广优化怎么做
  • 网站建设优化服务好么制作免费个人网站
  • 单页滚动网站武汉关键词排名提升
  • 网站内页修改关键字写软文怎么接单子
  • 51制作工厂网站在线观看无需选择网络营销主要是什么
  • 临沂酒店建设信息网站淘词神器
  • 做网站美工的理由新冠不易感染三种人
  • 网站可以先做代码么百度贴吧人工客服
  • 安徽省建设造价网站百度平台我的订单
  • wordpress支持手机适应seo优化收费
  • 西安网站设计招聘网站收录提交入口
  • wordpress插件多说常州百度关键词优化
  • 石家庄做外贸的网站建设微信营销的方法和技巧
  • 网站群建设进度中国网站排名网
  • 网站地图表现形式百度浏览器官方网站
  • c2b做的好的网站手机seo百度点击软件
  • 动易网站后台管理系统搜索引擎有哪几个网站
  • 简单小网站网络项目资源网
  • 上海专业做网站公司建立营销型网站
  • 北京 广告 手机网站seo收录排名
  • 做的门户网站怎么绑定ip地址seo博客大全
  • 做直播网站宽带地推的方法和技巧
  • 给人做网站赚钱吗外链大全
  • wordpress简单企业站网络营销方案
  • 各大设计网站网站如何建立
  • 重庆做网站建设团队抖音引流推广怎么做
  • 北京的网络公司有哪些适合seo的建站系统
  • 潍坊做网站维护费用网络优化工程师工作内容