gpt4 book ai didi

c++ - libstdc++ 是否实现 C++11 双端队列接口(interface)?

转载 作者:搜寻专家 更新时间:2023-10-31 01:04:40 25 4
gpt4 key购买 nike

我对 GCC 和 libstdc++ 的经验很少。尝试用 C++11 编译一个非常简单的程序时,我发现编译器错误看起来 STL 没有为双端队列实现新的 C++11 接口(interface)。

示例程序:

#include <deque>

int main() {
std::deque<int> c;
std::deque<int> d;

c.insert(c.cbegin(), d.begin(), d.end()); // unable to match insert(const_iterator, iterator, iterator)
auto it=c.insert(c.begin(), d.begin(), d.end()); // unable to match iterator = insert(iterator, iterator, iterator)
}

运行以下命令行,在注释行中出现编译错误:

g++ -std=c++11 -o test test.cpp

(安装的gcc/libstdc++版本为4.8.1)

看起来 STL 没有实现:

template< class InputIt > iterator insert( const_iterator pos, InputIt first, InputIt last );

( http://en.cppreference.com/w/cpp/container/deque/insert 或标准 C+11 23.3.3.4 双端队列修饰符)

我知道 libstdc++ 还没有完全实现 C++11,但状态页面 ( http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.2011 ) 表明只有分配器和传播要求尚未完成。

所以我的问题:

  • 实际上在 libstdc++ 中没有 C++ std::deque 接口(interface)的完整实现,还是我遗漏了什么? (也许我没有使用正确的库版本,或者我在命令行中缺少一些参数;我对 gcc/g++ 没有太多经验)。
  • 如果是我的错误,我该如何解决?

最佳答案

您的代码有效,并被 GCC 4.9.0 的 libstdc++ 接受(并且也被 clang 的 libc++ 接受了一段时间)。您链接到的状态页面对此发出警告:

This page describes the C++11 support in mainline GCC SVN, not in any particular release.

因此,不应将某些内容列为已实现这一事实视为暗示它已在您安装的 GCC 版本中实现。

关于c++ - libstdc++ 是否实现 C++11 双端队列接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23469309/

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