Modernize CostFunction and FirstOrderFunction constructors

- Add constructors taking std::unique_ptr and ceres::Ownership to
  AutoDiffCostFunction, NumericDiffCostFunction, and their dynamic
  and first-order counterparts.
- Standardize delegating constructor style to use parentheses.
- Standardize ownership check in destructors.
- Fix documentation typos and example code in headers.
- Add comprehensive tests for Ownership and unique_ptr constructors.

Change-Id: I573abd695cdd89905997b573620e8d99d1cacca2
This commit is contained in:
Sameer Agarwal
2026-03-18 14:09:38 -07:00
parent 3abe9326f1
commit 3d1b494dce
9 changed files with 183 additions and 87 deletions
@@ -525,9 +525,19 @@ TEST(DynamicNumericdiffCostFunctionTest, ArgumentForwarding) {
(void)DynamicNumericDiffCostFunction<MyCostFunctor>();
}
TEST(DynamicAutoDiffCostFunctionTest, UniquePtr) {
TEST(DynamicNumericDiffCostFunctionTest, UniquePtr) {
(void)DynamicNumericDiffCostFunction<MyCostFunctor>(
std::make_unique<MyCostFunctor>());
}
TEST(DynamicNumericDiffCostFunctionTest, Ownership) {
MyCostFunctor functor;
{
DynamicNumericDiffCostFunction<MyCostFunctor> cost_function(
&functor, DO_NOT_TAKE_OWNERSHIP);
cost_function.AddParameterBlock(3);
cost_function.SetNumResiduals(3);
}
}
} // namespace ceres::internal