草庐IT

hardcoded_Value

全部标签

Kotlin:乐趣与值(value)

Kotlin支持计算属性,但我不确定何时使用它们。假设我有一个类:classCar(valcolor:String)如果汽车是白色的,则具有返回true的函数:funisWhite(car:Car):Boolean{returncar.color=="WHITE"}现在我希望这个函数成为一个成员函数(一个方法);这看起来像这样:classCar(valcolor:String){funisWhite():Boolean=color=="WHITE"}但它也可以是这样的:classCar(valcolor:String){valisWhite:Booleanget()=color=="W

c++ - 了解警告 : binding r-value to l-value reference

我想通过引用传递一个结构,这样它就不会被复制,但Resharper发出以下警告:structsometype{};sometypefoo(){sometypex;returnx;}voidbar(){sometype&a=foo();//Bindingr-valuetol-valuereferenceisnon-standardMicrosoftC++extensionsometype&&b=foo();//ok}问题:sometype&a=foo();有什么问题?foo()的返回值不是左值,a不是左值吗?sometype&&b=foo();实际上是右值引用吗?它是否“窃取”了foo(

c++ - 为什么 myClassObj++++ 不会产生编译错误 : '++' needs l-value just as buildin type do?

为什么myint++++使用VS2008编译器和gcc3.42编译器编译得很好??我期待编译器说需要左值,示例见下文。structMyInt{MyInt(inti):m_i(i){}MyInt&operator++()//returnreference,returnalvalue{m_i+=1;return*this;}//operator++needit'soperandtobeamodifiablelvalueMyIntoperator++(int)//returnacopy,returnarvalue{MyInttem(*this);++(*this);returntem;}in

C++14 对 is_same::value 使用别名

Thisquestion使用is_same::value.我希望有一个C++14usingalias:is_same_v类似于辅助类型:conditional_t,enable_if_t,和tuple_element_t我在myanswer中使用.因为我使用这些函数中的任何一个的唯一目的就是获取type.所以*_t助手才有意义。这让我想到了我的问题,为什么没有usingaliasis_same_v在C++14中?我唯一用的is_same因为它是value.也许使用is_same通常不是用于模板声明吗? 最佳答案 简介引入std::e

c++ - 为什么 boost::is_same<int const&, boost::add_const<int &>::value 等于 false?

我正在处理"C++TemplateMetaprogramming"byAbrahams&Gurtovoy“这实际上不在第二章中,而是我在做第一个练习(2.10、2.0)时尝试过的,这让我很困惑:#include#includestd::stringdisplay(boolb){return(b?"true":"false");}intmain(){usingnamespacestd;cout::type>::value)输出为“假”。但是,如果我删除引用,即“intconst”和“int”。输出为“真”。 最佳答案 如果你用指针尝试

c++ - Lambda Capture by Value 强制所有作用域对象为 const

我打算用C++编写一个内存模式,结果采用了以下方法std::functionMemoize(std::functionfn){std::mapmemo;std::functionhelper=[=](intpos){if(memo.count(pos)==0){memo[pos]=fn(pos);}returnmemo[pos];};returnhelper;}奇怪的是,我的编译器VS2012,拒绝编译并出现以下错误1>Source1.cpp(24):errorC2678:binary'[':nooperatorfoundwhichtakesaleft-handoperandoftyp

c++ - 输入参数传递 : is there a size threshold for efficient pass-by-value?

在C++中,当输入参数复制成本低时(例如,int、float等),它通常被传递只需按值。相反,复制起来并不便宜的输入“观察到的”参数(例如std::string)由const&传递。我想知道像POD这样的类型表示具有int坐标的二维vector,例如structVec2i{intX;intY;};在32位MSVC编译器上,它只有8个字节(2*sizeof(int))。您会按值还是按const&传递它?那么Vec2d有double类型的坐标呢?(在MSVC上它将是2*sizeof(double),所以2*8=16字节。)是否有“大小阈值”(例如16字节?)用于放置一行并说:“对于超过X大

c++ - 使用 std::move 返回时 "return-by-rvalue-ref"和 "return-by-value"之间的区别?

考虑以下代码:#includeusingnamespacestd;structI{I(I&&rv){coutC包含I。而C::foo()允许您将I移出C。上面使用的成员函数有什么区别:I&&foo(){returnmove(i)};//returnrvalueref和以下替换成员函数:Ifoo(){returnmove(i)};//returnbyvalue对我来说,它们似乎做同样的事情:Ii=c.foo();导致调用I::I(I&&);.本例未涉及的会有什么后果? 最佳答案 撇开您编写的程序是否真正有意义的考虑因素(从数据成员移动

c++ - std::is_constructible<void()>::value 的正确结果是什么?

std::is_constructible::value的结果不一致.我对该标准的解释是它应该是错误的。然而,Clang,同时具有libc++和libstdc++*,给出了true。GCC和MSVC都给出false。哪个结果是正确的?标准语这是标准的N4527[meta.unary.prop]/7:Giventhefollowingfunctiondeclaration:templateadd_rvalue_reference_tcreate()noexcept;thepredicateconditionforatemplatespecializationis_constructibl

c++ - 无论如何有一个 valgrind 消息 "Conditional jump or move depends on uninitialized value"可以是所谓的 'false positive'

我在这里找到的大多数问题都提供一段代码,并由指出实际错误的人回答。我的问题是关于一般未初始化值的条件跳转。我可以理解,如果确定此分配仅完成一次并且在程序的生命周期内可能需要,则不必在程序结束时清理一block内存。据我所知,当程序终止时,GType系统会留下大量未释放的内存。这些未释放的block可以被视为“误报”。但是“有条件的跳跃或移动未初始化的值”会是误报吗?我唯一能想出的是有人通过读取随机地址来实现(坏的)随机函数(其中随机地址本身是棘手的部分;)。另一个例子可能是硬件映射到内存的一部分然后被读取,但这主要是由驱动程序而不是由普通用户应用程序完成的。是否有任何其他示例(最好是C