1 Allowed language features
2 =========================
4 |Gromacs| uses C99 for C files and C++11 for C++ files.
5 C++ has a lot of features, but to keep the source code maintainable and easy to read,
6 we will avoid using some of them in Gromacs code. The basic principle is to keep things
8 For compatiblity certain work-arounds are required because not all compilers support
11 * MSVC supports only a subset of C99 and work-arounds are required in those cases.
12 * Before 7.0 (partial support in 6.5) CUDA didn't support C++11. Therefore any
13 header file which is needed (or likely will be nedded) by CUDA should not use C++11.
14 * We should be able to use virtually all C++ features outside of the header files
15 required by CUDA code (and OpenCL kernels), since we have gradually moved to
16 compilers that have full support for C++11.
18 .. TODO: Copy important points from http://www.gromacs.org/index.php?title=Developer_Zone/Programming_Guide/Allowed_C%2B%2B_Features
23 |Gromacs| code must support the lowest common denominator of C++11 standard library
24 features available on supported platforms.
25 Some modern features are useful enough to warrant back-porting.
26 Consistent and forward-compatible headers are provided in ``src/gromacs/compat/``
27 as described in the `Library documentation <../doxygen/html-lib/group__group__compatibility.xhtml>`_