C 17之前的类模板参数扣除
Class template argument deduction before C++17
本文关键字:参数 更新时间:2023-10-16
我正在阅读标准库文档,发现有一些功能,例如make_tuple。据我所知,这些功能仅具有一个目的:使用自动模板参数扣除构建类实例。由于CTAD在C 17之前没有可用,因此必须调用相关的功能。此差距仅在C 17中填充。现在,我想知道,为什么不能像函数模板参数扣除之前"以相同的方式"实现它?我想,应该有一个示例导致歧义性,在C 17之前无法解决。有人可以确认吗?在这方面的功能和类之间有什么区别?谢谢!
如评论中所述,功能的标准化需要很长时间。
如果您想详细了解它,则可以查看https://isocpp.org的标准化部分,尤其是" ISO提案的生活:从"酷的想法"到"国际标准"。P>
最终使C 17中CTAD成为可能的论文标题为"模板",并于2012-09-22发表。
。它进行了许多修订,并且论文"类模板的模板论点扣除"是该论文的第六次修订版,于2016-06-24发表。
因此,CTAD花了大约五年的时间从"酷的想法"到"国际标准"。
也是@StoryTeller指出的,这个想法本身已经存在了更长的时间,并且在2007年出版的构造函数的论文论点扣除中提出。
相关文章:
- 如何反转整数参数包
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 如何使用默认参数等选择模板专业化
- 模板参数替换失败,并且未完成隐式转换
- 具有默认模板参数的多态类的模板推导失败
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 函数调用中参数的顺序重要吗
- 部分定义/别名模板模板参数
- 模板-模板参数推导:三个不同的编译器三种不同的行为
- 使用不带参数的函数访问结构元素
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 如何使用Luacneneneba API正确读取字符串和表参数
- 在派生函数中指定void*参数
- 视图中的参数推导失败:take_while
- static_assert在宏中,但也可以扩展到可以用作函数参数的东西
- 使用指向成员的指针将成员函数作为参数传递
- 没有名称的C++模板参数
- 如何将enable-if与模板参数和参数包一起使用