草庐IT

COMPILE_TIME_ASSERT

全部标签

c++ - C++如何像Java Spring Assert一样检查条件并抛出异常

有没有标准的方法来做这样的事情?可用于Release模式(NDEBUG定义)检查失败时抛出异常。最好使用标准库或boost。为了清楚起见,我在这里使用的“断言”(可能是不同的术语)特别是关于运行时问题,而不是编程问题,例如SpringAssert。在Java世界中。Microsoft.VisualStudio.TestTools.CppUnitTestFramework是很好的候选人,但它是为了测试目的。 最佳答案 在我的一些项目中我使用:voidASSERT(constboolcond,conststd::string&text)

c++ - 从变量转换时出现 std::chrono::time_point 编译器错误

我有一个longlong类型的变量,它表示以纳秒为单位的时间点。我正在尝试使用std::chrono::time_point包装它,但编译器(VS2017)给我带来了麻烦。这是编译的代码:std::chrono::time_pointtpStart(std::chrono::nanoseconds(10ll));std::chrono::time_pointtpEnd=std::chrono::steady_clock::now();doubled=std::chrono::duration(tpEnd-tpStart).count();现在,如果我用变量切换值10ll,计算持续时间的

c++ - 如何根据 RFC 3339 格式化 boost::date_time-object

我想在boost中使用date_time库来表示我的应用程序中的时间。此应用程序将生成Atom提要,后者又会以RFC3339中指定的格式强制要求时间戳。,例如“1990-12-31T23:59:60Z”或“1990-12-31T15:59:60-08:00”。那么,我该如何根据这个RFC格式化时间呢?我一直在阅读DateTimeInput/Outputdocumentation一整天,我似乎无法找到如何在需要时将Z放在最后。此外,RFC支持可选的小数秒,但只有一位数字(例如“1990-12-31T23:59:60.5Z”)(*)。我似乎也不知道该怎么做。我总是可以编写自己的格式化例程来

c++ - 是否可以编写这些 pure_assert 和 const_assert 宏?

GCC__attribute__((pure))和__attribute__((const))分别允许将函数声明为无副作用和引用透明;假设我想编写pure_assert和const_assert宏,其参数必须是适当严格级别的表达式,即:assert(oops_a_side_effect());静默导致调试和发布中的不同行为,但是:pure_assert(oops_a_side_effect());const_assert(oops_read_a_global());至少在调试版本中会出现编译时错误。由于我希望是显而易见的原因,您不能只创建一个声明为__attribute__((pure

c++ - 如何使用 BOOST_STATIC_ASSERT

#include#includeusingnamespacestd;//Iunderstandhowthefollowingtemplatefunctionworks//template//TGetMax(Ta,Tb){//Tresult;//result=(a>b)?a:b;//return(result);//}//Ihavedifficultiestounderstandhowthefollowingcodeworks//whenweshouldusethissyntaxtemplatevoidaccepts_values_between_1_and_10(){BOOST_STA

c++ - 支持逗号和错误信息的自定义 `assert`宏

我想创建一个自定义版本的assert中定义的宏,当断言失败时显示错误消息。所需的用法:custom_assert(AClass::aBoolMethod(),"aBoolMethodmustbetrue");有缺陷的测试实现:#definecustom_assert(mCondition,mMessage)...//ThisfailsbecausemConditionmayhavecommasinit#definecustom_assert(...,mMessage)//Notsureaboutthiseither-mMessagemaybeanexpressioncontaining

c++ - CMake add_compile_options 在适当的时候会影响链接器选项吗?

一些编译器选项实际上可能需要额外的链接选项才能真正有效。例如,启用GCC'sLinkTimeOptimization,-flto选项必须在编译命令和链接命令中传递。有一个漂亮的builtincmakecommand用于添加编译选项,但据我所知,没有相应的链接选项命令。即使有,当我使用的编译选项暗示它们时需要明确指定它们也会很烦人。那么add_compile_options(-flto)是否将-flto添加到link命令?如果没有,我是否需要直接设置(LINK_FLAGS....? 最佳答案 add_compile_options和t

c++ - 为什么我不能将 assert 与 std::is_same 一起使用?

有人可以向我解释为什么这个代码片段无法正常工作吗?#include#includeusingnamespacestd;intmain(){assert(is_same::value);}编译失败,因为根据编译器:prog.cpp:7:33:error:macro"assert"passed2arguments,buttakesjust1assert(is_same::value);^prog.cpp:Infunction'intmain()':prog.cpp:7:2:error:'assert'wasnotdeclaredinthisscopeassert(is_same::valu

c++ - 使用 Boost.Date_Time 解析带时区的日期时间?

我想使用BoostDateTimeIO解析带时区的日期时间图书馆。#include#include#includeusingnamespaceboost::gregorian;usingnamespaceboost::posix_time;std::chrono::system_clock::time_pointParseDate(conststd::wstring&dateText,constwchar_t*constformat){ptimetime;std::wstringstreambuffer(dateText);buffer.imbue(std::locale(std::l

c++ - "run time templates"

我很确定答案是“你不能使用模板,你必须使用虚函数(动态多态性)”,但如果我走那条路,我似乎必须复制很多代码.这是设置:我目前有两个类,ColorImageSegmentation和GrayscaleImageSegmentation。他们做的事情本质上是一样的,但是有3个区别-它们对不同类型(ColorImage和GrayscaleImage)进行操作-一个参数,直方图的维度(3vs1)不同-PixelDifference函数根据图像类型不同如果我创建一个类templateclassImageSegmentation{};我会保持良好的状态。但是,我想让这个对象成为另一个类的成员:cl