![]() |
1
3
我猜这是因为它需要在函数的范围内有效地实例化模板,因为这是这些类型可见的地方。但是,同时,模板实例化应该像它们在定义模板的范围内一样工作。我相信这是有可能的,以某种方式处理,但如果我是对的,标准机构决定不把这个负担编译器作家。
原因是类似的决定
我怀疑,如果要证明允许这种构造的实现是微不足道的,并且它不会在语言范围规则中引入任何歧义,那么有朝一日您可能会看到这里的标准也发生了变化。 |
![]() |
2
7
我相信预见到的困难在于
要使其与本地类型一起工作,存储库不仅能够存储模板实例化时所使用的类型,而且还必须为实例化创建一个完整的类型“路径”。虽然这可能是可能的,但我认为这被视为一项额外的工作,几乎没有(如果有的话)真正的好处。
从那时起,规则已经发生了足够的变化,编译器已经被要求做一些相当的事情,在不同的地方(包括跨tu)找到(并合并)相同类型的实例化,这样
|
![]() |
TCD · 标准库非类型模板类是否显式实例化? 2 年前 |
![]() |
sovesti · 参数较少的模板函数中的演绎 2 年前 |
![]() |
KiraHoneybee · 具有构造函数参数的模板化类 2 年前 |
![]() |
Seymore Glass · 模板不工作的默认参数 3 年前 |
![]() |
Alexander Daum · 模板参数中对模板类型的引用 7 年前 |
![]() |
ledonter · 为什么注入的类名有时不被视为类模板中的模板名? 7 年前 |