1
4
假设我们只有一个翻译单元, [temp.point] 排除你的报价可能是形式不良的根源
相反,第一个片段的问题是 [temp.expl.spec]
第二个代码段格式良好,不要求模板参数具有完整的类型。
第三个片段格式错误,
然后是构造函数的定义 实例化,因此格式良好。 [temp.inst] 第四个代码段的格式不正确,因为成员需要具有完整的类型。 [class.mem]
|
2
7
所以这是格式良好的;然而,这类东西仍然可以在您测试的每个编译器中中断(变成格式不良)而编译。 is_complete . 然后我们这样做:
我们没事,尽管如此: 因为该子句不适用于模板类。在这里,模板类的唯一实例化是好的。 现在,如果在另一个文件中有:
你的程序格式不正确。 但是,在一个文件案例中:
你的密码很好。有一个实例化点
一个和两个文件VrSOIN几乎肯定会编译在C++编译器中,没有错误或警告。
有些编译器甚至将模板实例化从一个编译单元存储到另一个编译单元;
最后,请注意
由
c++17
changed for
[vector.概述]/3
c++17语言
,大多数实现
这实际上妨碍了一些无用的代码,比如函数类型返回自己类型的向量 1 . Boost
身体
^^将无法编译一个不完整的
^^将编译,不会引起任何问题。
1 |
3
1
幸运的是,这是一个很好的定义。出于完全相同的原因,这是一个明确的定义:
这是错误的:
|
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
rainer · 后台插入程序的初始化 1 年前 |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |