Operator Overloading in Binary Tree c++ : I am writing various operator overloads for a binary tree function that I am creating, the specifications require an overload for 

    binary_tree& binary_tree::operator=(const binary_tree &other)
    {
    
    return binary_tree();
    }

the test for the operator working is as follows,

    int main(int argc, char **argv)
    {
    tree = new binary_tree(vector<int>{11, 5, 3, 7});
    binary_tree temp = *tree;
    temp.insert(12);
    str = temp.inorder();
    if (str != string("3 5 7 11 12") && temp.inorder() != tree->inorder())
        cerr << "test failed (assignment operator)" << endl;
    else
        cout << "test passed (assignment operator)" << endl;
    }

Obviously the point of this test is to create a new tree temp, which has the values of the original, but I can't seem to get it to work so that when .insert(12) is called, it doesn't alter the original tree. The operator has to work based on the test given in main, unedited.

I have tried various things inside the = operator but none of them seem to have any effect. I have methods that can copy values from one tree to another, but none that seem to work with the given test. 

Thanks for any help