C++-annotations (12.4.0) * Added the multi-index index operator, available since c++-23. * Covered std::byte and an alternative implementation. * Updated the description of how to implement class constructors that may throw exceptions. * Typo corrections. -- Frank B. Brokken Tue, 15 Aug 2023 09:39:01 -0700 C++-annotations (12.3.1) * Due to a small oversight, Debian needed a new source archive, hence the minor subversion upgrade. -- Frank B. Brokken Fri, 28 Apr 2023 19:18:19 +0200 C++-annotations (12.3.0) * removed section 'Returning types nested under class templates' (advancedtemplates/returnnested), sf since C++20 * updated the Generic Algorithm chapter: merged the descriptions of very similar algorithms (like 'copy' and 'copy_if'), added the descriptions of several new algorithms, added a section about execution policies and updated the descriptions of generic algorithms supporting execution policies. Added a new section about handling raw memory. * the memory chapter's section about 'placement new' contains a forward link to the STL section about initializing raw memory. * repaired typos * during the 2022-2023 Academic Year many typo reports and suggestions for updating sections were submitted by the C++ course participants Jeroen Lammersma (jeroen at lammersma dot dev) and Channa Dias Perera (cdiasperera at gmail dot com): thanks, gentlemen, for your valuable contributions! -- Frank B. Brokken Fri, 28 Apr 2023 11:42:22 +0200 C++-annotations (12.2.0) * Added new section covering 'std::string_view'. * Added new section covering 'std::osyncstream'. * Added sections covering 'bound friends'. * 'std::iterator' is deprecated: the section about constructing iterators was rewritten. * 'operator[]() const' should return 'Type const &': its section was adapted accordingly. * 'using' declarations are now preferred over 'typedef' definitions: 'typedef' definitions were replaced by 'using' declarations. * Repaired series of typos. -- Frank B. Brokken Sat, 05 Mar 2022 10:42:56 +0100 C++-annotations (12.1.0) * Added __file_clock::to_sys. * Repaired the descriptions of pop*() members of various abstract containers. * Reorganized the description of the facilities of the filesystem::path class. * Repaired series of typos. -- Frank B. Brokken Sun, 20 Feb 2022 12:20:13 +0100 C++-annotations (12.0.0) * Added a new chapter about coroutines. * throw(typelist) specifications were removed from the language, and the section covering throw(typelist) was removed from the C++ Annotations. * Added a new section to the multi-threading chapter about jthreads * Repaired an error in the US-letter formatted pdf document -- Frank B. Brokken Sat, 25 Dec 2021 15:04:32 +0100 C++-annotations (11.6.0) * Added stl/optional.yo covering std::optional * Added generic/iota.yo covering std::iota * The multi-threading chapter covers threads running member functions -- Frank B. Brokken Thu, 24 Jun 2021 10:11:25 +0200 C++-annotations (11.5.0) * Added stl/tie.yo about std::tie * Repaired several typos and added missing code examples. -- Frank B. Brokken Fri, 20 Nov 2020 21:07:49 +0100 C++-annotations (11.4.1) * Updated the descriptions of some functions in the filesystem namespace. * Fixed some typos * Following a fix suggested by Tony Mancill the US variants of the ps/pdf formats of the C++-annotations are now using the 'letter' paper format -- Frank B. Brokken Sun, 30 Aug 2020 13:36:27 +0200 C++-annotations (11.4.0) * Attributes covered in the 'Intro' chapter were moved to the 'Attributes' section in the 'First Impression' chapter. * The section about Concepts (23.13) received a complete overhaul. * Added FORCE_SOURCE_DATE=1 and SOURCE_DATE_EPOCH=0 to latex runs resulting in identical .dvi and .ps documents as long as the content of the source documents remains unchanged. -- Frank B. Brokken Wed, 04 Mar 2020 11:47:30 +0100 C++-annotations (11.3.0) * Added sections covering the three-way comparison operator (<=>) and various predefined comparison classes. * A link to the Annotations's index is provided in the pdf-version of the Annotations (it was already provided in the html version) * replaced string() constructions by string{} constructions -- Frank B. Brokken Mon, 16 Dec 2019 11:31:20 +0100 C++-annotations (11.2.1) * Just one day after 11.2.0 Jurjen Bokma noted an annoying flaw in the description of the move constructor (section ref(MOVECONS)). Enough reason to fix that in this release. * In addition the description of the copy constructor's characteristics now mentions that the CC should shed excess capacity. -- Frank B. Brokken Tue, 19 Nov 2019 21:09:07 +0100 C++-annotations (11.2.0) * The std::filesystem namespace coverage received an overhaul and is moved to the Namespaces chapter * The std::chrono namespace coverage received an overhaul and is moved to the Namespaces chapter * The sections covering error_code, error_category and error_condition were rewritten. They are now covered in the chapters Namespaces, Exceptions, and Advanced Templates chapter. * Added the (internal use) program src/verb compacting verb-macros. * Fixed typos and inconsistencies. -- Frank B. Brokken Mon, 18 Nov 2019 13:29:31 +0100 C++-annotations (11.1.1) * Clarified the use of lower_bound and upper_bound. * The introductory section of Nested Classes was updated * Typo corrections -- Frank B. Brokken Fri, 17 May 2019 14:39:09 +0200 C++-annotations (11.1.0) * Rewrote major parts of the sections covering concepts -- Frank B. Brokken Sat, 09 Feb 2019 10:46:52 +0100 C++-annotations (11.0.0) * New major version covers concepts, modules, and transactional memory * Several sections were rewritten: unrestricted unions, lambda expressions, the std::filesystem namespace, structured binding declarations -- Frank B. Brokken Sun, 02 Dec 2018 16:33:07 +0100 C++-annotations (10.9.3) * Migrated from Github to Gitlab * WIP adding elements of the upcoming c++2a standard. -- Frank B. Brokken Mon, 25 Jun 2018 12:48:37 +0200 C++-annotations (10.9.2) * Modified src/trim so that it can be used as stand-alone program. * Version and year information are now in the file VERSION: build programs updates the file yo/version.yo accordingly. -- Frank B. Brokken Thu, 18 Jan 2018 13:16:24 +0100 C++-annotations (10.9.1) * Various typos were corrected * Removed the nbsp() macro from preamble.yo -- Frank B. Brokken Thu, 18 Jan 2018 08:34:39 +0100 C++-annotations (10.9.0) * Added extensive coverage of system_error (chapters Exception, and Advanced Templates). * Covered the namespace std::(experimental::)filesystem * Added the constructor expecting an initializer-list to the std::string chapter (chapter 5). * Explicit references to the C++17 standard were removed. -- Frank B. Brokken Mon, 04 Dec 2017 17:22:06 +0100 C++-annotations (10.8.1) * Fixed additional typos uncovered by Amazon. -- Frank B. Brokken Thu, 08 Jun 2017 12:32:50 +0200 C++-annotations (10.8.0) * Added a new section (Introduction: upcoming C++17 features) providing an overview of new language features introduced by the C++17 standard * Many typos and suboptimally formulated statements were fixed, many of them very thoroughly compiled by Maurits Silvis. * Coverage of (considered obsolete) binders and negators was discontinued. * Internally, the previously used script scripts/patchlatexidx is no longer required. -- Frank B. Brokken Thu, 08 Jun 2017 09:04:27 +0200 C++-annotations (10.7.2) * The section about implementing binary operators was fundamentally rewritten thanks to suggestions offered by Wiebe-Marten Wijnja. * The section covering the ::template syntax received an example showing how to call a static member function defined in a (base) class template from a class template that is derived from that (base) class template. -- Frank B. Brokken Sun, 12 Feb 2017 14:22:58 +0100 C++-annotations (10.7.1) * The section about implementing binary operators could somewhat be simplified. Also, some additional clarifications were added. * The SFINAE section was provided with explicit links to sections where the sfinae principle is used. -- Frank B. Brokken Sat, 04 Feb 2017 11:34:26 +0100 C++-annotations (10.7.0) * The sections about implementing binary operators received an overhaul. * The section `Adding binary operators to classes' was rewritten. * Added descriptions of operator new[](size) and operator delete[](pointer). * The section about lambda-expressions was extended with descriptions of new features offered by C++17. * The section `Pointer sizes' in the chapter about pointers to members contains an explanation as to why pointers to members are larger than ordinary pointers. * Added preview intro/cpp17.yo on the next C++17 standard. * Added a section about selection statements with initializers to the `First Impression Of C++' chapter. * Added a paragraph about increment/decrement operators being deprecated for bool type of variables to overloading/increment.yo. * Added a section about std::exchange to the Generic Algorithms chapter. * Added a section about `if constexpr' to the Function Templates chapter. * Added a section about folding expressions to the Class Templates chapter. * Added a section about class templates template argument deduction. * The section about using non-default constructors now contains thread-safe examples. * Fixed several typos, processed several suggestions received from readers. -- Frank B. Brokken Sat, 28 Jan 2017 13:05:50 +0100 C++-annotations (10.6.0) * Added new section (Lvalues, rvalues and more, first/lvalues.yo) about various kinds of l/rvalues distinguished by C++. * Added new section (Standard Exceptions: to use or not to use?, exceptions/usestandard.yo) about the distinction between standard and non-standard exceptions. * Section 'Allocating arrays' (in chapter 'Classes and Memory Allocation') now describes how to initialize memory using the 'new Type[size]()' syntax. * Section 'explicit conversion operators' (in chapter 'More Operator Overloading) received an overhaul. * Changed uses of shared_ptr objects to unique_ptr objects in stl/uniqueptr.yo. -- Frank B. Brokken Sun, 30 Oct 2016 10:25:03 +0100 C++-annotations (10.5.1) * Fixed various typos and completed several cosmetic modifications -- Frank B. Brokken Sun, 24 Jul 2016 07:41:38 +0200 C++-annotations (10.5.0) * Rewrote the section about converting time to text, covering std::localtime, std::gmtime, std::put_time as well as the full table of put_time's format specifiers. * Removed the sections at the beginning of each chapter encouraging readers to send in suggestions for improvements. Instead, this encouragement is now shown at the end of the Annotation's `abstract'. * Updated the kindle-book conversion script, so that cplusplus.css is not used with the kindle book construction. * Several typos were fixed. -- Frank B. Brokken Wed, 23 Dec 2015 13:09:08 +0100 C++-annotations (10.4.1-pre) * Improved the html layout, following suggestions by Harmen Stoppels * Removed repeated 'mailus' files from chapter openings. The 'mailus' info is now shown as part of the abstract. -- Frank B. Brokken Sat, 19 Dec 2015 22:19:18 +0100 C++-annotations (10.4.0) * Added a section about reference bindings to the Overloading chapter * Added cplusplus.css which can be used to fine-tune the layout of the Annotatiions' html conversion. * Standardized the installation procedure * Fixed typos -- Frank B. Brokken Sun, 11 Dec 2015 17:12:31 +0100 C++-annotations (10.3.0) * Added new sections about expression templates, about attributes, about shared mutexes, about shared locks, about heterogeneous lookups, about sized deallocation functions, and about moving and swapping streams * Added new C++14 elements to relevant sections * Reorganized the section about lambda expression * Added the file ./compiler.im providing all #defines for compiling the support programs. See that file for specific information. * Fixed a compilation problem encountered with g++-5. * Fixed some typos. -- Frank B. Brokken Sun, 16 Aug 2015 15:21:10 +0200 C++-annotations (10.2.0) * Rewrote the sections covering the regular expression matching classes. * The section about lambda expression also covers generic lambda expressions. * The coverage of binders now concentrates on stl::bind. * Added a section about stl::placeholders to chapter 4 (Namespaces) * Removed superfluous 'return 0;' statements from main functions. * Conversion related stamp files (e.g., html-stamp) no longer used. Build-commands are now unconditionally executed. * Added a section to class templates covering a bare bones implementation of not_fn, which will likely be added in C++17. * Added some notes about C++17. * Several cosmetic improvements were made. * Html files now use html5. -- Frank B. Brokken Thu, 28 May 2015 12:06:01 +0200 C++-annotations (10.1.0) * Typos and added a section about regular expression, moving the topic from containers to stl. * Fixed various typos and inconsistencies -- Frank B. Brokken Wed, 24 Dec 2014 19:54:28 +0100 C++-annotations (10.0.0) * Added new chapter: Multi Threading, containing all previously defined sections related to multi threading. A paragraph about std::distance was added, some typos were repaired, and other cosmetic changes were made to this version. * Redefined the standard verb(...) yodl macro by a version which does not do the extra newlines before and after the verbatim section. * The build script was extended. The support script `pathbuild' is not used, but can be used in cases where an additional element to PATH must be used. * All verbatim file inclusions are now run through the new release of yodlverbinsert. -- Frank B. Brokken Thu, 30 Oct 2014 20:17:12 +0100 C++-annotations (9.9.1) * Fixed LaTex formatting problems rendering (in particular) the cplusplusus.ps/pdf files (note: cplusplusUS) less useful (cf. scythal's user review on http://sourceforge.net/projects/cppannotations/). -- Frank B. Brokken Thu, 05 Jun 2014 14:16:31 +0200 C++-annotations (9.9.0) * STL facilities for specifying absolute and relative time were rewritten and are now in a separate section, instead of using subsections of the section about Multi Threading. Sections about condition_variables were also rewritten. * c++0x has been replaced by c++11 -- Frank B. Brokken Tue, 03 Jun 2014 13:24:54 +0200 C++-annotations (9.8.2) * Extended and completed the list of available type traits (in section `Available Type Traits', chapter `Advanced Templates') -- Frank B. Brokken Fri, 07 Mar 2014 14:49:22 +0100 C++-annotations (9.8.1) * Added explanatory paragraphs about using static_casts to derived classes using shared_ptr or unique_ptr objects holding pointers to base classes (cf. the class 'unique_ptr' and Casting shared pointers) * Added explanatory paragraphs about defining (const_)iterators and (const_)reverse_iterators (cf. 21.14.2: Implementing a `reverse_iterator'). * Added an example showing how to declare a bound friend function template to a class template (cf. Templates instantiated for specific types as friends) C++-annotations (9.8.0) * Added a section about static polymorphism to the class templates chapter * Removed the `text to anything convertor' section, which is now obsoleted by existing std::string conversion functions. * Removed the C++11 labels from section headers, as the C++11 standard has been implemented by g++ 4.8.2. Note that the --std=c++11 compiler flag is still required. * Several typos were fixed -- Frank B. Brokken Sat, 18 Jan 2014 13:55:37 +0100 C++-annotations (9.7.3) * Fixed several typos. -- Frank B. Brokken Wed, 21 Aug 2013 15:00:30 +0200 C++-annotations (9.7.2) * Repaired some minor flaws, which were still waiting to be processed. * Added for internal use steps to create a Kindle version of the Annotations (see also http://www.amazon.com, look for ('c++ annotations') -- Frank B. Brokken Thu, 30 May 2013 12:45:58 +0200 C++-annotations (9.7.1) * Added changes of 9.7.0 to the Annotations' `what's new' section * Release 9.7.0 was not published as a separate release. -- Frank B. Brokken Thu, 30 May 2013 09:43:34 +0200 C++-annotations (9.7.0) * Added several new sections about time specification (stl/time, etc.) * Added new section about 'this_thread' (stl/thisthread) * Added new section about locks (stl/locks) * Added new section (classes/ambiguity) about Ambiguity Resolution. * Added new section 'system_error' (exception/systemerror) * Added new section 'the class `error category'' (exception/errorcategory) * Added new section 'the class `error code'' (exception/errorcode) * Rewrote all sections about multi-threading) * Rewrote the section about lambda expressions * Replaced references to `ascii-z string' by `null terminated byte string' (NTBS), following the C++11 standard's terminology. * Repaired flaws in function names and return tyes of several sto* functions in string/convertors.yo * `0b' constants are not mentioned in the C++11 standard (but maybe compiler supported) * In section references `C++11, 4.7' the `, 4.7' was dropped * intro/main.yo was updated -- Frank B. Brokken Wed, 29 May 2013 20:11:20 +0200 C++-annotations (9.6.0) * Updated the list of C++ keywords * Added advancedtemplates/noexcept.yo covering the noexcept keyword * Updated the string chapter -- Frank B. Brokken Thu, 10 Jan 2013 20:23:05 +0100 C++-annotations (9.5.0) * Updated (to the current C++11 state) the reference of member functions of the Abstract Containers. * Added a new section (Allocators) just before introducing the sequential containers. * Rephrased sentenses like 'this member s' to 's', in particular in the chapter on Abstract Containers. * Repaired typos, reformulated the section about nested namespaces (Meir Shani). -- Frank B. Brokken Fri, 14 Dec 2012 12:53:53 +0100 C++-annotations (9.4.0) * Added new section make_shared in the stl chapter. -- Frank B. Brokken Thu, 28 Jun 2012 20:48:47 +0200 C++-annotations (9.3.0) * Coverage of the static_cast and reinterpret_cast was refined, following a suggestion provided by Gido Schoenmacker. -- Frank B. Brokken Tue, 06 Mar 2012 20:34:11 +0100 C++-annotations (9.2.1) * Starting this release all release tags (using names that are identical to the version number, so for this release the tag is 9.2.1) are signed to allow authentication. -- Frank B. Brokken Mon, 27 Feb 2012 13:42:38 +0100 9.2.0 * Converted scanner generations from flex to flexc++ * Rewrote the Concrete chapter's section about polymorphic semantic values * Rewrote the Containers chapter's section about unrestricted unions * Removed the Concrete chapter's section about unrestricted union semantic values -- Frank B. Brokken Sun, 26 Feb 2012 17:10:55 +0100 9.1.0 * Added sections about features of C++11 now implemented in g++-4.7 * Added a script to create a beautiful C++ bound book * Repaired typos and stuff -- Frank B. Brokken Fri, 20 Jan 2012 11:50:01 +0100 9.0.2 * Removed excessive use of the verb 'will' from the Annotations. * The required operators for each of the standard iterators (input, output, forward, bidirectional, random_access) are now explicitly mentioned in the paragraphs covering them. -- Frank B. Brokken Mon, 12 Sep 2011 16:01:07 +0200 9.0.1 * Repaired some new annoying typos and slightly rephrased some paragraphs of the `Koenig lookup' section. -- Frank B. Brokken Wed, 20 Jul 2011 12:21:33 +0200 9.0.0 * The form of move special members (move constructors, move assignment operators, other functions defining rvalue type parameters) was synchronized with the form proposed by the C++0x standard. This resulted, in the Annotations relaxing the principle of const-correctness, and in modifying the declarations and implementations of move special members in this release. This shift in position (adopted by the Annotations since its very early releases) profoundly affects much of the Annotation's contents, and warrants an upgrade to the next major release. See the remarks in the `what's new' file for more details. * Several sections were added and sometimes moved. The section about 'unrestricted unions' was completed and moved to the `Containers' chapter, and an new section about adding binary operators to classes using function templates was added to the Annotations' final chapter (concrete examples). * Repaired badly formatted LaTeX table of contents: see bin/latexonly * Many typos were repaired 8.3.1 * Many typos, textual corrections and clarifications were processed, almost all were provided by Francesco Poli. * Sections about move operations were split into subsections * The Portuguese translations are lagging too much behind. I've removed them from the source archives, although they remain available at the svn repository. -- Frank B. Brokken Mon, 20 Dec 2010 15:25:30 +0100 8.3.0 * New sections about various (member) function adaptors * Sections about statistical sampling functions added/modified * Sections referring to C++0x elements now assume g++ 4.4 is available and the required compiler version is no longer listed for those sections * Typos repaired -- Frank B. Brokken Tue, 07 Sep 2010 12:12:18 +0200 8.2.0 * Bumped up the version. Should have been done earlier, considering that the 'what's new' file already refers to version 8.2.0. * Added 'export' to the list of keywords * New typos and unclear passages were processed/improved * KNOWN ISSUE WITH THE PDF VERSION: Due to a known bug in the ps2pdf conversion the pdf versions of the Annotations may show multiple Error: Illegal entry in bfrange block in ToUnicode CMap error messages. Once the bug has been repaired a new sub-minor release of the Annotations will be made available. -- Frank B. Brokken Thu, 26 Aug 2010 09:03:37 +0200 8.1.2 * New typos and unclear passages were processed/improved -- Frank B. Brokken Thu, 06 May 2010 19:39:46 +0200 8.1.1 * Many typos and minor cosmetic flaws that had escaped the previous update were processed -- Frank B. Brokken Thu, 11 Mar 2010 21:00:43 +0100 8.1.0 * The text and examples of the Annotations have completely been overhauled. Before this final 8.1.0 release two pre-releases were issued, partially completing the overhaul (see the two entries below) Over the years many inconsistencies had crept into the text and examples, that are now removed; streamlining the text and the examples. All of the code examples have received a work-over, removing endl in favor of '\n', making virtual functions private, etc., etc. Many sections labeled C++0x were improved and sections in the table of contents showing C++0x now also mention the g++ version in which the new feature will be made available, using `?' if this is as yet unknown. No version is shown if the feature is already available in g++ 4.3 (or in one of its subreleases, like 4.3.3). I received a host of suggestions from Francesco Poli (thanks, Francesco (and several others), for all the effort you've put into sending me those corrections). -- Frank B. Brokken Mon, 01 Mar 2010 09:11:21 +0100 8.1.0~pre2 * Cleanup completed until (including) chapter 16 -- Frank B. Brokken Thu, 24 Dec 2009 11:36:44 +0100 8.1.0~pre1 * Removed the 'template concepts' section from advancedtemplates: removed from the C++0x standard. * Started a cleanup operation on the C++ Annotations aiming at improving its internal consistency in examples and text. In this version completed until (including) chapter 8. -- Frank B. Brokken Thu, 05 Nov 2009 21:08:10 +0100 8.0.1 - Added --std=c++0x to the g++ compiler options 8.0.0 - New sections added describing elements of the new C++0x standard New chapters: name spaces, generic algorithm. The Portuguese translation of the Annotations (in the contributions directory) are still at version 7.0.0., Sergio Bacchi wrote that a new version is currently under construction. 7.3.1 - Readers are referred to sourceforge for the C++ Annotations archives 7.2.2 - Textual modifications and minor modifications of the programs due to new Bobcat library. 7.0.1 - Processed extensive feedback received from Eric S. Raymond and Edward Welbourne. Reorganized yo/string/members.yo. See the yo/history.yo file for details. 7.0.0 - Added new chapter (advanced template applications) and changed many other things. See the yo/history.yo file for details. 6.5.0 - Changed all unsigned types to size_t (where appropriate) Added the Portuguese translation to the distribution, since Sergio Bacchi's acceptance was received Repaired various minor problems in compiling/running examples Moved in-class definitions of member functions to below their class Added paragraphs about size_t and other derived int-types and about implementing pure virtual member functions 6.4.1 - Legal restriction leftover removed from Chapter 2's introduction. Portuguese translation and `The history of C' removed from the distribution, until formal permission to include them is received from their authors. Changes down to 6.2.4: see yo/history.yo -- Frank B. Brokken Tue, 19 Sep 2006 13:03:29 +0200 6.2.4f - fixed basic-type counting in par. 3.3 -- Frank B. Brokken Thu, 07 Sep 2006 14:04:27 +0200 6.2.4 - See yo/history.yo 6.2.2 - See yo/history.yo 6.2.0 - See yo/history.yo 6.1.3(-pre) Repaired several textual imperfections and delete -> delete [] where new [] was used. 6.1.2. This file was defined to summarize intermediate modifications. - description of ios condition flags refined - description of string::getline() refined. - open_mode `creat' changed into `trunc' (reading and writing streams) 6.1.1b Minor textual modifications since 6.1.0