草庐IT

static-initialization

全部标签

c++ - 编译器错误 : "Non-aggregates cannot be initialized with initializer list."

尝试在C++中创建一个简单的vector时,出现以下错误:Non-aggregatescannotbeinitializedwithinitializerlist.我使用的代码是:#include#include#includeusingnamespacestd;intmain(intargc,char*argv[]){vectortheVector={1,2,3,4,5};cout我试着把:CONFIG+=c++11进入我的.pro文件,保存并重建它。但是,我仍然遇到同样的错误。我正在使用我认为是Qt5.5的东西,如果它对你有意义的话,这是当我按下About时发生的事情:Qt'sAb

c++ - 如何理解在某些情况下允许实现将非局部变量的动态初始化视为静态初始化?

其实问题出在标准草案N4582中的话:[basic.start.static/3]Animplementationispermittedtoperformtheinitializationofavariablewithstaticorthreadstoragedurationasastaticinitializationevenifsuchinitializationisnotrequiredtobedonestatically,providedthat—thedynamicversionoftheinitializationdoesnotchangethevalueofanyothe

c++ - [conv]/6中语句 "The expression e is used as a glvalue if and only if the initialization uses it as a glvalue"的确切含义是什么

[conv]/6(重点是我的):Theeffectofanyimplicitconversionisthesameasperformingthecorrespondingdeclarationandinitializationandthenusingthetemporaryvariableastheresultoftheconversion.TheresultisanlvalueifTisanlvaluereferencetypeoranrvaluereferencetofunctiontype([dcl.ref]),anxvalueifTisanrvaluereferencetoob

C++符号分析: how to determine which static initialization is performed?

我想分析是什么原因导致我在Linux上由GCC(v.6.1.1)编译的共享C++库的大小。readelf-sWlibfoo.so告诉我特别大的函数叫做__static_initialization_and_destruction_0,例如:000000000026c42010272FUNCLOCALDEFAULT12__static_initialization_and_destruction_0(int,int)[clone.constprop.1774]我将-Wl,-Map,foo.map添加到CXX标志以生成链接器映射文件。在该映射文件中查找0x000000000026c420会

【C++】初始化列表、static成员、友元、匿名对象、附练习题

文章目录前言一、构造函数【初始化列表】1.1构造函数体赋值1.2初始化列表1.3explicit关键字二、static成员2.1概念2.2特性三、友元3.1友元函数3.2内部类四、匿名对象4.1拷贝对象时的一些编译器优化五、再次理解类和对象六、练习题6.1求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句6.2计算日期到天数的转换6.3日期差值6.4打印日期6.5累加天数前言我们前面学习了关于类和对象的6个默认成员函数,知道了一个空类中有构造函数和析构函数,通过对对象初始化和对象中进行资源清理,达到初始化和销毁的作用。

c++ - 由于类型不完整,在 static_assert 中使用 std::is_base_of 失败

我想做的是让一些类继承自extention类。问题是extention类必须知道它正在扩展哪个类。这可以像这样简单地实现:templateclassExtention{public:voidcheck()const{std::cout::value{};classBar:publicExtention{};Foo和Bar类显示了扩展的好坏用法。Foo().check();→Extentionisvalid:trueBar().check();→Extentionisvalid:false我想在编译时检查模板的有效性,这让我写了templateclassExtention{static_

c++ - CMake Find_Package(PythonLibs): Does CMake give a preference to dynamic or static libraries?

当我运行FindPackage(PythonLibs)时,它首先找到静态python库python3.5m.a,而不是python3.5m.so。这是CMake的预期行为吗?我怀疑它不符合CMakebugreport;然而,这个错误报告是在2005年提交的。13年来情况发生了变化。如果共享库有偏好,那么知道为什么CMake会找到静态库而不是共享库吗?我已经通过使用SET()命令告诉CMake正确的库在哪里用于我自己的构建来解决构建问题。我正在寻找一个可以更好地理解CMake在这种情况下的行为的答案,因为我正在尝试解决不同的problem,并在共享库中找到static对我来说似乎很奇怪。

c++ - 为什么异常不适用于 OSX 上的 gcc7 和 -static-libgcc?

如果我用gcc-7、-static-libstdc++和-static-libgcc编译这个简单的程序;然后在OSX上运行#include#includeintmain()try{throwstd::runtime_error{"abc123"};return0;}catch(conststd::runtime_error&e){std::cout失败,错误代码为134。为什么它不像在linux上使用相同选项编译时那样打印“abc123”? 最佳答案 已在GCC8中修复(-ish);查看对PR86215的更新和相关的PR80556.

c++14 static constexpr auto 与 odr 用法

我有以下C++14代码:templatestructTest{staticconstexprautosomething{T::foo()};};这很好,只要T::foo()也是一个constexpr。现在我知道something是ODR使用的,所以我需要提供命名空间声明。我应该使用什么语法?templateconstexprautoTest::something;不起作用。谢谢! 最佳答案 通过using定义的类型名怎么样?templatestructTest{usingsomeType=decltype(T::foo());sta

c++ - 海湾合作委员会 : C++11 inline object initialization (using "this") does not work when there is a virtual inheritance in hierarchy

当在初始化中使用此指针并且在层次结构中存在虚拟继承时,C++11内联对象初始化不起作用(在GCC中)。这可能是GCC的错误吗(因为它在CLang中工作)?还是C++11标准本身的差距?示例(可以在here中尝试),当使用GCC编译以下代码时:FieldIndexm_inB{"inB",this};不会被执行。但它会在使用CLang编译时执行。变通方法:从FieldIndexContainer派生A作为虚拟#include#include#includeusingnamespacestd;classFieldIndexContainer{public:classFieldIndex{pu