assuming we have the next function object:
class foo{
private:
    int counter;
public:
    foo(int counter): counter(counter){}
    foo& operator=(const foo& ){...}
    bool operator() (int variable){....}
}
int main(){
    foo f(4);
    foo x(5);
    x = f(4);
    return 0;
 }
how does the compiler knows how to respond to:
x = f(5)?
I've been searching for a while on the web and in Stack and haven't found exact answer, if its a repost , tell me and i'll delete the question.
 
     
    