Реализует ли libstdc ++ интерфейс C ++ 11 deque?

У меня очень мало опыта работы с GCC и libstdc ++. Пытаясь скомпилировать очень простую программу на C ++ 11, я обнаружил ошибки компилятора, которые выглядят так, что STL не реализует новый интерфейс C ++ 11 для deque.

Пример программы:

#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 модификаторы deque)

Я знаю, что libstdc ++ еще не полностью реализует C ++ 11, но страница состояния (http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.2011) предполагает, что только требования к распределителю и распространению еще не выполнены.

Итак, мои вопросы:

  • На самом деле есть еще не завершенная реализация C ++ std::deque интерфейс в libstdc ++, или я что-то упустил? (возможно, я не использую правильную версию библиотеки, или мне не хватает какого-либо параметра в командной строке; у меня нет слишком большого опыта работы с gcc / g ++).
  • Если это моя ошибка, как я могу ее решить?

2

Решение

Ваш код действителен и принят libstdc ++ GCC 4.9.0 (и некоторое время тоже принимался libc ++ от clang). Страница статуса, на которую вы ссылаетесь, предупреждает об этом:

На этой странице описана поддержка C ++ 11 в основной GCC SVN, а не в какой-либо конкретной версии.

Поэтому тот факт, что что-то указано как реализованное, не должно подразумевать, что это реализовано в установленной вами версии GCC.

4

Другие решения


По вопросам рекламы [email protected]