I thought the following example would have the same result as `std::map::emplace()`, but it didn't:

```
struct MoveTest {
    MoveTest():
        var(true)
    {
        cout << "ctor: " << static_cast<void*>(&var) << endl;
    }

    MoveTest(MoveTest&& mt):
        var(std::move(mt.var))
    {
        cout << "move ctor: " << static_cast<void*>(&var) << endl;
    }

    bool var;
};

int main() {
    map<int, MoveTest> mtest;
    mtest.insert(make_pair(1, MoveTest()));
    return 0;
}

```

output:

```
ctor: 0x7fff12e4e19b
move ctor: 0x7fff12e4e194
move ctor: 0x25f3034

```

The `MoveTest::var` has a different address in each move. It doesn't look like a "*move*". What's wrong in my code or understanding?