草庐IT

has_equal_operator

全部标签

c++ - -Wconversion warning while using operator <<= on unsigned char

当我用gcc编译以下代码时:intmain(){unsignedcharc=1;c我收到这个警告:conversionto‘unsignedchar’from‘int’mayalteritsvalue[-Wconversion]为什么?这段代码有什么问题?其实,我真的可以使用oprator吗?在unsignedchar上变量?编译命令:g++test.cpp-Wconversion-otest.exe 最佳答案 这是一个有效的警告:c相当于:c=c和的规则假设操作数被提升,在这种情况下将提升为int结果是提升的类型。所以会有一个从i

c++ - 箭头运算符(operator->)解引用时的返回类型(operator*)按值返回

我正在编写一个InputIterator,它实现了operator*和operator->等。我的运算符*返回一对对(vector)元素的引用。因此,运算符*按值返回。根据cppreference:Theoverloadofoperator->musteitherreturnarawpointer,orreturnanobject(byreferenceorbyvalue)forwhichoperator->isinturnoverloaded.那我返回什么?我不能返回原始指针;这对必须以某种方式物理归还。那么可能是一些带有operator->定义的包装器?它是否存在于标准库中,或者它

【问题】 Package ‘docker-ce‘ has no installation candidate

要添加Docker存储库,您可以按照Docker官方网站上提供的说明进行操作。以下是您可以遵循的步骤摘要:为官方Docker仓库添加GPG密钥:Copycode$curl-fsSLhttps://download.docker.com/linux/debian/gpg|sudoapt-keyadd-将Docker存储库添加到您的系统:$sudoadd-apt-repository"deb[arch=amd64]https://download.docker.com/linux/debian$(lsb_release-cs)stable"更新您的软件包列表:$sudoapt-getupdate完

c++ - boost interval_map 是否有 operator [] 或 .at() 方法?

我正在使用BOOST库中的interval_map。typedefsetTpopulations;interval_mappopulations;假设我在人群中有这个[1006311,1006353)1611,1653,[1006353,1006432)1031,1611,1653,[1006432,1006469]1031,1387,1523,1611,1653,(1006469,1006484]1031,1387,1611,1653,(1006484,1006496]1031,1387,1611,(1006496,1006506]1031,1611,(1006506,1006547

c++ - QMap::operator[](const Key & key) 为什么按值返回?

我注意到QMap::operator[](constKey&key)有这两个overloads:T&QMap::operator[](constKey&key)constTQMap::operator[](constKey&key)const有按值返回的理由吗?因为我们有移动语义:按值返回时,我们应该按常量值返回吗?我问的原因是:假设我们有:classExpensiveToCopy;{public:intsomeProperty()const;...}voidf(constQMap&map){intlala=map[4].someProperty();//Weneedtocopythe

c++ - 为什么 unique_ptr operator* 不是 noexcept?

这个问题在这里已经有了答案:"No-throwdereferencing"ofstd::unique_ptr(1个回答)关闭4年前。在为我的爱好操作系统实现一个基本的std库时,我遇到了这个并想知道为什么:operator->()和T*get()都被标记为noexcept,但是operator*()不是。根据引用资料,它应该等同于*get(),这将允许它成为noexcept并查看一些实现,我看不出为什么不是。为什么unique_ptr的取消引用运算符没有标记为noexcept?

C++ std::stringstream operator<< 重载

我有以下类(class)(原型(prototype)):classToken{public://members,etc.friendstd::stringstream&operator运算符是这样实现的:std::stringstream&operator现在,我尝试像这样使用它:std::stringstreamout;Tokent;//initialization,etc.outVS给我报错,说 最佳答案 std::stringstream&operator应该是std::ostream&operator

c++ - 为什么 iostream 对象不重载 operator bool?

在thisanswer我谈到了使用std::ifstream对象到bool的转换来测试流是否仍处于良好状态。我查看了Josuttis的书以获取更多信息(如果您感兴趣,请参阅第600页),事实证明iostream对象实际上重载了operatorvoid*。当流是错误的(可以隐式转换为false)时它返回一个空指针,否则返回一个非空指针(隐式转换为true)。他们为什么不直接重载operatorbool? 最佳答案 看起来C++0x标准部分27.4.4.3有答案(强调我的)。operatorunspecified-bool-type()

c++ - 条件断点 : This expression has side effects and will not be evaluated

我有一个名为size_tA::m()const的非静态常量方法,如果它返回的值大于1,我想用它来触发断点。这是A类和实例a:classA{public:std::vectormyvec;size_tm()const{returnmyvec.size();}}a;所以我在VisualStudio2013中添加了一个断点,这个条件a.m()>1//aisaninstanceofclassA但是,当我尝试编译它时,我从IDE收到以下消息:Thefollowingbreakpointcannotbeset:AtmyFile.cpp,linexxx,when'a.m()>1'istrueThis

c++ - 错误 : passing 'const T' as 'this' argument of 'bool T::operator<(T)' discards qualifiers

#include#include#includeclassMyData{public:intm_iData;booloperatormyvector(2,MyData());myvector[0].m_iData=2;myvector[1].m_iData=4;std::sort(myvector.begin(),myvector.end());}尝试编译这个给出:error:passing'constMyData'as'this'argumentof'boolMyData::operator 最佳答案 比较运算符将在类实例的常量引