From: Jonathan Wakely
diff --git a/libstdc++-v3/doc/html/faq.html b/libstdc++-v3/doc/html/faq.html index 439eb3a09b18..b87c9d92a59f 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::atstd::char_traits<char>::eofstring::clearostream::form and istream::scan
extensions
-basic_stringbuf, basic_stringstreamios::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 24f32a0045e2..900ccf310534 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 8997efa77eac..7ae8b2707024 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 f72ea4b41377..7be7e1a83c76 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 ec5ede385068..d8aba6b3f36b 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 7abcb3b40b01..bc4036768f23 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::atstd::char_traits<char>::eofstring::clearostream::form and istream::scan
extensions
-basic_stringbuf, basic_stringstreamios::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 d7216eba4037..efcb8f3c7c0e 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 fef479d6b331..48732f2ca46e 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++0xand-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 5a56534768a8..bdd5c0e3f599 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> |