gpt4 book ai didi

c++ - 测试 libstdc++ 的版本是否使用符合 C++11 的 std::string

转载 作者:IT老高 更新时间:2023-10-28 22:59:24 35 4
gpt4 key购买 nike

我正在编写一些 C++11 代码,这些代码对 std::string 的性质做出假设,这些假设是有效的,但代表了 C++11 中更改的行为。在早期,libstdc++ 的 basic_string 实现符合 98/03 要求,但不符合更严格的 C++11 要求。

据我了解,libstdc++ 已经修复了围绕 basic_string 的问题。问题是人们使用的许多版本的库都没有实现这个修复。而且我的代码可能会以许多令人不快的方式默默地失败。

如果用户尝试针对那些不符合标准的 libstdc++ 版本编译我的库,我希望触发 static_assert。如何检测版本,同样重要的是,我应该寻找哪个版本?

最佳答案

在 GCC 5 (Runtime Library Section of the changelog) 中引入了新的符合 C++11 标准的 std::string 和新的(双)ABI。

_GLIBCXX_USE_CXX11_ABI决定是使用旧的还是新的ABI,所以检查一下:

#if _GLIBCXX_USE_CXX11_ABI

当然,这仅适用于 libstdc++。

关于c++ - 测试 libstdc++ 的版本是否使用符合 C++11 的 std::string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34375913/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com