草庐IT

CPPUNIT_ASSERT_EQUAL

全部标签

c++ - 如何将类型的名称作为字符串嵌入到 static_assert() 中?

这个问题在这里已经有了答案:Integratetypenameinstatic_assertoutput?(4个答案)关闭8年前。问题以下内容不会生成,因为消息不是字符串文字。templatestructFoo{Foo(){static_assert(is_pod::value,typeid(T).name());}};最终,如果我尝试编译Foofb;,我想要一条失败消息,如“Barmustbeapod-type”.是否可以按照static_assert的要求在编译期间构建此字符串?

c++ - 在 Xcode [c++] 中的 assert (assert.h) 中定义 lambda 时,为类似函数的宏调用编译错误提供了太多参数

我正在使用assert.h中的断言宏我已经定义了lambda来执行断言检查。intval1=0;intval2=1;constautocheck=[val1,val2]()->bool{returnval1bool{returnval1//compileerrorforthiscall"toomanyargumentsprovidedtofunction-likemacroinvocation"assert([val1,val2]()->bool{returnval1为什么会这样toomanyargumentsprovidedtofunction-likemacroinvocation

c++ - 将 CRTP 与 static_assert 一起使用时出现编译器错误

考虑以下代码:templatestructBase{staticconstexprintx_base=Derived::x_derived;//static_assert(x_base>1,"Oops");};structDerived:publicBase{staticconstexprintx_derived=5;};Baseobj;这在gcc上编译得很好,但如果我取消注释static_assert行,它会提示error:incompletetype'Derived'usedinnestednamespecifierstaticconstexprintx_base=Derived:

c++ - 使用 CppUnit 参数化测试

我的组织正在使用CppUnit,我正尝试使用不同的参数运行相同的测试。在测试中运行循环不是一个好的选择,因为任何失败都会中止测试。我查看了TestDecorator和TestCaller但似乎都不合适。代码示例会有所帮助。 最佳答案 在CppUnit中似乎不可能直接参数化测试用例(参见here和here)。但是,您确实有几个选择:使用RepeatedTest您可以巧妙地使用内置的RepeatedTest装饰器。这允许多次运行测试用例(尽管没有参数化)。我承认我自己从来没有用过这个,但也许你可以让RepeatedTest驱动一些看门人

c++ - 如何在 Visual Studio 2013 的 Debug模式下关闭 ASSERT

有什么方法可以关闭断言而不是切换到Release模式。我需要调试经常进行断言的代码,这会减慢我的工作速度。这些断言与我要解决的问题无关,所以现在它们只会减慢我的进度,因为它们在我的一个基类中经常被调用。现在我没有时间改进他们的设计,所以有人可以告诉我是否有办法在Debug模式下关闭断言并使用它的功能。 最佳答案 用户_CrtSetReportModeintiPrev=_CrtSetReportMode(_CRT_ASSERT,0);//StartOperationwithnoASSERTs...//Restorepreviousmo

c++ - BOOST_CHECK_EQUAL 与 pair<int, int> 和自定义运算符 <<

当尝试执行BOOST_CHECK_EQUAL(pair,pair)时,gcc没有找到pair的流运算符,尽管声明了它。有趣的是std::out找到了运算符。ostream&operator&p){s';returns;}BOOST_AUTO_TEST_CASE(works){pairexpected(5,5);pairactual(5,5);std::coutexpected(5,5);pairactual(5,5);BOOST_CHECK_EQUAL(actual,expected);}这不会编译错误:...instantiatedfromhere../boost-atp/relea

c++ - static_assert 和英特尔 C++ 编译器

阅读cppreference.com:Astaticassertdeclarationmayappearatblockscope(asablockdeclaration)andinsideaclassbody(asamemberdeclaration)好的,现在我有以下代码:structfoo_t{staticconstexprstd::size_tmaxAlignment(){//Thisisjustasample;Iremovedrealcodefromthismethod.returnstd::max(alignof(__m128),__alignof(__m256));}sta

c++ - static_assert 无法将 const char* 模板参数识别为 constexpr : g++ bug?

考虑以下定义。charright_string[]="::right_one.";charwrong_string[]="::wrong_one.";templatevoidf(){static_assert(str==::right_string,"Passme::right_string!");}structTest{staticconstexprcharright_string[]="template_struct::right_one";staticconstexprcharwrong_string[]="template_struct::wrong_one";template

c++ - 仅在实例化时使用 `static_assert` 使类模板特化无法编译的安全、符合标准的方法?

假设我们想要制作一个模板类,它只能用数字实例化,否则不能编译。我的尝试:#includetemplatestructOnlyNumbers{public:structC{};static_assert(std::is_same::value,"Tisnotarithmetictype.");//OnlyNumbers*ptr;};templatestructOnlyNumbers>>{};structFoo{};intmain(){OnlyNumbers{};//Compiles//OnlyNumbers{};//Error}Livedemo-所有三个主要编译器似乎都按预期工作。我知道

c++ - 为什么 `assert` 宏即使与 `NDEBUG` 也有值(value)?

环境:$g++--versiong++(Ubuntu7.4.0-1ubuntu1~18.04)7.4.0众所周知,在包含assert.h之前定义的NDEBUG可以禁用用于调试的类函数宏assert(卡塞特)。但是,在我的环境中阅读/usr/include/assert.h,我发现了下面的代码。#ifdefined__cplusplus&&__GNUC_PREREQ(2,95)#define__ASSERT_VOID_CASTstatic_cast#else#define__ASSERT_VOID_CAST(void)#endif#ifdefNDEBUG#defineassert(exp