Remove definition of ExpressionRef::ExpressionRef(double&);
Due to the removed definition, calling this method will result
in a compile-time error instead of a run-time error.
Change-Id: Iac2514c05d79a66fcbad124587d08eb9309aa6a5
diff --git a/include/ceres/internal/expression_ref.h b/include/ceres/internal/expression_ref.h
index 3d376ee..a1afd14 100644
--- a/include/ceres/internal/expression_ref.h
+++ b/include/ceres/internal/expression_ref.h
@@ -56,10 +56,14 @@
// must work for T = Jet<ExpressionRef>.
ExpressionRef(double compile_time_constant);
- // By adding this constructor (which always throws an error) we can detect
- // invalid usage of ExpressionRef. ExpressionRef can only be created from
- // constexpr doubles.
- ExpressionRef(double& test);
+ // By adding this deleted constructor we can detect invalid usage of
+ // ExpressionRef. ExpressionRef must only be created from constexpr doubles.
+ //
+ // If you get a compile error here, you have probably written something like:
+ // T x = local_variable_;
+ // Change this into:
+ // T x = CERES_LOCAL_VARIABLE(local_variable_);
+ ExpressionRef(double&) = delete;
// Create an ASSIGNMENT expression from other to this.
//
diff --git a/internal/ceres/expression_ref.cc b/internal/ceres/expression_ref.cc
index 9aa25d4..e9cda42 100644
--- a/internal/ceres/expression_ref.cc
+++ b/internal/ceres/expression_ref.cc
@@ -44,11 +44,6 @@
id = Expression::CreateCompileTimeConstant(compile_time_constant);
}
-ExpressionRef::ExpressionRef(double& test) {
- CHECK(false)
- << "ExpressionRefs can only be created from compile-time constants.";
-}
-
ExpressionRef::ExpressionRef(const ExpressionRef& other) { *this = other; }
ExpressionRef& ExpressionRef::operator=(const ExpressionRef& other) {