The variations are:

These properties specify language standard versions which are requested. When a newer standard is specified than is supported by the compiler, then it will fallback to the latest supported standard. This "decay" behavior may be controlled with the <LANG>_STANDARD_REQUIRED target property.

Note that the actual language standard used may be higher than that specified by <LANG>_STANDARD, regardless of the value of <LANG>_STANDARD_REQUIRED. In particular, transitive usage requirements or the use of compile features can raise the required language standard above what <LANG>_STANDARD specifies.

These properties are initialized by the value of the CMAKE_<LANG>_STANDARD variable if it is set when a target is created.

For supported values and CMake versions see the respective pages. To control compiler-specific extensions see <LANG>_EXTENSIONS.

See the cmake-compile-features(7) manual for information on compile features and a list of supported compilers.