败犬日报 2024-11-26
1. member class 不完整类型编译报错
cpp
#include <optional>
class Test {
public:
Test();
private:
class Dummy {
int dummy = 0;
};
std::optional<Dummy> dummy_;
};
Test::Test() { dummy_.emplace(); }
编译报错,因为实例化 std::optional<Dummy>
的时候,Dummy 还是个不完整类型。
不用 member class 就行了。
2. [[gnu::constructor]]
函数执行不保证在全局变量的初始化后
所有的初始化顺序都不能保证。
可以用 gcc 的 init_priority
控制。