草庐IT

insert-if-non-existent

全部标签

c++ - 将成员声明与 enable_if 一起使用?

我需要有条件地使用成员声明。templatestructB;templatestructB{voidfoo();};templatestructB{};templatestructA:publicB::value>{usingB::value>::foo();voidfoo(int){}};这显然行不通,因为B::foo没有定义在一半的情况下。我怎样才能做到这一点?拥有B::foo()在A中可见foo(int)旁边的作用域?感谢帮助 最佳答案 这是我的解决方案。我敢肯定它不会是最好的,但它可以完成工作。structA{voidfoo

c++ - const ref lvalue to non-const func return value 是否专门减少拷贝?

我遇到了一个C++习惯,我试图研究它以了解它的影响并验证它的用法。但我似乎找不到确切的答案。std::vectorgetThings();voiddo(){conststd::vector&things=getThings();}这里我们有一些返回非const&值的函数。我看到的习惯是在分配函数的返回值时使用const&左值。提出这个习惯的原因是它减少了拷贝。现在我一直在研究RVO(返回值优化)、复制省略和C++11移动语义。我意识到给定的编译器可以选择阻止通过RVO进行复制,不管这里是否使用了const&。但是,在防止复制方面,const&左值的使用对非const&返回值有任何影响吗

c++ - noexcept 运算符和 enable_if_t : do they work together?

考虑以下类:structS{templatestd::enable_if_t::value>f()noexcept{}templatestd::enable_if_t::value>g()noexcept{}};正如预期的那样,编译:s.f();这个不是:s.g();令我困惑的是,下面的main是用GCC(6.2)编译的,而不是用clang(3.9)编译的:intmain(){static_assert(noexcept(&S::f),"!");static_assert(noexcept(&S::g),"!");}我会说第二个断言失败是因为特化无效。两个编译器不同意这一点。哪个是正确

c++ - QJsonObject::insert 与直接赋值给 QJsonValueRef 相比?

我在Qt中使用JSON已经有一段时间了,而且我总是按照example中显示的方式使用它。.但是,我想知道在将项目添加到QJsonObject时,直接分配给QJsonValueRef与使用QJsonObject::insert之间是否真的有区别?,即这些行:json["name"]=mName;json.insert("name",mName);有任何不同还是只是编码风格的问题? 最佳答案 从概念上讲,它是不同的。operator[](constQString&key)返回对指向的JSONvalue的引用(即不包括key)key,而i

c++ - eclipse c++ 中的 "control reaches end of non-void function"警告但没有编译或运行时错误

这是我的代码:Composer&Database::GetComposer(stringin_last_name){for(inti=0;i想法是遍历Composer对象数组并返回对其last_name字段与“in_last_name”匹配的对象的引用。我明白警告在告诉我什么,即函数可能不会返回任何内容(如果用户提供了无效的姓氏)。我的问题是,我怎样才能避免这种情况?我尝试在for循环之后添加“return0”和“returnNULL”,但它无法编译。如果此方法什么也没找到,是否应该抛出异常? 最佳答案 您的函数被声明为返回一个Co

html和嵌套if语句

我将代码简化为基础知识,并遇到了相同的错误。!DOCTYPEhtml>NewPage}看答案尝试这个NewPage';}}}}else{$_SESSION['MEMID']='';$_SESSION['Password']='';$_SESSION['MemName']='';}?>**修改:-**重定向到另一页,然后替换此页面if($_SESSION['Password']==$_POST['Password']){echo'NewPage';}有了这个if($_SESSION['Password']==$_POST['Password']){echo'location.href="inde

python - if 语句范围内的 C++ 宏未编译

我有一些代码应该是线程安全的python/c++api。我正在使用宏Py_BEGIN_ALLOW_THREADS和Py_END_ALLOW_THREADS,它们扩展以创建保存线程状态并创建锁。我在方法退出之前释放锁;一次在if语句范围内,一次在方法范围内。为什么不能编译?它在第二个Py_END_ALLOW_THREADS宏中生成错误:error:_savewasnotdeclaredinthisscope。uint8_tSerialBuffer::push_msg(){#ifdefined(UBUNTU)Py_BEGIN_ALLOW_THREADS#endifif(_type==ARR

c++ - 使用 enable_if 禁用模板类的模板构造函数

当模板构造函数的参数类型与类型“MyClass匹配时,我试图使用std::enable_if禁用模板类的模板构造函数"这样我就可以使用我的其他构造函数,它允许我用另一个模板的类初始化当前模板的类。templateclassMyClass{public:MyClass(){data.fill(static_cast(0));}template//iwanttodisablethisifArgs=MyClassMyClass(Args&&...args):data{std::forward(args)...}{}templateMyClass(constMyclass&other_size

c++ - c++ 中的高性能代码(继承、指向函数的指针、if)

假设您有一个非常大的图,其节点上有大量处理(例如每个节点数千万次操作)。每个节点的核心例程都是相同的,但根据内部情况会有一些额外的操作。可以有2个这样的条件产生4种情况(0,0)、(1,0)、(0,1)、(1,1)。例如。(1,1)表示两个条件都成立。条件在程序中建立一次(每个节点独立设置一组),并且从那时起永远不会改变。不幸的是,它们是在运行时以完全不可预测的方式确定的(基于通过HTTP从外部服务器接收的数据)。在这种情况下最快的是什么?(考虑到我不知道的现代编译器优化)简单地使用“IF”:如果(条件X)执行附加操作X。使用继承从基类派生四个类(公开方法OPERATION)以进行适当

c++ - 铿锵错误 : non-const lvalue reference cannot bind to incompatible temporary

我有一段代码可以在MSVC上正常工作,但无法用clang++编译voidMyCass::someMethod(){std::wstringkey(...);auto&refInstance=m_map.find(key);//errorhere}其中m_map定义为std::map>m_map;和clang提示non-constlvaluereferencecannotbindtoincompatibletemporary我有点了解正在创建一个临时文件,但不确定如何解决这个问题。有什么想法吗? 最佳答案 右值不能绑定(bind)到非