<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/62042>62042</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [libc++] difference of std::move(funcitonal)
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          Jolyon0202
      </td>
    </tr>
</table>

<pre>
    we found the std::move(functional) does not move the functional ptr.

our testcase is 

`
#include<stdio.h>
#include<map>
#include<functional>

using FuncT = std::function<void()>;

int main() {
    auto c = new std::map<int, int>;
    FuncT d = [c]() {delete c;};
    auto aa = std::move(d);
    if (d == nullptr) {
        printf("d == nullptr\n");
    }
    return 0;
}
`

The result is different.

$clang -stdlib=libc++ test.cpp && ./a.out

$clang -stdlib=libstdc++ test.cpp && ./a.out
$d == nullptr



</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyMVM1y8jgQfJrxRRWXPLaJOfgQ8HLY8_cCsjQGbQnJZY3yVd5-SwoJZJOq_TiMgZ5u9fzIKkZ79kQj9Afop0olvoRt_Du4t-AlSqzmYN7G3ySWkLwRfCER2UD7Au3LNbwS4LAkr9kGrxzgXphAUfjAIqMl_46Llbca5ATy5T2GtAmmyFpFEjaKRwx28vYFW-u1S4agPUY2NtQXaP_6Abyq9WfgweInXmKK1p_FKXn9S0A73Wv7YEB7fA3WAA6A-0xuD49861lclfXvuIDnGyqEECpxELrIevr90Lbs8mg9Ax5FfjyoZt67G1OI0B809NNd3pAjJqEz43n6wivnKfW1jtuMTHH_kGwXkf_OycVgcm7l7VsN-bNu1vNSLOA3Qn_0gPhf9Wzt88dGnDYv5L11H-h9xCX-upDYKCbHeReMXRbayPOXjQHstFP-LJ4iG2dnaCdnZw14ADyUXar1ugrAHeBO1IAnVYfE_y8R2fypCnbf2vAoX2Jlxtbs272qaGx2Q9M0PTZNdRkHaszQzw0ZNSxDr6WS-1bpTs0NDtR1lR1RYiu7RsoBd31TU0tDr_qdlt2w6GcFnaSrsq527vVah-1c2RgTjTuUHVZOzeRiuc-Iee8KmGfUT9U2Zs7TnM4ROuls5HhXYcuuvAjuDYV--pyDJhGWHy-_5dvlr9LmxgvzGnMOngBPZ8uXNNc6XAFP-ajb42ndwj-kGfBUDEbAUyng3wAAAP__NGdOlg">