gpt4 book ai didi

c++ - 为什么 boost/etc 在模板成员函数的参数类型上做这么多 SFINAE?

转载 作者:搜寻专家 更新时间:2023-10-31 00:10:53 24 4
gpt4 key购买 nike

当参数不满足各种标准、使用 enable_if 等进行测试时,有选择地从类接口(interface)中删除模板成员函数的基本原理是什么?如果保留成员函数模板,尝试使用它们会失败,在我看来,在更复杂的情况下,编译器错误比“替换失败”更有用?

如果编译失败,那么支持这些极其严格的基于 SFINAE 的模板成员函数要求的论据是什么?

最佳答案

已发现模板代码中 2-5 层的编译器错误几乎是不可逾越的。您会收到大量模板噪音。

SFINAE 替换失败通常会列出一个模板并说它不起作用,因为无法推导出某些参数,通常会显示失败的特征。不完美,但比模板涌现要好。

此外,此类模板可以阻止其他有效模板。

此外,如果您使用类似 SFINAE 的技术,您可以在编译时测试给定方法是否存在以及是否有效;如果主体无法编译,则不能。

关于c++ - 为什么 boost/etc 在模板成员函数的参数类型上做这么多 SFINAE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36001846/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com