随笔分类 - C++template
摘要:折叠表达式(Fold Expression) 折叠表达式是C++17新引进的语法特性。使用折叠表达式可以简化对C++11中引入的参数包的处理,从而在某些情况下避免使用递归。 支持的操作符 折叠表达式支持 32 个操作符: +, -, *, /, %, ^, &, |, =, <, >, <<, >>
阅读全文
摘要:推断指引(Deduction Guides)是C++17语法。作用是当创建一个模板类时,可以通过 “推断指引 来提供额外地模板参数推断规则,或者修正已有的模板参数推断规则。 Deduction Guides 基本形式如下: deduction-guide: explicit(opt) templat
阅读全文
摘要:在类型推断的时候自动的类型转换是受限制的: 如果调用参数是按引用传递的,任何类型转换都不被允许。通过模板类型参数 T 定义的 两个参数,它们实参的类型必须完全一样。 如果调用参数是按值传递的,那么只有退化(decay)这一类简单转换是被允许的:const 和 volatile 限制符会被忽略,引用被
阅读全文
摘要:1. 在模板定义阶段,模板的检查并不包含类型参数的检查。只包含下面几个方面: 语法检查。比如少了分号。 使用了未定义的不依赖于模板参数的名称(类型名,函数名,......)。 未使用模板参数的 static 2.在模板实例化阶段,为确保所有代码都是有效的,模板会再次被检查,尤其是那些依赖于类型参数的
阅读全文