C ++标准库必须用C ++实现吗?

时间:2012-02-06 16:33:31

标签: c++ standards-compliance c++-standard-library

  1. 是否必须在C ++中实现符合C ++标准库的实现?
  2. 如果没有,是否允许做纯粹C ++中不可行的神奇事物。标准图书馆&一些实现定义的行为?

    • 我知道存在依赖于扩展的并行实现(至少在C ++ 11之前),但它们是否真的符合要求?
    • 我在标准中找不到任何要求,但也许我的标准福今天很弱

3 个答案:

答案 0 :(得分:19)

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

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

答案 1 :(得分:9)

没有

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

答案 2 :(得分:2)

完全没有,只有接口需要是C ++。