#include <iostream>
#include <algorithm>
using namespace std;
class segment_tree
{
private:
struct node
{
int l,r,maxium,minium;
};
node t[800005];
public:
void build(int id,int l,int r)
{
...(略)
}
int min(int id,int l,int r)
{
if(t[id].l==l&&t[id].r==r)
return t[id].minium;
int mid=t[id].l+t[id].r>>1;
bool f1=l<=mid,f2=mid<r;
if(f1&&!f2)
return min(id*2,l,r);
else if(!f1&&f2)
return min(id*2+1,l,r);
else
return min(min(id*2,l,mid),min(id*2+1,mid+1,r)); //注意看这一行
}
...
};
...
error: no matching function for call to 'segment_tree::min(int, int)'
return min(min(id*2,l,mid),min(id*2+1,mid+1,r));
在这行语句中,外层的min
试图调用STL函数,内层的min
试图递归调用segment_tree::min
。
所以这说明编译器认为在同一个语句里同一个标识符只能代表同一个函数,还是不同作用域的函数不能构成重载?