fre*_*low 7 c++ ellipsis operator-precedence variadic-templates c++11
元操作符的优先级是什么,...它的作用是解压缩模板类型参数包?我想它很低,但它有多低?C++标准说:
运算符的优先级不是直接指定的,但可以从语法中派生.
有谁接受挑战?当然,...不会出现在C++ 03运算符优先级表中.
好吧,如果...不是运营商,究竟是什么确定std::forward<Args>(args)...适用于整个序列std::forward<Args>(args),而不仅仅是(args),例如?
它似乎不是一个运营商.从N3092开始(抱歉,我没有最近的草稿)
[14.5.3] 4 /包扩展是一系列令牌,它们命名一个或多个参数包,后跟省略号.令牌序列称为扩展模式; 其语法取决于扩展发生的上下文.包扩展可以在以下上下文中发生:
- 在初始化列表中(8.5); 该模式是初始化子句.
- 在base-specifier-list(10)中; 模式是基本说明符.
- 在mem-initializer-list(12.6.2)中; 该模式是一个mem-initializer.
- 在模板参数列表中(14.3); 模式是模板参数.
- 在动态异常规范(15.4)中; 模式是type-id.
- 在属性列表(7.6.1)中; 模式是一个属性.
在捕获列表中(5.1.2); 模式是捕获.[例:
Run Code Online (Sandbox Code Playgroud)template<class ... Types> void f(Types ... rest); template<class ... Types> void g(Types ... rest) { f(&rest ...); // “&rest ...” is a pack expansion; “&rest” is its pattern }- 结束例子]
| 归档时间: |
|
| 查看次数: |
385 次 |
| 最近记录: |