diff --git a/docs/source/modeling.rst b/docs/source/modeling.rst
index 5e36756..8a67e26 100644
--- a/docs/source/modeling.rst
+++ b/docs/source/modeling.rst
@@ -503,11 +503,11 @@
             new CostFunctionToFunctor<2, 5, 3>(new IntrinsicProjection(observation_)));
       }
       template <typename T>
-      bool operator(const T* rotation,
-                    const T* translation,
-                    const T* intrinsics,
-                    const T* point,
-                    T* residual) const {
+      bool operator()(const T* rotation,
+                      const T* translation,
+                      const T* intrinsics,
+                      const T* point,
+                      T* residual) const {
         T transformed_point[3];
         RotateAndTranslatePoint(rotation, translation, point, transformed_point);
 
@@ -573,11 +573,11 @@
       }
 
       template <typename T>
-      bool operator(const T* rotation,
-                    const T* translation,
-                    const T* intrinsics,
-                    const T* point,
-                    T* residuals) const {
+      bool operator()(const T* rotation,
+                      const T* translation,
+                      const T* intrinsics,
+                      const T* point,
+                      T* residuals) const {
         T transformed_point[3];
         RotateAndTranslatePoint(rotation, translation, point, transformed_point);
         return (*intrinsic_projection_)(intrinsics, transformed_point, residual);
diff --git a/include/ceres/cost_function_to_functor.h b/include/ceres/cost_function_to_functor.h
index b30ecd0..fa1012d 100644
--- a/include/ceres/cost_function_to_functor.h
+++ b/include/ceres/cost_function_to_functor.h
@@ -68,11 +68,11 @@
 //             new IntrinsicProjection(observation_)));
 //   }
 //   template <typename T>
-//   bool operator(const T* rotation,
-//                 const T* translation,
-//                 const T* intrinsics,
-//                 const T* point,
-//                 T* residual) const {
+//   bool operator()(const T* rotation,
+//                   const T* translation,
+//                   const T* intrinsics,
+//                   const T* point,
+//                   T* residual) const {
 //     T transformed_point[3];
 //     RotateAndTranslatePoint(rotation, translation, point, transformed_point);
 //
diff --git a/include/ceres/internal/autodiff.h b/include/ceres/internal/autodiff.h
index 011f2a0..2b32671 100644
--- a/include/ceres/internal/autodiff.h
+++ b/include/ceres/internal/autodiff.h
@@ -38,7 +38,7 @@
 //
 //   struct F {
 //     template<typename T>
-//     bool operator(const T *x, const T *y, ..., T *z) {
+//     bool operator()(const T *x, const T *y, ..., T *z) {
 //       // Compute z[] based on x[], y[], ...
 //       // return true if computation succeeded, false otherwise.
 //     }
@@ -102,7 +102,7 @@
 //
 //   struct F {
 //     template<typename T>
-//     bool operator(const T *p, const T *q, T *z) {
+//     bool operator()(const T *p, const T *q, T *z) {
 //       // ...
 //     }
 //   };
diff --git a/include/ceres/numeric_diff_functor.h b/include/ceres/numeric_diff_functor.h
index 593c371..039e1a1 100644
--- a/include/ceres/numeric_diff_functor.h
+++ b/include/ceres/numeric_diff_functor.h
@@ -71,11 +71,11 @@
 //   }
 //
 //   template <typename T>
-//   bool operator(const T* rotation,
-//                 const T* translation,
-//                 const T* intrinsics,
-//                 const T* point,
-//                 T* residuals) const {
+//   bool operator()(const T* rotation,
+//                   const T* translation,
+//                   const T* intrinsics,
+//                   const T* point,
+//                   T* residuals) const {
 //     T transformed_point[3];
 //     RotateAndTranslatePoint(rotation, translation, point, transformed_point);
 //     return (*intrinsic_projection_)(intrinsics, transformed_point, residual);
