草庐IT

compile-time-constant

全部标签

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++ - constexpr c 字符串连接,在 constexpr 上下文中使用的参数

我正在探索我可以从这个答案中采用constexprcharconst*连接多远:constexprtoconcatenatetwoormorecharstrings我有以下用户代码,它准确地显示了我正在尝试做的事情。编译器似乎看不到函数参数(a和b)作为constexpr传入。任何人都可以找到一种方法使我在下面指出的两个不起作用,但实际上可以起作用吗?如果能够通过这样的函数组合字符数组,将会非常方便。templateconstexprautotest1(Aa,Bb){returnconcat(a,b);}constexprautotest2(charconst*a,charconst*

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++ - Visual Studio 2017 : _mm_load_ps often compiled to movups

我正在查看为我的代码生成的程序集(使用VisualStudio2017)并注意到_mm_load_ps经常(总是?)编译为movups。我使用_mm_load_ps的数据定义如下:structalignas(16)Vector{floatv[4];}//oftenembeddedinotherstructslikethisstructAABB{Vectormin;Vectormax;boolintersection(/*parameters*/)const;}现在,当我使用这个构造时,会发生以下情况://thiscode__mm128bb_min=_mm_load_ps(min.v);

c++ - Gtest : test compiling error

我正在尝试测试我用googletest编写的电机控制库,但我没有编译测试代码。测试位于名为test.cpp的文件中,如下所示:#include#include"../motor.hpp"TEST(constructorTest,contructorDefault){}我将测试主函数放在另一个名为main.cpp的文件中。#include#include"../motor.hpp"intmain(intargc,char*argv[]){::testing::InitGoogleTest(&argc,argv);RUN_ALL_TESTS();}为了编译,我执行了以下行:g++main.

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

c++ - 我不明白这个 C++ 错误 - 错误 C2101 : '&' on constant

这段代码应该可以与GCC一起使用——我正试图让它与VisualStudio一起工作。我不知道代码是否真的有问题,或者我没有对端口做正确的事情。1>c:\somepath\aaa.h(52):errorC2101:'&'onconstant1>c:\somepath\aaa.h(52):whilecompilingclasstemplatememberfunction'constblahblah::Messagesomething::AClass::aMethod(void)const'1>with1>[1>Type=constlala::BClass&1>]1>c:\somepath\

c++ - 为什么我在从 time(NULL) 播种随机数生成器时收到可能丢失数据的警告?

我正在学习vector并编写了一些代码来选择随机数,我可以用它来在荷兰购买彩票。但是尽管它运行了,编译器警告我“从‘time_t’转换为‘unsignedint,可能丢失数据’”。谁能找出造成这种情况的原因?我什至没有在这段代码中定义任何unsignedint;据我所知,默认情况下inti是一个带符号的int。感谢您的洞察力。#include#include#include#includeusingnamespacestd;voidprint_numbers();stringprint_color();intmain(){srand(time(NULL));print_numbers(

c++ - Boost Gzip 过滤器 : compile failes

我正在尝试从BoostGzip过滤器页面编译示例:#include#include#include#include#includeintmain(){usingnamespacestd;ifstreamfile("hello.gz",ios_base::in|ios_base::binary);filtering_streambufin;in.push(gzip_decompressor());in.push(file);boost::iostreams::copy(in,cout);}遗憾的是我的g++返回错误:gzlib.cpp:Infunction‘intmain()’:gzli