| /* |
| Copyright (C) 2001-2021 Free Software Foundation, Inc. |
| See license.html for license. |
| |
| This just provides documentation for stuff that doesn't need to be in the |
| source headers themselves. It is a ".cc" file for the sole cheesy reason |
| that it triggers many different text editors into doing Nice Things when |
| typing comments. However, it is mentioned nowhere except the *cfg.in files. |
| |
| Some actual code (declarations) is exposed here, but no compiler ever |
| sees it. The decls must be visible to doxygen, and sometimes their real |
| declarations are not visible, or not visible in a way we want. |
| |
| Pieces separated by '// //' lines will usually not be presented to the |
| user on the same page. |
| */ |
| |
| // // // // // // // // // // // // // // // // // // // // // // // // |
| /** @namespace std |
| * @brief ISO C++ entities toplevel namespace is std. |
| */ |
| /** @namespace std::literals |
| * @brief ISO C++ inline namespace for literal suffixes. |
| */ |
| /** @namespace std::__detail |
| * @brief Implementation details not part of the namespace std interface. |
| */ |
| /** @namespace std::tr1 |
| * @brief ISO C++ TR1 entities toplevel namespace is std::tr1. |
| */ |
| /** @namespace std::tr1::__detail |
| * @brief Implementation details not part of the namespace std::tr1 interface. |
| */ |
| /** @namespace std::tr2 |
| * @brief Namespace for non-standard "TR2" extensions. |
| * @ingroup extensions |
| */ |
| /** @namespace std::tr2::__detail |
| * @brief Implementation details not part of the namespace std::tr2 interface. |
| */ |
| /** @namespace __gnu_cxx |
| * @brief GNU extensions for public use. |
| * @ingroup extensions |
| */ |
| /** @namespace __gnu_cxx::__detail |
| * @brief Implementation details not part of the namespace __gnu_cxx |
| * interface. |
| */ |
| /** @namespace __gnu_internal |
| * @brief GNU implemenation details, not for public use or |
| * export. Used only when anonymous namespaces cannot be substituted. |
| */ |
| /** @namespace std::experimental |
| * @brief Namespace for features defined in ISO Technical Specifications. |
| */ |
| // // // // // // // // // // // // // // // // // // // // // // // // |
| |
| /** |
| * @defgroup extensions Extensions |
| * |
| * Components generally useful that are not part of any standard. |
| */ |
| |
| /** @defgroup SGIextensions SGI |
| * @ingroup extensions |
| Because libstdc++ based its implementation of the STL subsections of |
| the library on the SGI 3.3 implementation, we inherited their extensions |
| as well. |
| |
| They are additionally documented in the |
| <a href="http://gcc.gnu.org/onlinedocs/libstdc++/documentation.html"> |
| online documentation</a>, a copy of which is also shipped with the |
| library source code (in .../docs/html/documentation.html). You can also |
| read the documentation <a href="http://www.sgi.com/tech/stl/">on SGI's |
| site</a>, which is still running even though the code is not maintained. |
| |
| <strong>NB</strong> that the following notes are pulled from various |
| comments all over the place, so they may seem stilted. |
| <hr> |
| */ |
| |
| /** @defgroup containers Containers |
| Containers are collections of objects. |
| |
| A container may hold any type which meets certain requirements, but the type |
| of contained object is chosen at compile time, and all objects in a given |
| container must be of the same type. (Polymorphism is possible by declaring a |
| container of pointers to a base class and then populating it with pointers to |
| instances of derived classes. Variant value types such as the @c any class |
| from <a href="http://www.boost.org/">Boost</a> can also be used. |
| |
| All contained types must be @c Assignable and @c CopyConstructible. |
| Specific containers may place additional requirements on the types of |
| their contained objects. |
| |
| Containers manage memory allocation and deallocation themselves when |
| storing your objects. The objects are destroyed when the container is |
| itself destroyed. Note that if you are storing pointers in a container, |
| @c delete is @e not automatically called on the pointers before destroying them. |
| |
| All containers must meet certain requirements, summarized in |
| <a href="tables.html">tables</a>. |
| |
| The standard containers are further refined into |
| @link sequences Sequences@endlink and |
| @link associative_containers Associative Containers@endlink. |
| @link unordered_associative_containers Unordered Associative Containers@endlink. |
| */ |
| |
| /** @defgroup sequences Sequences |
| * @ingroup containers |
| Sequences arrange a collection of objects into a strictly linear order. |
| |
| The differences between sequences are usually due to one or both of the |
| following: |
| - memory management |
| - algorithmic complexity |
| |
| As an example of the first case, @c vector is required to use a contiguous |
| memory layout, while other sequences such as @c deque are not. |
| |
| The prime reason for choosing one sequence over another should be based on |
| the second category of differences, algorithmic complexity. For example, if |
| you need to perform many inserts and removals from the middle of a sequence, |
| @c list would be ideal. But if you need to perform constant-time access to |
| random elements of the sequence, then @c list should not be used. |
| |
| All sequences must meet certain requirements, summarized in |
| <a href="tables.html">tables</a>. |
| */ |
| |
| /** @defgroup associative_containers Associative |
| * @ingroup containers |
| Associative containers allow fast retrieval of data based on keys. |
| |
| Each container type is parameterized on a @c Key type, and an ordering |
| relation used to sort the elements of the container. |
| |
| All associative containers must meet certain requirements, summarized in |
| <a href="tables.html">tables</a>. |
| */ |
| |
| /** @defgroup unordered_associative_containers Unordered Associative |
| * @ingroup containers |
| Unordered associative containers allow fast retrieval of data based on keys. |
| |
| Each container type is parameterized on a @c Key type, a @c Hash type |
| providing a hashing functor, and an ordering relation used to sort the |
| elements of the container. |
| |
| All unordered associative containers must meet certain requirements, |
| summarized in <a href="tables.html">tables</a>. */ |
| |
| /** |
| * @defgroup diagnostics Diagnostics |
| * |
| * Components for error handling, reporting, and diagnostic operations. |
| */ |
| |
| /** |
| * @defgroup concurrency Concurrency |
| * |
| * Components for concurrent operations, including threads, mutexes, |
| * and condition variables. |
| */ |
| |
| /** |
| * @defgroup experimental Technical Specifications |
| * |
| * Components specified by various Technical Specifications. |
| * |
| * As indicated by the std::experimental namespace and the header paths, |
| * the contents of these Technical Specifications are experimental and not |
| * part of the C++ standard. As such the interfaces and implementations may |
| * change in the future, and there is <STRONG> no guarantee of compatibility |
| * between different GCC releases </STRONG> for these features. |
| */ |