草庐IT

express-validator

全部标签

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

c++ - "lambda expressions"有什么好处?

lambda表达式的原因是以“更方便的方式”隐式生成函数对象。正如您从下面的示例中看到的那样,它不仅不太方便且较长,而且语法和符号也令人困惑。它是否有任何用途,它实际上使代码更具可读性?cout(x)) 最佳答案 它更具可读性,因为它将函数的实现放在调用它的地方,从而保持自然的从上到下的代码流不变。你看,普通功能各有利弊。一方面,函数有助于减少代码中的重复,这使代码更加结构化和可读性更强。另一方面,函数打破了代码的自然流并将控制权转移到一个完全不同的位置。由于相当明显的原因,这会降低可读性:这就像读一本充满嵌套的前向和后向引用的书。

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和最底层的一样。给定一个带有颜色和重量的水果

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和最底层的一样。给定一个带有颜色和重量的水果

Visual Studio Express 2015 中的 C++ 新文件问题

我在VisualStudioExpress2015中遇到一个特殊问题。我正在尝试在VisualC++中创建一个新的空Win32控制台应用程序项目。我可以创建一个新项目,清除预编译头和SDL检查的复选框,并选中“空项目”复选框。项目已创建,但当我向源文件添加新项目时,在“已安装”下没有任何选择。在以前的版本中,我可以选择一个新的空白C++(.cpp)文件或一个header(.h)文件。我可以在VisualBasic下创建新的.vb文件,在C#下创建新的.cs文件,但是当我尝试创建一个新的C++文件时,“添加”按钮是灰色的。有人有什么想法吗?我已经在三台不同的计算机上安装了它,结果相同(所

c++ - 复制省略 : move constructor not called when using ternary expression in return statement?

考虑以下示例:#includeclassobject{public:object(){printf("constructor\n");}object(constobject&){printf("copyconstructor\n");}object(object&&){printf("moveconstructor\n");}};staticobjectcreate_object(){objecta;objectb;volatileinti=1;//With#if0,object'scopyconstructoriscalled;otherwise,itsmoveconstructor