Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 范围::编译器资源管理器上MSVC中的子范围_C++_Visual Studio_C++17_Range V3_Compiler Explorer - Fatal编程技术网

C++ 范围::编译器资源管理器上MSVC中的子范围

C++ 范围::编译器资源管理器上MSVC中的子范围,c++,visual-studio,c++17,range-v3,compiler-explorer,C++,Visual Studio,C++17,Range V3,Compiler Explorer,下面的代码编译并运行得很好,但是失败得很惨 #包括 #包括 int main(){ 向量编辑{1,1,3,2,2,4,4,4,4,1,1,3,3,2}; auto xxx=ranges::子范围(edits.begin(),edits.end()); } 是否缺少某些标志?您指定了/std:c++17和。Ranges -V3也需要C++ 20,因为它使用概念。 使用/std:c++最新版本编译成功 这些错误原来来自捆绑在Ranges v3中的概念仿真层,这显然不能在最新的Visual C++的

下面的代码编译并运行得很好,但是失败得很惨

#包括
#包括
int main(){
向量编辑{1,1,3,2,2,4,4,4,4,1,1,3,3,2};
auto xxx=ranges::子范围(edits.begin(),edits.end());
}

是否缺少某些标志?

您指定了
/std:c++17
和。Ranges -V3也需要C++ 20,因为它使用概念。 使用
/std:c++最新版本编译成功


这些错误原来来自捆绑在Ranges v3中的概念仿真层,这显然不能在最新的Visual C++的C++17模式下正常工作。根据文档,即使在它工作时也需要实验编译器选项,所以最好在使用微软编译器时打开C++ 20的支持。< /P>它与>STD:C++最新范围不是C++ 17的一部分。我可能误解了你的答案。显然,
std::ranges::which
随C++20而来,而不是C++17,但我在示例中使用的是Range-v3库,而不是C++20 ranges库,这在C++17中确实有效。尽管如此,您建议使用
/std:c++最新版本
解决了这个问题。你能再解释一下吗?你的意思是
#include
正在按原样进行处理
#include
??为什么其他两个编译器可以使用
-std=c++17
?@Enlico:也许Ranges v3中包含的
概念/概念。hpp
头在这些编译器上没有损坏?也许这些编译器在C++17模式下启用了太多功能?