【问题标题】:Are there any 100% C++11 compatible implementations of std? [closed]是否有任何 100% C++11 兼容的 std 实现? [关闭]
【发布时间】:2014-04-09 16:27:02
【问题描述】:

是否有任何标准 C++ 库的开源 100% C++11 兼容 (*) 实现?

(*) 被证明完全符合标准的实现或没有已知缺陷的实现。

【问题讨论】:

  • 增强库? C++11 的很多东西都来自于 std::chrono 这样的 boost
  • 据我所知Boost不是std的实现...
  • 如果你面前有一个开源的 100% C++11 兼容的实现,你可能不知道你拥有它,因为确定某些东西是否 100% C++11 兼容是棘手的。
  • 没有已证实的缺陷是否意味着没有已知的错误?如果是这样,那么答案是不合格的“不”。
  • 哦,那不行。没有任何大小合理的软件没有经过证实的缺陷,除非您将“缺陷”重新定义为几乎没有意义,或者几乎没有人在看。没有任何合理规模的正式规范也没有经过证实的缺陷:几乎可以肯定 C++11 标准暗示了它显然不打算要求的要求。人类无法在一个足够复杂的系统中达到完美:可能有少数例外,但我留下了足够多的狡猾的话来证明这个说法是正确的,不管我怀疑。 :)

标签: c++ c++11 std standard-library


【解决方案1】:

作为 LLVM 项目一部分的 libc++ 标准库团队声称 they have a full C++1y compliant implementation.

在这里你可以看到the status of the library

libc++ 有一个很大的缺点,事实上,libc++ 目前还没有libstdc++v3 流行,例如,还没有 GNU/Linux 发行版采用这个标准库。这个库的主要关注点是 MAC OS X/FreeBSD,这已经不是什么秘密了,至少目前是这样。

【讨论】:

  • 但是我可以下载“100%”C++11 兼容 libc++ 并在我的 Linux 机器上链接“100%”C++11 兼容 clang,对吧?
  • @Kolyunya 您可以从源代码构建,也可以使用官方 apt 存储库llvm.org/apt
  • 感谢您的指导!
  • 您想针对 libc++ 构建 clang 还是使用 clang 针对 libc++ 构建 C++ 应用程序?两者都可以。
【解决方案2】:

没有认证过程,C++11 是一个移动目标,因为缺陷报告会继续处理,所以我不确定你的问题是否完全有意义。或者如果是,答案是并且永远是“否”。

但是(除其他外)libstdc++ 团队在跟踪标准库应该是什么的最知名近似方面做得非常好。

【讨论】:

  • 即使在几个月前添加了正则表达式之后,libstdc++ 仍然缺少太多被称为“最佳”的 C++11(codecvt、可移动流、put_time,甚至像 std 这样微不足道的东西::对齐):gcc.gnu.org/onlinedocs/libstdc++/manual/…
【解决方案3】:

您可以查看 llvm 的 libc++,http://libcxx.llvm.org/,您可以从他们的网站访问 SVN 存储库,其主要功能之一是“C++11 标准定义的正确性”

【讨论】:

  • 感谢您的回答。您能否告诉我为什么 clang 在官方 Debian 存储库中有 stdgcc 实现?
  • 我不能告诉你,也许 gcc 实现更稳定,这就是为什么 debian 目前选择这个。
  • 好吧,你又来了。
  • Clang 没有“拥有”libstdc++,但它在 linux 上默认使用它。这可能是因为所有其他打包的二进制文件都是使用 libstdc++ 构建的,而 libc++ 与 ABI 不兼容。 Ubuntu Saucy 包含一个 libc++(saucy/universe),Debian 一般比 Ubuntu 更保守。
猜你喜欢
  • 1970-01-01
  • 2021-12-10
  • 2020-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多