草庐IT

argument-validation

全部标签

c++ - 为可移动对象存储 'validness' 状态是一个好习惯吗?

我正在设计一个库,很多类都是可移动的。许多可移动类作为参数传递给其他类的函数。我在考虑如何最小化验证检查的代码。可移动类的实例在构造后始终处于有效状态,但在被移动后变为无效。让标志“有效”在构造后为真并在移动后变为假是否是一个好习惯。对象再次有效的唯一方法是将有效对象移入其中。我还会提到,移动对象后不会进入调用函数会导致未定义行为或任何事情的状态。只是移动后内容是垃圾。 最佳答案 我应该还是不应该?这样的标志可能适用于调试目的,但通常由使用您的库/代码的开发人员来确保他/她永远不会以以下方式使用您的对象使用它们后很古怪。move-c

c++ - 从 nullptr_t 到 bool : valid or not? 的转换

我用3个编译器测试了以下代码,得到了3个不同的结果:错误、警告和正常。GCC(5.3):错误:从“std::nullptr_t”到“constThing&”的无效用户定义转换Clang(3.8):警告:将nullptr常量隐式转换为“bool”MSVC(14.1):没有错误,没有警告哪个编译器是正确的?我知道这是指针类型和bool之间的简单转换。但是std::nullptr_t和bool是怎么回事?(最后,Clang和MSVC都可以处理代码。从积极的角度来看,Clang稍微有点冗长。)structThing{Thing(bool){}};voidaddThing(constThing&

c++ - std::error_code,my_error::check_block == my_error::validate && my_error::accept_block == my_error::validate

我正在使用std::error_code并定义和注册了一堆错误(使用枚举类)。我有一个非常通用的错误,现在称为my_error::validate,但我想在我的库中提供更具体的版本。通常人们会想要使用:if(ec==bc::error::validate)//...但是有时他们可能希望看到与该std::error_code关联的特定错误或打印错误消息。//ec.message()says"check_block()failedtodoXYZ"assert(ec==bc::error::check_block);我希望能够启用如下功能:if(ec==bc::error::validate

java - "projections are not allowed for immediate arguments of a supertype"Kotlin Android Studio

当我将Java转换为Kotlin时出现此错误:JavapublicclassHeaderTabextendsExpandableGroup{privateStringheader;publicHeaderTab(Stringtitle,Listitems){super(title,items);}}KotlinclassHeaderTab(title:String,items:List):ExpandableGroup(title,items){privatevalheader:String?=null}AndroidStudio是这样说的:projectionsarenotallow

java - "projections are not allowed for immediate arguments of a supertype"Kotlin Android Studio

当我将Java转换为Kotlin时出现此错误:JavapublicclassHeaderTabextendsExpandableGroup{privateStringheader;publicHeaderTab(Stringtitle,Listitems){super(title,items);}}KotlinclassHeaderTab(title:String,items:List):ExpandableGroup(title,items){privatevalheader:String?=null}AndroidStudio是这样说的:projectionsarenotallow

c++ - "Invalid template argument"错误在 Visual Studio 但不是 GCC

假设你有代码templateclassBaseType>classEST16:publicBaseType{public:EST16(doubled){}};templateclassSCEST{Ty;};typedefEST16EST16_SC;classChild:publicEST16_SC{public:Child():EST16_SC(1.0){}};classNotWorkingChild:publicEST16{public:NotWorkingChild():EST16(1.0){}};TEST(TemplateTest,TestInstantiate){Childch

c++ - connect() 返回 "invalid argument"和 ipv6 地址

我有这个简单的客户端-服务器应用程序对。代码非常简单,我只使用新的建议方法,如getaddinfo等,一切都适用于ipv4。即使对于ipv6环回(::1)它也有效。当涉及到其他一些ipv6地址时,问题就开始了……我在一个网络中有两台机器,当我传递它们的ipv4地址时一切正常,但是当我给我的客户端ipv6地址时,我在连接函数上遇到错误:参数无效.嘿,我不是已经知道了吗?我愿意!当我尝试ping6这个ipv6地址时,我得到了同样的错误:connect:Invalidargument但是有一种方法可以克服这个障碍-应该选择一个带有-I开关的接口(interface),从那时起一切都可以顺利运

c++ - 调试断言失败!表达式 : _BLOCK_TYPE_IS_VALID

这个问题不太可能帮助任何future的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visitthehelpcenter.关闭10年前。我收到此错误消息:DebugAssertionFailed!Expression:_BLOCK_TYPE_US_VALID(pHead->nBlockUse)在尝试执行以下操作时#include#includeusingnamespacestd;classNN{public:NN(constintnumLayers,constint*lSz,consti

解决 sun.security.validator.ValidatorException: PKIX path building failed 的问题,绕过证书的检查实现

错误信息:javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:                                  PKIXpathbuildingfailed:sun.security.provider.certpath.SunCertPathBuilderException:unabletofindvalidcertificationpathtorequestedtarget问题原因:源应用程序不信任目标应用程序的证书,因为在源应用程序的JVM信任库中找不到该证书或证书链。

java - 函数式编程 : How to carry on the context for a chain of validation rules

我有一组用于验证的函数(规则),它们以上下文作为参数并返回“Okay”或带有消息的“Error”。基本上这些可以返回一个Maybe(Haskell)/Optional(Java)类型。在下文中,我想验证Fruit(上下文)的属性,如果验证失败则返回错误消息,否则返回“Okay”/Nothing。注意:我更喜欢纯功能风格和无状态/不可变的解决方案。实际上,它有点像Kata。在我的实验中,我使用了Kotlin,但核心问题也适用于任何支持高阶函数的语言(例如Java和Haskell)。您可以找到linktothefullsourcecodehere和最底层的一样。给定一个带有颜色和重量的水果