AutoDiffCostFunction: use static_assert to check if the correct overload of the constructor is used.

Change-Id: Iad06843b858ac45e87c0458522657b2e2c55f4e8
diff --git a/include/ceres/autodiff_cost_function.h b/include/ceres/autodiff_cost_function.h
index 4a52cbc..db3f6af 100644
--- a/include/ceres/autodiff_cost_function.h
+++ b/include/ceres/autodiff_cost_function.h
@@ -156,9 +156,9 @@
   // number of residuals ("kNumResiduals").
   explicit AutoDiffCostFunction(CostFunctor* functor)
       : functor_(functor) {
-    CHECK_NE(kNumResiduals, DYNAMIC)
-        << "Can't run the fixed-size constructor if the "
-        << "number of residuals is set to ceres::DYNAMIC.";
+    static_assert(kNumResiduals != DYNAMIC,
+                  "Can't run the fixed-size constructor if the number of "
+                  "residuals is set to ceres::DYNAMIC.");
   }
 
   // Takes ownership of functor. Ignores the template-provided
@@ -168,9 +168,9 @@
   // numbers of residuals at runtime.
   AutoDiffCostFunction(CostFunctor* functor, int num_residuals)
       : functor_(functor) {
-    CHECK_EQ(kNumResiduals, DYNAMIC)
-        << "Can't run the dynamic-size constructor if the "
-        << "number of residuals is not ceres::DYNAMIC.";
+    static_assert(kNumResiduals == DYNAMIC,
+                  "Can't run the dynamic-size constructor if the number of "
+                  "residuals is not ceres::DYNAMIC.");
     SizedCostFunction<kNumResiduals, Ns...>::set_num_residuals(num_residuals);
   }