问题描述
以下代码编译并运行得很好 with GCC 8.3 和 Clang 10.0.1,但它失败了 on MicroSoft shiny compiler。
#include <vector>
#include <range/v3/view/group_by.hpp>
int main(){
std::vector<int> edits{1,1,3,2,4,2};
auto xxx = ranges::subrange(edits.begin(),edits.end());
}
有没有我遗漏的标志?
解决方法
您已指定 /std:c++17
和 ranges::subrange
is not present in C++ 17。 Ranges-v3 也需要 C++ 20,因为它使用概念。
使用 /std:c++latest
编译成功。
结果证明这些错误来自 Ranges v3 中捆绑的 Concepts 仿真层,该层显然无法在最新的 Visual C++ 的 C++17 模式下正常工作。根据文档,即使它确实可以工作,它也需要实验性的编译器选项,所以最好在使用 Microsoft 的编译器时打开 C++ 20 支持。