我有以下函数可以旋转 char 向量:
void rotate()
{
std::ranges::rotate(_right, _right.begin() + 1);
}
_right 定义为:
std::vector<char> _right;
尝试用 clang 15 编译它,它抱怨(https://godbolt.org/z/7ovTfxe31):
no matching function for call to '__begin'
原因似乎如下:
in instantiation of template type alias 'iterator_t' requested here
requires contiguous_iterator<iterator_t<_Derived>>
但我假设向量是一个连续的容器。代码使用 GCC 编译并运行。
这是我的问题:
由于 clang 15 处理约束的方式,旧版本的 clang 在编译 libstdc++ 算法时存在问题。
请参阅 LLVM 问题 44178:[概念] 延迟替换为未实现的类模板成员的要求。这是一个已知的错误,已在 clang 16 中解决。