Почему вызов std::rotate для вектора приводит к ошибке «нет соответствующего вызова функции для '__begin'»?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему вызов std::rotate для вектора приводит к ошибке «нет соответствующего вызова функции для '__begin'»?

Сообщение Anonymous »


У меня есть следующая функция, которая выполняет поворот вектора char:

void Rotate() { std::ranges::rotate(_right, _right.begin() + 1); } _right определяется как:

std::vector _right; при попытке скомпилировать его с помощью clang 15 он жалуется на это (https://godbolt.org/z/7ovTfxe31):

нет соответствующей функции для вызова __begin Причина этого, по-видимому, следующая:

при создании экземпляра псевдонима типа шаблона 'iterator_t', запрошенного здесь требуется contigious_iterator но я предполагаю, что вектор — это непрерывный контейнер. Код компилируется и запускается с помощью GCC.

Вот мои вопросы:
[*]Согласно cppreference, вышеупомянутый вызов должен быть законным, или я что-то упускаю? [*]Если это законный вызов, есть ли способ заставить clang принять вызов, как GCC?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»