今天写了一个这样状物:
struct Tag{
int l,r,a,b;Tag(){};
Tag(int _l,int _r,int _a,int _b):l(_l),r(_r),a(_a),b(_b){}
};
std::basic_string<Tag>s;
本地过编了,UOJ 和 QOJ 上都过不了。
本地 assert 了一下,is_trivial 过不了,Tag 显然没有复制/移动构造函数和赋值运算符,看起来就不是平凡类,,
但是它为啥本地能过编啊。
包括 std::pair 什么的放进去我本地也能过编,但是一检查也都不是平凡的。
绷不住了。我本地是 MinGW 64 GCC 11.2,只开了 -std=c++14 -O2 -Wall。
老实说我一直不清楚复制构造函数什么的具体要求,感觉太绕了。但是这样下去好像真可能到正赛了再 FST,所以问一下。
如果需要的话,我还是补习一下这方面知识。
比如我倒是想知道现在这几个函数是什么,,
struct Tag{
int l,r,a,b;
Tag()=default;
Tag(Tag const&x):l(x.l),r(x.r),a(x.a),b(x.b){}
Tag(int _l,int _r,int _a,int _b):l(_l),r(_r),a(_a),b(_b){}
};