上次在写并查集的时候写出来了这种东西:
inline find(int x){
if(fa[x]==x) return x;
return fa[x]=find(fa[x]);
}
本地编译通过,但是在珂愛的 LOJ 评测姬上 CE 了。
然后我发现这个函数没有声明返回值类型。
出于好奇,我又写了这个:
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<vector>
#include<string>
#include<typeinfo>
using namespace std;
find(){}
int main(){
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
decltype(find()) var;
cout<<typeid(var).name()<<endl;
return 0;
}
输出:i。
所以函数的返回值类型应该是默认为 int 的。
那为什么在评测姬上会 CE?
使用环境:
- Embarcadero Dev-C++ 6.3.
- TDM-GCC 9.2.0 64-bit Release.
-g -std=c++2a -O2 -Wall -Wextra -lm -fexec-charset=gbk.