![]() |
1
3
它们确实非常依赖编译器。无论您是否需要包含一个头部,事实是在这两种情况下,语法在今天的编译器中都是一个解析错误。这个
支持必须在编译器中实现,但需要包含系统的头文件才能工作。这有两个用途,在初始化列表的情况下,它将类型(编译器支持的接口)引入到用户的作用域中,这样您就可以有一种使用它的方法(想想在C中va参数是如何使用的)。在基于范围的情况下(这只是语法上的糖分),您需要将范围纳入范围,以便编译器能够执行它的魔力。请注意,该标准定义了
如果您只想在没有
大多数其他语言已经朝着需要一个常规接口(比如容器…)和使用运行时多态性的方向发展。如果这是在C++中完成的,整个STL将不得不经历一个主要的重构,因为STL容器不共享一个公共的基础或接口,并且它们不准备被使用。 如果有,当前标准将不会 刹车不足 当它熄灭的时候。 |
![]() |
2
1
这只是语法糖。编译器将将给定的语法结构扩展为直接引用标准类型/符号名称的等效C++表达式。
这并不是现代C++编译器在他们的语言和“外部世界”之间唯一的强耦合。例如,
或者看C。你如何访问通过
更新: 如果有的话,c++的方法在这里比C++的更多,它将是一个补充。 内在的 集合或范围类型,烘焙到语言中。相反,它是通过供应商定义的范围类型完成的。我真的不认为它与variadic参数有什么不同,如果没有供应商定义的访问器宏,这些参数同样是无用的。 |
![]() |
Peter VARGA · 初始化每个类成员时的性能问题? 7 年前 |
![]() |
vbstb · 使用空初始值设定项列表直接初始化 7 年前 |
![]() |
BobMorane · std::绑定到lambda:编译错误 7 年前 |
![]() |
Stéphane · C++编译器如何处理这个初始值设定项列表? 7 年前 |
![]() |
user16320 · C++对自定义类初始值设定项的混淆 7 年前 |