)]}'
{
  "commit": "45d493b680e3e79e4e9c19d665df83823c52a73a",
  "tree": "461ff7a2c9c3f7e4cd6ac5decfcee1f86bfc4632",
  "parents": [
    "c82e2f5c9ed08a270a1ec60bf7313af9c236ab98"
  ],
  "author": {
    "name": "Louis Dionne",
    "email": "ldionne.2@gmail.com",
    "time": "Thu May 08 16:35:00 2025 -0400"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu May 08 16:35:00 2025 -0400"
  },
  "message": "[libc++] Add the __is_replaceable type trait (#132408)\n\nThat type trait represents whether move-assigning an object is\nequivalent to destroying it and then move-constructing a new one from\nthe same argument. This will be useful in a few places where we may want\nto destroy + construct instead of doing an assignment, in particular\nwhen implementing some container operations in terms of relocation.\n\nThis is effectively adding a library emulation of P2786R12\u0027s\nis_replaceable trait, similarly to what we do for trivial relocation.\nEventually, we can replace this library emulation by the real\ncompiler-backed trait.\n\nThis is building towards #129328.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "0277382cc84ddd07ace89f320beb12690ca85196",
      "old_mode": 33188,
      "old_path": "libcxx/include/CMakeLists.txt",
      "new_id": "8cb05857ea8d73c821c40dec7c2df7feabe59795",
      "new_mode": 33188,
      "new_path": "libcxx/include/CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "dac5b00b57fe32e24ed88afc9fe95b700501c0d7",
      "old_mode": 33188,
      "old_path": "libcxx/include/__exception/exception_ptr.h",
      "new_id": "b1fe9a1299ec7a665f15501a65321675fc71f794",
      "new_mode": 33188,
      "new_path": "libcxx/include/__exception/exception_ptr.h"
    },
    {
      "type": "modify",
      "old_id": "6b3d335f2151c91a446b1595b29a06e207e0be4f",
      "old_mode": 33188,
      "old_path": "libcxx/include/__expected/expected.h",
      "new_id": "0f446b870723bead11a9e301d4eed9827f565a57",
      "new_mode": 33188,
      "new_path": "libcxx/include/__expected/expected.h"
    },
    {
      "type": "modify",
      "old_id": "3c290e27c062b90a35c86cdd070dbd74e3e682f3",
      "old_mode": 33188,
      "old_path": "libcxx/include/__locale",
      "new_id": "92e45e2531c2a66183843116152186200203f97f",
      "new_mode": 33188,
      "new_path": "libcxx/include/__locale"
    },
    {
      "type": "modify",
      "old_id": "6d3da9778f5f36c38c94d45b6c3005ec52ff2842",
      "old_mode": 33188,
      "old_path": "libcxx/include/__memory/shared_ptr.h",
      "new_id": "f1b2e2dbfc0cd10f133e1accb9be261a4a814f6e",
      "new_mode": 33188,
      "new_path": "libcxx/include/__memory/shared_ptr.h"
    },
    {
      "type": "modify",
      "old_id": "fa02926bd5e5a093d00f16b0c567403567971d91",
      "old_mode": 33188,
      "old_path": "libcxx/include/__memory/unique_ptr.h",
      "new_id": "3e8d3cd6a40978b31473cccf424b9fe67a882993",
      "new_mode": 33188,
      "new_path": "libcxx/include/__memory/unique_ptr.h"
    },
    {
      "type": "modify",
      "old_id": "721d4d497f2a59a6d87310be2e0fc30e68992cd6",
      "old_mode": 33188,
      "old_path": "libcxx/include/__split_buffer",
      "new_id": "21e58f4abc6b3057aa91ff6802dd43b3aadd22f1",
      "new_mode": 33188,
      "new_path": "libcxx/include/__split_buffer"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e1d17c099cd3a5b276ce9303af67df6736a50adb",
      "new_mode": 33188,
      "new_path": "libcxx/include/__type_traits/is_replaceable.h"
    },
    {
      "type": "modify",
      "old_id": "4296caac1040a4ba0d37b07141fd2c8fe3458d3d",
      "old_mode": 33188,
      "old_path": "libcxx/include/__utility/pair.h",
      "new_id": "99b0eb955b7676e39a381aaed086f6125178da2a",
      "new_mode": 33188,
      "new_path": "libcxx/include/__utility/pair.h"
    },
    {
      "type": "modify",
      "old_id": "af3f7b974cdcf3accea97e02d3fd941a5af58cc9",
      "old_mode": 33188,
      "old_path": "libcxx/include/__vector/vector.h",
      "new_id": "c6e350a71b855082482b2dd1493a37cd6a750612",
      "new_mode": 33188,
      "new_path": "libcxx/include/__vector/vector.h"
    },
    {
      "type": "modify",
      "old_id": "ff46838e2e8e2c0694ffcd00a02972be084a87f1",
      "old_mode": 33188,
      "old_path": "libcxx/include/array",
      "new_id": "9643fc1dd9dca067f71bee5bfaad20fa4a91ee97",
      "new_mode": 33188,
      "new_path": "libcxx/include/array"
    },
    {
      "type": "modify",
      "old_id": "e9846af5e5848edf0c28f1e9ca7c38e1ea85a413",
      "old_mode": 33188,
      "old_path": "libcxx/include/deque",
      "new_id": "d8645d06ae59e9788599a2ba6f663c662dfcd3a2",
      "new_mode": 33188,
      "new_path": "libcxx/include/deque"
    },
    {
      "type": "modify",
      "old_id": "7260c3a5d51f32083868116133b6719e5c96a292",
      "old_mode": 33188,
      "old_path": "libcxx/include/module.modulemap.in",
      "new_id": "b9cb43ebd999adf374106c37691f41d96b8806c2",
      "new_mode": 33188,
      "new_path": "libcxx/include/module.modulemap.in"
    },
    {
      "type": "modify",
      "old_id": "78aa34727c147d5d39044fbd7d3d4480737b457e",
      "old_mode": 33188,
      "old_path": "libcxx/include/optional",
      "new_id": "2153efb2ab89967b3cc1c6ebebe6de254c54e92a",
      "new_mode": 33188,
      "new_path": "libcxx/include/optional"
    },
    {
      "type": "modify",
      "old_id": "33f2598f8544974fdeb1f35025064492c07dba51",
      "old_mode": 33188,
      "old_path": "libcxx/include/string",
      "new_id": "4f05e211919f39279e0c6d51911696f4a23d6eaa",
      "new_mode": 33188,
      "new_path": "libcxx/include/string"
    },
    {
      "type": "modify",
      "old_id": "f6062891823d696dcdd23573c003fa688d672a1e",
      "old_mode": 33188,
      "old_path": "libcxx/include/tuple",
      "new_id": "8dd62ae624f5ece5bb66fa7c7969910155b9dd56",
      "new_mode": 33188,
      "new_path": "libcxx/include/tuple"
    },
    {
      "type": "modify",
      "old_id": "74a464d27ead4451b59734a64361ce4e23bcba94",
      "old_mode": 33188,
      "old_path": "libcxx/include/variant",
      "new_id": "23d876f9a60afae3455544afa21b9799e59ed5f6",
      "new_mode": 33188,
      "new_path": "libcxx/include/variant"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7735538cccae49c692a11189920f2cb76af5ddaf",
      "new_mode": 33188,
      "new_path": "libcxx/test/libcxx/type_traits/is_replaceable.compile.pass.cpp"
    }
  ]
}
