Create plan to drop Trilinos support for C++98 preventing the usage of C++11
Created by: bartlettroscoe
CC: @trilinos/framework, @trilinos/teuchos, @trilinos/thyra, @trilinos/nox, @maherou
Description:
The requirement to maintain C++98 support for older packages like Teuchos, Thyra, NOX and others that are still being developed and need much more development in the near future, is creating a major capability and productivity impediment for projects like ATDM. (For example, the refactoring of Thyra to improve the design, usage, and performance of RTOps will require C++11.) But we can't use C++11 in these packages because there are still some Trilinos customers that still require that these packages build with GCC 4.4.7 and C++11 turned off. And just the usage of auto
alone will significantly improve the development and maintenance of templated code. (And then there is the performance improvements of using move constructors and assignment operators, etc.)
To address this problem we could either, for example:
- Require all Trilinos customers to upgrade their compilers to GCC 4.9.3 or newer to allow C++11 to be used in all Trilinos packages from Teuchos on down the dependency chain.
or:
- Create a fork of Trilinos for C++98 packages needed by these customers and then allow the main Trilinos 'develop' and 'master' branches require C++11 for all packages from Teuchos on down the dependency chain. (This would require the Trilinos development team to continue to provide patches, releases, and address other issues on this fork, so this fork could not be completely static but it should see very little development.)
But eventually every Trilinos customer will have a C++11 compiler so eventually we will be going with option-1 so going with option-2 in the short-term may not be too bad.