草庐IT

STATIC_ROOT

全部标签

C++11 static_assert : Parameterized error messages

在mypreviousquestion我想使用static_assert将模板参数限制为特定的子类型。问题回答完毕,归档代码如下:templatestructX{static_assert(std::is_base_of::value,"TmustbederivedfromY!");};现在,我想让错误信息更简洁。即,我想说明哪种类型违反了此约束。例如,如果类A不是来自Y有人实例化了X,则错误消息应打印“类型参数必须从Y派生,但A不是”。这是否可以通过标准库以某种方式实现?我看到两个挑战:在编译时不使用boost::mpl组装字符串检索实例化T的类型的名称。该名称应该有意义,最好与违规

c++ - static const 成员变量初始化

看起来我可以初始化一个POD静态常量成员,但不能初始化其他类型:structC{staticconstinta=42;//OKstaticconststringb="hi";//compileerror};为什么? 最佳答案 类定义中的语法initializer只允许用于整型和枚举类型。对于std::string,它必须在类定义之外定义并在那里初始化。structC{staticconstinta=42;staticconststringb;};conststringC::b="hi";//inoneofthe.cppfilesst

c++ - 头文件中的 `static` , `extern` , `const`

//a.hexternintx1;staticintx2;intx3;staticconstintx4;classA{public:staticconstintx5=10;};a.h会被多个.cpp文件包含,我的问题是:1.x1只是一个声明,不是吗?所以它的定义应该在那些.cpp文件之一中完成,对吧?2.x2是一个定义,对吧?我曾经认为staticint和externint一样也是一个声明,但我错了。x2将仅在a.h中可见?3.如果a.h包含在多个.cpp文件中,x3会被定义多次,所以x3会导致编译错误,对吧?4.x4是一个定义,对吧?5.这里在A类中,x5是一个声明,是的。但是x4呢

c++ - 为什么我们使用 static_cast 为 NULL

当我尝试研究QP/CPP代码时,我遇到了以下行。QTimeEvt*t;//...if(t==static_cast(0)){为什么他们要做0的static_cast?如果他们想检查NULL,我们可以直接这样做吗?这个源代码你可以在中找到http://www.state-machine.com/qpcpp/qf__time_8cpp_source.html 最佳答案 是的,这是不必要的,尽管它可能是某些风格指南为了“清晰”而强制要求的,或者它可能是为了让过度热心的静态分析工具沉默。当然,如今,我们只需编写nullptr就可以了。

C++ : initialize static member large array

为了在C++中使用静态数据成员,我目前有类似的东西://HEADERFILE.hclassMyClass{private:staticdoublemyvariable;};//CPPFILE.cppdoubleMyClass::myvariable=0;但如果现在我有://HEADERFILE.hclassMyClass{private:staticdoublemyarray[1000];};如何初始化它?谢谢 最佳答案 和初始化普通数组一样:doubleMyClass::myarray[1000]={1.1,2.2,3.3};缺少

c++ - "static"在 C 和 C++ 中表示没有外部链接的函数/变量是怎么发生的?

在C中,static可以表示局部变量或没有外部链接的全局函数/变量。在C++中,它也可以表示每个类的成员变量或成员函数。有没有提到如何使用看起来与缺少外部链接完全无关的static关键字来表示缺少外部链接? 最佳答案 使用已经存在的关键字的优点是不会向语言添加新的关键字,这可能会破坏现有的程序。它可能令人困惑,但它被认为是一种“较小的邪恶”。 关于c++-"static"在C和C++中表示没有外部链接的函数/变量是怎么发生的?,我们在StackOverflow上找到一个类似的问题:

C++我们什么时候应该更喜欢使用两个链接的static_cast而不是reinterpret_cast

首先,这不是Whydowehavereinterpret_castinC++whentwochainedstatic_castcandoit'sjob?的拷贝.我知道我们甚至不能使用两个链式static_cast来实现的情况,reinterpret_cast所做的。但是在任何情况下我应该更喜欢两个链接的static_cast而不是简单且更具可读性的reinterpret_cast? 最佳答案 reinterpret_cast应该是一个巨大的闪烁符号,表示这看起来很疯狂,但我知道我在做什么。不要因为懒惰而使用它。reinterpret

C++ : Why cant static functions be declared as const or volatile or const volatile

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:C++-Whystaticmemberfunctioncan’tbecreatedwith‘const’qualifier想知道为什么静态成员函数不能声明为const或volatile或constvolatile的原因?#includeclassTest{staticvoidfun()const{//compilererrorreturn;}};

Mac中安装Windows虚拟机给小米手机刷Root

文章目录背景小米刷机1)小米手机刷机流程2)注意的问题VirtualBox识别USB、U盘等问题1)VirtualBox安装虚拟机2)虚拟机无法识别USB1)Host机(宿主机)需要安装USB扩展包-VirtualBoxExtensionPack;2)在主机的端口=》USB设备指定正确的识别设备。3)虚拟机是否能自动安装驱动来识别对应版本的USB.问题FailedtoattachtheUSBdeviceerror:VERR_PDM_NO_USB_PORTSVirtualBox文件传输法1共享主机与虚机的粘贴板-核心:VBoxGuestAdditions扩展程序法2共享目录总结VirtualBo

c++ - C++ 中的 static const 与 #define - 可执行文件大小的差异

我的基本情况:我有一个包含类似#definefoo(Flag1|Flags2|Flag3)的包含文件,因此它是位标志的预定义组合。为了类型安全,我想用静态常量替换这些#defines,即staticconstintfoo=(Flag1|Flag2|Flag3)(或类似的)。这个包含文件包含在程序的几十个地方。现在,当我在启用所有相关优化选项(使用VS2010的C++编译器)的情况下进行发布构建时,替换#defines似乎会使可执行文件增加几个KiB,具体取决于我替换了多少常量。为什么会这样?据我所知,如果可能的话,整数常量应该“内联”到生成的ASM代码中,我看不出如何使用staticc