各种阴间坑

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 a;的初始化顺序在模板静态变量的前面...操作没初始化的set直接re
解决方案1 :大力偏特化

template<> 
set<ll> wapper<ll>::val = set<ll>();
wapper<ll> a;

解决方案2 :大佬的做法(不太懂...慢慢理解

塞静态函数里面

作为静态函数的静态变量存在

以避开顺序问题

多线程 有可能的话 可以使用 thread_local

搜了一下...全局变量初始化这块有一些阴间东西...特别是不能依赖多个头文件的全局变量的初始化顺序...
再加上特殊的模板静态变量...qs非常阴间

以上是关于各种阴间坑的主要内容,如果未能解决你的问题,请参考以下文章

10年代码经验程序员UP主复刻“阴间”超级马里奥,获赞27万,马里奥:我头呢?

vbscript 各种自定义代码片段 - 有关详细信息,请参阅注释

各种坑

QT 实用代码片段

小程序各种功能代码片段整理---持续更新

macaca 遇到的各种坑