草庐IT

non-repeatable-read

全部标签

c++ - 重载运算符 : const vs non-const return type : any difference of performance?

如果我们去维基百科article关于C++运算符,我们有一个例子:Addition:a+b->TT::operator+(constT&b)const;因此运算符返回类型为T的非常量。如果我们看这个guideline作者说返回类型应该是const以避免以下语法:(a+b)=c现在假设我不介意这种语法,并考虑a和b是大数组。从“纯”性能的角度来看,返回类型中缺少const关键字是否会阻止编译器的优化(g++和带有-O3的英特尔icpc)?如果答案是"is",为什么? 最佳答案 这是一个有趣的问题。在C++03中,没有更好的机会使用这两

c++ - GL_DRAW/READ_FRAMEBUFFER 与 GL_FRAMEBUFFER?

我注意到现在有GL_DRAW/READ_FRAMEBUFFER扩展。目前我只是在使用GL_FRAMEBUFFER和glTextureBarrierNV。但是,我没有发现太多关于READ/WRITE扩展的信息,因此有一些问题。他们引入了什么OpenGL版本?与简单地使用GL_FRAMEBUFFER进行读写相比,它们有什么优势?我在哪里可以找到有关此的更多信息? 最佳答案 学究笔记:GL_DRAW/READ_FRAMEBUFFER未在扩展中引入;它们是OpenGL3.0的核心功能。是的,从技术上讲,此功能也在ARB_framebuffe

c++ - QTcpSocket : reading and writing

我知道可能已经有人问过一些类似的问题,但我发现的这些问题的答案涵盖了非常具体的问题,我仍然没有弄清楚。在我的程序中,我正在创建一个QObject(称为QPeer),它使用QTcpSocket通过网络与另一个此类对象进行通信。QPeer有一个插槽,可以接受带有数据的QByteArray(sendData(QByteArray))。该数组的全部内容被视为一条“消息”,并将它们写入套接字。我想执行以下操作:每次写入消息时,我都希望接收QPeer恰好发出一次信号dataReceived(QByteArray),该QByteArray包含整个消息。(注意:所有信号/槽,包括连接QPeer及其套接

c++ - 处理 "depends on non-NOTIFYable properties"警告

我有一个暴露给QML的C++对象,它具有“某种”只读属性,除了该属性仍然需要从QML设置,所以它定义了一个WRITE方法,但是除了初始的ma​​ndatory设置它永远不会改变,所以我觉得NOTIFY是多余的,因为它在使用时已经设置了该值,并且它永远不会改变。但是,QML不同意我的感受,并且无论如何它都会发出“表达式取决于不可通知​​的属性”警告。由于使用属性实例化对象的方式是设置该值的唯一适用方式,因此不可能使用可调用的setter,因为这样会要求对象已经“完成”并且没有它就无法真正完成那个值。因此需要属性机制和WRITE方法,不幸的是,这导致Qt相信属性会改变。我尝试将该属性设置为

c++ - SIMD/SSE : How to check that all vector elements are non-zero

我需要检查所有vector元素是否非零。到目前为止,我找到了以下解决方案。有一个更好的方法吗?我在Linux/x86_64上使用gcc4.8.2,指令高达SSE4.2。typedefcharChrVect__attribute__((vector_size(16),aligned(16)));inlinebooltestNonzero(ChrVectvect){constChrVectvzero={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};return(0==(__int128_t)(vzero==vect));}更新:上面的代码被编译为以下汇编代码(当编译为非

c++ - Visual Leak Detector 在 ntdll.dll 上抛出 "Access violation reading location"

当我包含时:#include;在我的stdafx.h中运行我的程序,它显示已安装VisualLeakDetector2.5。我可以很好地运行我的程序,但是当它退出时我得到这个错误:Exceptionthrownat0x00007FFFB7F57FE7(ntdll.dll)inCPPAssessment.exe:0xC0000005:Accessviolationreadinglocation0x00007FFFB8095252.Ifthereisahandlerforthisexception,theprogrammaybesafelycontinued.但我只有在启用VisualLe

c++ - 将 NON-POD 类型传递给 Variadic 函数是未定义的行为?

Inthisdocument,作者说OnlyaPOD-typecanbeanargumentfortheellipsis"..."whilestd::stringisnotaPOD-type.我将此理解为将NON-POD类型传递给Variadic函数是未定义的行为。对吗?不过,他是在说C/C++标准吗?我试图在n3242C++规范中找到它。但是找不到。我想知道我的理解是否正确,这是一个标准。 最佳答案 它在C++115.2.2/7中指定:Passingapotentially-evaluatedargumentofclasstype

c++ - boost::asio 中 async_read() 中的 EOF

当async_read_some()返回EOF异常时,是服务器停止发送数据还是连接已关闭。我有这种困惑,因为我找不到一种方法来知道客户端是否已从服务器接收到所有数据。 最佳答案 表示连接已经关闭。虽然记录了elswhere它仍然适用:Anerrorcodeofboost::asio::error::eofindicatesthattheconnectionwasclosedbythepeer.如果客户端需要知道已经从服务器接收到所有数据,那么可以考虑在通信协议(protocol)中支持分帧。Boost.Asio提供更高级别的操作来帮

C++11 "Non-movable"类型

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:WhydoC++11-deletedfunctionsparticipateinoverloadresolution?我对以下C++11代码有两个问题:#includeusingnamespacestd;structA{A(){cout我用gcc和clang得到以下编译错误gcc-4.7.2(g++--std=c++11main.cpp):main.cpp:Infunction‘Af()’:main.cpp:16:9:error:useofdeletedfunction‘A::A(A&&)’main.cpp:8

c++ - "control reaches end of non-void function"枚举类型完全处理大小写切换

为什么即使处理了type_t的所有可能值,此代码也会触发“控制到达非空函数的结尾”?处理此警告的最佳方法是什么?在切换后添加return-1?(代码测试here)typedefenum{A,B}type_t;intuseType(type_tx){switch(x){caseA:return0;caseB:return1;}}相关:Detectingifcastinganinttoanenumresultsintoanon-enumeratedvalue 最佳答案 一般来说,enum不是唯一的。例如,有人可以像useType((ty