From 55d2e499d693df45f3065f8bf9f654fd816ae0fb Mon Sep 17 00:00:00 2001
From: Jonathan Wakely
diff --git a/libstdc++-v3/doc/html/faq.html b/libstdc++-v3/doc/html/faq.html index 439eb3a09b1..b87c9d92a59 100644 --- a/libstdc++-v3/doc/html/faq.html +++ b/libstdc++-v3/doc/html/faq.html @@ -4,7 +4,7 @@ 2008, 2010 FSF -
std::
not supportedisspace
from <cctype>
is a macro
+ vector::at
, deque::at
, string::at
std::char_traits<char>::eof
string::clear
ostream::form
and istream::scan
extensions
-basic_stringbuf
, basic_stringstream
ios::nocreate/ios::noreplace
.
+stream::attach(int fd)
-Container::iterator_type
is not necessarily Container::value_type*
Dynamic Shared Objects: Survey and Issues . ISO C++ J16/06-0046 - .
Versioning With Namespaces . ISO C++ J16/06-0083 - .
Binary Compatibility of Shared Libraries Implemented in C++
on GNU/Linux Systems
diff --git a/libstdc++-v3/doc/html/manual/algorithms.html b/libstdc++-v3/doc/html/manual/algorithms.html
index 24f32a0045e..900ccf31053 100644
--- a/libstdc++-v3/doc/html/manual/algorithms.html
+++ b/libstdc++-v3/doc/html/manual/algorithms.html
@@ -7,7 +7,7 @@
Standard Contents
 Next
Table of Contents
The neatest accomplishment of the algorithms sect1 is that all the work is done via iterators, not containers directly. This means two diff --git a/libstdc++-v3/doc/html/manual/api.html b/libstdc++-v3/doc/html/manual/api.html index 8997efa77ea..7ae8b270702 100644 --- a/libstdc++-v3/doc/html/manual/api.html +++ b/libstdc++-v3/doc/html/manual/api.html @@ -75,11 +75,11 @@ _Alloc_traits have been removed. __alloc to select an underlying allocator that satisfied memory allocation requests. The selection of this underlying allocator was not user-configurable. -
Table B.6. Extension Allocators
Allocator (3.4) | Header (3.4) | Allocator (3.[0-3]) | Header (3.[0-3]) |
---|---|---|---|
__gnu_cxx::new_allocator<T> | ext/new_allocator.h | std::__new_alloc | memory |
__gnu_cxx::malloc_allocator<T> | ext/malloc_allocator.h | std::__malloc_alloc_template<int> | memory |
__gnu_cxx::debug_allocator<T> | ext/debug_allocator.h | std::debug_alloc<T> | memory |
__gnu_cxx::__pool_alloc<T> | ext/pool_allocator.h | std::__default_alloc_template<bool,int> | memory |
__gnu_cxx::__mt_alloc<T> | ext/mt_allocator.h | ||
__gnu_cxx::bitmap_allocator<T> | ext/bitmap_allocator.h |
Releases after gcc-3.4 have continued to add to the collection +
Table B.6. Extension Allocators
Allocator (3.4) | Header (3.4) | Allocator (3.[0-3]) | Header (3.[0-3]) |
---|---|---|---|
__gnu_cxx::new_allocator<T> | ext/new_allocator.h | std::__new_alloc | memory |
__gnu_cxx::malloc_allocator<T> | ext/malloc_allocator.h | std::__malloc_alloc_template<int> | memory |
__gnu_cxx::debug_allocator<T> | ext/debug_allocator.h | std::debug_alloc<T> | memory |
__gnu_cxx::__pool_alloc<T> | ext/pool_allocator.h | std::__default_alloc_template<bool,int> | memory |
__gnu_cxx::__mt_alloc<T> | ext/mt_allocator.h | ||
__gnu_cxx::bitmap_allocator<T> | ext/bitmap_allocator.h |
Releases after gcc-3.4 have continued to add to the collection of available allocators. All of these new allocators are standard-style. The following table includes details, along with the first released version of GCC that included the extension allocator. -
Table B.7. Extension Allocators Continued
Allocator | Include | Version |
---|---|---|
__gnu_cxx::array_allocator<T> | ext/array_allocator.h | 4.0.0 |
__gnu_cxx::throw_allocator<T> | ext/throw_allocator.h | 4.2.0 |
+
Table B.7. Extension Allocators Continued
Allocator | Include | Version |
---|---|---|
__gnu_cxx::array_allocator<T> | ext/array_allocator.h | 4.0.0 |
__gnu_cxx::throw_allocator<T> | ext/throw_allocator.h | 4.2.0 |
Debug mode first appears.
Precompiled header support PCH support. diff --git a/libstdc++-v3/doc/html/manual/appendix_contributing.html b/libstdc++-v3/doc/html/manual/appendix_contributing.html index f72ea4b4137..7be7e1a83c7 100644 --- a/libstdc++-v3/doc/html/manual/appendix_contributing.html +++ b/libstdc++-v3/doc/html/manual/appendix_contributing.html @@ -7,7 +7,7 @@ Appendices
Table of Contents
The GNU C++ Library follows an open development model. Active contributors are assigned maintainer-ship responsibility, and given diff --git a/libstdc++-v3/doc/html/manual/appendix_free.html b/libstdc++-v3/doc/html/manual/appendix_free.html index ec5ede38506..d8aba6b3f36 100644 --- a/libstdc++-v3/doc/html/manual/appendix_free.html +++ b/libstdc++-v3/doc/html/manual/appendix_free.html @@ -7,7 +7,7 @@ Appendices
The biggest deficiency in free operating systems is not in the software--it is the lack of good free manuals that we can include in diff --git a/libstdc++-v3/doc/html/manual/appendix_gpl.html b/libstdc++-v3/doc/html/manual/appendix_gpl.html index 7abcb3b40b0..bc4036768f2 100644 --- a/libstdc++-v3/doc/html/manual/appendix_gpl.html +++ b/libstdc++-v3/doc/html/manual/appendix_gpl.html @@ -78,7 +78,7 @@
The precise terms and conditions for copying, distribution and modification follow. -
Table of Contents
std::
not supportedisspace
from <cctype>
is a macro
+ vector::at
, deque::at
, string::at
std::char_traits<char>::eof
string::clear
ostream::form
and istream::scan
extensions
-basic_stringbuf
, basic_stringstream
ios::nocreate/ios::noreplace
.
+stream::attach(int fd)
-Container::iterator_type
is not necessarily Container::value_type*
As noted previously, certain other tools are necessary for hacking on files that @@ -41,7 +41,7 @@ Support for C++11 dialect. in GCC try to stay in sync with each other in terms of versions of the auto-tools used, so please try to play nicely with the neighbors. -
Regenerate all generated files by using the command sequence
"autoreconf"
at the top level of the libstdc++ source
directory. The following will also work, but is much more complex:
diff --git a/libstdc++-v3/doc/html/manual/atomics.html b/libstdc++-v3/doc/html/manual/atomics.html
index d7216eba403..efcb8f3c7c0 100644
--- a/libstdc++-v3/doc/html/manual/atomics.html
+++ b/libstdc++-v3/doc/html/manual/atomics.html
@@ -7,7 +7,7 @@
Standard Contents
Table of Contents
Facilities for atomic operations.
diff --git a/libstdc++-v3/doc/html/manual/backwards.html b/libstdc++-v3/doc/html/manual/backwards.html index fef479d6b33..48732f2ca46 100644 --- a/libstdc++-v3/doc/html/manual/backwards.html +++ b/libstdc++-v3/doc/html/manual/backwards.html @@ -17,15 +17,15 @@ ISO Standard (e.g., statistical analysis). While there are a lot of really useful things that are used by a lot of people, the Standards Committee couldn't include everything, and so a lot of those âobviousâ classes didn't get included. -
Known Issues include many of the limitations of its immediate ancestor.
Portability notes and known implementation limitations are as follows.
At least some older implementations don't have std::ios_base
, so you should use std::ios::badbit
, std::ios::failbit
and std::ios::eofbit
and std::ios::goodbit
.
-
+
Known Issues include many of the limitations of its immediate ancestor.
Portability notes and known implementation limitations are as follows.
At least some older implementations don't have std::ios_base
, so you should use std::ios::badbit
, std::ios::failbit
and std::ios::eofbit
and std::ios::goodbit
.
+
In earlier versions of the standard,
- fstream.h
,
- ostream.h
- and istream.h
+ <fstream.h>
,
+ <ostream.h>
+ and <istream.h>
used to define
cout
, cin
and so on. ISO C++ specifies that one needs to include
- iostream
+ <iostream>
explicitly to get the required definitions.
Some include adjustment may be required.
This project is no longer maintained or supported, and the sources archived. For the desperate, @@ -44,7 +44,7 @@ considered replaced and rewritten. archived. The code is considered replaced and rewritten.
Portability notes and known implementation limitations are as follows. -
+
Some care is required to support C++ compiler and or library
implementation that do not have the standard library in
namespace std
.
@@ -55,7 +55,7 @@ considered replaced and rewritten.
First, see if the compiler has a flag for this. Namespace
back-portability-issues are generally not a problem for g++
compilers that do not have libstdc++ in std::
, as the
- compilers use -fno-honor-std
(ignore
+ compilers use -fno-honor-std
(ignore
std::
, :: = std::
) by default. That is,
the responsibility for enabling or disabling std::
is
on the user; the maintainer does not have to care about it. This
@@ -108,7 +108,7 @@ AC_DEFUN([AC_CXX_NAMESPACE_STD], [
AC_DEFINE(HAVE_NAMESPACE_STD,,[Define if g++ supports namespace std. ])
fi
])
-
The following illustrate implementation-allowed illegal iterator use, and then correct use.
@@ -121,9 +121,9 @@ AC_DEFUN([AC_CXX_NAMESPACE_STD], [
if (iterator)
won't work any more => use
if (iterator != iterator_type())
-
- Glibc 2.0.x and 2.1.x define ctype.h
functionality as macros
+ Glibc 2.0.x and 2.1.x define <ctype.h>
functionality as macros
(isspace, isalpha etc.).
This implementations of libstdc++, however, keep these functions @@ -138,7 +138,7 @@ int main() { std::isspace('X'); } std:: (__ctype_b[(int) ( ( 'X' ) )] & (unsigned short int) _ISspace ) ;
A solution is to modify a header-file so that the compiler tells
- ctype.h
to define functions
+ <ctype.h>
to define functions
instead of macros:
// This keeps isalnum, et al from being propagated as macros. @@ -146,15 +146,16 @@ std:: (__ctype_b[(int) ( ( 'X' ) )] & (unsigned short int) _ISspace ) ; # define __NO_CTYPE 1 #endif
- Then, include ctype.h
+ Then, include <ctype.h>
Another problem arises if you put a using namespace
- std;
declaration at the top, and include ctype.h
. This will result in
- ambiguities between the definitions in the global namespace
- (ctype.h
) and the
+ std; declaration at the top, and include
+ <ctype.h>
. This will
+ result in ambiguities between the definitions in the global namespace
+ (<ctype.h>
) and the
definitions in namespace std::
(<cctype>
).
-
One solution is to add an autoconf-test for this:
AC_MSG_CHECKING(for container::at) @@ -180,7 +181,7 @@ AC_DEFINE(HAVE_CONTAINER_AT)],
If you are using other (non-GNU) compilers it might be a good idea
to check for string::at
separately.
-
Use some kind of autoconf test, plus this:
#ifdef HAVE_CHAR_TRAITS @@ -188,7 +189,7 @@ AC_DEFINE(HAVE_CONTAINER_AT)], #else #define CPP_EOF EOF #endif -
There are two functions for deleting the contents of a string:
clear
and erase
(the latter returns the
string).
@@ -206,16 +207,16 @@ erase(size_type __pos = 0, size_type __n = npos)
Unfortunately, clear
is not implemented in this
version, so you should use erase
(which is probably
faster than operator=(charT*)
).
-
These are no longer supported. Please use stringstreams instead. -
Although the ISO standard i/ostringstream
-classes are
- provided, (sstream
), for
+ provided, (<sstream>
), for
compatibility with older implementations the pre-ISO
- i/ostrstream
(strstream
) interface is also provided,
+ i/ostrstream
(<strstream>
) interface is also provided,
with these caveats:
strstream
is considered to be deprecated
@@ -299,14 +300,14 @@ any = temp;
Another example of using stringstreams is in this howto.
There is additional information in the libstdc++-v2 info files, in particular âinfo iostreamâ. -
Earlier GCC releases had a somewhat different approach to threading configuration and proper compilation. Before GCC 3.0, configuration of the threading model was dictated by compiler @@ -364,8 +365,9 @@ libstdc++-v3. of the SGI STL (version 3.3), with extensive changes.
A more formal description of the V3 goals can be found in the official design document. -
Portability notes and known implementation limitations are as follows.
The pre-ISO C++ headers
- (iostream.h
, defalloc.h
etc.) are
+
Portability notes and known implementation limitations are as follows.
The pre-ISO C++ headers
+ (<iostream.h>
,
+ <defalloc.h>
etc.) are
available, unlike previous libstdc++ versions, but inclusion
generates a warning that you are using deprecated headers.
This compatibility layer is constructed by including the @@ -432,23 +434,23 @@ AC_DEFUN([AC_HEADER_PRE_STDCXX], [ fi ])
Porting between pre-ISO headers and ISO headers is simple: headers
-like vector.h
can be replaced with vector
and a using
+like <vector.h>
can be replaced with <vector>
and a using
directive using namespace std;
can be put at the global
scope. This should be enough to get this code compiling, assuming the
other usage is correct.
-
At this time most of the features of the SGI STL extension have been +
At this time most of the features of the SGI STL extension have been
replaced by standardized libraries.
In particular, the unordered_map
and
unordered_set
containers of TR1 and C++ 2011
are suitable replacements for the non-standard
hash_map
and hash_set
containers in the SGI STL.
-
Header files hash_map
and hash_set
moved
-to ext/hash_map
and ext/hash_set
,
+
Header files <hash_map>
and <hash_set>
moved
+to <ext/hash_map>
and <ext/hash_set>
,
respectively. At the same time, all types in these files are enclosed
in namespace __gnu_cxx
. Later versions deprecate
-these files, and suggest using TR1's unordered_map
-and unordered_set
instead.
+these files, and suggest using TR1's <unordered_map>
+and <unordered_set>
instead.
The extensions are no longer in the global or std
namespaces, instead they are declared in the __gnu_cxx
namespace. For maximum portability, consider defining a namespace
@@ -510,7 +512,7 @@ AC_DEFUN([AC_HEADER_EXT_HASH_SET], [
AC_DEFINE(HAVE_EXT_HASH_SET,,[Define if ext/hash_set is present. ])
fi
])
-
The existence of ios::nocreate
being used for
input-streams has been confirmed, most probably because the author
thought it would be more correct to specify nocreate explicitly. So
@@ -521,7 +523,7 @@ open the file for reading, check if it has been opened, and then
decide whether you want to create/replace or not. To my knowledge,
even older implementations support app
, ate
and trunc
(except for app
?).
-
Phil Edwards writes: It was considered and rejected for the ISO
@@ -536,7 +538,7 @@ No stream::attach(int fd)
stream-constructor.
An extension is available that implements this.
- ext/stdio_filebuf.h
contains a derived class called
+ <ext/stdio_filebuf.h>
contains a derived class called
__gnu_cxx::stdio_filebuf
.
This class can be constructed from a C FILE*
or a file
descriptor, and provides the fd()
function.
@@ -544,7 +546,7 @@ No stream::attach(int fd)
For another example of this, refer to
fdstream example
by Nicolai Josuttis.
-
Check for complete library coverage of the C++1998/2003 standard.
@@ -612,7 +614,7 @@ AC_DEFUN([AC_HEADER_STDCXX_98], [ AC_DEFINE(STDCXX_98_HEADERS,,[Define if ISO C++ 1998 header files are present. ]) fi ]) -
Check for library coverage of the TR1 standard.
@@ -689,7 +691,7 @@ AC_DEFUN([AC_HEADER_TR1_UNORDERED_SET], [ AC_DEFINE(HAVE_TR1_UNORDERED_SET,,[Define if tr1/unordered_set is present. ]) fi ]) -
Check for baseline language coverage in the compiler for the C++11 standard.
@@ -701,9 +703,9 @@ AC_DEFUN([AC_COMPILE_STDCXX_11], [ AC_LANG_CPLUSPLUS AC_TRY_COMPILE([ template <typename T> - struct check + struct check final { - static_assert(sizeof(int) <= sizeof(T), "not big enough"); + static constexpr T value{ __cplusplus }; }; typedef check<check<bool>> right_angle_brackets; @@ -712,8 +714,10 @@ AC_DEFUN([AC_COMPILE_STDCXX_11], [ decltype(a) b; typedef check<int> check_type; - check_type c; - check_type&& cr = c;],, + check_type c{}; + check_type&& cr = static_cast<check_type&&>(c); + + static_assert(check_type::value == 201103L, "C++11 compiler");],, ac_cv_cxx_compile_cxx11_native=yes, ac_cv_cxx_compile_cxx11_native=no) AC_LANG_RESTORE ]) @@ -726,9 +730,9 @@ AC_DEFUN([AC_COMPILE_STDCXX_11], [ CXXFLAGS="$CXXFLAGS -std=c++11" AC_TRY_COMPILE([ template <typename T> - struct check + struct check final { - static_assert(sizeof(int) <= sizeof(T), "not big enough"); + static constexpr T value{ __cplusplus }; }; typedef check<check<bool>> right_angle_brackets; @@ -737,8 +741,10 @@ AC_DEFUN([AC_COMPILE_STDCXX_11], [ decltype(a) b; typedef check<int> check_type; - check_type c; - check_type&& cr = c;],, + check_type c{}; + check_type&& cr = static_cast<check_type&&>(c); + + static_assert(check_type::value == 201103L, "C++11 compiler");],, ac_cv_cxx_compile_cxx11_cxx=yes, ac_cv_cxx_compile_cxx11_cxx=no) CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE @@ -752,9 +758,9 @@ AC_DEFUN([AC_COMPILE_STDCXX_11], [ CXXFLAGS="$CXXFLAGS -std=gnu++11" AC_TRY_COMPILE([ template <typename T> - struct check + struct check final { - static_assert(sizeof(int) <= sizeof(T), "not big enough"); + static constexpr T value{ __cplusplus }; }; typedef check<check<bool>> right_angle_brackets; @@ -763,8 +769,10 @@ AC_DEFUN([AC_COMPILE_STDCXX_11], [ decltype(a) b; typedef check<int> check_type; - check_type c; - check_type&& cr = c;],, + check_type c{}; + check_type&& cr = static_cast<check_type&&>(c); + + static_assert(check_type::value == 201103L, "C++11 compiler");],, ac_cv_cxx_compile_cxx11_gxx=yes, ac_cv_cxx_compile_cxx11_gxx=no) CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE @@ -777,6 +785,8 @@ AC_DEFUN([AC_COMPILE_STDCXX_11], [ fi ])
Check for library coverage of the C++2011 standard. + (Some library headers are commented out in this check, they are + not currently provided by libstdc++).
# AC_HEADER_STDCXX_11 AC_DEFUN([AC_HEADER_STDCXX_11], [ @@ -802,6 +812,7 @@ AC_DEFUN([AC_HEADER_STDCXX_11], [ #include <cmath> #include <csetjmp> #include <csignal> + // #include <cstdalign> #include <cstdarg> #include <cstdbool> #include <cstddef> @@ -811,21 +822,29 @@ AC_DEFUN([AC_HEADER_STDCXX_11], [ #include <cstring> #include <ctgmath> #include <ctime> + // #include <cuchar> #include <cwchar> #include <cwctype> #include <algorithm> #include <array> + #include <atomic> #include <bitset> + #include <chrono> + // #include <codecvt> #include <complex> + #include <condition_variable> #include <deque> #include <exception> + #include <forward_list> #include <fstream> #include <functional> + #include <future> #include <iomanip> #include <ios> #include <iosfwd> #include <iostream> + #include <initializer_list> #include <istream> #include <iterator> #include <limits> @@ -833,19 +852,25 @@ AC_DEFUN([AC_HEADER_STDCXX_11], [ #include <locale> #include <map> #include <memory> + #include <mutex> #include <new> #include <numeric> #include <ostream> #include <queue> #include <random> + #include <ratio> #include <regex> + #include <scoped_allocator> #include <set> #include <sstream> #include <stack> #include <stdexcept> #include <streambuf> #include <string> + #include <system_error> + #include <thread> #include <tuple> + #include <typeindex> #include <typeinfo> #include <type_traits> #include <unordered_map> @@ -862,7 +887,8 @@ AC_DEFUN([AC_HEADER_STDCXX_11], [ AC_DEFINE(STDCXX_11_HEADERS,,[Define if ISO C++11 header files are present. ]) fi ]) -
As is the case for TR1 support, these autoconf macros can be made for a finer-grained, per-header-file check. For <unordered_map> +
As is the case for TR1 support, these autoconf macros can be made for a finer-grained, per-header-file check. For
+<unordered_map>
# AC_HEADER_UNORDERED_MAP AC_DEFUN([AC_HEADER_UNORDERED_MAP], [ @@ -909,21 +935,21 @@ AC_DEFUN([AC_HEADER_UNORDERED_SET], [ but the autoconf checks above could be extended to test for incomplete C++11 support with-std=c++0x
and-std=gnu++0x
. -
Migration guide for GCC-3.2 diff --git a/libstdc++-v3/doc/html/manual/bk01pt02.html b/libstdc++-v3/doc/html/manual/bk01pt02.html index 5a56534768a..bdd5c0e3f59 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt02.html +++ b/libstdc++-v3/doc/html/manual/bk01pt02.html @@ -13,13 +13,13 @@
Table 17.1. Debugging Containers
Container | Header | Debug container | Debug header |
---|---|---|---|
std::bitset | bitset | __gnu_debug::bitset | <debug/bitset> |
std::deque | deque | __gnu_debug::deque | <debug/deque> |
std::list | list | __gnu_debug::list | <debug/list> |
std::map | map | __gnu_debug::map | <debug/map> |
std::multimap | map | __gnu_debug::multimap | <debug/map> |
std::multiset | set | __gnu_debug::multiset | <debug/set> |
std::set | set | __gnu_debug::set | <debug/set> |
std::string | string | __gnu_debug::string | <debug/string> |
std::wstring | string | __gnu_debug::wstring | <debug/string> |
std::basic_string | string | __gnu_debug::basic_string | <debug/string> |
std::vector | vector | __gnu_debug::vector | <debug/vector> |
In addition, when compiling in C++11 mode, these additional +
Table 17.1. Debugging Containers
Container | Header | Debug container | Debug header |
---|---|---|---|
std::bitset | bitset | __gnu_debug::bitset | <debug/bitset> |
std::deque | deque | __gnu_debug::deque | <debug/deque> |
std::list | list | __gnu_debug::list | <debug/list> |
std::map | map | __gnu_debug::map | <debug/map> |
std::multimap | map | __gnu_debug::multimap | <debug/map> |
std::multiset | set | __gnu_debug::multiset | <debug/set> |
std::set | set | __gnu_debug::set | <debug/set> |
std::string | string | __gnu_debug::string | <debug/string> |
std::wstring | string | __gnu_debug::wstring | <debug/string> |
std::basic_string | string | __gnu_debug::basic_string | <debug/string> |
std::vector | vector | __gnu_debug::vector | <debug/vector> |
In addition, when compiling in C++11 mode, these additional containers have additional debug capability. -
Table 17.2. Debugging Containers C++11
Container | Header | Debug container | Debug header |
---|---|---|---|
std::unordered_map | unordered_map | __gnu_debug::unordered_map | <debug/unordered_map> |
std::unordered_multimap | unordered_map | __gnu_debug::unordered_multimap | <debug/unordered_map> |
std::unordered_set | unordered_set | __gnu_debug::unordered_set | <debug/unordered_set> |
std::unordered_multiset | unordered_set | __gnu_debug::unordered_multiset | <debug/unordered_set> |