草庐IT

static-assert

全部标签

c++ - 在 C++0x 中是否有类似 static_assert 的东西给出警告而不是错误?

我想为可能效率低但不一定不正确的用法这样做。 最佳答案 没有。断言失败表示程序无法完成的问题(无论是执行[运行时断言],还是编译[静态断言])。实际上,只要实现发出诊断(包括继续执行),就可以执行任何操作。但是,在实践中,主流工具链的行为都几乎相同:它们会出错。您当然不能将它们破解为用户定义的内容。 关于c++-在C++0x中是否有类似static_assert的东西给出警告而不是错误?,我们在StackOverflow上找到一个类似的问题: https://

c++ - 公共(public)继承的静态断言

我构建了一个帮助类,它将通过模板构造一个自定义类,这个自定义类必须继承自某个类,我可以使用std::is_base_of进行检查。但是我还需要检查继承是否公开,如何实现?作为引用,这里是该类的精简版本,我在其中有std::is_base_of。templateclassSink{static_assert(std::is_base_of::value,"CustomSinkmustderivefromBaseSink");//SomestaticassertheretocheckifcustomsinkhaspubliclyinheritedBaseSink//static_asser

c++ - 公共(public)继承的静态断言

我构建了一个帮助类,它将通过模板构造一个自定义类,这个自定义类必须继承自某个类,我可以使用std::is_base_of进行检查。但是我还需要检查继承是否公开,如何实现?作为引用,这里是该类的精简版本,我在其中有std::is_base_of。templateclassSink{static_assert(std::is_base_of::value,"CustomSinkmustderivefromBaseSink");//SomestaticassertheretocheckifcustomsinkhaspubliclyinheritedBaseSink//static_asser

c++ - 使用 static const + const 作为数组绑定(bind)

我正在做这样的事情类.hpp:classClass{private:staticconstunsignedintarraySize;intar[arraySize+2];};类.cpp:#includeconstunsignedintarraySize=384;编译器(q++,基于g++的QNX操作系统的c++编译器)给了我error:arrayboundisnotanintegerconstant在编译包含Class.hpp的单元时(不是在编译Class.cpp时)。为什么这不起作用?我知道静态const成员可以用作数组绑定(bind),由C++标准保证(参见thisanwser)。

c++ - 使用 static const + const 作为数组绑定(bind)

我正在做这样的事情类.hpp:classClass{private:staticconstunsignedintarraySize;intar[arraySize+2];};类.cpp:#includeconstunsignedintarraySize=384;编译器(q++,基于g++的QNX操作系统的c++编译器)给了我error:arrayboundisnotanintegerconstant在编译包含Class.hpp的单元时(不是在编译Class.cpp时)。为什么这不起作用?我知道静态const成员可以用作数组绑定(bind),由C++标准保证(参见thisanwser)。

c++ - C++ 语言定义对 static 关键字的范围有什么看法?

在C++中,如果我有一个类:classExample{staticints_One,s_Two;...};语言是否明确定义s_Two也是静态的?换句话说,static关键字范围是int所到之处,还是可以像*一样只适用于一个变量? 最佳答案 是的,它适用于该声明中的每个名称:[dcl.stc]/1:[..]Atmostonestorage-class-specifiershallappearinagivendecl-specifier-seq[..]Thestorage-class-specifierappliestothenamed

c++ - C++ 语言定义对 static 关键字的范围有什么看法?

在C++中,如果我有一个类:classExample{staticints_One,s_Two;...};语言是否明确定义s_Two也是静态的?换句话说,static关键字范围是int所到之处,还是可以像*一样只适用于一个变量? 最佳答案 是的,它适用于该声明中的每个名称:[dcl.stc]/1:[..]Atmostonestorage-class-specifiershallappearinagivendecl-specifier-seq[..]Thestorage-class-specifierappliestothenamed

c++ - 为什么不能在类声明(不完整类型)中使用 "is_base_of"?

我完全明白为什么这个不能工作了:classBase{};classA;static_assert(std::is_base_of::value,"");因为没有关于“类层次结构”的信息,但是...为什么以下不能工作?classBase{};classA:publicBase{static_assert(std::is_base_of::value,"");};(produce:anundefinedclassisnotallowedasanargumenttocompilerintrinsictypetrait)类型'A'仍然不完全符合static_assert(根据这个概念的定义)。

c++ - 为什么不能在类声明(不完整类型)中使用 "is_base_of"?

我完全明白为什么这个不能工作了:classBase{};classA;static_assert(std::is_base_of::value,"");因为没有关于“类层次结构”的信息,但是...为什么以下不能工作?classBase{};classA:publicBase{static_assert(std::is_base_of::value,"");};(produce:anundefinedclassisnotallowedasanargumenttocompilerintrinsictypetrait)类型'A'仍然不完全符合static_assert(根据这个概念的定义)。

C++ 使用 "this"对象的 static_cast 和 const_cast 添加 const-ness 之间的区别?

按照ScottMeyers的说法,为防止在getter的const版本和getter的非常量版本中重复代码,请从非常量版本调用方法的const版本:static_cast(*this).Methodology();然而,由于过度使用VisualAssistXIntellisense导致意外使用,我输入了:const_cast(*this).Methodology();而且效果很好。在这种情况下,使用特定类型转换有什么不同?使用的IDE:VisualStudio2010。 最佳答案 假设this的类型是A*,没有区别。通常const_