11得票4回答
为什么不应该在头文件中初始化静态变量?

假设我有这样一个标题:#ifndef BASECLASS_H #define BASECLASS_H class BaseClass { public: static int getX(){return x;} private: static ...

11得票1回答
从静态初始化代码启动CUDA内核时出现问题

我有一个类,在其构造函数中调用了一个内核,如下所示: "ScalarField.h"#include <iostream> void ERROR_CHECK(cudaError_t err,const char * msg) { if(err!=cuda...

11得票3回答
用统一的内联初始化方式初始化具有不可复制值的静态std::map

我想初始化一个静态的std::map,其中值是不可复制的。 我将我的类称为ValueClass。 ValueClass 有一个私有成员std::unique_ptr,我甚至通过扩展看起来像以下内容的non_copyable来确保ValueClass 是不可复制的:class non_copya...

10得票1回答
如何抑制在为函数分配新属性时,mypy产生的“has no attribute”错误?

对于静态初始化,我经常使用以下习语: def compute_answer() -> int: if compute_answer.ret is None: # Do stuff that only happens the first time ...

10得票1回答
C++静态模板成员初始化问题

gcc 4.5.1,SuSE Linux i686 假设我们有以下代码:template<typename realT> class B { public: B() {std::cout << "B()" << std::endl;} }; te...

10得票4回答
__attribute__((constructor)) 调用顺序混乱

答案这里表明 __attribute__((constructor)) 不是在静态初始化之后被调用,而是按照声明顺序被调用。 那么,如果不能保证在所有数据初始化完成时调用它,它的目的是什么呢?我们同样可以将 ((constructor)) 代码放在 Foo 构造函数中。 我正在寻找一种方法...

9得票1回答
静态内联成员初始化顺序

C++中一个众所周知的问题是静态初始化顺序混乱。当使用C++17静态内联成员时,它是否仍被认为是一个问题? 下面是一个例子,在两个不同的翻译单元(a.cpp和b.cpp)中使用静态内联成员作为两个非内联静态成员的初始化器: counter.hh #pragma once #includ...

9得票1回答
静态指针对象初始化的线程安全性

C++11中,以下内容是线程安全的: void someFunc() { static MyObject object; } 但是这和什么有关呢? void someFunc() { static MyObject *ptr = new MyObject(); } ...

8得票3回答
具有私有构造函数和静态自身数组的类

如果标题让您感到困惑,对不起。我无法找到一种简单的方式以简单的句子来表达它。不管怎样,我面临的问题是: // header: class SomeThing { private: SomeThing() {} // <- so users of this class can'...

8得票3回答
可以在静态初始化期间安全地创建线程吗?

我记得曾经读过一篇文章,说在main()的第一行之前无法安全地创建线程,因为编译器会插入特殊代码以使线程工作正常,并且这些代码在静态初始化期间运行。因此,如果你有一个在构造函数中创建线程的全局对象,你的程序可能会崩溃。但现在我找不到原始文章了,我很想知道这个限制有多强 - 它是否严格符合标准?...