Lines Matching +full:non +full:- +full:standard
6 C++ is a general-purpose object-oriented programming language that is based on
22 The default C++ standard level (i.e. the language enforced by the
25 :kconfig:option:`CONFIG_STD_CPP98`. The oldest standard supported and
33 The C++ standard requires the ``main()`` function to have the return type of
49 * OS-specific C++ standard library classes (e.g. ``std::thread``,
62 * Standard Template Library (STL)
76 of the C++ standard library and application binary interface (ABI) functions to
84 C++ language support, and it does not implement any `Standard Template Library
86 the applications that implement their own (non-standard) class library and do
87 not rely on the Standard Template Library (STL) components.
89 Any application that makes use of the Standard Template Library (STL)
91 standard library support.
93 C++ Standard Library
96 The `C++ Standard Library`_ is a collection of classes and functions that are
97 part of the ISO C++ standard (``std`` namespace).
99 Zephyr does not include any C++ standard library implementation in source code
101 pre-built C++ standard library included in the C++ compiler toolchain.
103 To enable C++ standard library, select an applicable toolchain-specific C++
104 standard library type from the :kconfig:option:`CONFIG_LIBCPP_IMPLEMENTATION`
109 which is a fully featured C++ standard library that provides all features
110 required by the ISO C++ standard including the Standard Template Library (STL),
114 The following C++ standard libraries are supported by Zephyr:
119 A Zephyr subsystem that requires the features from the full C++ standard
122 compatible C++ standard library unless the Kconfig symbol for a specific C++
123 standard library is selected.
131 incompatibilities`_. C is not just a C++ subset. Standard levels (e.g.:
141 These compatibility issues affect header files dis-proportionally. Not
145 headers organization`_ that is typical in real-world projects. So, header
150 standard compliance (e.g.: MISRA).
154 practices" and lessons learned in a Zephyr-specific context. While a lot
155 of the information here is not Zephyr-specific, this section is not a
160 -------
167 quickly over a range of ``-std`` parameters: ``-std=c++98``,
168 ``-std=c++11``, etc.
173 -----------------------
182 error-prone, more readable and more flexible. On the other hand, C99
194 Interestingly, the new restrictions in C++20 can cause ``gcc -std=c++20``
196 ``gcc -std=c++17``. For example, ``gcc -std=c++17`` and older allow the
197 C-style mix of initializers and bare expressions. This fails to compile
198 with using ``gcc -std=c++20`` *with the same GCC version*.
202 should follow all C++20 rules and restrictions. Non-designated, pre-C99
210 unspecified in C99! It is the (expected) left-to-right order in
211 C++20. Other standard revisions may vary. In doubt, do not rely on
215 ----------------
228 - Do *not* enclose *designated* initializers with braces. This is
232 - Do enclose *bare* expressions with braces. This is required by C.
235 does allow omitting most braces in initializer expressions - but not
239 Some pre-C11 GCC versions support some form of anonymous unions. They
244 <https://github.com/zephyrproject-rtos/zephyr/commit/c15f029a7108>`_ and
248 .. _`C++ Standard Library`: https://en.wikipedia.org/wiki/C%2B%2B_Standard_Library
249 .. _`Standard Template Library (STL)`: https://en.wikipedia.org/wiki/Standard_Template_Library
252 https://github.com/zephyrproject-rtos/zephyr/issues/41543
254 https://gcc.gnu.org/pipermail/gcc-patches/2017-November/487584.html