草庐IT

COMPILE_TIME_ASSERT

全部标签

c++ - 我如何对类型进行 static_assert?

灵感来自thisquestion上的评论之一我想在我的代码中写这个,因为我可能做出了错误的假设,如果我将代码移植到两种类型不同的平台,就需要调查。static_assert(typeid(float)==typeid(GLfloat),"GLfloatisunexpectedtype");然而,这并没有编译,因为错误:调用非constexpr函数‘boolstd::type_info::operator==(conststd::type_info&)const’不过我可以这样写:-static_assert(sizeof(float)==sizeof(GLfloat),"GLfloat

c++ - C/C++ : how to get integer unix timestamp of build time (not string)

我正在尝试实现非常微不足道的事情:我需要存储构建时间的整数32位unix时间戳,但是我找到的所有宏(__DATE__,__TIME__,__TIMESTAMP__)扩展为字符串,而不是整数。看来,我们只是没有它(这对我来说很奇怪)。我真的想要整数,而不是字符串。获得它的最佳做法是什么?更新:附带说明:我做嵌入式的东西,所以我没有足够的资源(比如128KB的闪存),因此解析字符串真的是个坏主意。我为什么需要它:我只需要每个Beta版本都有唯一的版本号。首先,hex文件将被命名为my-firmware-v2-33-BETA-1397315745.hex,其次,当我需要在设备屏幕上显示当前版

c++ - ASSERT 是多余的吗?

ASSERT(pointer);pointer->x;在这段代码中,ASSERT似乎是多余的。如果指针为NULL,pointer->x无论如何都会失败。我的论点正确吗? 最佳答案 断言的重要(如果不是主要的话)目的是记录应该在代码中的特定点保持的不变量。如果不变量被破坏,assert也可以中止程序这一事实只是锦上添花,尽管它非常有用。我想说的是,在一个典型的程序中,90%的断言都是显然不会失败并且永远不会失败的断言。也就是说,assert在很大程度上是一种形式化的注释语言。从某种意义上说,这些“注释”是用相同的语言编写的,其余代码是

OpenTSDB and OpenStack: Deploying Time Series Database in Open Source Cloud Platfor

1.背景介绍时间序列数据(TimeSeriesData)是指以时间为维度、变量为特征的数据,其中数据点按照时间顺序排列。时间序列数据广泛应用于各个领域,如金融、气象、电子商务、物联网等。时间序列数据库(TimeSeriesDatabase,TSDB)是专门用于存储和管理时间序列数据的数据库。OpenTSDB(OpenTelemetryStorageDatabase)是一个开源的时间序列数据库,它可以存储和检索大量的时间序列数据。OpenTSDB支持多种数据源,如Hadoop、Ganglia、Graphite等。OpenTSDB使用HBase作为底层存储引擎,可以实现高性能和高可扩展性。Open

c++ - 是否将 std::time 与 std::srand 有效代码一起使用?

在C++中这样写是合法的:std::srand(std::time(nullptr));或者这会产生未定义的行为吗?std::time返回std::time_t这是一种算术类型,但除此之外未指定。据我理解,算术类型是float、整数和字符类型中的任何一种。std::srand将unsignedint作为种子值。因此,我认为您不能严格执行此转换。我读到在符合POSIX的系统上,std::time_t是整数,是自00:00,1970年1月1日UTC以来的秒数。在这种情况下,转换可能需要从有符号转换为无符号,这是实现定义的转换,但应该没问题,并且从较大的整数类型转换为较小的整数类型,这对种子

c++ - boost::posix_time::microsec_clock CPU 密集吗?

我想使用Boost获取毫秒精度的时间。(精度不需要毫秒,接近即可。)引用Localtimewithmilliseconds,等,说明应该使用微秒时钟:boost::posix_time::microsec_clock::local_time();根据我的经验,使用标准的、低影响的系统调用(即Windows上的::GetTicks())不可能获得精确到微秒的时间(假设具有类似的精度)).相反,需要发出CPU密集型调用以boost超过毫秒(进入微秒)的精度。正如我提到的,我不需要微秒级的精度-只需稍微接近毫秒级的精度即可。然而,Boost.Date_Time不提供任何“millisec_c

fatal: unable to access ‘https://github.com/Mrrrrr.git/‘: Failed to connect to github.com Time out

解决fatal:unabletoaccess‘https://github.com/Mr.git/’:Failedtoconnecttogithub.comport443after21046ms:Timedout的问题问题:准备向github上push写的项目代码时,一直出现这个错误,无法push。原因:连接不到github的网站目录解决fatal:unabletoaccess'https://github.com/Mr.git/':Failedtoconnecttogithub.comport443after21046ms:Timedout的问题1.因为代理的问题,请看这里2.ping不到i

c++ - 关于 ints 和 static_assert 的特化

我想编写一个仅适用于2个数字(例如3和5)的模板函数,如果您尝试将其与其他数字一起使用,则会出现错误。我可以这样做:templatevoidf();templatevoidf(){cout()\n";}templatevoidf(){cout()\n";}然后我可以用正常的方式调用这个函数:f();f();它编译得很好,如果我尝试错误地使用我的函数:f();编译器给我一个错误。这种方法有两个问题:1.-这是标准吗?我可以使用整数专门化模板吗?2.-我不喜欢使用这种方法时出现的错误,因为错误不会告诉用户他做错了什么。我更喜欢写这样的东西:templatevoidf(){static_as

c++ - 构造函数的初始化列表之前的 static_assert

有一个非模板化的类,它有一个模板化的构造函数。是否可以在此类构造函数中初始化成员变量之前检查静态断言?​​例如,下面的代码在检查T是否有这样的方法之前执行T::value()。classMyClass{public:templateMyClass(constT&t):m_value(t.value()){static_assert(HasValueMethod::value,"Tmusthaveavalue()method");}private:intm_value;};将static_assert放在构造函数的主体中工作正常,除了它在最后打印“Tmusthaveavalue()met

c++ - 如何使用 boost Date_Time 获取以毫秒为单位的 GMT 时间?

有没有一种简单的方法可以从boostDate_Time库获取当前GMT时间(以毫秒为单位)?这是一个使用time_of_day的例子,我不想要time_of_day而是totaltimeinGMT作为longlongint:boost::posix_time::ptimetime=boost::posix_time::microsec_clock::universal_time();boost::posix_time::time_durationduration(time.time_of_day());//???longlonginttimeInMilliseconds=duratio