Update minimum required C++ version for Ceres to C++14

- Removes all workarounds for pre-C++14 versions
- Removes '11' qualifier from C++ threading option and associated
  defines.
- Fix missing inclusion of 'Multithreading' in reported Ceres components
  when C++ threading model is enabled.
- Update Sphinx documentation to specify C++14 as minimum requirement.

Change-Id: I706c8b367b3221e3c4d1a0aaf669a8f9c911e438
This commit is contained in:
Alex Stewart
2020-05-30 11:30:01 +01:00
parent 1d75e75681
commit 7ef83e0759
35 changed files with 124 additions and 602 deletions
+3 -2
View File
@@ -54,8 +54,9 @@ Why?
of Non-linear Conjugate Gradients, BFGS and LBFGS.
* **Speed** - Ceres Solver has been extensively optimized, with C++
templating, hand written linear algebra routines and OpenMP or C++11 threads
based multithreading of the Jacobian evaluation and the linear solvers.
templating, hand written linear algebra routines and OpenMP or
modern C++ threads based multithreading of the Jacobian evaluation
and the linear solvers.
* **Solution Quality** Ceres is the `best performing`_ solver on the NIST
problem set used by Mondragon and Borchers for benchmarking
+4 -7
View File
@@ -23,9 +23,8 @@ Dependencies
.. NOTE ::
All versions of Ceres > 1.14 require a **fully C++11-compliant**
compiler. In versions <= 1.14, C++11 was an optional requirement
controlled by the ``CXX11 [Default: OFF]`` build option.
Starting with v2.0 Ceres requires a **fully C++14-compliant**
compiler. In versions <= 1.14, C++11 was an optional requirement.
Ceres relies on a number of open source libraries, some of which are
optional. For details on customizing the build process, see
@@ -378,7 +377,7 @@ Windows
<https://github.com/tbennun/ceres-windows>`_ for Ceres Solver by Tal
Ben-Nun.
On Windows, we support building with Visual Studio 2013 Release 4 or newer. Note
On Windows, we support building with Visual Studio 2015.2 of newer. Note
that the Windows port is less featureful and less tested than the
Linux or Mac OS X versions due to the lack of an officially supported
way of building SuiteSparse and CXSparse. There are however a number
@@ -709,7 +708,7 @@ Options controlling Ceres configuration
gains in the ``SPARSE_SCHUR`` solver, you can disable some of the
template specializations by turning this ``OFF``.
#. ``CERES_THREADING_MODEL [Default: CXX11_THREADS > OPENMP > NO_THREADS]``:
#. ``CERES_THREADING_MODEL [Default: CXX_THREADS > OPENMP > NO_THREADS]``:
Multi-threading backend Ceres should be compiled with. This will
automatically be set to only accept the available subset of threading
options in the CMake GUI.
@@ -904,8 +903,6 @@ The Ceres components which can be specified are:
#. ``Multithreading``: Ceres built with *a* multithreading library.
This is equivalent to (``CERES_THREAD != NO_THREADS``).
#. ``C++11``: Ceres built with C++11.
To specify one/multiple Ceres components use the ``COMPONENTS`` argument to
`find_package()
<http://www.cmake.org/cmake/help/v3.2/command/find_package.html>`_ like so:
+1 -1
View File
@@ -2226,7 +2226,7 @@ The three arrays will be:
Number of threads actually used by the solver for Jacobian and
residual evaluation. This number is not equal to
:member:`Solver::Summary::num_threads_given` if none of `OpenMP`
or `CXX11_THREADS` is available.
or `CXX_THREADS` is available.
.. member:: LinearSolverType Solver::Summary::linear_solver_type_given