)]}'
{
  "commit": "bcbaff6656070f9d81d41dac664cc765c7962f22",
  "tree": "2ce747d702cf45c399a8dcbe422837c7c017dda0",
  "parents": [
    "ae3f2e86838d2da241eb00e485a4201b985b9d35"
  ],
  "author": {
    "name": "Sameer Agarwal",
    "email": "sameeragarwal@google.com",
    "time": "Tue Mar 17 14:36:58 2026 -0700"
  },
  "committer": {
    "name": "Sameer Agarwal",
    "email": "sameeragarwal@google.com",
    "time": "Wed Mar 18 17:25:41 2026 -0700"
  },
  "message": "[modernize] Modernize AutoDiff and NumericDiff CostFunctions to C++17\n\nModernize the construction and initialization logic of AutoDiffCostFunction,\nNumericDiffCostFunction, AutoDiffFirstOrderFunction,\nNumericDiffFirstOrderFunction, DynamicAutoDiffCostFunction,\nDynamicNumericDiffCostFunction, and CostFunctionToFunctor by utilizing\nC++17 features:\n\n- Simplify constructor delegation using if constexpr, removing the need for\n  internal InitTag structures.\n- Use std::is_constructible_v for cleaner SFINAE in variadic constructors.\n- Add static_assert to catch improper usage of DYNAMIC residuals/parameters\n  at compile-time.\n- Add Ownership support to AutoDiffFirstOrderFunction,\n  DynamicAutoDiffCostFunction, and DynamicNumericDiffCostFunction.\n- Simplify CostFunctionToFunctor::operator() using variadic parameter packs.\n- Use this-\u003enum_residuals() for consistent and clear access to base class\n  state.\n- Minor code quality improvements and removal of redundant template\n  parameters.\n\nChange-Id: Id760a26ba2ceca4fb2939ef7632f2f1d9cc430c9\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "878b2ecaaf576482d54106ce31dd5c99ef0924a8",
      "old_mode": 33188,
      "old_path": "include/ceres/autodiff_cost_function.h",
      "new_id": "4ca8c4e6bd77208685cd692d40ccef6730553568",
      "new_mode": 33188,
      "new_path": "include/ceres/autodiff_cost_function.h"
    },
    {
      "type": "modify",
      "old_id": "0e7def381cccb3d4e1d2abb95dba0e3dd8ee28f7",
      "old_mode": 33188,
      "old_path": "include/ceres/autodiff_first_order_function.h",
      "new_id": "d29c8d6b140f2393e58492b3975d6589efb1ce65",
      "new_mode": 33188,
      "new_path": "include/ceres/autodiff_first_order_function.h"
    },
    {
      "type": "modify",
      "old_id": "a2ca6d85d87b196d1802da6bc6507b38c7ba0562",
      "old_mode": 33188,
      "old_path": "include/ceres/cost_function_to_functor.h",
      "new_id": "9505159da70d33e85eef342ea78fd5589d81a61a",
      "new_mode": 33188,
      "new_path": "include/ceres/cost_function_to_functor.h"
    },
    {
      "type": "modify",
      "old_id": "7efdad0e5237a35b510b6b33dd59a67bdc0f8f90",
      "old_mode": 33188,
      "old_path": "include/ceres/dynamic_autodiff_cost_function.h",
      "new_id": "05b13bc8da01239bfbb4d8784e30ecfc18aab3bd",
      "new_mode": 33188,
      "new_path": "include/ceres/dynamic_autodiff_cost_function.h"
    },
    {
      "type": "modify",
      "old_id": "2cd0e9c99f790fcf6b1b3aabfb79f0490f449a56",
      "old_mode": 33188,
      "old_path": "include/ceres/dynamic_numeric_diff_cost_function.h",
      "new_id": "55b79136ab4e7ad8794f38dd0c92407f117f6509",
      "new_mode": 33188,
      "new_path": "include/ceres/dynamic_numeric_diff_cost_function.h"
    },
    {
      "type": "modify",
      "old_id": "47e4af4e3dcda53cf51bfaf9f193e2ef243bdfd9",
      "old_mode": 33188,
      "old_path": "include/ceres/numeric_diff_cost_function.h",
      "new_id": "5b102aed7aed39cbe16f5a762b6c22989736eb65",
      "new_mode": 33188,
      "new_path": "include/ceres/numeric_diff_cost_function.h"
    }
  ]
}
