)]}'
{
  "commit": "1496b0e710aa010a384910b36d10a257cdeae2b7",
  "tree": "9a0af082642554e2037670b9c26b08c39fe4e064",
  "parents": [
    "290625979a9a458ea260c34233f13f3c02688f70"
  ],
  "author": {
    "name": "Tom Stellard",
    "email": "tstellar@redhat.com",
    "time": "Wed Nov 22 14:45:26 2017 +0000"
  },
  "committer": {
    "name": "Tom Stellard",
    "email": "tstellar@redhat.com",
    "time": "Wed Nov 22 14:45:26 2017 +0000"
  },
  "message": "Merging r312892:\n\n------------------------------------------------------------------------\nr312892 | ericwf | 2017-09-10 16:41:20 -0700 (Sun, 10 Sep 2017) | 10 lines\n\nFix PR34298 - Allow std::function with an incomplete return type.\n\nThis patch fixes llvm.org/PR34298. Previously libc++ incorrectly evaluated\nthe __invokable trait via the converting constructor `function(Tp)` [with Tp \u003d std::function]\nwhenever the copy constructor or copy assignment operator\nwas required. This patch further constrains that constructor to short\ncircut before evaluating the troublesome SFINAE when `Tp` matches\nstd::function.\n\nThe original patch is from Alex Lorenz.\n------------------------------------------------------------------------\n\ngit-svn-id: https://llvm.org/svn/llvm-project/libcxx/branches/release_50@318835 91177308-0d34-0410-b5e6-96231b3b80d8\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "83a2e5a39a88514f0ad7eaab297daa54ada2c443",
      "old_mode": 33188,
      "old_path": "include/functional",
      "new_id": "f73c3ca56a8e3e64bb303d02ea71db38a33f3ab9",
      "new_mode": 33188,
      "new_path": "include/functional"
    },
    {
      "type": "modify",
      "old_id": "9db4d66145fc7dee9382837508fa0095b17c73b2",
      "old_mode": 33188,
      "old_path": "include/type_traits",
      "new_id": "6c111abfd1e88cac6f8103ea86c50b4e519bcff2",
      "new_mode": 33188,
      "new_path": "include/type_traits"
    },
    {
      "type": "modify",
      "old_id": "c8f4178a26bdd7c5a8904359d115bf3f9c23a970",
      "old_mode": 33188,
      "old_path": "test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_incomplete.pass.cpp",
      "new_id": "75e2ecac3c4155d9dfe589a90b6e14cdfd5cf427",
      "new_mode": 33188,
      "new_path": "test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_incomplete.pass.cpp"
    }
  ]
}
