From 554fd8c5195424bdbcabf5de30fdc183aba391bd Mon Sep 17 00:00:00 2001 From: upstream source tree Date: Sun, 15 Mar 2015 20:14:05 -0400 Subject: obtained gcc-4.6.4.tar.bz2 from upstream website; verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository. --- libstdc++-v3/doc/xml/manual/diagnostics.xml | 129 ++++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 libstdc++-v3/doc/xml/manual/diagnostics.xml (limited to 'libstdc++-v3/doc/xml/manual/diagnostics.xml') diff --git a/libstdc++-v3/doc/xml/manual/diagnostics.xml b/libstdc++-v3/doc/xml/manual/diagnostics.xml new file mode 100644 index 000000000..1a6a3f17d --- /dev/null +++ b/libstdc++-v3/doc/xml/manual/diagnostics.xml @@ -0,0 +1,129 @@ + + + + + Diagnostics + <indexterm><primary>Diagnostics</primary></indexterm> + + + + ISO C++ + + + library + + + + + + +
Exceptions + + + +
API Reference + + + All exception objects are defined in one of the standard header + files: exception, + stdexcept, new, and + typeinfo. + + + + The base exception object is exception, + located in exception. This object has no + string member. + + + + Derived from this are several classes that may have a + string member: a full hierarchy can be + found in the source documentation. + + + + Full API details. + + + + +
+
Adding Data to <classname>exception</classname> + + + The standard exception classes carry with them a single string as + data (usually describing what went wrong or where the 'throw' took + place). It's good to remember that you can add your own data to + these exceptions when extending the hierarchy: + + + struct My_Exception : public std::runtime_error + { + public: + My_Exception (const string& whatarg) + : std::runtime_error(whatarg), e(errno), id(GetDataBaseID()) { } + int errno_at_time_of_throw() const { return e; } + DBID id_of_thing_that_threw() const { return id; } + protected: + int e; + DBID id; // some user-defined type + }; + + +
+
+ +
Concept Checking + + + In 1999, SGI added concept checkers to their + implementation of the STL: code which checked the template + parameters of instantiated pieces of the STL, in order to insure + that the parameters being used met the requirements of the + standard. For example, the Standard requires that types passed as + template parameters to vector be + "Assignable" (which means what you think it means). The + checking was done during compilation, and none of the code was + executed at runtime. + + + Unfortunately, the size of the compiler files grew significantly + as a result. The checking code itself was cumbersome. And bugs + were found in it on more than one occasion. + + + The primary author of the checking code, Jeremy Siek, had already + started work on a replacement implementation. The new code was + formally reviewed and accepted into + the + Boost libraries, and we are pleased to incorporate it into the + GNU C++ library. + + + The new version imposes a much smaller space overhead on the generated + object file. The checks are also cleaner and easier to read and + understand. + + + + They are off by default for all versions of GCC. + They can be enabled at configure time with + --enable-concept-checks. + You can enable them on a per-translation-unit basis with + -D_GLIBCXX_CONCEPT_CHECKS. + + + + Please note that the checks are based on the requirements in the original + C++ standard, some of which have changed in the upcoming C++0x revision. + Additionally, some correct code might be rejected by the concept checks, + for example template argument types may need to be complete when used in + a template definition, rather than at the point of instantiation. + There are no plans to address these shortcomings. + + +
+ +
-- cgit v1.2.3