草庐IT

BeanShell断言

全部标签

c++ - 断言不会显示错误信息

我在VisualC++2005中遇到了一个关于断言的奇怪问题。我试图将断言引入我的程序,但无论我尝试使用什么断言(assert()或BOOST_ASSERT_MSG),它都会给出完全相同的错误消息除了发生调试错误外,它什么也没告诉我。DebugError!Program:...ThisapplicationhasrequestedtheRuntimetoterminateitinanunusualway.Pleasecontactthesupportteamformoreinformation.(PressRetrytoDebugtheapplication)这是我正在使用的提升断言B

c++ - 为什么模板参数上的 is_copy_constructible 静态断言失败?

我试图对模板参数进行静态断言,以检查/强制Type可复制构造。但是静态断言失败。我不明白为什么,也找不到任何文档为什么它会在静态评估中失败。实例化的类是可复制构造的,但是它使用了我认为被称为奇怪的重复模板参数模式的东西。完整的测试代码如下:#include#includeusingnamespacestd;templateclassFunContainer{//static_assert(is_copy_constructible::value,"Typemustbecopyconstructible!");//::value//::value;};};classFun:publicF

c++ - 你能静态地断言对象可以转换为某种类型吗?

我目前正在为C++11开发一个控制台GUI库,以简化一些调试和其他工作。对于模板化的某个类,我想确保在打印之前可以将模板化类型转换为字符串。示例:templateclasslistbox{private:std::vectorlist;[...]public:std::stringprint_item(T&item){/*static_assert()here*/}}所以在“静态断言”部分,我想检查是否可以将项目转换为std::string(或者constchar*也可以),所以问题真的很简单,我如何断言从模板化类型转换?我知道编译器/IDE会对无法识别的类型使用react,但我需要一

GEB断言HTML表行文本

我是GEB的新手,我正在编写一项测试,该测试将检查网页上的文本,并断言该值是否存在。我感兴趣的文本是表行文本,这是我的HTML表行的CSS/XPATH。/html/body/table/tbody/tr[3]/td/table/tbody/tr[3]/td[2]/table/tbody/tr/td/table/tbody/tr[2]/td/b/pre/abody>table>tbody>tr:nth-child(3)>td>table>tbody>tr:nth-child(3)>td:nth-child(2)>table>tbody>tr>td>table>tbody>tr:nth-child

c++ - 唯一 ptr 初始化断言失败

这导致我的程序断言失败:inta=5;std::unique_ptrintptr(&a);错误File:f:\dd\vctools\crt\crtw32\misc\dbgdel.cppLine:32Expression:_BLOCK_TYPE_IS_VALID(pHead>nBlockUse)当我使用“new”或“=make_unique(..)”初始化它时效果很好,但我很想知道为什么我不能通过提供现有变量的地址来初始化它。 最佳答案 变量a在栈上,如果你将它绑定(bind)到一个unique_ptr,当unique_ptr超出作用

c++ - 调试断言在发布版本中究竟会做什么?

我的应用程序在处理中文字符(宽)时在发布版本中表现异常。我有下面一行在Debug模式下抛出调试断言:str.erase(std::remove_if(str.begin(),str.end(),isspace),str.end());(其中str是std::wstring)此行在Debug模式下抛出断言。我知道这是因为isspace无法处理宽字符。我必须使用iswspace而不是isspace。str.erase(std::remove_if(str.begin(),str.end(),isspace),str.end());if(!str.empty()){//addstrtoGUI

c++ - Boost序列化断言失败

我使用boost的二进制序列化,直到现在它运行良好。我有std::list指向序列化输出(oarchive)的指针,但序列化在对象的serialize()函数中失败,带有MSVC的对话框:R6010-abort()hasbeencalled这样的字符串被打印到控制台窗口中:Assertionfailed:0==static_cast(t)||1==static_cast(t),filec:\programfiles\boost\boost_1_44\boost\archive\basic_binary_oprimitive.hpp,line91这是什么意思?项目非常大,资源是分布式的,

c++ - fprintf 调试断言失败

我有一个程序,如果我手动启动它,它可以正确运行。但是,如果我尝试添加注册表项以在启动期间自动启动它,则会出现此错误:Debugassertionfailed(str!=null)fprintf.cline:55我试图在任何事情发生之前添加Sleep(20000),但我得到了同样的错误。代码如下:main(){FILE*filetowrite;filetowrite=fopen("textfile.txt","a+");writefunction(filetowrite);}intwritefunction(FILE*filetowrite){fprintf(filetowrite,"%

c++ -/boost/lockfree/queue.hpp: 错误: 静态断言失败: (boost::has_trivial_destructor<T>::value)

我正在尝试替换boost::lockfree::queue对于std::queue在这个文件中https://github.com/zaphoyd/websocketpp/blob/experimental/examples/broadcast_server/broadcast_server.cpp我添加了#include;改线130,std::queuem_actions;,至boost::lockfree::queuem_actions;;删除所有与锁定有关的行;并更改了行103,m_actions.pop();,至m_actions.pop(a);.我在sconsbroadcas

c++ - 断言(3/2 == 1): Does this work?

我刚刚了解到除法运算符的舍入行为在C++11之前没有定义。解决方案是使用std::div。(Safelyroundtonextsmallermultiple)我的程序总是假定/只会截断小数部分。作为快速修复,我想包含一个断言,这样如果有人在具有不同舍入行为的平台上进行编译,我至少会得到一个错误。assert(3/2==1)或static_assert(3/2==1)会完成这项工作吗?或者这些常量是否会被编译器内部的算法优化掉,这可能与机器实际做的不同? 最佳答案 “我刚刚了解到除法运算符的舍入行为在C++11之前没有定义”。如果两个