草庐IT

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++ - 为什么 boost::equals 要求范围是可复制的?

我这辈子都无法理解为什么会失败:#include#include"boost/algorithm/string/predicate.hpp"structTest:publicstd::vector{Test(){}Test(constTest&){assert(false);}};intmain(){Testa;Testb;boost::algorithm::equals(a,b);return0;}输出:$g++boostEqualsCopyDemo.cpp-I/usr/include/boost-1_47$a.outa.out:boostEqualsCopyDemo.cpp:10:

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++ - 如何在 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++ - 为设置比较器获取 "Debug Assertion Failed!"

我知道此链接已回答类似问题HelpmefixthisC++std::setcomparator但不幸的是,我面临着完全相同的问题,我无法理解其背后的原因,因此需要一些帮助来解决它。我正在使用VS2010,我的发布二进制文件运行良好,没有任何问题,但调试二进制报告:我的比较器是这样的:structPathComp{booloperator()(constwchar_t*path1,constwchar_t*path2)const{intc=wcscmp(path1,path2);if(c0){returntrue;}returnfalse;}};我的集合是这样声明的:setpathSet

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-所有三个主要编译器似乎都按预期工作。我知道