内容简介:http://stackoverflow.com/questions/41062333/what-exactly-is-a-trailing-parameter-pack
).在这个网站上,我们也了解到
In case of a tie, if one function template has a trailing parameter pack and the other does not, the one with the omitted parameter is considered to be more specialized than the one with the empty parameter pack.
现在,我不知道什么是一个尾随的参数包.如果有的话
template<class ...> struct tuple { /* ... */ }; template<class T, class...Ts> void foo(tuple<T,Ts...>); template<class T, class...Ts> void bar(T, Ts...);
是和哪些不是为什么?请注意,cl ang考虑
template<class T> void f(tuple<T>); template<class T, class...Ts> void f(tuple<T,Ts...>); int main() { f(tuple<int>()); } // ambiguous call?
含糊不清,这意味着foo没有拖尾参数包.
.以下内容添加到[temp.deduct.partial]中:
…[if] function template F
is at least as specialized as function template G
and vice-versa, and if G
has a trailing parameter pack for which F
does not have a corresponding parameter, and if F
does not have a trailing parameter pack, then F
is more specialized than G
.
标准没有明确定义“尾随参数包”的含义,但是根据使用此术语的现有上下文进行判断,它是指在模板参数列表中显示为最右边参数的模板参数包:
template<class T, class... U> struct X; // ^^^^^^^^^^
或者,在函数参数列表中显示为最右边参数的函数参数包:
template<class T, class... U> void y(T, U...); // ^^^^
目前的草案仍然包含[temp.deduct.type]中的这个过时的例子:
template<class T, class... U> void f(T, U...); template<class T> void f(T); f(&i); // error: ambiguous
这个标准缺陷报告已经存在了几年, GCC 和 Clang 都已经实施了这个决议.他们都同意上面的例子是f的第二个重载的有效调用.
GCC和Clang不同意解决缺陷的范围.这是可以理解的,因为最近才更新了包括提出的标准措辞.在您的示例中,该包不会扩展到函数参数列表,而是扩展到函数参数类型的模板参数列表中:
template<class T, class... U> void g(tuple<T, U...>); template<class T> void g(tuple<T>); g(tuple<int>{});
GCC将其视为g的第二个重载的有效调用; ang ang把它看作是模糊的. Clang的正确性可能取决于“尾随参数包”是否包括尾随的模板参数包,或仅包括尾随函数参数包.
注意,两个编译器都同意C<int>是指在以下示例中类模板C的第二部分专业化:
template<class...> struct C; template<class T, class... U> struct C<T, U...> {}; template<class T> struct C<T> {};
这在Clang中似乎是一个不一致的地方,因为类模板特殊化的部分 排序 的标准规则是根据函数模板的部分顺序来定义的.见 CWG1432 .
http://stackoverflow.com/questions/41062333/what-exactly-is-a-trailing-parameter-pack
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Swift尾随递归(Recursive Tail Calls)和Trampoline
- Flutter你竟是这样的布局
- Istio究竟是干嘛的?
- 病毒究竟是怎么自动执行的(下)?
- 聊一聊设计模式究竟是什么
- 黑客常提到的“webshell”究竟是什么?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
电脑报(上下册)
电脑报社 / 西南师范大学出版社 / 2006-12-01 / 45.00元
全套上、下两册,浓缩2006年电脑报精华文章。附录包含70余篇简明IT应用指南,覆盖软件、硬盘、数码、网络四大领域。配赠权威实用的2006-2007中国计算机年鉴DVD光盘,近1.4GB海量信息与资源超值奉献。8大正版超值软件,涵盖系统维护、系统安全、办公应用、多媒体娱乐等四大领域。微软、腾讯、友立等知名厂商,新年献礼。提供2006-2007全系列硬件、数码产品资讯,兼具知识性与资料性。官方网站全......一起来看看 《电脑报(上下册)》 这本书的介绍吧!
JSON 在线解析
在线 JSON 格式化工具
图片转BASE64编码
在线图片转Base64编码工具