)]}'
{
  "commit": "91773746be74a58029f6ecfc0c82a3b22492ed12",
  "tree": "d044441ce11246a73c23a5245764a3bf59361c3b",
  "parents": [
    "8b88a9ab490292a08d537cab491bcb8fef186922"
  ],
  "author": {
    "name": "Sergiu Deitsch",
    "email": "sergiu.deitsch@gmail.com",
    "time": "Sat Jun 10 21:01:25 2023 +0200"
  },
  "committer": {
    "name": "Sergiu Deitsch",
    "email": "sergiu.deitsch@gmail.com",
    "time": "Tue Jan 23 01:34:27 2024 +0100"
  },
  "message": "Simplify instantiation of cost functions and their functors\n\nIf arguments are passed to a cost function that can be used to construct\nthe functor, the latter will be instantiated by the cost function using\nstd::make_unique to ensure exception safety. This not only avoids static\nanalysis warnings caused by calling new but also spelling the cost\nfunctor type name multiple times.\n\nAlso expand deduction guides for instantiating\nDynamic(Auto|Numeric)DiffCostFunction from std::unique_ptr enabled\nconstructor overloads.\n\nFinally, make CostFunction default move constructible and assignable but\nonly through derived classes. This in turn allows derived classes to be\nmovable without relying on custom implementations of corresponding\noperators.\n\nChange-Id: Idee8b9871d862bc9f9f8b5a8d0bedc52863e93c0\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "26fceb0468268837b6fc587eb8a2f3a20abcd74f",
      "old_mode": 33188,
      "old_path": "docs/source/automatic_derivatives.rst",
      "new_id": "3fe07275a6823b8dcea57a6e0c7eaca92bd1074b",
      "new_mode": 33188,
      "new_path": "docs/source/automatic_derivatives.rst"
    },
    {
      "type": "modify",
      "old_id": "03bd7f1820065a6255ddc24c68b42839009e480f",
      "old_mode": 33188,
      "old_path": "docs/source/gradient_tutorial.rst",
      "new_id": "2af44e1147336662b62c7d402d646e6a452b9914",
      "new_mode": 33188,
      "new_path": "docs/source/gradient_tutorial.rst"
    },
    {
      "type": "modify",
      "old_id": "59bc79853102dfe845bb23d7ccb752d2b40a3bcd",
      "old_mode": 33188,
      "old_path": "docs/source/interfacing_with_autodiff.rst",
      "new_id": "fa05835e990e1d1caea64b83e4fa92ef91b35af5",
      "new_mode": 33188,
      "new_path": "docs/source/interfacing_with_autodiff.rst"
    },
    {
      "type": "modify",
      "old_id": "512834c8c36670c895ab94e24c630fe58f155852",
      "old_mode": 33188,
      "old_path": "docs/source/nnls_modeling.rst",
      "new_id": "71d31e00af2810287c4e1b8de0321fa4949c5b17",
      "new_mode": 33188,
      "new_path": "docs/source/nnls_modeling.rst"
    },
    {
      "type": "modify",
      "old_id": "66728e01bd5ca6fa3cf01b7eab11936d0b3ce787",
      "old_mode": 33188,
      "old_path": "docs/source/nnls_tutorial.rst",
      "new_id": "6de800e59f467b82f4c5048cfc8f552916a9bc1d",
      "new_mode": 33188,
      "new_path": "docs/source/nnls_tutorial.rst"
    },
    {
      "type": "modify",
      "old_id": "609c84b69646818920887eb5a11ce40daf278889",
      "old_mode": 33188,
      "old_path": "docs/source/numerical_derivatives.rst",
      "new_id": "8d7fb3a6a5e742e8d6433957babee1d5210a944f",
      "new_mode": 33188,
      "new_path": "docs/source/numerical_derivatives.rst"
    },
    {
      "type": "modify",
      "old_id": "97f5c3c6431e3ceddbf1bc0bffb68fc148af689b",
      "old_mode": 33188,
      "old_path": "examples/bicubic_interpolation.cc",
      "new_id": "21b3c7edf419a3b1080107c4697216400d98186b",
      "new_mode": 33188,
      "new_path": "examples/bicubic_interpolation.cc"
    },
    {
      "type": "modify",
      "old_id": "2d398c48e55e91679334bc07a6e74a7c9a7d72ac",
      "old_mode": 33188,
      "old_path": "examples/circle_fit.cc",
      "new_id": "fd848d91ecfea4c0c3ee46fa44ca3377b6eda0e8",
      "new_mode": 33188,
      "new_path": "examples/circle_fit.cc"
    },
    {
      "type": "modify",
      "old_id": "c6b3a6b2e0f3f2995221dcac43ce51edd47b0faf",
      "old_mode": 33188,
      "old_path": "examples/curve_fitting.cc",
      "new_id": "105402e90d7d9c8ea577c77a23099be2e2c63c3f",
      "new_mode": 33188,
      "new_path": "examples/curve_fitting.cc"
    },
    {
      "type": "modify",
      "old_id": "eefc72d5459de67e355b073d343cff3697eb11a1",
      "old_mode": 33188,
      "old_path": "examples/ellipse_approximation.cc",
      "new_id": "6fa8f1cdad065ce484c94ba597f7652ff6e6912f",
      "new_mode": 33188,
      "new_path": "examples/ellipse_approximation.cc"
    },
    {
      "type": "modify",
      "old_id": "c9972fd3ce064479a834a905e2037412603e7d1e",
      "old_mode": 33188,
      "old_path": "examples/helloworld.cc",
      "new_id": "40c2f2c31f9e4968095817822ee5897def0b699f",
      "new_mode": 33188,
      "new_path": "examples/helloworld.cc"
    },
    {
      "type": "modify",
      "old_id": "98e24f1ab96778ea5900028bb1564981b4228449",
      "old_mode": 33188,
      "old_path": "examples/iteration_callback_example.cc",
      "new_id": "0be2f36c313d8c05c8cd43e9a01e610c2f193a4b",
      "new_mode": 33188,
      "new_path": "examples/iteration_callback_example.cc"
    },
    {
      "type": "modify",
      "old_id": "1cadb4638fc24adac102c2694893872de3e5ba96",
      "old_mode": 33188,
      "old_path": "examples/libmv_homography.cc",
      "new_id": "b7c9eda8b52e0e136b722bff617ac2d2d9d81a3e",
      "new_mode": 33188,
      "new_path": "examples/libmv_homography.cc"
    },
    {
      "type": "modify",
      "old_id": "b2fe61ba2a37c7f5bed055a56f3fc0f02e2c7ad9",
      "old_mode": 33188,
      "old_path": "examples/more_garbow_hillstrom.cc",
      "new_id": "f15e576e30c0b0ced1431698d061fd86791ff4f4",
      "new_mode": 33188,
      "new_path": "examples/more_garbow_hillstrom.cc"
    },
    {
      "type": "modify",
      "old_id": "80de4236c0f62c1782e48da7d462c765c7fddedb",
      "old_mode": 33188,
      "old_path": "examples/powell.cc",
      "new_id": "a4ca1b7cec4adffad56baa8b29bf7113a179280e",
      "new_mode": 33188,
      "new_path": "examples/powell.cc"
    },
    {
      "type": "modify",
      "old_id": "8759a46f5d1e3b78b24872776736fec7be753460",
      "old_mode": 33188,
      "old_path": "examples/robust_curve_fitting.cc",
      "new_id": "e08b0dfc3dc93ff13772c8f6be973239e4d73476",
      "new_mode": 33188,
      "new_path": "examples/robust_curve_fitting.cc"
    },
    {
      "type": "modify",
      "old_id": "4cc3f11c9e7c9dd001c96ccbf87f92472c146e0b",
      "old_mode": 33188,
      "old_path": "examples/sampled_function/sampled_function.cc",
      "new_id": "40e9c1f0d57d205423b5f2c8bbce1ddf853e008d",
      "new_mode": 33188,
      "new_path": "examples/sampled_function/sampled_function.cc"
    },
    {
      "type": "modify",
      "old_id": "5dbdd9d4ad64f222d8ac33ef6a43bd184cf842a8",
      "old_mode": 33188,
      "old_path": "examples/simple_bundle_adjuster.cc",
      "new_id": "bb0ba1c77ea470871d1e3433a829647cf8879c8d",
      "new_mode": 33188,
      "new_path": "examples/simple_bundle_adjuster.cc"
    },
    {
      "type": "modify",
      "old_id": "6ca1e604adfa1b07ebff2bfc0c90fd7267ce3882",
      "old_mode": 33188,
      "old_path": "examples/slam/pose_graph_2d/pose_graph_2d_error_term.h",
      "new_id": "3d34f8d3bd5d4233bc02adb14f31648c8d2557b0",
      "new_mode": 33188,
      "new_path": "examples/slam/pose_graph_2d/pose_graph_2d_error_term.h"
    },
    {
      "type": "modify",
      "old_id": "e072678fa6e5756c68649c15d2bc7be4594ffa2a",
      "old_mode": 33188,
      "old_path": "examples/slam/pose_graph_3d/pose_graph_3d_error_term.h",
      "new_id": "b1c01388be004ee1d3207659ffcf9f46a70d9ee4",
      "new_mode": 33188,
      "new_path": "examples/slam/pose_graph_3d/pose_graph_3d_error_term.h"
    },
    {
      "type": "modify",
      "old_id": "ff3f25afa0c6c81dea3275bb89e9e736fe4ca3b3",
      "old_mode": 33188,
      "old_path": "examples/snavely_reprojection_error.h",
      "new_id": "aaf0c6ca2315677dc28c54b57928e1f5c0d20083",
      "new_mode": 33188,
      "new_path": "examples/snavely_reprojection_error.h"
    },
    {
      "type": "modify",
      "old_id": "7e2fa711ad1bf06087863a50b4658e709ad8ec5f",
      "old_mode": 33188,
      "old_path": "include/ceres/autodiff_cost_function.h",
      "new_id": "878b2ecaaf576482d54106ce31dd5c99ef0924a8",
      "new_mode": 33188,
      "new_path": "include/ceres/autodiff_cost_function.h"
    },
    {
      "type": "modify",
      "old_id": "de7e8f1244320f8027e9e742fdcc55fd27f711ef",
      "old_mode": 33188,
      "old_path": "include/ceres/autodiff_first_order_function.h",
      "new_id": "6cd1b1393f7f20be0fae4700437a6ba81033ebef",
      "new_mode": 33188,
      "new_path": "include/ceres/autodiff_first_order_function.h"
    },
    {
      "type": "modify",
      "old_id": "79d49128712250140e5ae9679e407ef4764b26a2",
      "old_mode": 33188,
      "old_path": "include/ceres/cost_function.h",
      "new_id": "2e5b1dd590a011248beb59e85995799fe8cb54c1",
      "new_mode": 33188,
      "new_path": "include/ceres/cost_function.h"
    },
    {
      "type": "modify",
      "old_id": "e9592ed57546031b8ddc0222d385901cc08ffd54",
      "old_mode": 33188,
      "old_path": "include/ceres/cost_function_to_functor.h",
      "new_id": "573508e9ce002b5c4b522ede4c2321489a6ab2d0",
      "new_mode": 33188,
      "new_path": "include/ceres/cost_function_to_functor.h"
    },
    {
      "type": "modify",
      "old_id": "e47f32f60c509083f67a073f70efb81c5b7f4846",
      "old_mode": 33188,
      "old_path": "include/ceres/dynamic_autodiff_cost_function.h",
      "new_id": "2b8724dbb0d699ef6ea50f6eb8512bc450ea7764",
      "new_mode": 33188,
      "new_path": "include/ceres/dynamic_autodiff_cost_function.h"
    },
    {
      "type": "modify",
      "old_id": "cd124a2e2bb0357e275fed17e963372d73af76a7",
      "old_mode": 33188,
      "old_path": "include/ceres/dynamic_cost_function_to_functor.h",
      "new_id": "45ed90f709a6f3313e11af240ad16447153cff36",
      "new_mode": 33188,
      "new_path": "include/ceres/dynamic_cost_function_to_functor.h"
    },
    {
      "type": "modify",
      "old_id": "d9cd945b5736907fea169f065a26a01f608c5b8f",
      "old_mode": 33188,
      "old_path": "include/ceres/dynamic_numeric_diff_cost_function.h",
      "new_id": "1ce384f2617f2331cc691ce13535fa872bd0e4e2",
      "new_mode": 33188,
      "new_path": "include/ceres/dynamic_numeric_diff_cost_function.h"
    },
    {
      "type": "modify",
      "old_id": "00a7d53e311a2eede7a755c84527146e21984e75",
      "old_mode": 33188,
      "old_path": "include/ceres/numeric_diff_cost_function.h",
      "new_id": "f2a377b471a0554291f15252a759d830a1ef2cdb",
      "new_mode": 33188,
      "new_path": "include/ceres/numeric_diff_cost_function.h"
    },
    {
      "type": "modify",
      "old_id": "ccd420cfbc61f06462bb21e6985d22f64332e406",
      "old_mode": 33188,
      "old_path": "include/ceres/numeric_diff_first_order_function.h",
      "new_id": "525f197c1f7577a97f540a7aa6d22a98bbb7406b",
      "new_mode": 33188,
      "new_path": "include/ceres/numeric_diff_first_order_function.h"
    },
    {
      "type": "modify",
      "old_id": "d594cfe7a5a82fa628940c1b29332285865f2bd7",
      "old_mode": 33188,
      "old_path": "include/ceres/sized_cost_function.h",
      "new_id": "8928c19c4c8b71f08b99cea941d5012e192d1254",
      "new_mode": 33188,
      "new_path": "include/ceres/sized_cost_function.h"
    },
    {
      "type": "modify",
      "old_id": "f4564862fc80f179ddb0eefb67b7e4e7f3acf789",
      "old_mode": 33188,
      "old_path": "internal/ceres/autodiff_cost_function_test.cc",
      "new_id": "dca67bacfdab07e5a37ec5e170ef531741040fcc",
      "new_mode": 33188,
      "new_path": "internal/ceres/autodiff_cost_function_test.cc"
    },
    {
      "type": "modify",
      "old_id": "abd53dde0ab8f1df97ba7e091abb6fc03b28de19",
      "old_mode": 33188,
      "old_path": "internal/ceres/cost_function.cc",
      "new_id": "543348f8514e18badb93d59a52a346a29a2436b4",
      "new_mode": 33188,
      "new_path": "internal/ceres/cost_function.cc"
    },
    {
      "type": "modify",
      "old_id": "817d6f3410475751ca6c364830d060af2524e33e",
      "old_mode": 33188,
      "old_path": "internal/ceres/cost_function_to_functor_test.cc",
      "new_id": "c3fed66f520fb7ce363270011fcd172aa3f44c82",
      "new_mode": 33188,
      "new_path": "internal/ceres/cost_function_to_functor_test.cc"
    },
    {
      "type": "modify",
      "old_id": "1cf83a59e237a1940e102109f007414c335a4e61",
      "old_mode": 33188,
      "old_path": "internal/ceres/dynamic_autodiff_cost_function_test.cc",
      "new_id": "d42b3e902a2b060eb4dbd7fa4507a440af5a41f3",
      "new_mode": 33188,
      "new_path": "internal/ceres/dynamic_autodiff_cost_function_test.cc"
    },
    {
      "type": "modify",
      "old_id": "aba90e27eb04e6cfcf7ea884b24cfd019887eafe",
      "old_mode": 33188,
      "old_path": "internal/ceres/dynamic_numeric_diff_cost_function_test.cc",
      "new_id": "4f408ed89e1518b20466d21470364f0909bda1ed",
      "new_mode": 33188,
      "new_path": "internal/ceres/dynamic_numeric_diff_cost_function_test.cc"
    },
    {
      "type": "modify",
      "old_id": "46955484b890558afe476c71cad07341905122af",
      "old_mode": 33188,
      "old_path": "internal/ceres/numeric_diff_cost_function_test.cc",
      "new_id": "0c9074a10e7f0e817bf1e3b393d73fde0b738dd0",
      "new_mode": 33188,
      "new_path": "internal/ceres/numeric_diff_cost_function_test.cc"
    }
  ]
}
