Removed CERES_USE_CXX11 Remove the special handling for tr1::shared_ptr. Change-Id: Ic405dcfe881dd6560d236956f84bfb8911d0bcbb
diff --git a/CMakeLists.txt b/CMakeLists.txt index 845745d..c78dc41 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt
@@ -443,7 +443,6 @@ # Set the Ceres option for C++11. # TODO(alex): Remove when #defines are removed from source & config.h list(APPEND CERES_COMPILE_OPTIONS CERES_STD_UNORDERED_MAP) -list(APPEND CERES_COMPILE_OPTIONS CERES_USE_CXX11) if (TBB) find_package(TBB QUIET)
diff --git a/cmake/CeresCompileOptionsToComponents.cmake b/cmake/CeresCompileOptionsToComponents.cmake index 2243ab3..872d9dc 100644 --- a/cmake/CeresCompileOptionsToComponents.cmake +++ b/cmake/CeresCompileOptionsToComponents.cmake
@@ -81,8 +81,6 @@ add_to_output_if_not_found(CURRENT_CERES_COMPILE_OPTIONS ${CERES_COMPONENTS_VAR} CERES_RESTRICT_SCHUR_SPECIALIZATION "SchurSpecializations") add_to_output_if_found(CURRENT_CERES_COMPILE_OPTIONS ${CERES_COMPONENTS_VAR} - CERES_USE_CXX11 "C++11") - add_to_output_if_found(CURRENT_CERES_COMPILE_OPTIONS ${CERES_COMPONENTS_VAR} CERES_USE_OPENMP "OpenMP;Multithreading") add_to_output_if_found(CURRENT_CERES_COMPILE_OPTIONS ${CERES_COMPONENTS_VAR} CERES_USE_TBB "TBB;Multithreading")
diff --git a/cmake/config.h.in b/cmake/config.h.in index 032db42..76b853c 100644 --- a/cmake/config.h.in +++ b/cmake/config.h.in
@@ -60,9 +60,6 @@ // routines. @CERES_NO_CUSTOM_BLAS@ -// If defined, Ceres was compiled with C++11. -@CERES_USE_CXX11@ - // If defined, Ceres was compiled without multithreading support. @CERES_NO_THREADS@ // If defined Ceres was compiled with OpenMP multithreading support.
diff --git a/include/ceres/internal/port.h b/include/ceres/internal/port.h index e4acf35..f0f706c 100644 --- a/include/ceres/internal/port.h +++ b/include/ceres/internal/port.h
@@ -64,12 +64,6 @@ namespace ceres { -#if defined(CERES_TR1_SHARED_PTR) -using std::tr1::shared_ptr; -#else -using std::shared_ptr; -#endif - // We allocate some Eigen objects on the stack and other places they // might not be aligned to X(=16 [SSE], 32 [AVX] etc)-byte boundaries. If we // have C++11, we can specify their alignment (which is desirable, as it means @@ -79,7 +73,6 @@ // on some platforms, in which case even if using C++11, on these platforms // we should not attempt to align to X-byte boundaries. If using < C++11, // we cannot specify the alignment. -#ifdef CERES_USE_CXX11 namespace port_constants { static constexpr size_t kMaxAlignBytes = // Work around a GCC 4.8 bug @@ -91,7 +84,6 @@ alignof(std::max_align_t); #endif } // namespace port_constants -#endif } // namespace ceres
diff --git a/include/ceres/jet.h b/include/ceres/jet.h index 7d28e37..5b56d86 100644 --- a/include/ceres/jet.h +++ b/include/ceres/jet.h
@@ -258,7 +258,7 @@ // supported is < 16, in which case we do not specify an alignment, as this // implies the host is not a modern x86 machine. If using < C++11, we cannot // specify alignment. -#if !defined(CERES_USE_CXX11) || defined(EIGEN_DONT_VECTORIZE) +#if defined(EIGEN_DONT_VECTORIZE) // Without >= C++11, we cannot specify the alignment so fall back to safe, // unvectorised version. Eigen::Matrix<T, N, 1, Eigen::DontAlign> v; @@ -445,16 +445,12 @@ inline double ceil (double x) { return std::ceil(x); } inline double pow (double x, double y) { return std::pow(x, y); } inline double atan2(double y, double x) { return std::atan2(y, x); } - -#ifdef CERES_USE_CXX11 -// Some new additions to C++11: inline double cbrt (double x) { return std::cbrt(x); } inline double exp2 (double x) { return std::exp2(x); } inline double log2 (double x) { return std::log2(x); } inline double hypot(double x, double y) { return std::hypot(x, y); } inline double fmax(double x, double y) { return std::fmax(x, y); } inline double fmin(double x, double y) { return std::fmin(x, y); } -#endif // In general, f(a + h) ~= f(a) + f'(a) h, via the chain rule. @@ -565,7 +561,6 @@ return Jet<T, N>(ceil(f.a)); } -#ifdef CERES_USE_CXX11 // Some new additions to C++11: // cbrt(a + h) ~= cbrt(a) + h / (3 a ^ (2/3)) @@ -614,7 +609,6 @@ const Jet<T, N>& fmin(const Jet<T, N>& x, const Jet<T, N>& y) { return y < x ? y : x; } -#endif // CERES_USE_CXX11 // Bessel functions of the first kind with integer order equal to 0, 1, n. //
diff --git a/include/ceres/solver.h b/include/ceres/solver.h index 2926f8e..09157cc 100644 --- a/include/ceres/solver.h +++ b/include/ceres/solver.h
@@ -32,6 +32,7 @@ #define CERES_PUBLIC_SOLVER_H_ #include <cmath> +#include <memory> #include <string> #include <vector> #include "ceres/crs_matrix.h" @@ -500,7 +501,7 @@ // the parameter blocks into two groups, one for the points and one // for the cameras, where the group containing the points has an id // smaller than the group containing cameras. - shared_ptr<ParameterBlockOrdering> linear_solver_ordering; + std::shared_ptr<ParameterBlockOrdering> linear_solver_ordering; // Use an explicitly computed Schur complement matrix with // ITERATIVE_SCHUR. @@ -631,7 +632,7 @@ // the lower numbered groups are optimized before the higher // number groups. Each group must be an independent set. Not // all parameter blocks need to be present in the ordering. - shared_ptr<ParameterBlockOrdering> inner_iteration_ordering; + std::shared_ptr<ParameterBlockOrdering> inner_iteration_ordering; // Generally speaking, inner iterations make significant progress // in the early stages of the solve and then their contribution
diff --git a/internal/ceres/jet_test.cc b/internal/ceres/jet_test.cc index f3e42fd..188d9f5 100644 --- a/internal/ceres/jet_test.cc +++ b/internal/ceres/jet_test.cc
@@ -567,7 +567,6 @@ EXPECT_EQ(expected, b); } - #ifdef CERES_USE_CXX11 { // Check that cbrt(x * x * x) == x. J z = x * x * x; J w = cbrt(z); @@ -696,7 +695,6 @@ ExpectJetsClose(y, z); } - #endif } TEST(Jet, JetsInEigenMatrices) {
diff --git a/internal/ceres/minimizer.h b/internal/ceres/minimizer.h index b593728..afdd60d 100644 --- a/internal/ceres/minimizer.h +++ b/internal/ceres/minimizer.h
@@ -31,6 +31,7 @@ #ifndef CERES_INTERNAL_MINIMIZER_H_ #define CERES_INTERNAL_MINIMIZER_H_ +#include <memory> #include <string> #include <vector> #include "ceres/internal/port.h" @@ -167,19 +168,19 @@ // Object responsible for evaluating the cost, residuals and // Jacobian matrix. - shared_ptr<Evaluator> evaluator; + std::shared_ptr<Evaluator> evaluator; // Object responsible for actually computing the trust region // step, and sizing the trust region radius. - shared_ptr<TrustRegionStrategy> trust_region_strategy; + std::shared_ptr<TrustRegionStrategy> trust_region_strategy; // Object holding the Jacobian matrix. It is assumed that the // sparsity structure of the matrix has already been initialized // and will remain constant for the life time of the // optimization. - shared_ptr<SparseMatrix> jacobian; + std::shared_ptr<SparseMatrix> jacobian; - shared_ptr<CoordinateDescentMinimizer> inner_iteration_minimizer; + std::shared_ptr<CoordinateDescentMinimizer> inner_iteration_minimizer; }; static Minimizer* Create(MinimizerType minimizer_type);
diff --git a/internal/ceres/parallel_for_cxx.cc b/internal/ceres/parallel_for_cxx.cc index bfc8973..3da5a87 100644 --- a/internal/ceres/parallel_for_cxx.cc +++ b/internal/ceres/parallel_for_cxx.cc
@@ -182,11 +182,11 @@ return; } - // We use a shared_ptr because the main thread can finish all the work before - // the tasks have been popped off the queue. So the shared state needs to - // exist for the duration of all the tasks. + // We use a std::shared_ptr because the main thread can finish all + // the work before the tasks have been popped off the queue. So the + // shared state needs to exist for the duration of all the tasks. const int num_work_items = std::min((end - start), num_threads); - shared_ptr<SharedState> shared_state( + std::shared_ptr<SharedState> shared_state( new SharedState(start, end, num_work_items)); // A function which tries to perform a chunk of work. This returns false if
diff --git a/internal/ceres/preprocessor.h b/internal/ceres/preprocessor.h index ff53d6f..ce2eec5 100644 --- a/internal/ceres/preprocessor.h +++ b/internal/ceres/preprocessor.h
@@ -31,6 +31,7 @@ #ifndef CERES_INTERNAL_PREPROCESSOR_H_ #define CERES_INTERNAL_PREPROCESSOR_H_ +#include <memory> #include <string> #include <vector> @@ -97,8 +98,8 @@ scoped_ptr<IterationCallback> logging_callback; scoped_ptr<IterationCallback> state_updating_callback; - shared_ptr<Evaluator> evaluator; - shared_ptr<CoordinateDescentMinimizer> inner_iteration_minimizer; + std::shared_ptr<Evaluator> evaluator; + std::shared_ptr<CoordinateDescentMinimizer> inner_iteration_minimizer; std::vector<double*> removed_parameter_blocks; Vector reduced_parameters;