12
  1. 必须在 C++ 中实现符合标准的 C++ 标准库实现吗?
  2. 如果不是,是否允许做在纯 C++ 和标准库以及一些实现定义的行为中无法实现的神奇事情?

  • 我知道有一些依赖于扩展的并行实现(至少在 C++11 之前),但它们真的符合吗?
  • 我在标准中找不到任何要求,但是今天我的标准可能很弱
4

3 回答 3

19

完全没有要求如何实现标准 C++ 库(或标准 C 库)。所有库需要实现的是实现文档化和指定的接口。如何做到这一点完全取决于实施。部分标准库通常由编译器以某种神奇的方式实现,而在 C++2011 中,有几个接口实际上无法使用标准 C++2011 语言工具实现!这主要适用于其中的一些特征,<type_traits>但还有其他一些事情。

仅供参考:C++ 是如何实现的,以及符合标准的真正含义是非常模糊的。相关条款是 1.4 [intro.compliance]。然而,它仅仅谈到了正在发布的诊断以及程序必须做什么,以及对资源限制的限制。

于 2012-02-06T16:38:57.027 回答
9

不。

实际上,标准甚至规定#include <map>(例如)可以简单地导入预存储的 AST 而根本不引用文件。

于 2012-02-06T16:39:57.277 回答
2

一点也不,只有接口需要是C++。

于 2012-02-06T16:38:16.660 回答