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年出版的构造函数的论文论点扣除中提出。