【发布时间】:2020-05-27 20:50:39
【问题描述】:
在我的印象中,std 库对于 C++ 编译器来说并不特别,只是因为每个供应商都提供了它的实现,否则它只是用 C++ 编写的代码,可以在 C++ 中使用,就像任何其他用 C++ 编写的代码一样。
我见过一些似乎不同意这一点的地方,例如用户定义的文字后缀如何必须以下划线开头,因为“不以下划线开头的后缀是为标准提供的文字运算符保留的图书馆”。 https://en.cppreference.com/w/cpp/language/user_literal
规范对 std 库的规则是否真的与要编译的其他 C++ 代码不同? C++ 编译器是否经过硬编码以识别标准库中的代码并“做一些不同的事情”?
这真的让我对整个系统如何协同工作的内部形象感到不安......
【问题讨论】:
-
我还没有看到不是特定于 C++ 编译器的 C++ 库。作为规范的 C++ 标准不要求 C++ 库有特殊规则,除了 C++ 库应该提供的最低限度。
-
一个有趣的偏差是库实现者几乎总是在编写库以与特定编译器打包,并且知道该编译器将如何解释某些未定义的行为。你可以期望图书馆做你不应该做的事情,因为他们知道他们可以侥幸逃脱(并且可能有充分的理由这样做)。
标签: c++