各种阴间坑
Posted XDU18清欢
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了各种阴间坑相关的知识,希望对你有一定的参考价值。
UB摧毁一切定义
运算中的各种阴间溢出导致的UB
模板类中静态成员引发的全局变量构造顺序问题
...挺阴间的
#include <bits/stdc++.h>
using namespace std;
using ll = long long int;
template<typename T>
struct wapper
{
static set<T> val;
using type = T;
T value;
wapper()
{
val.insert(value = mex());
}
operator T ()
{
return value;
}
ll mex()
{
for (T i = 0;;i++)
if (val.count(i) == 0)
return i;
return -1;
}
};
template<typename T>
set<T> wapper<T>::val = set<T>();
wapper<ll> a;
int main()
{
return 0;
}
wapper
解决方案1 :大力偏特化
template<>
set<ll> wapper<ll>::val = set<ll>();
wapper<ll> a;
解决方案2 :大佬的做法(不太懂...慢慢理解
塞静态函数里面
作为静态函数的静态变量存在
以避开顺序问题
多线程 有可能的话 可以使用 thread_local
搜了一下...全局变量初始化这块有一些阴间东西...特别是不能依赖多个头文件的全局变量的初始化顺序...
再加上特殊的模板静态变量...qs非常阴间
以上是关于各种阴间坑的主要内容,如果未能解决你的问题,请参考以下文章
10年代码经验程序员UP主复刻“阴间”超级马里奥,获赞27万,马里奥:我头呢?