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

国际商务网站网站建设代码标签大全

国际商务网站,网站建设代码标签大全,通化市建设局网站,学动漫设计好找工作吗?C17那些事开篇之类模版参数推导(CTAD) 引入 大家好#xff0c;我是光城#xff0c;今天开始正式开篇C17的新特性了#xff0c;期待不#xff0c;欢迎留言区说出想要更新的特性呀#xff5e; C模板元编程一直是C开发者们熟知的一项功能#xff0c;无论是初学者还是高级开发… C17那些事开篇之类模版参数推导(CTAD) 引入 大家好我是光城今天开始正式开篇C17的新特性了期待不欢迎留言区说出想要更新的特性呀 C模板元编程一直是C开发者们熟知的一项功能无论是初学者还是高级开发者都能够通过它编写具有类型参数的通用代码。随着C17引入的类模板参数推导CTAD处理类模板的过程变得更加直观和灵活。 本节所有代码也会更新于社群中。 C17引入CTAD会带来如下好处 例如这么复杂的代码 std::vectorFooBarint, const char* obj{a, b, c}; 我们只需要 std::vector obj{a, b, c}; 再比如 std::tupleint 可以简化为 std::tuple t1{1}; 所以咱们今天来看看CTAD。 CTAD全称是Class template argument deduction (CTAD)类模版参数推导你给定编译器一个推导指南(deduction guide)我们便可以使用这个特性了。 如果不给定如下面例子 #include iostream template typename T, typename U struct MyPair {T first{};U second{}; };int main() {MyPairint, int p1{1, 2};MyPair p2{1, 2};std::cout  p1.first  ,   p1.second  std::endl;std::cout  p2.first  ,   p2.second  std::endl;return 0; } 对于p2我们便会报错 no viable constructor or deduction guide for deduction of template arguments of MyPair 那么对于怎么修改呢 只需要添加deduction guid即可如下写法即可。 template typename T, typename U MyPair(T, U) - MyPairT, U; 类模板参数推导CTAD通过允许编译器从构造函数参数中推导出模板参数简化了类模板的实例化过程。在引入CTAD之前开发者在实例化时必须明确指定模板参数。然而通过CTAD这种明确的指定变得不再必要从而使代码更易读、易维护。 template typename T class Add{private:T first;T second;public:Add()  default;Add(T first, T second): first_{first}, second_{second} {}T result() const { return first  second; } };int main(){Add one(1,2);               // T被推导为intAdd two{1.245, 3.1415};     // T被推导为doubleAdd three  {0.24f, 0.34f}; // T被推导为float } 在上面的示例中CTAD允许类型T基于构造函数参数被推导消除了显式类型指定的需求。 非静态成员初始化 但是有个场景用不了CTAD那就是非静态成员初始化。例如Test类中使用外面的MyPair就必须写全。 template typename T  int, typename U  int struct MyPair {T first{};U second{}; };template typename T, typename U MyPair(T, U) - MyPairT, U;class Test {MyPair p4;   // use of class template MyPair requires template arguments; argument// deduction not allowed in non-static class member }; 在上面的例子中我们定义了一个模板类MyPair并在其中使用了CTAD。然而当我们尝试在类Test中使用MyPair作为非静态成员时由于非静态成员初始化的上下文CTAD将无法正常工作导致编译错误。在这种情况下我们必须显式指定MyPair的模板参数。 我们可以看到在非静态成员初始化的上下文中CTAD无法推导模板参数。因此在类模板作为非静态成员时开发者需要显式指定所有的模板参数。这一点需要在实际开发中特别注意以确保代码的正确性和可维护性。 欢迎与我一起交流学习C那些事相关源码与资料已更新社群。
http://www.pierceye.com/news/237398/

相关文章:

  • 潍坊网站建设推广公司网站建设类的手机软件
  • 建设小学网站建设网站代理
  • 怎么查看网站根目录网站建设费记什么科目
  • 文昌市规划建设管理局网站网站与个人网站
  • 昆明网站建设推荐q479185700上墙现在最火的推广平台有哪些
  • 长兴县城乡建设局网站wordpress的留言功能
  • 建设企业网站地址asp.net 4.0网站开...
  • 制作个人网站步骤提升学历励志语录
  • 福州建站服务管理页面布局标准格式
  • 做一个公司网站一般需要多少钱营销型网站功能表
  • 为什么菜市场不可以做网站河南阿里巴巴网站建设
  • asp.net动态的网站开发手机海报制作免费软件
  • 网站建设前准备龙岗网站优化公司案例
  • 做流量哪个网站好滨州j建设局网站投诉电话
  • 空白网站怎么建wordpress 邮箱订阅
  • 乡镇网站建设自查报告做企业门户网站要准备哪些内容
  • 百度做推广一般要多少钱相城seo网站优化软件
  • 博客和网站的区别贵阳网站推广优化公司
  • 专业做公司网站的机构时彩网站开发
  • 网站 建设设计深圳网站建设交易
  • 网站建设氵金手指下拉十二网页设计有啥教程
  • 物流企业网站建设策划书6wordpress 搜索 很慢
  • 青岛网站设计选哪家南海区住房城乡建设和水务局网站
  • 济南冰河世纪网站建设手机可以搭建网站吗
  • 网站建设论文总结wordpress文章排序方式
  • 织梦程序来搭建网站人才招聘网最新招聘信息
  • 网站建设 客户定位支付网站建设费会计分录
  • 深圳网站设计工作室广告公司名字 三个字
  • 长沙门户网站广告网站设计公司
  • 余姚网站建设的公司wordpress 开发文档