草庐IT

compiler-bug

全部标签

c++ - 这是 MSVC++ 2017 更新 3 中的编译器错误吗

#includestd::vector::iteratorfoo();voidbar(void*){}intmain(){void*p;while(foo()!=foo()&&(p=0,true)){bar(p);}return0;}错误结果:c:\users\jessepepper\source\repos\testcode\consoleapplication1\consoleapplication1.cpp(15):errorC4703:potentiallyuninitializedlocalpointervariable'p'used 最佳答案

C++ 单例用法 : compiler complains about private constructor

我知道有一百万个关于单例的问题和答案,但我似乎无法找到解决方案。所以冒着反对票的风险,这是我的问题:我想使用AndreiAlexandrescu的现代C++设计中的单例实现:标题:classSingleton{staticSingleton&Instance();private:Singleton(){};Singleton(constSingleton&){};Singleton&operator=(constSingleton&){};~Singleton(){};};实现:#include"s.hh"Singleton&Singleton::Instance(){staticSi

VSCode/bugs/如何给VSCode降级

首先在VSCODE设置内搜索update将updatemode更改为none(如图)上vscode官网(code.visualstudio.com/updates)下载需要的版本(如图)下载完毕后直接安装会自动覆盖以前版本的完毕

c++ - 试图仅在 g++ 的宏中使 -Waggregate-return 保持沉默 - 错误的编译器?

使用g++并使用-Waggregate-return编译#defineDOCTEST_CHECK(expr)\do{\_Pragma("GCCdiagnosticpush");\_Pragma("GCCdiagnosticignored\"-Waggregate-return\"");\if(Resultfailed=(ExpressionDecomposer()但是手动展开的版本不会产生任何警告:do{_Pragma("GCCdiagnosticpush");_Pragma("GCCdiagnosticignored\"-Waggregate-return\"");if(Result

c++ - 编译器错误或非标准代码? - lambda 中的可变参数模板捕获

我有以下C++11代码;templateintg(T...t){return0;}templatevoidf(Args...args){autolm=[&,args...]{returng(args...);};lm();}intmain(){f(2,5,7);}我确实相信它是有效的C++11,根据;标准第5.1.2.23节;Acapturefollowedbyanellipsisisapackexpansion(14.5.3).[Example:templatevoidf(Args...args){autolm=[&,args...]{returng(args...);};lm();

c++ - 空 initializer_list 上的赋值运算符

您能解释一下STL容器如何处理初始化列表为空的赋值运算符吗?当我做这样的事情时:vectorv;v={};调用的函数不是:vector&operator=(initializer_listil);但是:vector&operator=(vector&&x);另一方面,当我对自己的类(class)做类似的事情时:structA{A&operator=(constA&){return*this;}A&operator=(A&&){return*this;}A&operator=(initializer_list){return*this;}};/*...*/Aa;a={};代码无法在VS2

c++ - 由于 C++03/C++11 中指针数组的常量性而导致的链接错误

此问题在-std=c++14之前的g++中可重现。由于以下代码中突出显示的const会生成链接错误。如果删除RHSconst,它就会消失。/*main.cpp*/constchar*constarr[2]={"Hello","World"};//^^^^^intmain(){}和/*foo.cpp*/externconstchar*constarr[2];//^^^^^constchar*foo(){returnarr[0];}编译时:g++[-std=c++11]main.cppfoo.cpp,出现以下链接错误:Infunction`foo()':undefinedreference

c++ - 未实例化模板函数的处理

以下代码可在VisualC++2013中编译,但不能在G++4.8.2下编译:templateintMyFunc(T&t){returnstatic_cast(CCodes::blah);}templateintMyFunc(float&t){return0;}intmain(){floatf=10.f;returnMyFunc(f);}VisualC++似乎忽略了通用模板函数,因为只有特化MyFunc用来。G++无论如何都会解析通用函数并发现CCodes枚举尚未定义。哪个是对的?或者这是实现定义的? 最佳答案 GCC是正确的,除了

c++ - Visual Studio 2017 : _mm_load_ps often compiled to movups

我正在查看为我的代码生成的程序集(使用VisualStudio2017)并注意到_mm_load_ps经常(总是?)编译为movups。我使用_mm_load_ps的数据定义如下:structalignas(16)Vector{floatv[4];}//oftenembeddedinotherstructslikethisstructAABB{Vectormin;Vectormax;boolintersection(/*parameters*/)const;}现在,当我使用这个构造时,会发生以下情况://thiscode__mm128bb_min=_mm_load_ps(min.v);

c++ - Gtest : test compiling error

我正在尝试测试我用googletest编写的电机控制库,但我没有编译测试代码。测试位于名为test.cpp的文件中,如下所示:#include#include"../motor.hpp"TEST(constructorTest,contructorDefault){}我将测试主函数放在另一个名为main.cpp的文件中。#include#include"../motor.hpp"intmain(intargc,char*argv[]){::testing::InitGoogleTest(&argc,argv);RUN_ALL_TESTS();}为了编译,我执行了以下行:g++main.