From d3cc2a278bab55c3e62c163cbe20591c987c9a74 Mon Sep 17 00:00:00 2001 From: Florian Sattler Date: Mon, 31 May 2021 22:18:48 +0200 Subject: [PATCH 01/21] Set theme jekyll-theme-cayman --- _config.yml | 1 + index.md | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 _config.yml create mode 100644 index.md diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..c419263 --- /dev/null +++ b/_config.yml @@ -0,0 +1 @@ +theme: jekyll-theme-cayman \ No newline at end of file diff --git a/index.md b/index.md new file mode 100644 index 0000000..15c4223 --- /dev/null +++ b/index.md @@ -0,0 +1,37 @@ +## Welcome to GitHub Pages + +You can use the [editor on GitHub](https://github.com/cplusplus/SG20/edit/gh-pages/index.md) to maintain and preview the content for your website in Markdown files. + +Whenever you commit to this repository, GitHub Pages will run [Jekyll](https://jekyllrb.com/) to rebuild the pages in your site, from the content in your Markdown files. + +### Markdown + +Markdown is a lightweight and easy-to-use syntax for styling your writing. It includes conventions for + +```markdown +Syntax highlighted code block + +# Header 1 +## Header 2 +### Header 3 + +- Bulleted +- List + +1. Numbered +2. List + +**Bold** and _Italic_ and `Code` text + +[Link](url) and ![Image](src) +``` + +For more details see [GitHub Flavored Markdown](https://guides.github.com/features/mastering-markdown/). + +### Jekyll Themes + +Your Pages site will use the layout and styles from the Jekyll theme you have selected in your [repository settings](https://github.com/cplusplus/SG20/settings/pages). The name of this theme is saved in the Jekyll `_config.yml` configuration file. + +### Support or Contact + +Having trouble with Pages? Check out our [documentation](https://docs.github.com/categories/github-pages-basics/) or [contact support](https://support.github.com/contact) and we’ll help you sort it out. From c2eec7be29086ff4e1eab86d6badeb4f7d8527eb Mon Sep 17 00:00:00 2001 From: Florian Sattler Date: Mon, 31 May 2021 22:19:22 +0200 Subject: [PATCH 02/21] Update index.md --- index.md | 38 +------------------------------------- 1 file changed, 1 insertion(+), 37 deletions(-) diff --git a/index.md b/index.md index 15c4223..66e12c4 100644 --- a/index.md +++ b/index.md @@ -1,37 +1 @@ -## Welcome to GitHub Pages - -You can use the [editor on GitHub](https://github.com/cplusplus/SG20/edit/gh-pages/index.md) to maintain and preview the content for your website in Markdown files. - -Whenever you commit to this repository, GitHub Pages will run [Jekyll](https://jekyllrb.com/) to rebuild the pages in your site, from the content in your Markdown files. - -### Markdown - -Markdown is a lightweight and easy-to-use syntax for styling your writing. It includes conventions for - -```markdown -Syntax highlighted code block - -# Header 1 -## Header 2 -### Header 3 - -- Bulleted -- List - -1. Numbered -2. List - -**Bold** and _Italic_ and `Code` text - -[Link](url) and ![Image](src) -``` - -For more details see [GitHub Flavored Markdown](https://guides.github.com/features/mastering-markdown/). - -### Jekyll Themes - -Your Pages site will use the layout and styles from the Jekyll theme you have selected in your [repository settings](https://github.com/cplusplus/SG20/settings/pages). The name of this theme is saved in the Jekyll `_config.yml` configuration file. - -### Support or Contact - -Having trouble with Pages? Check out our [documentation](https://docs.github.com/categories/github-pages-basics/) or [contact support](https://support.github.com/contact) and we’ll help you sort it out. +## Currently Empty - Welcome to GitHub Pages From ba45689e669c692313024f31527ce9a8444e186a Mon Sep 17 00:00:00 2001 From: Florian Sattler Date: Sun, 4 Jul 2021 22:04:43 +0200 Subject: [PATCH 03/21] Empty gh-pages branch and make it ready for deployment --- _config.yml | 1 - index.md | 1 - 2 files changed, 2 deletions(-) delete mode 100644 _config.yml delete mode 100644 index.md diff --git a/_config.yml b/_config.yml deleted file mode 100644 index c419263..0000000 --- a/_config.yml +++ /dev/null @@ -1 +0,0 @@ -theme: jekyll-theme-cayman \ No newline at end of file diff --git a/index.md b/index.md deleted file mode 100644 index 66e12c4..0000000 --- a/index.md +++ /dev/null @@ -1 +0,0 @@ -## Currently Empty - Welcome to GitHub Pages From 0c34287d7c3342b5a0acae90fb31ecb74265d64a Mon Sep 17 00:00:00 2001 From: vulder Date: Sun, 31 Oct 2021 11:39:33 +0000 Subject: [PATCH 04/21] deploy: a307f795bd834d09c63b9493f19d1a8c162a8791 --- .nojekyll | 0 0.0.1/guidelines.epub | Bin 0 -> 31519 bytes 0.0.1/html/images/cpp_logo.png | Bin 0 -> 23613 bytes 0.0.1/html/index.html | 1429 +++++++++++++++++ 0.0.1/html_split/Advanced.html | 60 + .../Background_002fRequired-Knowledge.html | 65 + .../Background_002frequired-knowledge.html | 54 + ...ments-and-Control_002dFlow-Constructs.html | 60 + 0.0.1/html_split/Building.html | 57 + ...002b_002b-object-model-copy-semantics.html | 69 + 0.0.1/html_split/Caveats.html | 62 + 0.0.1/html_split/Compilation-Model.html | 62 + .../Compile_002dTime-Computation.html | 57 + .../Context-and-Aim-of-This-Guide.html | 76 + .../Contributing-to-This-Document.html | 55 + 0.0.1/html_split/Contributors.html | 57 + ...ed-Information-for-Modules-and-Topics.html | 67 + 0.0.1/html_split/Disclaimer.html | 55 + 0.0.1/html_split/Error-Handling.html | 59 + .../Examples-of-Course-Curricula.html | 53 + .../External-ie-Non-Standard-Libraries.html | 56 + ...005fassert-with-a-constant-expression.html | 62 + ...dational-How-and-when-are-copies-made.html | 63 + 0.0.1/html_split/Foundational-Using-UDLs.html | 61 + ...ning-functions-with-default-arguments.html | 62 + ...onal-Writing-requires_002dexpressions.html | 60 + .../Functions-default-argument.html | 67 + .../Functions-user_002ddefined-literals.html | 66 + 0.0.1/html_split/Functions.html | 61 + .../Generic-Programming-Templates.html | 61 + 0.0.1/html_split/Glossary.html | 58 + 0.0.1/html_split/How-To-Contribute.html | 89 + .../Inheritance-and-Class-Hierarchies.html | 57 + 0.0.1/html_split/License.html | 100 ++ .../Main-Advanced-requirements.html | 60 + .../Main-Contracts-and-static_005fassert.html | 61 + ...ting-user_002ddefined-copy-operations.html | 62 + 0.0.1/html_split/Main-implementing-UDLs.html | 59 + 0.0.1/html_split/Main-implementing-_002a.html | 62 + ..._002derror-handling-static_005fassert.html | 67 + .../Module-name-Requires-Expressions.html | 59 + 0.0.1/html_split/Motivation.html | 57 + ...-Recent-Version-and-Alternate-Formats.html | 84 + .../Organization-of-This-Document.html | 101 ++ 0.0.1/html_split/Overview.html | 61 + 0.0.1/html_split/Points-to-cover.html | 69 + 0.0.1/html_split/Preprocessor.html | 58 + .../References-on-Learning-Outcomes.html | 71 + 0.0.1/html_split/References.html | 59 + 0.0.1/html_split/Software-Design.html | 56 + 0.0.1/html_split/Standard-Library.html | 57 + 0.0.1/html_split/Student-outcomes.html | 73 + .../Summary-of-Modules-and-Topics.html | 106 ++ 0.0.1/html_split/Testing-and-Debugging.html | 59 + 0.0.1/html_split/Tooling.html | 57 + 0.0.1/html_split/Topic-introduction.html | 55 + 0.0.1/html_split/Use-of-This-Document.html | 58 + .../User_002dDefined-Types-Classes.html | 69 + ...ed-to-C_002b_002b-Teaching-Guidelines.html | 69 + 0.0.1/html_split/_0023advanced.html | 40 + 0.0.1/html_split/_0023advanced_002d1.html | 40 + 0.0.1/html_split/_0023advanced_002d2.html | 40 + 0.0.1/html_split/_0023advanced_002d3.html | 40 + ..._0023backgroundrequired_002dknowledge.html | 40 + ...ackgroundrequired_002dknowledge_002d1.html | 40 + ...ackgroundrequired_002dknowledge_002d2.html | 40 + ...ackgroundrequired_002dknowledge_002d3.html | 40 + ...ackgroundrequired_002dknowledge_002d4.html | 40 + ...ackgroundrequired_002dknowledge_002d5.html | 40 + ...ackgroundrequired_002dknowledge_002d6.html | 40 + ...ackgroundrequired_002dknowledge_002d7.html | 40 + ...ackgroundrequired_002dknowledge_002d8.html | 40 + ...ackgroundrequired_002dknowledge_002d9.html | 40 + ...d_002dcontrol_002dflow_002dconstructs.html | 40 + 0.0.1/html_split/_0023building.html | 40 + ...ject_002dmodel_002dcopy_002dsemantics.html | 40 + 0.0.1/html_split/_0023caveats.html | 40 + 0.0.1/html_split/_0023caveats_002d1.html | 40 + 0.0.1/html_split/_0023caveats_002d2.html | 40 + 0.0.1/html_split/_0023caveats_002d3.html | 40 + 0.0.1/html_split/_0023caveats_002d4.html | 40 + 0.0.1/html_split/_0023caveats_002d5.html | 40 + 0.0.1/html_split/_0023caveats_002d6.html | 40 + 0.0.1/html_split/_0023caveats_002d7.html | 40 + 0.0.1/html_split/_0023caveats_002d8.html | 40 + 0.0.1/html_split/_0023caveats_002d9.html | 40 + .../_0023compilation_002dmodel.html | 40 + ..._0023compile_002dtime_002dcomputation.html | 40 + ...and_002daim_002dof_002dthis_002dguide.html | 40 + ...ributing_002dto_002dthis_002ddocument.html | 40 + 0.0.1/html_split/_0023contributors.html | 40 + ...02dfor_002dmodules_002dand_002dtopics.html | 40 + 0.0.1/html_split/_0023disclaimer.html | 40 + 0.0.1/html_split/_0023error_002dhandling.html | 40 + ...mples_002dof_002dcourse_002dcurricula.html | 40 + ...2e_002dnon_002dstandard_002dlibraries.html | 40 + ...ith_002da_002dconstant_002dexpression.html | 40 + ..._002dwhen_002dare_002dcopies_002dmade.html | 40 + ...ns_002dwith_002ddefault_002darguments.html | 40 + .../_0023foundational_002dusing_002dudls.html | 40 + ...dwriting_002drequires_002dexpressions.html | 40 + 0.0.1/html_split/_0023functions.html | 40 + ...023functions_002ddefault_002dargument.html | 40 + ...ons_002duser_002ddefined_002dliterals.html | 40 + ...generic_002dprogramming_002dtemplates.html | 40 + 0.0.1/html_split/_0023glossary.html | 40 + .../_0023how_002dto_002dcontribute.html | 40 + ...nce_002dand_002dclass_002dhierarchies.html | 40 + 0.0.1/html_split/_0023license.html | 40 + ...023main_002dadvanced_002drequirements.html | 40 + ...ntracts_002dand_002dstatic_005fassert.html | 40 + .../_0023main_002dimplementing.html | 40 + .../_0023main_002dimplementing_002dudls.html | 40 + ...r_002ddefined_002dcopy_002doperations.html | 40 + ...or_002dhandling_002dstatic_005fassert.html | 40 + ...002dname_002drequires_002dexpressions.html | 40 + 0.0.1/html_split/_0023motivation.html | 40 + 0.0.1/html_split/_0023motivation_002d1.html | 40 + 0.0.1/html_split/_0023motivation_002d2.html | 40 + 0.0.1/html_split/_0023motivation_002d3.html | 40 + 0.0.1/html_split/_0023motivation_002d4.html | 40 + ...ion_002dand_002dalternate_002dformats.html | 40 + ...nization_002dof_002dthis_002ddocument.html | 40 + 0.0.1/html_split/_0023overview.html | 40 + 0.0.1/html_split/_0023overview_002d1.html | 40 + 0.0.1/html_split/_0023overview_002d2.html | 40 + 0.0.1/html_split/_0023overview_002d3.html | 40 + 0.0.1/html_split/_0023overview_002d4.html | 40 + .../_0023points_002dto_002dcover.html | 40 + .../_0023points_002dto_002dcover_002d1.html | 40 + .../_0023points_002dto_002dcover_002d2.html | 40 + .../_0023points_002dto_002dcover_002d3.html | 40 + .../_0023points_002dto_002dcover_002d4.html | 40 + .../_0023points_002dto_002dcover_002d5.html | 40 + .../_0023points_002dto_002dcover_002d6.html | 40 + .../_0023points_002dto_002dcover_002d7.html | 40 + .../_0023points_002dto_002dcover_002d8.html | 40 + 0.0.1/html_split/_0023preprocessor.html | 40 + 0.0.1/html_split/_0023references.html | 40 + ...nces_002don_002dlearning_002doutcomes.html | 40 + .../html_split/_0023software_002ddesign.html | 40 + .../html_split/_0023standard_002dlibrary.html | 40 + .../html_split/_0023student_002doutcomes.html | 40 + .../_0023student_002doutcomes_002d1.html | 40 + .../_0023student_002doutcomes_002d2.html | 40 + .../_0023student_002doutcomes_002d3.html | 40 + .../_0023student_002doutcomes_002d4.html | 40 + .../_0023student_002doutcomes_002d5.html | 40 + .../_0023student_002doutcomes_002d6.html | 40 + .../_0023student_002doutcomes_002d7.html | 40 + .../_0023student_002doutcomes_002d8.html | 40 + .../_0023student_002doutcomes_002d9.html | 40 + ...002dof_002dmodules_002dand_002dtopics.html | 40 + .../_0023testing_002dand_002ddebugging.html | 40 + 0.0.1/html_split/_0023tooling.html | 40 + .../_0023topic_002dintroduction.html | 40 + .../_0023topic_002dintroduction_002d1.html | 40 + .../_0023topic_002dintroduction_002d2.html | 40 + .../_0023topic_002dintroduction_002d3.html | 40 + .../_0023topic_002dintroduction_002d4.html | 40 + ..._0023use_002dof_002dthis_002ddocument.html | 40 + ...ser_002ddefined_002dtypes_002dclasses.html | 40 + ...dto_002dc_002dteaching_002dguidelines.html | 40 + 0.0.1/html_split/index.html | 240 +++ 0.0.1/html_split/unknown_node.html | 763 +++++++++ index.html | 6 + latest/guidelines.epub | Bin 0 -> 31519 bytes latest/html/images/cpp_logo.png | Bin 0 -> 23613 bytes latest/html/index.html | 1429 +++++++++++++++++ latest/html_split/Advanced.html | 60 + .../Background_002fRequired-Knowledge.html | 65 + .../Background_002frequired-knowledge.html | 54 + ...ments-and-Control_002dFlow-Constructs.html | 60 + latest/html_split/Building.html | 57 + ...002b_002b-object-model-copy-semantics.html | 69 + latest/html_split/Caveats.html | 62 + latest/html_split/Compilation-Model.html | 62 + .../Compile_002dTime-Computation.html | 57 + .../Context-and-Aim-of-This-Guide.html | 76 + .../Contributing-to-This-Document.html | 55 + latest/html_split/Contributors.html | 57 + ...ed-Information-for-Modules-and-Topics.html | 67 + latest/html_split/Disclaimer.html | 55 + latest/html_split/Error-Handling.html | 59 + .../Examples-of-Course-Curricula.html | 53 + .../External-ie-Non-Standard-Libraries.html | 56 + ...005fassert-with-a-constant-expression.html | 62 + ...dational-How-and-when-are-copies-made.html | 63 + .../html_split/Foundational-Using-UDLs.html | 61 + ...ning-functions-with-default-arguments.html | 62 + ...onal-Writing-requires_002dexpressions.html | 60 + .../Functions-default-argument.html | 67 + .../Functions-user_002ddefined-literals.html | 66 + latest/html_split/Functions.html | 61 + .../Generic-Programming-Templates.html | 61 + latest/html_split/Glossary.html | 58 + latest/html_split/How-To-Contribute.html | 89 + .../Inheritance-and-Class-Hierarchies.html | 57 + latest/html_split/License.html | 100 ++ .../Main-Advanced-requirements.html | 60 + .../Main-Contracts-and-static_005fassert.html | 61 + ...ting-user_002ddefined-copy-operations.html | 62 + latest/html_split/Main-implementing-UDLs.html | 59 + .../html_split/Main-implementing-_002a.html | 62 + ..._002derror-handling-static_005fassert.html | 67 + .../Module-name-Requires-Expressions.html | 59 + latest/html_split/Motivation.html | 57 + ...-Recent-Version-and-Alternate-Formats.html | 84 + .../Organization-of-This-Document.html | 101 ++ latest/html_split/Overview.html | 61 + latest/html_split/Points-to-cover.html | 69 + latest/html_split/Preprocessor.html | 58 + .../References-on-Learning-Outcomes.html | 71 + latest/html_split/References.html | 59 + latest/html_split/Software-Design.html | 56 + latest/html_split/Standard-Library.html | 57 + latest/html_split/Student-outcomes.html | 73 + .../Summary-of-Modules-and-Topics.html | 106 ++ latest/html_split/Testing-and-Debugging.html | 59 + latest/html_split/Tooling.html | 57 + latest/html_split/Topic-introduction.html | 55 + latest/html_split/Use-of-This-Document.html | 58 + .../User_002dDefined-Types-Classes.html | 69 + ...ed-to-C_002b_002b-Teaching-Guidelines.html | 69 + latest/html_split/_0023advanced.html | 40 + latest/html_split/_0023advanced_002d1.html | 40 + latest/html_split/_0023advanced_002d2.html | 40 + latest/html_split/_0023advanced_002d3.html | 40 + ..._0023backgroundrequired_002dknowledge.html | 40 + ...ackgroundrequired_002dknowledge_002d1.html | 40 + ...ackgroundrequired_002dknowledge_002d2.html | 40 + ...ackgroundrequired_002dknowledge_002d3.html | 40 + ...ackgroundrequired_002dknowledge_002d4.html | 40 + ...ackgroundrequired_002dknowledge_002d5.html | 40 + ...ackgroundrequired_002dknowledge_002d6.html | 40 + ...ackgroundrequired_002dknowledge_002d7.html | 40 + ...ackgroundrequired_002dknowledge_002d8.html | 40 + ...ackgroundrequired_002dknowledge_002d9.html | 40 + ...d_002dcontrol_002dflow_002dconstructs.html | 40 + latest/html_split/_0023building.html | 40 + ...ject_002dmodel_002dcopy_002dsemantics.html | 40 + latest/html_split/_0023caveats.html | 40 + latest/html_split/_0023caveats_002d1.html | 40 + latest/html_split/_0023caveats_002d2.html | 40 + latest/html_split/_0023caveats_002d3.html | 40 + latest/html_split/_0023caveats_002d4.html | 40 + latest/html_split/_0023caveats_002d5.html | 40 + latest/html_split/_0023caveats_002d6.html | 40 + latest/html_split/_0023caveats_002d7.html | 40 + latest/html_split/_0023caveats_002d8.html | 40 + latest/html_split/_0023caveats_002d9.html | 40 + .../_0023compilation_002dmodel.html | 40 + ..._0023compile_002dtime_002dcomputation.html | 40 + ...and_002daim_002dof_002dthis_002dguide.html | 40 + ...ributing_002dto_002dthis_002ddocument.html | 40 + latest/html_split/_0023contributors.html | 40 + ...02dfor_002dmodules_002dand_002dtopics.html | 40 + latest/html_split/_0023disclaimer.html | 40 + .../html_split/_0023error_002dhandling.html | 40 + ...mples_002dof_002dcourse_002dcurricula.html | 40 + ...2e_002dnon_002dstandard_002dlibraries.html | 40 + ...ith_002da_002dconstant_002dexpression.html | 40 + ..._002dwhen_002dare_002dcopies_002dmade.html | 40 + ...ns_002dwith_002ddefault_002darguments.html | 40 + .../_0023foundational_002dusing_002dudls.html | 40 + ...dwriting_002drequires_002dexpressions.html | 40 + latest/html_split/_0023functions.html | 40 + ...023functions_002ddefault_002dargument.html | 40 + ...ons_002duser_002ddefined_002dliterals.html | 40 + ...generic_002dprogramming_002dtemplates.html | 40 + latest/html_split/_0023glossary.html | 40 + .../_0023how_002dto_002dcontribute.html | 40 + ...nce_002dand_002dclass_002dhierarchies.html | 40 + latest/html_split/_0023license.html | 40 + ...023main_002dadvanced_002drequirements.html | 40 + ...ntracts_002dand_002dstatic_005fassert.html | 40 + .../_0023main_002dimplementing.html | 40 + .../_0023main_002dimplementing_002dudls.html | 40 + ...r_002ddefined_002dcopy_002doperations.html | 40 + ...or_002dhandling_002dstatic_005fassert.html | 40 + ...002dname_002drequires_002dexpressions.html | 40 + latest/html_split/_0023motivation.html | 40 + latest/html_split/_0023motivation_002d1.html | 40 + latest/html_split/_0023motivation_002d2.html | 40 + latest/html_split/_0023motivation_002d3.html | 40 + latest/html_split/_0023motivation_002d4.html | 40 + ...ion_002dand_002dalternate_002dformats.html | 40 + ...nization_002dof_002dthis_002ddocument.html | 40 + latest/html_split/_0023overview.html | 40 + latest/html_split/_0023overview_002d1.html | 40 + latest/html_split/_0023overview_002d2.html | 40 + latest/html_split/_0023overview_002d3.html | 40 + latest/html_split/_0023overview_002d4.html | 40 + .../_0023points_002dto_002dcover.html | 40 + .../_0023points_002dto_002dcover_002d1.html | 40 + .../_0023points_002dto_002dcover_002d2.html | 40 + .../_0023points_002dto_002dcover_002d3.html | 40 + .../_0023points_002dto_002dcover_002d4.html | 40 + .../_0023points_002dto_002dcover_002d5.html | 40 + .../_0023points_002dto_002dcover_002d6.html | 40 + .../_0023points_002dto_002dcover_002d7.html | 40 + .../_0023points_002dto_002dcover_002d8.html | 40 + latest/html_split/_0023preprocessor.html | 40 + latest/html_split/_0023references.html | 40 + ...nces_002don_002dlearning_002doutcomes.html | 40 + .../html_split/_0023software_002ddesign.html | 40 + .../html_split/_0023standard_002dlibrary.html | 40 + .../html_split/_0023student_002doutcomes.html | 40 + .../_0023student_002doutcomes_002d1.html | 40 + .../_0023student_002doutcomes_002d2.html | 40 + .../_0023student_002doutcomes_002d3.html | 40 + .../_0023student_002doutcomes_002d4.html | 40 + .../_0023student_002doutcomes_002d5.html | 40 + .../_0023student_002doutcomes_002d6.html | 40 + .../_0023student_002doutcomes_002d7.html | 40 + .../_0023student_002doutcomes_002d8.html | 40 + .../_0023student_002doutcomes_002d9.html | 40 + ...002dof_002dmodules_002dand_002dtopics.html | 40 + .../_0023testing_002dand_002ddebugging.html | 40 + latest/html_split/_0023tooling.html | 40 + .../_0023topic_002dintroduction.html | 40 + .../_0023topic_002dintroduction_002d1.html | 40 + .../_0023topic_002dintroduction_002d2.html | 40 + .../_0023topic_002dintroduction_002d3.html | 40 + .../_0023topic_002dintroduction_002d4.html | 40 + ..._0023use_002dof_002dthis_002ddocument.html | 40 + ...ser_002ddefined_002dtypes_002dclasses.html | 40 + ...dto_002dc_002dteaching_002dguidelines.html | 40 + latest/html_split/index.html | 240 +++ latest/html_split/unknown_node.html | 763 +++++++++ 330 files changed, 20270 insertions(+) create mode 100644 .nojekyll create mode 100644 0.0.1/guidelines.epub create mode 100644 0.0.1/html/images/cpp_logo.png create mode 100644 0.0.1/html/index.html create mode 100644 0.0.1/html_split/Advanced.html create mode 100644 0.0.1/html_split/Background_002fRequired-Knowledge.html create mode 100644 0.0.1/html_split/Background_002frequired-knowledge.html create mode 100644 0.0.1/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html create mode 100644 0.0.1/html_split/Building.html create mode 100644 0.0.1/html_split/C_002b_002b-object-model-copy-semantics.html create mode 100644 0.0.1/html_split/Caveats.html create mode 100644 0.0.1/html_split/Compilation-Model.html create mode 100644 0.0.1/html_split/Compile_002dTime-Computation.html create mode 100644 0.0.1/html_split/Context-and-Aim-of-This-Guide.html create mode 100644 0.0.1/html_split/Contributing-to-This-Document.html create mode 100644 0.0.1/html_split/Contributors.html create mode 100644 0.0.1/html_split/Detailed-Information-for-Modules-and-Topics.html create mode 100644 0.0.1/html_split/Disclaimer.html create mode 100644 0.0.1/html_split/Error-Handling.html create mode 100644 0.0.1/html_split/Examples-of-Course-Curricula.html create mode 100644 0.0.1/html_split/External-ie-Non-Standard-Libraries.html create mode 100644 0.0.1/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html create mode 100644 0.0.1/html_split/Foundational-How-and-when-are-copies-made.html create mode 100644 0.0.1/html_split/Foundational-Using-UDLs.html create mode 100644 0.0.1/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html create mode 100644 0.0.1/html_split/Foundational-Writing-requires_002dexpressions.html create mode 100644 0.0.1/html_split/Functions-default-argument.html create mode 100644 0.0.1/html_split/Functions-user_002ddefined-literals.html create mode 100644 0.0.1/html_split/Functions.html create mode 100644 0.0.1/html_split/Generic-Programming-Templates.html create mode 100644 0.0.1/html_split/Glossary.html create mode 100644 0.0.1/html_split/How-To-Contribute.html create mode 100644 0.0.1/html_split/Inheritance-and-Class-Hierarchies.html create mode 100644 0.0.1/html_split/License.html create mode 100644 0.0.1/html_split/Main-Advanced-requirements.html create mode 100644 0.0.1/html_split/Main-Contracts-and-static_005fassert.html create mode 100644 0.0.1/html_split/Main-Implementing-user_002ddefined-copy-operations.html create mode 100644 0.0.1/html_split/Main-implementing-UDLs.html create mode 100644 0.0.1/html_split/Main-implementing-_002a.html create mode 100644 0.0.1/html_split/Meta_002derror-handling-static_005fassert.html create mode 100644 0.0.1/html_split/Module-name-Requires-Expressions.html create mode 100644 0.0.1/html_split/Motivation.html create mode 100644 0.0.1/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html create mode 100644 0.0.1/html_split/Organization-of-This-Document.html create mode 100644 0.0.1/html_split/Overview.html create mode 100644 0.0.1/html_split/Points-to-cover.html create mode 100644 0.0.1/html_split/Preprocessor.html create mode 100644 0.0.1/html_split/References-on-Learning-Outcomes.html create mode 100644 0.0.1/html_split/References.html create mode 100644 0.0.1/html_split/Software-Design.html create mode 100644 0.0.1/html_split/Standard-Library.html create mode 100644 0.0.1/html_split/Student-outcomes.html create mode 100644 0.0.1/html_split/Summary-of-Modules-and-Topics.html create mode 100644 0.0.1/html_split/Testing-and-Debugging.html create mode 100644 0.0.1/html_split/Tooling.html create mode 100644 0.0.1/html_split/Topic-introduction.html create mode 100644 0.0.1/html_split/Use-of-This-Document.html create mode 100644 0.0.1/html_split/User_002dDefined-Types-Classes.html create mode 100644 0.0.1/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html create mode 100644 0.0.1/html_split/_0023advanced.html create mode 100644 0.0.1/html_split/_0023advanced_002d1.html create mode 100644 0.0.1/html_split/_0023advanced_002d2.html create mode 100644 0.0.1/html_split/_0023advanced_002d3.html create mode 100644 0.0.1/html_split/_0023backgroundrequired_002dknowledge.html create mode 100644 0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d1.html create mode 100644 0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d2.html create mode 100644 0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d3.html create mode 100644 0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d4.html create mode 100644 0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d5.html create mode 100644 0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d6.html create mode 100644 0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d7.html create mode 100644 0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d8.html create mode 100644 0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d9.html create mode 100644 0.0.1/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html create mode 100644 0.0.1/html_split/_0023building.html create mode 100644 0.0.1/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html create mode 100644 0.0.1/html_split/_0023caveats.html create mode 100644 0.0.1/html_split/_0023caveats_002d1.html create mode 100644 0.0.1/html_split/_0023caveats_002d2.html create mode 100644 0.0.1/html_split/_0023caveats_002d3.html create mode 100644 0.0.1/html_split/_0023caveats_002d4.html create mode 100644 0.0.1/html_split/_0023caveats_002d5.html create mode 100644 0.0.1/html_split/_0023caveats_002d6.html create mode 100644 0.0.1/html_split/_0023caveats_002d7.html create mode 100644 0.0.1/html_split/_0023caveats_002d8.html create mode 100644 0.0.1/html_split/_0023caveats_002d9.html create mode 100644 0.0.1/html_split/_0023compilation_002dmodel.html create mode 100644 0.0.1/html_split/_0023compile_002dtime_002dcomputation.html create mode 100644 0.0.1/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html create mode 100644 0.0.1/html_split/_0023contributing_002dto_002dthis_002ddocument.html create mode 100644 0.0.1/html_split/_0023contributors.html create mode 100644 0.0.1/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html create mode 100644 0.0.1/html_split/_0023disclaimer.html create mode 100644 0.0.1/html_split/_0023error_002dhandling.html create mode 100644 0.0.1/html_split/_0023examples_002dof_002dcourse_002dcurricula.html create mode 100644 0.0.1/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html create mode 100644 0.0.1/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html create mode 100644 0.0.1/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html create mode 100644 0.0.1/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html create mode 100644 0.0.1/html_split/_0023foundational_002dusing_002dudls.html create mode 100644 0.0.1/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html create mode 100644 0.0.1/html_split/_0023functions.html create mode 100644 0.0.1/html_split/_0023functions_002ddefault_002dargument.html create mode 100644 0.0.1/html_split/_0023functions_002duser_002ddefined_002dliterals.html create mode 100644 0.0.1/html_split/_0023generic_002dprogramming_002dtemplates.html create mode 100644 0.0.1/html_split/_0023glossary.html create mode 100644 0.0.1/html_split/_0023how_002dto_002dcontribute.html create mode 100644 0.0.1/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html create mode 100644 0.0.1/html_split/_0023license.html create mode 100644 0.0.1/html_split/_0023main_002dadvanced_002drequirements.html create mode 100644 0.0.1/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html create mode 100644 0.0.1/html_split/_0023main_002dimplementing.html create mode 100644 0.0.1/html_split/_0023main_002dimplementing_002dudls.html create mode 100644 0.0.1/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html create mode 100644 0.0.1/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html create mode 100644 0.0.1/html_split/_0023module_002dname_002drequires_002dexpressions.html create mode 100644 0.0.1/html_split/_0023motivation.html create mode 100644 0.0.1/html_split/_0023motivation_002d1.html create mode 100644 0.0.1/html_split/_0023motivation_002d2.html create mode 100644 0.0.1/html_split/_0023motivation_002d3.html create mode 100644 0.0.1/html_split/_0023motivation_002d4.html create mode 100644 0.0.1/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html create mode 100644 0.0.1/html_split/_0023organization_002dof_002dthis_002ddocument.html create mode 100644 0.0.1/html_split/_0023overview.html create mode 100644 0.0.1/html_split/_0023overview_002d1.html create mode 100644 0.0.1/html_split/_0023overview_002d2.html create mode 100644 0.0.1/html_split/_0023overview_002d3.html create mode 100644 0.0.1/html_split/_0023overview_002d4.html create mode 100644 0.0.1/html_split/_0023points_002dto_002dcover.html create mode 100644 0.0.1/html_split/_0023points_002dto_002dcover_002d1.html create mode 100644 0.0.1/html_split/_0023points_002dto_002dcover_002d2.html create mode 100644 0.0.1/html_split/_0023points_002dto_002dcover_002d3.html create mode 100644 0.0.1/html_split/_0023points_002dto_002dcover_002d4.html create mode 100644 0.0.1/html_split/_0023points_002dto_002dcover_002d5.html create mode 100644 0.0.1/html_split/_0023points_002dto_002dcover_002d6.html create mode 100644 0.0.1/html_split/_0023points_002dto_002dcover_002d7.html create mode 100644 0.0.1/html_split/_0023points_002dto_002dcover_002d8.html create mode 100644 0.0.1/html_split/_0023preprocessor.html create mode 100644 0.0.1/html_split/_0023references.html create mode 100644 0.0.1/html_split/_0023references_002don_002dlearning_002doutcomes.html create mode 100644 0.0.1/html_split/_0023software_002ddesign.html create mode 100644 0.0.1/html_split/_0023standard_002dlibrary.html create mode 100644 0.0.1/html_split/_0023student_002doutcomes.html create mode 100644 0.0.1/html_split/_0023student_002doutcomes_002d1.html create mode 100644 0.0.1/html_split/_0023student_002doutcomes_002d2.html create mode 100644 0.0.1/html_split/_0023student_002doutcomes_002d3.html create mode 100644 0.0.1/html_split/_0023student_002doutcomes_002d4.html create mode 100644 0.0.1/html_split/_0023student_002doutcomes_002d5.html create mode 100644 0.0.1/html_split/_0023student_002doutcomes_002d6.html create mode 100644 0.0.1/html_split/_0023student_002doutcomes_002d7.html create mode 100644 0.0.1/html_split/_0023student_002doutcomes_002d8.html create mode 100644 0.0.1/html_split/_0023student_002doutcomes_002d9.html create mode 100644 0.0.1/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html create mode 100644 0.0.1/html_split/_0023testing_002dand_002ddebugging.html create mode 100644 0.0.1/html_split/_0023tooling.html create mode 100644 0.0.1/html_split/_0023topic_002dintroduction.html create mode 100644 0.0.1/html_split/_0023topic_002dintroduction_002d1.html create mode 100644 0.0.1/html_split/_0023topic_002dintroduction_002d2.html create mode 100644 0.0.1/html_split/_0023topic_002dintroduction_002d3.html create mode 100644 0.0.1/html_split/_0023topic_002dintroduction_002d4.html create mode 100644 0.0.1/html_split/_0023use_002dof_002dthis_002ddocument.html create mode 100644 0.0.1/html_split/_0023user_002ddefined_002dtypes_002dclasses.html create mode 100644 0.0.1/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html create mode 100644 0.0.1/html_split/index.html create mode 100644 0.0.1/html_split/unknown_node.html create mode 100644 index.html create mode 100644 latest/guidelines.epub create mode 100644 latest/html/images/cpp_logo.png create mode 100644 latest/html/index.html create mode 100644 latest/html_split/Advanced.html create mode 100644 latest/html_split/Background_002fRequired-Knowledge.html create mode 100644 latest/html_split/Background_002frequired-knowledge.html create mode 100644 latest/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html create mode 100644 latest/html_split/Building.html create mode 100644 latest/html_split/C_002b_002b-object-model-copy-semantics.html create mode 100644 latest/html_split/Caveats.html create mode 100644 latest/html_split/Compilation-Model.html create mode 100644 latest/html_split/Compile_002dTime-Computation.html create mode 100644 latest/html_split/Context-and-Aim-of-This-Guide.html create mode 100644 latest/html_split/Contributing-to-This-Document.html create mode 100644 latest/html_split/Contributors.html create mode 100644 latest/html_split/Detailed-Information-for-Modules-and-Topics.html create mode 100644 latest/html_split/Disclaimer.html create mode 100644 latest/html_split/Error-Handling.html create mode 100644 latest/html_split/Examples-of-Course-Curricula.html create mode 100644 latest/html_split/External-ie-Non-Standard-Libraries.html create mode 100644 latest/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html create mode 100644 latest/html_split/Foundational-How-and-when-are-copies-made.html create mode 100644 latest/html_split/Foundational-Using-UDLs.html create mode 100644 latest/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html create mode 100644 latest/html_split/Foundational-Writing-requires_002dexpressions.html create mode 100644 latest/html_split/Functions-default-argument.html create mode 100644 latest/html_split/Functions-user_002ddefined-literals.html create mode 100644 latest/html_split/Functions.html create mode 100644 latest/html_split/Generic-Programming-Templates.html create mode 100644 latest/html_split/Glossary.html create mode 100644 latest/html_split/How-To-Contribute.html create mode 100644 latest/html_split/Inheritance-and-Class-Hierarchies.html create mode 100644 latest/html_split/License.html create mode 100644 latest/html_split/Main-Advanced-requirements.html create mode 100644 latest/html_split/Main-Contracts-and-static_005fassert.html create mode 100644 latest/html_split/Main-Implementing-user_002ddefined-copy-operations.html create mode 100644 latest/html_split/Main-implementing-UDLs.html create mode 100644 latest/html_split/Main-implementing-_002a.html create mode 100644 latest/html_split/Meta_002derror-handling-static_005fassert.html create mode 100644 latest/html_split/Module-name-Requires-Expressions.html create mode 100644 latest/html_split/Motivation.html create mode 100644 latest/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html create mode 100644 latest/html_split/Organization-of-This-Document.html create mode 100644 latest/html_split/Overview.html create mode 100644 latest/html_split/Points-to-cover.html create mode 100644 latest/html_split/Preprocessor.html create mode 100644 latest/html_split/References-on-Learning-Outcomes.html create mode 100644 latest/html_split/References.html create mode 100644 latest/html_split/Software-Design.html create mode 100644 latest/html_split/Standard-Library.html create mode 100644 latest/html_split/Student-outcomes.html create mode 100644 latest/html_split/Summary-of-Modules-and-Topics.html create mode 100644 latest/html_split/Testing-and-Debugging.html create mode 100644 latest/html_split/Tooling.html create mode 100644 latest/html_split/Topic-introduction.html create mode 100644 latest/html_split/Use-of-This-Document.html create mode 100644 latest/html_split/User_002dDefined-Types-Classes.html create mode 100644 latest/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html create mode 100644 latest/html_split/_0023advanced.html create mode 100644 latest/html_split/_0023advanced_002d1.html create mode 100644 latest/html_split/_0023advanced_002d2.html create mode 100644 latest/html_split/_0023advanced_002d3.html create mode 100644 latest/html_split/_0023backgroundrequired_002dknowledge.html create mode 100644 latest/html_split/_0023backgroundrequired_002dknowledge_002d1.html create mode 100644 latest/html_split/_0023backgroundrequired_002dknowledge_002d2.html create mode 100644 latest/html_split/_0023backgroundrequired_002dknowledge_002d3.html create mode 100644 latest/html_split/_0023backgroundrequired_002dknowledge_002d4.html create mode 100644 latest/html_split/_0023backgroundrequired_002dknowledge_002d5.html create mode 100644 latest/html_split/_0023backgroundrequired_002dknowledge_002d6.html create mode 100644 latest/html_split/_0023backgroundrequired_002dknowledge_002d7.html create mode 100644 latest/html_split/_0023backgroundrequired_002dknowledge_002d8.html create mode 100644 latest/html_split/_0023backgroundrequired_002dknowledge_002d9.html create mode 100644 latest/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html create mode 100644 latest/html_split/_0023building.html create mode 100644 latest/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html create mode 100644 latest/html_split/_0023caveats.html create mode 100644 latest/html_split/_0023caveats_002d1.html create mode 100644 latest/html_split/_0023caveats_002d2.html create mode 100644 latest/html_split/_0023caveats_002d3.html create mode 100644 latest/html_split/_0023caveats_002d4.html create mode 100644 latest/html_split/_0023caveats_002d5.html create mode 100644 latest/html_split/_0023caveats_002d6.html create mode 100644 latest/html_split/_0023caveats_002d7.html create mode 100644 latest/html_split/_0023caveats_002d8.html create mode 100644 latest/html_split/_0023caveats_002d9.html create mode 100644 latest/html_split/_0023compilation_002dmodel.html create mode 100644 latest/html_split/_0023compile_002dtime_002dcomputation.html create mode 100644 latest/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html create mode 100644 latest/html_split/_0023contributing_002dto_002dthis_002ddocument.html create mode 100644 latest/html_split/_0023contributors.html create mode 100644 latest/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html create mode 100644 latest/html_split/_0023disclaimer.html create mode 100644 latest/html_split/_0023error_002dhandling.html create mode 100644 latest/html_split/_0023examples_002dof_002dcourse_002dcurricula.html create mode 100644 latest/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html create mode 100644 latest/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html create mode 100644 latest/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html create mode 100644 latest/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html create mode 100644 latest/html_split/_0023foundational_002dusing_002dudls.html create mode 100644 latest/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html create mode 100644 latest/html_split/_0023functions.html create mode 100644 latest/html_split/_0023functions_002ddefault_002dargument.html create mode 100644 latest/html_split/_0023functions_002duser_002ddefined_002dliterals.html create mode 100644 latest/html_split/_0023generic_002dprogramming_002dtemplates.html create mode 100644 latest/html_split/_0023glossary.html create mode 100644 latest/html_split/_0023how_002dto_002dcontribute.html create mode 100644 latest/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html create mode 100644 latest/html_split/_0023license.html create mode 100644 latest/html_split/_0023main_002dadvanced_002drequirements.html create mode 100644 latest/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html create mode 100644 latest/html_split/_0023main_002dimplementing.html create mode 100644 latest/html_split/_0023main_002dimplementing_002dudls.html create mode 100644 latest/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html create mode 100644 latest/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html create mode 100644 latest/html_split/_0023module_002dname_002drequires_002dexpressions.html create mode 100644 latest/html_split/_0023motivation.html create mode 100644 latest/html_split/_0023motivation_002d1.html create mode 100644 latest/html_split/_0023motivation_002d2.html create mode 100644 latest/html_split/_0023motivation_002d3.html create mode 100644 latest/html_split/_0023motivation_002d4.html create mode 100644 latest/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html create mode 100644 latest/html_split/_0023organization_002dof_002dthis_002ddocument.html create mode 100644 latest/html_split/_0023overview.html create mode 100644 latest/html_split/_0023overview_002d1.html create mode 100644 latest/html_split/_0023overview_002d2.html create mode 100644 latest/html_split/_0023overview_002d3.html create mode 100644 latest/html_split/_0023overview_002d4.html create mode 100644 latest/html_split/_0023points_002dto_002dcover.html create mode 100644 latest/html_split/_0023points_002dto_002dcover_002d1.html create mode 100644 latest/html_split/_0023points_002dto_002dcover_002d2.html create mode 100644 latest/html_split/_0023points_002dto_002dcover_002d3.html create mode 100644 latest/html_split/_0023points_002dto_002dcover_002d4.html create mode 100644 latest/html_split/_0023points_002dto_002dcover_002d5.html create mode 100644 latest/html_split/_0023points_002dto_002dcover_002d6.html create mode 100644 latest/html_split/_0023points_002dto_002dcover_002d7.html create mode 100644 latest/html_split/_0023points_002dto_002dcover_002d8.html create mode 100644 latest/html_split/_0023preprocessor.html create mode 100644 latest/html_split/_0023references.html create mode 100644 latest/html_split/_0023references_002don_002dlearning_002doutcomes.html create mode 100644 latest/html_split/_0023software_002ddesign.html create mode 100644 latest/html_split/_0023standard_002dlibrary.html create mode 100644 latest/html_split/_0023student_002doutcomes.html create mode 100644 latest/html_split/_0023student_002doutcomes_002d1.html create mode 100644 latest/html_split/_0023student_002doutcomes_002d2.html create mode 100644 latest/html_split/_0023student_002doutcomes_002d3.html create mode 100644 latest/html_split/_0023student_002doutcomes_002d4.html create mode 100644 latest/html_split/_0023student_002doutcomes_002d5.html create mode 100644 latest/html_split/_0023student_002doutcomes_002d6.html create mode 100644 latest/html_split/_0023student_002doutcomes_002d7.html create mode 100644 latest/html_split/_0023student_002doutcomes_002d8.html create mode 100644 latest/html_split/_0023student_002doutcomes_002d9.html create mode 100644 latest/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html create mode 100644 latest/html_split/_0023testing_002dand_002ddebugging.html create mode 100644 latest/html_split/_0023tooling.html create mode 100644 latest/html_split/_0023topic_002dintroduction.html create mode 100644 latest/html_split/_0023topic_002dintroduction_002d1.html create mode 100644 latest/html_split/_0023topic_002dintroduction_002d2.html create mode 100644 latest/html_split/_0023topic_002dintroduction_002d3.html create mode 100644 latest/html_split/_0023topic_002dintroduction_002d4.html create mode 100644 latest/html_split/_0023use_002dof_002dthis_002ddocument.html create mode 100644 latest/html_split/_0023user_002ddefined_002dtypes_002dclasses.html create mode 100644 latest/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html create mode 100644 latest/html_split/index.html create mode 100644 latest/html_split/unknown_node.html diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/0.0.1/guidelines.epub b/0.0.1/guidelines.epub new file mode 100644 index 0000000000000000000000000000000000000000..cc39e0168181ce45a8ef09c2ef4a125eb8bf0fb0 GIT binary patch literal 31519 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 I{GY4;595qa%K!iX literal 0 HcmV?d00001 diff --git a/0.0.1/html/images/cpp_logo.png b/0.0.1/html/images/cpp_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..780e8a32bdd384c1dbd0fc999b9ef9ed2e1bdad6 GIT binary patch literal 23613 zcmaI7WmsH6vo(rKa0u=m!DVpw;KAM98QfiiyIT?*f;$Aa!DVoF7~F#8PTq6Q_uU`& z+<6#grk}3r+TGQ?t5&TYt)e7@@s8vj3=9m0oUG(m7#LV<=sOJs3EDDuY=;Z|Aa;|| zc2je*bn`TEwSW;bcQUo0l5;SzviNFYV(#rSY9R;%15an8uI;9+sK9ULzPft%4PfivmS1VR_K0dyGIyg9(p*@&^-i~f2Ud)a_+W*lY zX#q5IwQ+W{adM>kr_sdJ$=ywe25RYlU4n!2|557*{O@UkP8h3~i8CuZ3){a-`k#)9 zivRyz9UT5oZ=l;(i~noy|EFT0y0^0h>sJe)le?=Kbm1&%{|)8LFX3uo;^yS4?&M_u zKeMP}?d0YJw03f)l28LseNZ$pvvK^_@bNzqii-SljzBjPM>7jKNg*1j4i+05bAEOJ z8@D(QyA(SQCxD$@iicN9LQGPOO@d3BgH4*7SMq;kC7sON9V{H({zumQ|H?}Lud@G~ z!ND0ivZRHpjfaJ~w5yW?)qgIU-{ya}MdE+e_usPS|GO=c|Enx3)EL%(OZ)#?>i=ni z`p>_w|HpBmKmL#FTR1}f-4*KC+tq{0FfiJ+a*|@|UMpvL$j15$GtEXezG@l1JWESM z0Ot3kxIXM%bg9^~;^Mfn)QQ+W@37%0P|M%XQ8#9qX1ipV>m*xfR6cApRj#Mq zPOSmMF`8UH-#kOG?=vk>!q}{cml4fNkNeJu4<72Qr|9(F+IlW#!=K>m zc}4~#a3l*6O%Mi>{d3NA>+yyktr~t8RIPTIlaA!mJrgbmp?6_BqKRSmMc1b6C%^iW z4R|}{mi?{KfAvHQL20D&i%&BzNECv{x5~FBIPQ7Idu>92wi|m{CcTn=ns@$6)R~`h z3%+)GZ9@ImKGNpNsBXQTWAgaaUEb3yV3CJHGaZuDDo)t*%=S|CO=WAw$gJiq8&M2F zH%d32=9zLCh@zP5-N-a+bVKq=g7B}MwFM6usi^Qbz(;SPqp@?LA_wTp2deo_K~?^No>i&@I;qSIwZ?@ zDh?uugX;bYv$yQH2sqXzeY|03-eu`|M#zPe^ItPsJhnUzvT%{R8gX6{W~7@aAjttVORUBPuiO-64cPf=TJ&Z7t9MM zoDB!j5{v}l1Ht>*MRn|80%7>l&?{7ME@rcA1g$xG6SqHJa`%TQQPO-l^8`_R^<36| z96)aAW{S+MFCA17(r%>rA9InUA{4#HjrT_nU!XeBVR%4O49|g4lYqh*>EeLedYt7* za_D6B1!#-k8Q^PS!5*RV8%HDg*rs;BVD)tPM-ubdX4KV?c)i0Qzj%bcJ z6Gh-Z2^m#S!9r&Xg%)Jq6H+1B@g<`Fm;R5bV54K8IMhaQ^p=`E{bi$MK67651c?GP z#Kh*GP)kO%<(dg9-1q&6F}Hyr@ZpfIf6YJ35!lF2Iy*4TOUIp2khk3YYXpm?$p5Vd zvT5PhO0UyTjM8Yd`yEefZ5jpgPZw83x+hmI9d<#NLn=Zd)A;LcTSn286x13j%+MI*Zh4PJ^hj*e_{GDW&rfUb zB?~d4(N3bDFh}s*sb9AEvMQ%kGteVZ8k1TnI#z?eOd(L~vmXPwj0ze;P~6mkBc=1MNaU4++y1}$i!1QwF*w{ zs7oKCL?hY#gxAbe4*N$#-}hSQ)=a$)Qym(|h(_Y%#<-!Wf11VMAPec;=2j`JMNRoP z=!do-rkpdAdS2*`n7%x+qtP>>4MDjLt4FWU*gZ9uH|Iq#sb!i0kC6CJKv!?~3(azY z+mz@^(7V1%UKu0Kz*%r26`at)3(=>^7c=5_Vu{>zaO4zKG^-Uo&&uiB*kPfj_1)>s zCwB7K!4&vtBZgGao}a^)F$nei$6eK6qhZfZvA z54KO8M8gQZq9skS@d<$Xzol7vya z&HR*|{|SzK`6ZVL%ax{%N|F?OYWJ*(b2PF`Q_oZ%If84>f+nusXZI{tCapjiEgC5j znbIYFZ&bg}5s27}%`^vov1>j*8oqlus?`WG%ad_ z=|&A3!2s=@n*(+*Ce9i{E+;1iV-5}QD|VPrX0e@wWD9qkWUwKMJ4k@Cgcdp{VoQ_~ z4vJc*E7Wj8N|$1(`lj zY^QpOowCazC?VKa`XzRlb_r4lJ{OnE<`NE~1{_uhVws})OY4hV_LDRi$ic$NXXIsb z{#YsAG$`UII%Re<0_^}|%|f-2H}P~ik95$#+hA0Ko5NFVjRtiuS@EVX+A_p^lmjbF zh}fKzY+jg{3hfrFIM5iT7xs-81yV3CV)vI=y}DH~J za<#y}&@a=w*2W#uRxog#;rGx;ntZ-$712(Te4ZEEC@q!Nfad zaNQbfNwCJ8j+}JNOmBlJZ0jQ@+1)S`&|`ebA@*}6h!^3N$X%ijnYD?&_&Bq=& z_9Gq7m|1cU7W)WdOFMoUSHvQW+Ly6!Uk)V`Q%n$H2JV5~>@-zYL$41Ey`G<%R8SJ) z!o-USJY+Y+$BGUlql%rc3iHf+s5&roMU|rf%2|{r?nxg!9}sb5Xn-i*qvMv|&U?AM zWc*Sw!VicdL=%ijlT4?gN*WmixZ7+hx%~))akPZgQQ9)}uw{*c!qd$>sc;ilge(cU zv=4Ocf))`Hgpe*V=JmLKe5MhZsW`Bpg-MvH;+I^#h3H0H+|w}@ND=KY1kZqgxmsDA zN>z?;dEIbISt~m&-xswJLDO<)sKUn^)d;dFi)Vj?QBA z#Gu1S&5@*?G7QCa*)EwSWJ0x(|HKRJ#Bbmv8rxbJ?NX;6f%xGF$CBk}OMi=K#gml| z%X>dWvWiOnN_O5>&_vk>=+eQkNRQE_>w_;wsbU))(_HQ{1uPX%Vzzr zJ4u4BJt=3x#G50LcH%y-@O$jfO+-iDGD<_`k&Jfv4cH{Sqj+d2whJd4orrlCmRk_sP>?awsCy6>MMQKZRuZl?YLagF85&XXvJ6ZzQ zjL@I>a1KY%t=#^E=sH4@j~#Ij%6ZSRN29(mM3~M)XM1PA`tC!`g&0S4-i^06*D^fEaFlmempgkNnflT%ad@TMkyaDE3f?e8P0ppFlik~s zzAvIlo(gLhv;fT^hQ6%^Z8TF;Q;+Ltk%GFeFy7V{X`w8cA!gUkgGGv-#l!7AsnJ&3 zeJ%z0#?jwIQP-BN`J3vIcj48}I*Pha-@WFxu_!MHV|x5VZ(+A)8JJ{DSti2+1RlpBb}*N0vNS3{W1o5U;Lxe zBK~<)lQEU&sdfP6Px@t-buG)SFvMsMwm!lom8FQl+REa#+0y+^`7ee?;mh_M)EhQ3 zE#OE{@+b4N3h`gV$gO8|lMHV(=Y9`yU8uJTWsUsQ-?}V?d&4-nlyq{xUE~2`9hMdUM~f(1v)|J2CX0WRRj+oYMw8V^7;33SfCjYdm3idzc-U1Pf4 zBhkMH6d7^~3~RQM1JnV{Td$Dt5vC8JQj_^>cmi zMNVVMKIluB%r4=cA`DCFJ7f@ka%@Xa<`EjLu?Yz)TUQN<|64%ygos>H#){3( z=sxuR^i_08Jqd)|ZXF6|x#D3X-{nD9kSR37}sN}fJn44w7V8T*k zL+8RG<1c|`OstXnN0iAbSXezmFm(r%Me=HWa&5Q2vdQbxjvj-J8{quJM8`kjW$TZT zysinMGO=lGT(vtOYM67Ba**#}01fKrS98xhS3K@5B`g#%O{Vod@xTtiod~ea*?A(7m2vN)4?!cpXdW z6-(nQuvHL=S3Ax|z-v90YJH~Yt4J4^uPS(s<#8iii zW;^7xI3JvEt^kU}UQt3ut$>#d4g z^^-{O(K4Dr^9l*qhS}Dn!8RXgEu>_8qN`MZL^pymfy2QVRI8@+P*n|TWwM5s$UB|laRY?aL0Qg&@W9Hw=J zDch2V9R)1S5Inp&G}#xo@uvyn8JrrAt^p>m1HoQ8c&p8wcqvsQjEaYQhZh(n@I`L37d7axfoD1)okhfv-#317TnC#b z8V^%(U}`ESHgbb$L7ZI4&iqiW0en^u>~0~($6#LisvR-5!l3cWQ|DrdbEFarEDXfP zfcWcvTGts@vrq|(+WQ=vJTnJQ5b05i|A^|BZm2NO^qJfio}{!17BV!v96s`~R%2L^ zycMGinubSnF8_v6Sv~3BXH@8?H%d+gQrGLa5703aycW1GWG2~1Mhhm&P9GKV0&~Y< zYej+-z3F8)HBgPLSWz1=e(?=+7U&@G>*KdqEXQ(Y{McD#oJzdHE)Myur7#z7;44%D z+n`3a%?w)dUwc11iB@sa^y&A{p8)rH^|i1)&REe%QnJ!Y$E)oTK9|=0wKfhaadnqn z;)a>Ecgr2&QT@E0HqqyzARQ=exAaHixE}OL&LkvwI_!U)n#fLL6alLxF6w! z7U93#G^#0|^gQoKSliL(yr<@O(N@$Y6f9*Xs9q0FEZu}GBc&?G%Y9}VZlL@@3$%)U z=jObkZ?7OpKJWofC}QBqLE;bf7<1);Eu$uiI2R}VhID@8Cvy|DaA~ZQAqP>uMSb4`~0*#BHD165|HV}B~?qEVc-ntP!Cn4oVZTfuSBp-)@-svcakI2mmZ|A{(YHkdJ% zm8~$%707RpE3t8dU}oAfuw!*NvCw(A;Swd&aNtThEs1-09YN69DU4?~=TTfaUKzG* z8c$+E5KJKve!x{ysiibLn?*s4)jNG@bE}`aFg?R#smnKy#6>?Des9RSXnr>EnY6j2 zy+$X`mgCAnlzsr`V^LhY2W5OVX(>5A9SWRt?@UTvS0~=_5Av1K+Y$_S>-}X0yq!D` zw`V`?0=;jIJ6{ld{prR$@Moh!cpJQ?cei;{4nc>g*T=)I?^>w*(kb(}WzZhneL`t5 z-OrYh<{h*gL<@{sFmmc+vCk+`VgZFT(fg<}+nVzeJh6e>dTs zuT`BJ@evh3j3ve^TDF_bIyHTQa6i9Pq`WH|CWJ|PU3q%d$GG}SxB;fSJLuCCAPfC7 zXh$sJQzI-_GB2g@Tqs&XJ`?n6`?o+pK5A!xL-en||Dj8N3x-`lnzt0=Zh>WHl93B* zg2l(;N56W&vi&HrDdheWJ%Z|6(8YB2wi2*0%%cT%-7v^%)Q%q_hcQ{wptS@oJFLd)yr&q!;5~XGTSc{G; z@r(B!zb#e!n6}YzjzS5nuk-bwc|iFZDoZT-2*U4=ItvcM^UZff?Sqy6dp|EBU9i=g z9!80hS=~Pi!m@G>&@nGVOT}I>(%xizC4{F_!?O`{2KhH^q(kOH%v)$1K?Hz1DHzHIGqqoc-YCBJuHDw+nx8c|jC6 zZhOs~9t2+ubzQR~At2uaPJ<9MS)(IPWDilp=OJvOuKrFwc-N)7ov>bPI^Y*J8@6u5 zA>0w~P^MT_fFRIOjAqlZa(t)#E73#g-;MYxl7VKKdAk}uNpmesAb%qSYY~5LYc^*) zmyUau20F~{w$O8EXzN*PIR}xMD1~=9CB$A#S|`%ugfF(9fY2kW|9}rC*1cXJeIu87 z&j8C*#)7dqt$DYH7=zctP*BM*_Zy;`fh(toj6^9`j~{?M(DyTP;Z&0|QUN?Ko11AN z6t*4O0GdTo%1p-fvp2GZ&osm#{K-3Gs79oxWXc}EI>v<*u&g@!MNQR4n{A9z;G1rP zU!R(hItx}qN^FF48wBykE#>|?9X!+?Zndyl7B*E8XDajwa;o+bL+wZN+}eqh`^wJi zs9is4sHqmG<>-)O+9v zX%3h3Wj2!7I1J?~hwX?lbb+~0987zH{ZpkaTl)cW&o)T5zJzr;fm^*=4%6Kz_Kt)&h9`k&PZx*B11<@O@5{sB+?i!r}_v?;RV*>dgi=!I%@D%c+FQ zMs$=(kId26KxE{SmGYg_hD@_2yM1*~PnS`7xNwbt#m{s#a>Wl_bT^f-@e_x;jq4RzTSHHY60tS zuu^8kczho26}TBtiPYo6f{_ErfWt&%VWuyyZA`6AUs z%|zhqZuN?UD8XmibC1XxZ`)#WA+E@`E0Z+Mm+Rez1MBjzBxyM_!gGVXc*f1ieSI}! z-4HG=++fVQ8-<(NF2*Rd`0T1XN9=nHD{H}P55AKXzsw|4@Zxz8lVNpOZiA2|H0oei zl1d@u$>WqcrKUjjvLU>^gl_7K@m1`y3l$g34!s?y+ZRQ)9IfSS&-bTTu-&&nCTxbx zF0`yCqAX_|L)DJVApwgy2Uf&_0KccnbyoasWGm1j2{@8-s&+M8K+{QTc~X~Z^hX~t zt`$KrCgDX}lRy+JWqQ=8i)-pax0jDUhNe^10tJFA=~RGD=X2OF1N~%-qZ4-EqfyqP z@=JEg&&c)DwXaK2tNAM-?xY^&*JsOL^O@nuJ@nKj9(qS(>F+yPDU9@reoVXMD3O*< zjlxlAj)YQDxi$}TlG;MCCMQ8oK}^ybyN8|g1)ImizplX)lx+0*H^_G?5o>xlM{FUK zn69?-Nx<)H7EUkug1@17LL(E#BrJggMX)TE_&D-mov(vlsK>}}XoyTW3%;GUTlU%t zM{m?>tl$Nj77t`e754LV&dB9s5E9GE&#+!!>izI?lHr7+RoJAT?Yy|q@moMY+4bek zMgzO=UZM$)!E<9SQ*$;Wqg4nykXa;k1pXJ)TdY2b)#)@eTnjeg;ew5io6M8R7VgtD z6J{ecuK|t?i{Fk9G=PkIo)=Y)!;rrlVLT#C>a3>esaCO~GAOxIzK;qm_wxoz6FtH; zLwc*EgFp)Tqyuu&IC?G0?v#b^d1+p+HVs3N2bZJse5>Z2BpzU^q~=(IR3R;E=l0FR zuKdmSDqrP|rNy8_0N7Nzn4IA%cUX8$%xvtCy1TK-aQwD)Pu|SP{qZq7uk~Wkq3p9Q z41=6^Gm0C+4ptc;(w_V-DQ{^!uDG5c^7Z$b*=1U2UQw}%I;%ElCP&2Oqv z5C}x$@vh-`sr|=$=jHE$dIi17}_ea*1nJKbt2?h2GyTP3U5omt&F{DX;XF zj`1=*_Gfc2pY>)@l>BJz#_KW6i&(hWgYBhiJMziZIX4+Fee|(3G7duESF(ib6^f_y zX-FOVZX_V6G2s2O&3-`J6Y>i0bvc21i-;us!s&AyurATpc@%N@>uCY{q^9CyLsPRMJgzXHeqf|C;8WE5j+ zcVl?5s31%i%}QGVcQO%MW^ZntaDY0+Ad`8SbOm*__6Lu(72?GyvE6&y~@l=B#6175On;Q5-h2 zv>G~YF2T#)>zC{difR||VY%(`pwQHhZ4v$a^;6`Z=Q{b!vQf0Ug6Xgt0UciLD7QUe z4ZA~>FKc}BhFo012RCeg@2;#Q$jPz-w$dQluKf*F@0872z1)IKa^#=+HJ z&K2X+ctOwnJvnn#gLzW9{j~GF#8MZB&0Di(R>mGNh_#L%`-PO91}B+tAqbI;u=v68 z0gu|1KRDN&SL5<*9x1Q$9S*d$6=q>Rl5OcFZq?77PsThOO^BK4aT*4)8oieMlL5T* zBe|hg`vwu}$y+GPE8@`;*wP@7kPXigwCY%Z%b19HYQ{7_uaIL0m!L7gC%FSELeCleRv%&c9Y3|C zz8RHDnS|mn(T*9Oo=B~*?e9(Q`(2-@wb<7B!Akt2C`<)=-u^GeXHaBqX(QTU5PwNk zbDX|9Xs)IdG|G#LL}R$CdBhono=o5>+2PO)XZrdGF#Q$iJ_8=Gdq<6I=BNa4JMR6S?O1b8@^H)Lc z7s*%2`Z0lRk4(wjVIQU75&{ob1~XOtxu6NeeQSGr#H#e81WwP#%iV?y@QWh z5$9+I`-oDM3{|~&)wGo~Pj6k(Ny%0Gq4yn-$-!(lPYD6}DXFd!j#w(~$o@3>+FlId z$@mHxxhdkv53?xA`U0c4c(igq5Uu1r6oC(24H`1lGDy+PH&EN`8!m)#p#ede2TNYl zm^WSn*ZtW$?G%tyOxg&Kp+3829p>8uODTW5|3cYSODULKcqL8|KJ+m~iBfW{B#E=^ zhVzVN`!w+|+T5{mm>d8KbEnoI(48p|lcf4J&Nx9U&8p#$>0kc@Nb%~bSniCHcZ$|( zc5E)XS-i0)sY*U8pTz3T_A5XVo+`auh~p9 z0@qm!CL#)2w(UzUu}n6^RAc)S7ri(NQq@NeoKpRK%)h32H^g35L?LSEE&%riAKPw% zkiA*PJJ8$3`%N;Ehj+~z@2(HzAiA3eX!N)@?VmJQG9(#v5S2NbecI068@k^#;G*t1 z2U*Oy92nJ-Ts{0S{EMD#CjdJo{B(T#n3PDA(D=+cPgZ|*P_;kjvRIOlpc0G3zB_cN zsZm|{ne=IaEr29#@a#Cr0X;PX~H9{Rqno82j|R(Zq_9%&&)B>p62aIet7Tc z&}`8hj6KC`x=X})chU*FX1!|XWeun!UT4RCI=zb^aa~Kr<|F#_5JN6U>z(rY8oH9c z@ZqV`igY@jf>n5uWnrvAgH%Ppp$HlTL760ao?iugK%$d$BHvIjosneRj2a27e%gIY zxS77gq-yy71cHnY)ca6&hufb0Ge(mgTM+ongWsf1S4CGdzWNV+*)dhZvU&Qy zt*(n8zmX_T4+2!;JGP)gDr8YY&eXIz`56co6W&SX9;Gkn&Tdsu#gNNtwFu|77=Jx)` z7TK@s%XgisKd_R4DwP<*lsY!2pb3dh_lw?cg)lC6k6#RaFg%zTCJ9 z1B)-tc)OmTAFWt~HShS1#T=bzYTI)J?Vofz-hL-aP(rzkqAFYA>9(x3dT4(S(g8iST;<-QG%sn(F^YNjJZ!|9qc}I=S5eN?w z40YK)HennR;|9h}kPU%N02t3YnZbhA^wWN~DM?#z;9!(hZfgfoIltZA-RV_uq~h^v zQc@b4k$hzgC*weZphJ8EKkwVjoD|#zeNy`4trfBXAN#hxjUCB}A5ZJw)2-UN2p8}d zNYfyC?Qkn}FM0L{Z&CRLn4!7}qPl&jWA|G@N)0^77SK3hlBb5)_6s77r5+B(-z_b{svh)-Lg@|IEmGv6dpWh;%y+te>s; zzT6JA7xX6_Z$8?^cir6Kcs4vkJeB9ODdWOC8|<8iH+jCb<`@7=mHiV?8oRk{X8*vy zULt+N_f;sC`#q5yK~WzLtp@yB-F911)zC|*UaeQvZIq9O@dcTA``nja9m7m-lns~S z9Vz}UC#b~Po%^YMJ9p0Uxxv-^weVCx6*$OF`{vGFEi|&G0;dp7>MdeD7a*>;mxp8% zXJw@s*GlQO@Ixm45lSQA2h6(D@k?)DW%tX?V)U#XPw|Ba;WV1N^m2D@5sUar_Ke5L9X}w z#fIgbuMhuiV<)c#8Rm8$A>Yjx6r6}ky1lm%>6^k7A+sjDx!+?g z-)CqT+gW0sjDLon9-;A^2~XtuwSs$(ZfL0P3Hc(B#V)4N0%+hi?2qB`^sQ<7vHT^~ zi*$^{ce^ff!>)PN-Z_OA%*90$8rDYDBO7h1pBv!g5!Iy;Fx^jZS^3zgoS?i)HWa4} zjpgw053Db^^BK7q7lPgYFe8IhNR&+gH!f-vJpAqLS64&TvQv|TF#a`zSrZ4BrvR(j z8|&qi^SPT+K4FLEFS_|qjEZFv=cBr>@^5DzZ^sHXffGC95Kg{`9S{>JS2r~+r&a^j zV}Yk4pSU31Dza`Vi|ORf-Sdov^pNaCyI~9t2Lb1(E?BB!j`ZbLtX7rRtpe?%izZ}* z>KQ>JrW{a+sa>s^s;O?%r?013LoouW6cq4lG3?l#BcFi&!xT~z-I;?%CB0_cz$jW# z8gkK)In&HjCFg8*fx%!qpj?kkfl-?>(k^>VGC_}&#R(@StRxGQgUDJY zQ0T205G}UOLJzQFdjiuT#IXY^A+Qw^USDXI(ao2^XF{MCh8~~^CvAOGs#-U1Xh(SdZzpr2C-&TMnz5xao`Tp*&`C75wNK zbUr~&nXgTyCH~5-Zs~g;R|2uYy=hUqTocgidkQ>ReU0$r5jIsKYtC?|NrJ|K2Xm!R zLLf_HW7BTR#PJA)EquF`cXLs*6_l#jC5l$M-{t}3F&;d+b&>}LSTPE(>F^XgjaS=h z?9Z6ET*$s(1H6c|$0ywUSG3)9L0(%Gnt36ZG$%(XB&{RkAOy=)Kpxq_Dm>r}XRv+l>8B}i8jME77qNR~}6KX{HqiL@S8A2UQ;G>%M<^40bUNogQxtirvnCijd5C`49x_W9KNeR)J zrlGuqZ2s2|4o3@L&%cdS&@ygAs-$mkF-(WPBe;1yY?WZ>B_*Xq2G_7eb1G{unN2nS zG}MS5vGFFbvHL{Cg+wmDs!-cQ*+KG+^uT#KXC7KfmMLwa%<>NRI)_e0v&(0s$0){V z&PdU+iBB&x>zIx6<-(Nf{-SC;s7<{qtnY>htoNmIepPl4PxJi!_G7fHdMWy$zz3h) z!9f(RfXo!%1QTE4$|n9UBh|#CkBUXmiXGLXm##I!za1)e${^X`%Ho7%cTe9LA#dRV8TEk1;L~;?3i9-522GT0{_YOC-IsOOjVrC zg#Lr&<1PpLpLs8w_lAei%&;~?$1MH!lg(VtWBMC=o=(Oje(hd;cDYbi3Z8TPDh|0I zEFuVw-$6UfLk>Erz62~A5GjPF=ko}l72Z$xZwaje~lEWibG}@m>K^G=VvRYSG(3P zyP;3+{)XjPngF1U$oF9b`I00!t11ks^bdncc==<0) zB1VP%nuS^cmw8ptfHOtdO@561Ut=!rg7>@<`-hfebqH5lor6k@0 z_vI_EzX_Y@qvNe^gGEbMOKGitOG|%C0S(87`q#YQWBGVymb5RF3Vp~;x6a7A;_D7L z;CSzLYkVjpVB>2Kp6wgBAz@$&@P~y2Z&`o?5S?DmPpJd=*m-S6xvtBwq)7Sbmc89S zt%hDyqBMo^_PJsVy84E~PUINYQK|kMGHgBDqc4nO=U6;&eu^E-NMHPp>>O-u>h2S~ z0`U7QbGS7sz=E2SL2yyOUA%j^J-EawY2Lp>q1zvRpbtwqWbMOeJe%B3yhW`QxixQe4doiPnUdp^1 zpgzr&AOs&y-~Fl0A#N)swC4=}flhV5hco)9rmSDWJ%$>z&^Qmptu>sVWaX9D-zJ7( zsc(ZXHSF;8kTTA}BCbr974h-Xpd(C>tF~>t^v+HAPu0HHMJ;$YQ{t!OB+IOQU%3ou z0N+R$q1qpI?_hD}?)KQmyPg7CIQzDMTN%#xD7O7FszjXlihc2GNAHjvqo+Rvnn?pk zIbMIT6JAeqYjN9kM0W)EP~>+WayWdWNlN8KW)Zr=CTs9|=fUk>4CsN~LT8NpcLqtc zO~NoQ)chDvfKq|Rg3v?f;20#2#KF&KHuec2xR+IOH_@}<^!aWNeU4|Ix604ZgcUREtnVA0TpKB71N8Vq&Y*}C zD*6C1{Slz>ArT8{LFkwgWelG%1VeVY6~)cE^T+_BOPebEGcB}c z7G0ay{eGB|lM-Xy|HDKj(u$8)xJfOo{*;(NwHadQpq@kP{CFFxH2qx;U|V7 zpJGqudmA-5MdIRe9bich{TkTj?oV##GPbW)S%!qbc`@EVA;D!PfH-Gv}T9<$tAgXhkgG&K~KliGlF) zE+vP&)PwBnfE$}zv?!%<9KiFbiEa3zMo0fQ8fUcs|v-a?{1 zV}o<#a)YVs*LqX@=Rcf-Z|s&5ntU5;>QODD9UH1Dm4ccPX6?BZJcjfSWX(j=h*^V~ z&lbOiGe{z72`7Gg8)YZlC}{_oWq?w1xZdRlh+ugN6$FoU`cQ@M4VtNW&qFgDZQmJ( zbulPvy^~}|VAoX=ensu8CA2a1p*OwL)}EGkSngUzWH+5I9;naza#9#MUD>P<}JPG*N4s7s@yF9`p6M2XLqA{~@R$76u3s0UtI-LnfTQ`=uAtYr1dHItkK`hAz{Ms4*sG2wLG{ z(oze%ZqPC1=2bLpy&sA!Uh#N&I%f9rP$S-IoO>lsU224m%O;CA3UMoRq9XV~|KssF zZrF5@E?O!g2FeuWN^VNwcAFh`q-^gBxJ}ZAJ|&dRqBp|XtUGbJR4wbg%FfptJ;001 zK;N2ZUg*~9yc@3k&UvtQ1BT(pY>wr(bP1L-qrxAh2LWNrwspUEU5e^{U}WhCBsN&W zcaz%pbvzi+!@sBbx|5fUnlyZ$Oj6iPvQ-bKOk>>iF^PgKv3D8Sb#K8ij1K@HkVCzS zqE@z7(`Cr_-&fo-H;3g^yWFrN_7bVoNBV*-{d=)bSMYJTWz<&*#!pC8o_ux1XNX@NT<|90I` z=$?|oJ_+!ied+xpHa{;p{}a*&QLae|#tSpK?8s;_1~Yp9zNMp|M9+w5I0S{PNuO5z zpg6jLW0;&~A1yp4dZOM|$>p1bh|9|`&Ng^Z`N{}y{fORisbmV85^=EP=~yk*$lC9^ z2Qp<-TWp2=V*QlE&;A?|nF`%$Q|laL6ypZjX!4d*mrtnMW&uw&cE( zXBrRFU;r2{uX-AH34@{lkSdC$h?OuN?v;Q%Xo2r_eAiNU9_oGsIfqTg)xax&-?w(% zfPl>R{4--WyBl>hi>S`Rhr#Bir+TYFIv;H($ecweOAxZOKA~|%3i))XkMx^^hAkpc zU4B8)uH`K^ewDfDs78n74=igxnhhPn-9iViiVWw}GlZh|l_LH1d|&+;P$W`$JdDp( ztV6pFXVkH5y=QOzJs7vX6eeKa-5{Z-h>*WhV-i?4jE3zEARrt?1h%@M<@??-zdt;f z!)SqZp?H0N(3|vTjIVZszH!R_v{nA$Y0ncH&}u3 z{ys`Km|`B0Cm3PLvc*hqQi-{M&#Yh52mV~k2I%XH^8b`@-_dYAZ5+TO(Ypvju+bB3 z_1+00YV=N!5Z%hEi|C?7@0}3cM(-uDx&*OS?{yKq^IpIA?|aVd%-uQn%z5Vfd_?j+ zJSn!P>e?R&OPp4gtH?gz^ZZB$pC6|8vt0?0t3VXDhzG2TC1oQXI>Hrh3=~Z*K4_jf z&2h7FQWB`Jv&YqQ;RqJ3m7<6dX*dWt)q|T%!~XNZ9OPoT)%sHR3ULwz`_trDH;#i& z`Kq$S=2TuZj^vY^by6IvMwi=K4l^5=?Z{jAbqyt5!t}QHEr0P-W+E=XQCeHCKL=Nl z;$rJg&nmAB^~{I;UbRC93(kK&L^}PNz)UIE>2h)RzDfObaF>C( zfM-pnXSA$}>Nt2mFC9C~XTl!tcHsMd=-}sD?FYfu>o{aRghNZpqs|*^V8VA2v{o6k zB+_a_5NDX8Ua5sLck7XtJGvC)?@EvF;}SlGtbj{SXC#Rz8TyLlV|l+Aq1BkL8Ql6A zbIrJmvAC`wl((?2@B01-ldkwDxf_(dz9S_FBym|^uGghGd%7R{@1V>$K=k_xc%QV&rgXziWxT;%LR$2a|`m}?1!)-%96{_Uy_2`&2xDPsNygl`|8d1oG2Pas@e*1#4Q2 z_2kj+Ez*OoN&l>&V4gCmrWyu#wTQLC1O9@NsKFl%1?~Ap6zR+?3dubFr>0?*UF9ce z&wmY7jPs6&-IS`YN!$vwv2Ark9&<O=KH##5%x|NOD<{%+4ogS*13)I6_xgZo4KKfKr z)78|}qFztY+m`y?9`AcC5?5uam3?TZdwM{3*LDU&tiJw#(3bAdLzrsZR+2DxXasV<-CzwrOyIU8?zB7HrRnHIEniB0pQ z`6A-r56h5GH+jahmw$?G7L(a5^XIxeMy2GQ$lw}hUwE=r-W+r&*P?UQ&y=`WZveX4)K2jq! zHv@K~aZ7a9v(Op6@upE8x2L+-2Q>hJq5@W5P;D?sjZfAZ{wl76yVkvDYjluE#`2!^ zXCn9!t$^Bv=I1q0Y^7xY7kn`{!SY^EWrgVqwNTLQwcYv6&G}XlB7zauvd4UWI`mm1 zf5FUy>?5-xtyqn#tAI&tmfy5F*;DWXKOjQ9K_+bmeD2a}T@*d4^z9#|XJ4w0 z{N4(mcj3<&!9FD*K``3>OI_{VaWOP6!2h~rDbz15#5f}nTIOpU_Mza3sLsM0u z_gD5n`^3_7y867<($HYhXGycz6NL>Jy5`JhzPR)3u2Ig4eDttYE`eJ2rC&ba6jw6V z%rgHYKE1mgc?&&u(YKUj8{kd%A*azalIj!aj-A)a0fd3^5tffR<51y6_d&uzRA@eV|zxdn5vd3M70sx01hah z^|f{w{ajTSZB}cn`|t}7$sJufqO=x+KY64(Bi5H(X()|(g)!=xXwq=wzi)TB5-lbX z5Y?!1WE@`ZVF?OjZPtz$<}&N;usqHNmw{-si@{gp@c9vGO%mdv^J@5SRDfH)pl<^- zhu9S@pa=K`o?$Uqwo3*Ha|Sn^x{c_2p_)*C` zxmy*WBl^&F$S^y%jUn&^g80zd|Loq9eaa zd({gsUV1waN|_}@ls5}yLY5h)hFPhfSx&g0V!8Y>9bEzYd!?KXx%R%4N#n_j(Uqh7 zSN2h%Qf4*YRYk|_0*_UScRQ!F$3pc$dlj*r zvWV67e3}W?~YOhm&2&LWiAmE-)7wPpE5!-Cwv)(qj)aswz(f{hBJKYX0{f zgZA`yY4KST#48F-x2v>CFVN#;xR%|0p8_}@qI)p})_KWH-ypF|gq8Vb{ttn`r+0s` z5Q`Bl+`rr_Pag-vH2;o;?Cis^_FL=J=+HF#iC+~WgxnBKwGeAfZS%i>g)^2k%;A5Q=`~$zMPqor;;BW{yc{DgYhv90pSp9r> zG#P!tw4SQA&gb75oAruiDm^WFIC_F)3g5YV1AmN zKIwFQOyay$lp<92UI{H4iKO)#p+w{x=GN6pjQ-~T+;m*EmV>LWeXwr=<5jD%1k zJ;~hN%F*?Ewl7ztlN*JII>*aGowc7Eq8yFFe& zNo!%wlQ?CBgHmyMPEwU zAOoK_?Y7mr^7trRF`L=>0zQ+|BVJYf$aPgvLw!n;Dp)zN410gR%xUF#0lkwUVj48Q z_tqLX$Icm?rSHsqmLV<9tbcL_+b1kH5PQ?hitp)c&%1Yhb=7yyY+hHICEy-Y9HoXi zMwq0xLHAvTf0oTVGRiWzn_iIW$=`ZAf(y8=((;JCdM_Dps;r5S5n9z*?)sav$Tbbz zk$?J_?|u7xG=ed0rN4e}2c(wTuwa$^v2UP{JJ~f#CbXO0*FnpH^H7Lt$$5V*x2A{y z@`0HtDR%a8clJ=X(d^-dVB^J-uvVgWp2Yi?nqROhS&V;lfJMFn^Z31>1Z|G`fJq?e zW7Jv_bkk>$5{6h9mh*y%udBWJX>EwM>}Nx*oo^NFF9OXJpG~-hmacxHsNa60Bbrq_ zJ^$RkDZ>yW*>sN)AYTNuZD&g*r7IEKZvRMLxuSyMaiomK)!;pvbmHo@s`|EcLgE&n z4(4IOa8ahPc;ZThy6L&-j>8pzFrfpK=<>qeLzp{4rF3Q<44mkf`-&JWHQ}Qk>?G=Pp~G z4xH=YoM`(|lbEvpb@ikfiEQirQUt#}q&mHvyNaedRp)6BRoI7xHidnXPRgk zetv*sfo4bfJmH=2X|9Vj5d*#Z@NF?ZfpTeJoEU+{K@ya za+@`grog<&^i;sxWaH920cYbX{|*u22ffLR0`VJ!Qcmo@3YG^M2mUCF>R=4;7npy+ zVf#(!p?!%3pfHq8Y+Bp84QC}ddU)KN#(a-9=sO;4#SGJv+ zxCGD!edn<40N7jFu$SLNkNP^ABx}gu6h~_FMT?%ZUBdW35Bl4KTXl8 zv#@uS9O&ntH=D;4@OUX(pL!xxC3FxU-M^oQuRh)D{4%;qhNLD6onoERCn@;6+}PJG z7@UhKE|M$ZR7}D9nqE}}YIQrIFqD%SV8^@+`NnJ^8;^{iovi+Zt%9U3kQw3K$-ov0)|&V1reR?nt}L-nq#cQ2S2>f+lh}~iwf{n#owfJ zez=BZMUZVWG;Te{`5pV!htrmEmxSGl%o^jv{>(?M5E>`}XSxhWTnv+}hiLh9&KxlT zT8JQ1h#&SnqLv?RWUpA$Ol}FSBb6`eumMDbZsn5Q5e~0CbOYG%hWCovwED_AtPtJI1 zdd+cWI&}H1d6C@AXx^>dgi^dqTtuKRcoie=zA6pnAh!L%#iO`B#aQf)duQY~k@76R z2|<{huecXduE4l*sof-ZjZ=l9PdX$LKMS;5aQjQ(TVERd!H_7jAAvPvhY&5L5A_#E9C?`nh8**e62Nv@BvkSux6{d?!9Mjj z-teT$2YUU!k1;I?OU49kiYj?6-xMawA5dCHv}47^W5|*!_T*MFydh;^m{2a&-wniH zhLmp_rr84;RltW&yN$-k`0(eCpW#3G3d=&9zy;Dg0-vM91WY;FEA5pO$olEbC%@7u zK_3~m4av)rp5~e%Ls#4@!j<#$Sg1f|K2K2~8+H7^T>CD|W+4TEKV$qgLFo4-%tuHY zKm0%jFH>Yd#wWFK&-{w-j@+nMnvQA^>vrHl-yh`lt7dEkqCeB0t_9(1n#Iu#gVz+n zC55KuD}yJ3pic@{HKZi6MUxT?5JS@ZFKowkH<|+Gg=8bU-d>rqMQeok+LQ(Y}xPU@I3*-$ptBB zC_DtW;730ugNm1yxqZWqy#|nCrhKJYe5C^9m7e;9P6wD(RtW;hB^@C3bAx9XL>Ts* z_6gCY(U;Bpe%B>LPTpI;TTXcfTzDv;mBk9(%;jYKXyxi*!0lOfgbiOSn9Bn<3ys~o zMEY^2%Jtfz@}#E&>aghYz}h>C&%_wco7r8Xq_Q|#_}wDoMO6`NmoxyCDX%Dv+Rt+n z0i`UF5{|4~8lAVb3jr~%>fB_sB0R}@AAkd~S75Ncg_0^jcNF79DL}C&c=v7YDLn0O zqbK~wP2g}DCCpJdUFA7>N`T+XkII#5pxTC*-g9~nt7x@W zhiN3j!(}baB2EL$<*D@iHDFV$s2JR$%F;my~~(Jng{1ynr(91Ll# z4V_}+{$}8TRySmW>e3{BhyhR!38|T{q)QBz7Jvt2haRv!iNaBq{}9HHeU)tDWN-hn z(59Z9G`Y1&dEASb52tYdQY{(5AKzn+iJOoWLfAd#D2MB*ve0~+KE%;u>DhW|BBGk} z3|JKDyGG&tsy<42?<1PD4=1AkIFw1;$ZQ$VFT%v;0$XDGwdRe5MamG6A*8EYDz*X$l_q!sfY8<*!+&Zecb4Wayum)R1i-j7 z8{c08ANz0si`D8>he!60unfj6g^Rcy`*_s&fw6!e#W$3%r!B3sE+bT$8ZTWaTf1xn zY(1<;ofRyip%-k_U#izME+ymdcXS|z9dk%lzpJw_!Bhr{ zW!O%r)YpgH@4~v2yfVw47`h2<+?^#Q!4IwM3F^|r64Jnmnh)O(M?j10iGj1q3i9qaPU z;NG&hVl@R7a2)dj?Vf;@x`<`E_qX50S0zh|6(L7oeJ_QEFOe6BhMh4`<2w>k z%B!1E0aN73r)!x>Z-3Xhzuyu+4{%X(a74joIz6&#i>#^benV^tB+My81sGelt^r`y zX`<@&{lFy*4YdeB z`<(<|CFqV=eKySu@G+z6d~NsI>OqC@5k*YS-2BisAQ$EwEv5{ k<+^65`#d>g;2pU00k&`(N>hQ}@E-Jj{YqV-QqCgqe>C@%9smFU literal 0 HcmV?d00001 diff --git a/0.0.1/html/index.html b/0.0.1/html/index.html new file mode 100644 index 0000000..1f598e8 --- /dev/null +++ b/0.0.1/html/index.html @@ -0,0 +1,1429 @@ + + + + + + + Guidelines for Teaching C++ + + + + + + + + + + + + + + + + + + + + + Guidelines for Teaching C++ + + + + + + + +
+ +
+ +
+ +
+ +
+

Guidelines for Teaching C++

+ +

Version 0.0.1

+ +

SG20 (ISO C++ Study Group on Education)

+
+
+ +
+
+
+ +
+
+ +
+

1 Obtaining This Document: The Most Recent Version and Alternate Formats

+

The most recent version of this document is available as an online HTML document at: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/latest/.

+

The version of the document that you are currently reading is available in the following formats:

+
    +
  1. online (HTML) format as a single large HTML document: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.1/html [later to be https://cplusplus.github.io/SG20/0.0.1/html?]

  2. +
  3. EPUB format: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.1/guidelines.epub [later to be https:/cplusplus.github.io/SG20/0.0.1/guidelines.epub?]

  4. +
  5. online (HTML) format, split across multiple HTML documents: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.1/html_split/ [later to be https://cplusplus.github.io/SG20/0.0.1/html_split/?] [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

  6. +
+

Older versions of this document are also available. In general version ver is available at https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/ver. For example, version v0.1.0 (assuming that this version exists) would be available at [later to be https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/v0.1.0?].

+

2 Disclaimer

+

This document is intended as a proof of concept to solicit feedback from others. This document is incomplete. This document likely has at least a few errors.

+

3 Context and Aim of This Guide

+

This document is intended to serve as a resource for instructors to assist in the preparation of courses on C++ in a variety of settings, including university, college, and industry environments. The main objectives of this document are as follows:

+
    +
  • to provide guidelines for content to be covered by courses of various difficulty levels on C++ (e.g., topics and learning outcomes)
  • +
  • to note some common misunderstandings and problematic points that may be encountered when teaching particular topics
  • +
  • to suggest resources useful for teaching C++
  • +
  • to present examples of curriculum for specific courses
  • +
+

This document does not itself provide a curriculum for a single specific course, but is rather a set of guidelines that can be used to prepare curricula for a wide variety of courses that differ in focus and level of sophistication. (This said, however, some links to other documents with examples of curricula for specific courses may be included herein.) This document only intends to target the teaching of the most recently ratified version of the C++ standard. (This said, however, since older versions of this document are also available, these older versions may be of some use to those who need guidance in older versions of the standard, at least versions that do not predate C++20.)

+

4 Use of This Document

+

[NOTE: This document follows the same license model as the C++ Core Guidelines. The LICENSE document is taken verbatim from the C++ Core Guidelines.] This document is made available under a MIT-style license. In simple terms, this license permits copying, use, modification, and creation of derivative works. A copy of the license is included in the section LICENSE.

+

5 Contributing to This Document

+

Contributions to this document are welcome. If you would like to help with this project as a contributor, please read the section How to Contribute.

+

6 Organization of This Document

+

The various concepts (i.e., ideas) to potentially be covered are partitioned into modules. A module is very broad in scope and consists of numerous topics. [Note: Can I suggest that we use the term “area” or “unit” instead of “module”? I think that these other choices are better and also avoid any potential confusion over what is meant by “module” (i.e., C++ term versus plain English term).]

+

For each module, topics related to the module are identified. Then, for each topic, learning outcomes are specified. In order to address a wide variety of courses on C++, each topic is addressed at three proficiency levels. These proficiency levels allow each topic to be covered at more than one level of detail. This allows target audiences with different background and learning objectives to be accommodated. The three proficiency levels are as follows:

+
    +
  • foundational. This level gives the learner the idea that a facility exists, what benefits it offers, and the basic ways of using it. [Note: Isn’t this just “novice”/“beginner”?]

  • +
  • main. This level shows mainstream uses and techniques. For abstraction and organizational mechanisms it also demonstrates how to build them. This level should also give the learner a basic (but not detailed) understanding of how a facility might be implemented so that the learner can have a first-order understanding of any costs involved. [Note: The term “main” is not very descriptive/helpful. Could I suggest using “intermediate”?]

  • +
  • advanced. This level gives information suitable for an expert. For most topics there is an expert level of knowledge that most programmers rarely need and techniques that require detailed understanding of language rules or library implementation.

  • +
+

The remainder of this document is organized as follows. The various topics are listed grouped by module. In cases where a topic might be classified into more than one module, the topic is listed under the module of most direct relevance. This is done in order to avoid duplication of content. (In the case that a topic is equally relevant to multiple modules, the decision of which to select is made by a proverbial coin toss.) The order in which modules and topics are presented is not meant to imply any order of coverage in a course. The order in which items are listed is essentially arbitrary.

+

7 Summary of Modules and Topics

+

In the sections that follow, the various modules and topics are presented. There is one section per module. For each module, a table listing the various topics in that module is provided. The ID for a topic is linked to the detailed coverage of that topic that comes later in the document. If a topic has any learning outcomes at a given proficiency level, this is indicated by a checkmark (“✔️”). If a topic has no learning outcomes (simply because there are not any, not because the information is missing), this is indicated by an em dash (“—”). In the case that the information for a topic is completely missing, a question mark (“?”) symbol is used.

+

[NOTE: These topics are taken mostly from the SG20 GitHub repository. They are not intended to be complete in any sense. In fact, by gathering together all topics in one place where they are easily viewed, it is hoped that missing and unbalanced items will be more obvious.]

+

7.1 Compilation Model

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Translation Units???
[?]Headers???
[?]Modules???
[?]Name Mangling???
[?]Phases of Translation???
[?]Separate Compilation???
[?]Linkage???
+

7.2 Preprocessor

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Preprocessor Metaprogramming???
[?]Inclusion???
[?]Macros???
+

7.3 Basics Types, Objects, Values, Expressions, Statements, and Control-Flow Constructs

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Constant Objects???
[?]Declarations and Definitions???
[?]Selection Constructs (e.g., if, ternary)???
[?]Looping Constructs (e.g., for, while, etc.)???
+

7.4 Functions

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Calling Functions???
[?]Parameter Passing (e.g., Passing By Value and Reference)???
[func-args]Default Arguments✔️
[?]Returning Multiple Values???
[?]Overloading???
[udl]User-Defined Literals✔️✔️
+

7.5 User-Defined Types (Classes)

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Special Member Functions???
[?]Types???
[?]Conversions???
[?]Constructors and Destructors???
[?]Move/Copy Constructors and Assignment Operators???
[?]Member Functions???
[?]Sum Types???
[?]User-Defined Literals???
[?]Special Member Functions???
[?]Guidelines for Special Member Functions (e.g., Rule of Five, Rule of Zero)???
[copy]Copy Semantics✔️✔️
[?]Moving and Copying???
[?]Lambdas???
+

7.6 Inheritance and Class Hierarchies

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Virtual Functions???
[?]Run-Time Type Information???
+

7.7 Compile-Time Computation

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Constant Expressions and Constant Evaluation???
[static-assert]static_assert✔️✔️
+

7.8 Generic Programming (Templates)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Concepts???
[?]SFINAE???
[?]Template Metaprogramming???
[?]Function Templates???
[?]Requires Clauses???
[req-expr]Requires Expressions✔️✔️
+

7.9 Error Handling

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Classes of Errors???
[?]errno???
[?]Error Codes???
[?]Exception Handling???
+

7.10 Standard Library

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Input/Output (I/O)???
[?]Containers, Iterators, and Algorithms???
+

7.11 External (i.e., Non Standard) Libraries

+ + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Graphical User Interfaces???
+

7.12 Building

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Software Build Tools???
[?]Strategies for Handling Build Problems???
+

7.13 Testing and Debugging

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Source-Level Debuggers???
[?]Code Sanitizers???
[?]Test Frameworks???
[?]Debugging Strategies???
+

7.14 Tooling

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Compiler Toolchains???
[?]IDEs???
+

7.15 Software Design

+ + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Design by Contract???
+

8 Detailed Information for Modules and Topics

+

8.1 C++ object model: copy semantics

+

Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

+

8.1.1 Overview

+

Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

+ ++++ + + + + + + + + + + + + + + + + + + + + +
LevelObjectives
Foundationalunderstanding how and when are copies made
Mainimplementing user-defined copy operations
Advancedspecial cases: copy elision
+

8.1.2 Motivation

+

Why is this important? Why do we want to learn/teach this topic?

+

Copy semantics allows the user to define how objects of a class get replicated and interact on a value level.

+

8.1.3 Topic introduction

+

Very brief introduction to the topic.

+

Explains when and how objects are copied.

+

8.1.4 Foundational: How and when are copies made

+

8.1.4.1 Background/Required Knowledge

+

A student is able to: * explain what a C++ type is? [C++ object model: types] * explain what an object is? [C++ object model: objects], [C++ object model: constant objects] * define and understand class invariants?

+

It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain special member functions [C++ object model: special member functions]

+

8.1.4.2 Student outcomes

+

A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

+

A student should be able to:

+
    +
  1. explain what copy semantics accomplish
  2. +
+
    +
  • establishing “equivalent” object state in another object
  • +
+
    +
  1. explain difference between copying a reference and copying a value*
  2. +
  3. explain where copies are made
  4. +
+

* In other languages these differences are sometimes referred to as shallow and deep copy.

+

8.1.4.3 Caveats

+

This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

+
    +
  • Compiler-provided copy operations may result in ownership problems (e.g., char*). These ownership problems can generally be solved by using types whose copy operations have the appropriate semantics, e.g., std::string instead of char* to hold string values.
  • +
+

8.1.4.4 Points to cover

+

This section lists important details for each point.

+
    +
  • Principle of copying +
      +
    • Copying of types, which follow the rule of zero
    • +
    • Copying of types, with user defined copy operations
    • +
    • Copying an object does not change the original
    • +
  • +
  • Practical applications +
      +
    • std::unique_ptr (has no copy)
    • +
    • Strings (copies the value)
    • +
  • +
+

8.1.5 Main: Implementing user-defined copy operations

+

8.1.5.1 Background/Required Knowledge

+

A student is able to: * identify special member functions [C++ object model: special member functions]

+

It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain the rule of zero [C++ object model: rule-of-zero] * explain the rule of five [C++ object model: rule-of-five]

+

8.1.5.2 Student outcomes

+

A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

+

A student should be able to: * explain when they have to implement the copy operations for their own type * Copy constructor * Copy assignment operator * implement copy operations for their own types * Optional: explain when copying with basic and strong exception guarantees is useful

+

8.1.5.3 Caveats

+

This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

+
    +
  • Intricacies when implementing copy operations: +
      +
    • Examples of how not to write copy operations (e.g., C++03 std::auto_ptr)
    • +
  • +
+

8.1.5.4 Points to cover

+

This section lists important details for each point.

+
    +
  • Copy constructors and copy assignment operators +
      +
    • How compiler generates default copy operations
    • +
    • =default, =delete (No copy)
    • +
    • How-to write your own copy operations
    • +
    • Rule-of-five
    • +
    • Copy assignment operators can be ref-qualified to avoid assigning into temporary objects.
    • +
  • +
+

8.1.6 Advanced

+

These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

+

When can copies be elided and when does the standard guarantee copy elision. References: * Abseil tip of the Week #166 * cppreference - Copy elision

+

8.2 Functions: user-defined literals

+

Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

+

8.2.1 Overview

+

Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

+ ++++ + + + + + + + + + + + + + + + + + + + + +
LevelObjectives
Foundationalusing and understanding UDLs
Mainimplementing your own UDLs
AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
+

8.2.2 Motivation

+

Why is this important? Why do we want to learn/teach this topic?

+
    +
  • Allows clearer expression of intent in C++.
  • +
  • std::string: "Hello, world!"s
  • +
  • std::chrono: 3h + 10min + 5s
  • +
+

8.2.3 Topic introduction

+

Very brief introduction to the topic.

+
    +
  • Explain the existence of user defined literals. Example: 12min + 17s is terse, expressive and type safe.
  • +
+

8.2.4 Foundational: Using UDLs

+

8.2.4.1 Background/Required Knowledge

+

A student: * knows how to form numeric literals, e.g., 1.5f means a float of value 1.5. * is familiar with the major C++ types: * bool (Boolean type) * int (Integer type) * double (Floating-point type) * std::string (Text type) * std::vector (Collection type) * knows that namespaces exist, and namespace std. * knows what using-declarations and using-directives are. [C++ object model: declarations]

+

8.2.4.2 Student outcomes

+

A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

+

A student should be able to:

+
    +
  1. use using namespace std::string_literals[1].
  2. +
  3. recognise UDLs in code that they are reading.
  4. +
  5. figure out which UDL definitions for a used type exist.
  6. +
  7. identify parts of the standard library that make use of UDLs.
  8. +
  9. prevent the dangers of temporaries created with "blah"s as well as with std::string{"blah"}.
  10. +
  11. effectively selects the right set of namespaces in using-directives from the sub-namespaces std::literals.
  12. +
+

[1]: explain that it’s okay to use a using-directive to “activate” UDLs.

+

8.2.4.3 Caveats

+

This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

+
    +
  • A student gets confused by the similarities and differences between built-in suffixes and UDLs and between UDLs from different namespaces.
  • +
  • A student “activates” two suffixes with the same signature from different namespaces.
  • +
+

8.2.4.4 Points to cover

+

This section lists important details for each point.

+

8.2.5 Main: implementing UDLs

+

8.2.5.1 Background/Required Knowledge

+
    +
  • All of the above.
  • +
+

8.2.5.2 Student outcomes

+

A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

+

A student should be able to:

+
    +
  1. write a UDL operator of their own.
  2. +
  3. separate unrelated UDLs into distinct namespaces.
  4. +
+

8.2.5.3 Caveats

+

This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

+

No caveats at present. #### Points to cover

+

This section lists important details for each point.

+

No caveats at present. ### Advanced {#udl-advanced}

+

These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

+

8.3 Functions: default argument

+

Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

+

8.3.1 Overview

+

Functions in C++ may be overloaded with different numbers and types of parameters. It may be of value to specify default arguments for some number of parameters, to allow a caller to avoid specifying arguments that rarely change, or to enable expanding the set of parameters while maintaining backward compatibility with existing callers.

+ ++++ + + + + + + + + + + + + + + + + + + + + +
LevelObjective
FoundationalDefine and use functions with default arguments
Main
Advancedrefinement of default arguments through multiple declarations
+

8.3.2 Motivation

+

Default arguments allow the omission of arguments with obvious or common values. Also may be utilized to extend an existing function signature without forcing changes to existing calling code.

+

8.3.3 Topic introduction

+

Explain how default arguments work and how to define them.

+

8.3.4 Foundational: Using and defining functions with default arguments

+

8.3.4.1 Background/Required Knowledge

+

A student is able to:

+ +

8.3.4.2 Student outcomes

+

A student should be able to:

+
    +
  1. Call to a function with a default argument with or without that argument specified
  2. +
  3. Declare a function with a default argument, and omit the default in the definition’s signature
  4. +
  5. Explain when the lifetime of a default argument begins and ends
  6. +
+

8.3.4.3 Caveats

+
    +
  • When no forward-declaration exists, the definition serves as the declaration
  • +
  • When multiple declarations exist, only one may specify the default for any particular parameter, but multiple declarations may specify the defaults for different parameters.
  • +
  • Additional default values may be specified for other parameters in repeat declarations
  • +
  • Calling an overloaded function with fewer arguments may be ambiguous with regard to an overload with default arguments
  • +
+

8.3.4.4 Points to cover

+
    +
  • Default value may only be specified once for each parameter among all declarations
  • +
  • Default values must start from the rightmost parameter and continue leftward without gaps
  • +
  • Considerations of when to use default arguments vs overload set
  • +
+

8.3.5 Main: implementing *

+

8.3.5.1 Background/required knowledge

+
    +
  • All of the above.
  • +
+

8.3.5.2 Student outcomes

+

A student should be able to:

+

8.3.5.3 Caveats

+

8.3.5.4 Points to cover

+

8.3.6 Advanced

+

Subsequent redeclarations of the same function may add default argument values, which are then usable by callers. Though a single parameter cannot be given a default argument twice in the same translation unit, it is legal, though ill-advised, to give the same function different default arguments in different translation units.

+

8.4 Module name: Requires Expressions

+

Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

+

8.4.1 Overview

+ ++++ + + + + + + + + + + + + + + + + + + + + +
LevelObjectives
FoundationalDefine and use requires-expressions to check satisfaction of expressions by given parameters
MainDefine and use requires-expressions to check properties of expressions
Advanced
+

8.4.2 Motivation

+

Requires-expressions allow a developer to perform compile-time evaluation on the validity of other expressions. These are fundamental to the ability to write concepts. [Compile-time programming: concepts]

+

8.5 Topic introduction

+

Requires-expressions are compile-time predicates which evaluate to true when their specified set of expressions are all valid for a given set of inputs.

+

8.5.1 Foundational: Writing requires-expressions

+

8.5.1.1 Background/Required Knowledge

+

A student is able to:

+ +

It is helpful if:

+
    +
  • The student is aware that attempting to specialize the template with types or values which do not match otherwise unstated assumptions will cause errors within the template.
  • +
+

8.5.1.2 Student outcomes

+

A student should be able to:

+
    +
  1. Write a simple-requirement to assert the validity of an expression
  2. +
  3. Write a type-requirement to check the existence of a type by its identifier
  4. +
  5. Write a compound-requirement to test the resulting type of an expression
  6. +
  7. Write a nested-requirement to test the constexpr value of an operation, as opposed to just the syntactic validity
  8. +
  9. Use a requires-expression within a concept, requires-clause, or if constexpr condition
  10. +
+

8.5.1.3 Caveats

+

To require that expressions, which evaluate to a boolean value like sizeof(t) == 4, evaluate to true a nested-requirement is needed (e.g., requires sizeof(t) == 4;). Omitting the requires results in a simple-requirement, which is satisfied based purely on syntactic validity, not on the result of the operation.

+

8.5.1.4 Points to cover

+
    +
  • All requires-expression requirements terminate with a semicolon.
  • +
  • simple-requirements are used to check that an expression is well-formed.
  • +
  • nested-requirements are introduced with requires and primarily used to check the result of an expression computable by the compiler, including concepts or other requires-expressions.
  • +
  • type-requirements are introduced with typename and used to verify the existence of a type with a particular identifier.
  • +
  • compound-requirements are enclosed in braces and can be used to check the resulting type of an expression.
  • +
  • Checks are performed by the compiler, not at run time.
  • +
  • If covering usage of requires-expression with requires-clause, [Compile-time programming: requires clause] demonstrate requires requires and show how to ever avoid writing it by using a concept. [Compile-time programming: concepts]
  • +
+

8.5.2 Main: Advanced requirements

+

8.5.2.1 Background/required knowledge

+
    +
  • All of the above.
  • +
  • Knowledge of noexcept
  • +
+

A student is able to:

+ +

8.5.2.2 Student outcomes

+

A student should be able to:

+
    +
  1. Write compound-requirements which test the noexceptness of an expression.
  2. +
  3. Use a concept as the target of a compound-requirement.
  4. +
+

8.5.2.3 Caveats

+

8.5.2.4 Points to cover

+
    +
  • Compound-requirements allow the optional ability to test whether an expression is marked as noexcept, by using a trailing noexcept keyword.
  • +
+ +
    +
  • If the return-type-requirement of a compound-requirement is a concept, that concept is given the resulting type as the first parameter, followed by the specified parameters in the compound-requirement. { ++x } -> C<int> would substitute C<decltype((++x)), int> and check that concept C is satisfied for those parameters.
  • +
+

8.5.3 Advanced

+

8.6 Meta-error handling: static_assert

+

Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

+

8.6.1 Overview

+

Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

+ ++++ + + + + + + + + + + + + + + + + + + + + +
LevelObjectives
FoundationalCalling static_assert with a constant expression
MainUsing static_assert to detect contract violations and improve error messages
Advanced
+

8.6.2 Motivation

+

Why is this important? Why do we want to learn/teach this topic?

+

static_assert allows the developer to enforce that conditions which can be checked during compilation will force build errors when violated. Additionally, they are the best mechanism by which a developer can pass useful information to other developers regarding what violation occurred or what must be done, instead.

+

8.6.3 Topic introduction

+

Very brief introduction to the topic.

+

static_assert is a compile-time evaluated function that asserts the truth of a supplied predicate, issuing an optional user-supplied error message if the predicate is false.

+

8.6.4 Foundational: Calling static_assert with a constant expression

+

8.6.4.1 Background/Required Knowledge

+

A student:

+
    +
  • Should be able to explain the difference between code evaluated at compile-time and run-time
  • +
  • Should be able to cite some examples of compile-time known information, such as sizeof(T)
  • +
+

8.6.4.2 Student outcomes

+

A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

+

A student should be able to:

+
    +
  1. Assert the expected size of a structure using static_assert
  2. +
+

8.6.4.3 Caveats

+

This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

+

8.6.4.4 Points to cover

+

This section lists important details for each point.

+
    +
  • X
  • +
  • In addition to what is wrong, a good error message will inform the user of how to correct it
  • +
+

8.6.5 Main: Contracts and static_assert

+

8.6.5.1 Background/Required Knowledge

+
    +
  • All of the above.
  • +
  • General understanding of compile-time requirements
  • +
+

8.6.5.2 Student outcomes

+

A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

+

A student should be able to:

+
    +
  1. Utilize static_assert to verify preconditions of a meta-function
  2. +
  3. Utilize static_assert to verify the results of meta-functions for known values
  4. +
+

8.6.5.3 Caveats

+

This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

+

8.6.5.4 Points to cover

+

This section lists important details for each point.

+
    +
  • When writing a meta-function, use static_assert to test the results
  • +
  • Write static_assert calls at the scope of the code they are guarding
  • +
+ +

8.6.6 Advanced

+

These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

+

9 Examples of Course Curricula

+

[NOTE: Anyone have any suggestions of items to add here?] The following are examples of curricula for course on C++: …

+

10 License

+

[NOTE: This license is copied verbatim from the C++ Core Guidelines.]

+
Copyright (c) Standard C++ Foundation and its contributors
+
+Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
+perpetual license to copy, use, modify, and create derivative works from this
+project for your personal or internal business use only. The above copyright
+notice and this permission notice shall be included in all copies or
+substantial portions of the project. This license does not grant permission
+to use the trade names, trademarks, service marks, or product names of the
+licensor, except as required for reasonable and customary use in describing
+the origin of the project.
+
+Standard C++ Foundation reserves the right to accept contributions to the
+project at its discretion.
+
+By contributing material to this project, you grant Standard C++ Foundation,
+and those who receive the material directly or indirectly from Standard C++
+Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
+transferrable license to reproduce, prepare derivative works of, publicly
+display, publicly perform, and distribute your contributed material and such
+derivative works, and to sublicense any or all of the foregoing rights to third
+parties for commercial or non-commercial use.  You also grant Standard C++
+Foundation, and those who receive the material directly or indirectly from
+Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
+irrevocable license under your patent claims that directly read on your
+contributed material to make, have made, use, offer to sell, sell and import
+or otherwise dispose of the material. You warrant that your material is your
+original work, or that you have the right to grant the above licenses.
+
+THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
+PROJECT.
+
+If you believe that anything in the project infringes your copyright, please
+contact us at admin@isocpp.org with your contact information and a detailed
+description of your intellectual property, including a specific URL where you
+believe your intellectual property is being infringed.
+
+

11 Contributors

+
Christopher Di Bella
+Florian Sattler
+Michael Adams
+rwdougla
+

12 How To Contribute

+

Before attempting to contribute any content for consideration for inclusion in this document, please read the information below and and the referenced documents as appropriate.

+

All contributions to this project must be made in accordance with the license in section License. This teaching-guidelines document only offers guidance on teaching C++ as it is specified in the current version of the C++ standard. So, content should be presented relative to the most-recently ratified version of the standard. A detailed explanation of how to present the material for a topic is given in:

+
    +
  • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.
  • +
+

Any potential contributors should ensure that they read this document. The following document may also be helpful in providing some general background on the modular approach to teaching followed herein:

+ +

In order to prepare content, it is important to understand what learning outcomes are, and how to prepare good ones. Some information on learning outcomes can be found in the References section. The following document offers a concise introduction to learning outcomes:

+ +

13 Glossary

+

Some possible terms to include in the glossary:

+
    +
  • learning objective
  • +
  • learning outcome
  • +
+

14 References

+

14.1 References on Learning Outcomes

+ + +
    +
  • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — Standing Document for SG20: Guidelines for Teaching C++ to Beginners. https://wg21.link/p1389.

  • +
  • Christopher Di Bella. P1725R0 — Modular Topic Design. https://wg21.link/p1725.

  • +
  • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.

  • +
  • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study Group: C++ Education. https://wg21.link/p1231.

  • +
  • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 — Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0.

  • +
+
+
+ +
+ + diff --git a/0.0.1/html_split/Advanced.html b/0.0.1/html_split/Advanced.html new file mode 100644 index 0000000..c4d659a --- /dev/null +++ b/0.0.1/html_split/Advanced.html @@ -0,0 +1,60 @@ + + + + + +Advanced (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

8.1.6 Advanced

+

These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

+

When can copies be elided and when does the standard guarantee copy +elision. References: * Abseil tip of +the Week #166 * +cppreference +- Copy elision +

+ + + + + diff --git a/0.0.1/html_split/Background_002fRequired-Knowledge.html b/0.0.1/html_split/Background_002fRequired-Knowledge.html new file mode 100644 index 0000000..d3ee185 --- /dev/null +++ b/0.0.1/html_split/Background_002fRequired-Knowledge.html @@ -0,0 +1,65 @@ + + + + + +Background/Required Knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

8.1.4.1 Background/Required Knowledge

+

A student is able to: * explain what a C++ type is? +[C++ object model: types] +* explain what an object is? +[C++ object +model: objects], +[C++ object model: +constant objects] * define and understand class invariants? +

+

It helps when a student is able to: * use move semantics +[C++ object model: move +semantics] * explain special member functions +[C++ object model: +special member functions] +

+ + + + + diff --git a/0.0.1/html_split/Background_002frequired-knowledge.html b/0.0.1/html_split/Background_002frequired-knowledge.html new file mode 100644 index 0000000..79fd94d --- /dev/null +++ b/0.0.1/html_split/Background_002frequired-knowledge.html @@ -0,0 +1,54 @@ + + + + + +Background/required knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

8.3.5.1 Background/required knowledge

+
    +
  • All of the above. +
+ + + + + + diff --git a/0.0.1/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html b/0.0.1/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html new file mode 100644 index 0000000..3e850b1 --- /dev/null +++ b/0.0.1/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html @@ -0,0 +1,60 @@ + + + + + +Basics Types Objects Values Expressions Statements and Control-Flow Constructs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.3 Basics Types, Objects, Values, Expressions, Statements, and

+

Control-Flow Constructs +

+ + + + + +
IDUnitFoundationalMainAdvanced
[‘?’]Constant Objects???
[‘?’]Declarations and Definitions???
[‘?’]Selection Constructs (e.g., if, ternary)???
[‘?’]Looping Constructs (e.g., for, while, etc.)???
+ + + + + + diff --git a/0.0.1/html_split/Building.html b/0.0.1/html_split/Building.html new file mode 100644 index 0000000..e628fd0 --- /dev/null +++ b/0.0.1/html_split/Building.html @@ -0,0 +1,57 @@ + + + + + +Building (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.12 Building

+ + + + +
IDUnitFoundationalMainAdvanced
[‘?’]Software Build Tools???
[‘?’]Strategies for Handling Build Problems???
+ + + + + + diff --git a/0.0.1/html_split/C_002b_002b-object-model-copy-semantics.html b/0.0.1/html_split/C_002b_002b-object-model-copy-semantics.html new file mode 100644 index 0000000..6d7350c --- /dev/null +++ b/0.0.1/html_split/C_002b_002b-object-model-copy-semantics.html @@ -0,0 +1,69 @@ + + + + + +C++ object model copy semantics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

8.1 C++ object model: copy semantics

+

Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

+ + + + + + + + + + + + + + diff --git a/0.0.1/html_split/Caveats.html b/0.0.1/html_split/Caveats.html new file mode 100644 index 0000000..c5303c9 --- /dev/null +++ b/0.0.1/html_split/Caveats.html @@ -0,0 +1,62 @@ + + + + + +Caveats (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

8.1.4.3 Caveats

+

This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

+
    +
  • Compiler-provided copy operations may result in ownership problems +(e.g., char*). These ownership problems can generally be solved +by using types whose copy operations have the appropriate semantics, +e.g., std::string instead of char* to hold string values. +
+ + + + + + diff --git a/0.0.1/html_split/Compilation-Model.html b/0.0.1/html_split/Compilation-Model.html new file mode 100644 index 0000000..de11703 --- /dev/null +++ b/0.0.1/html_split/Compilation-Model.html @@ -0,0 +1,62 @@ + + + + + +Compilation Model (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.1 Compilation Model

+ + + + + + + + + +
IDUnitFoundationalMainAdvanced
[‘?’]Translation Units???
[‘?’]Headers???
[‘?’]Modules???
[‘?’]Name Mangling???
[‘?’]Phases of Translation???
[‘?’]Separate Compilation???
[‘?’]Linkage???
+ + + + + + diff --git a/0.0.1/html_split/Compile_002dTime-Computation.html b/0.0.1/html_split/Compile_002dTime-Computation.html new file mode 100644 index 0000000..b9aaa0e --- /dev/null +++ b/0.0.1/html_split/Compile_002dTime-Computation.html @@ -0,0 +1,57 @@ + + + + + +Compile-Time Computation (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.7 Compile-Time Computation

+ + + + +
IDUnitFoundationalMainAdvanced
[‘?’]Constant Expressions and Constant Evaluation???
[‘static-assert’]static_assert‘✔️’‘✔️’
+ + + + + + diff --git a/0.0.1/html_split/Context-and-Aim-of-This-Guide.html b/0.0.1/html_split/Context-and-Aim-of-This-Guide.html new file mode 100644 index 0000000..60efa61 --- /dev/null +++ b/0.0.1/html_split/Context-and-Aim-of-This-Guide.html @@ -0,0 +1,76 @@ + + + + + +Context and Aim of This Guide (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

+Next: , Previous: , Up: Top   [Contents]

+
+
+

3 Context and Aim of This Guide

+

This document is intended to serve as a resource for instructors to +assist in the preparation of courses on C++ in a variety of settings, +including university, college, and industry environments. The main +objectives of this document are as follows: +

+
    +
  • to provide guidelines for content to be covered by courses of various +difficulty levels on C++ (e.g., topics and learning outcomes) +
  • to note some common misunderstandings and problematic points that may be +encountered when teaching particular topics +
  • to suggest resources useful for teaching C++ +
  • to present examples of curriculum for specific courses +
+ +

This document does not itself provide a curriculum for a single specific +course, but is rather a set of guidelines that can be used to prepare +curricula for a wide variety of courses that differ in focus and level +of sophistication. (This said, however, some links to other documents +with examples of curricula for specific courses may be included herein.) +This document only intends to target the teaching of the most recently +ratified version of the C++ standard. (This said, however, since older +versions of this document are also available, these older versions may +be of some use to those who need guidance in older versions of the +standard, at least versions that do not predate C++20.) +

+ + + + + diff --git a/0.0.1/html_split/Contributing-to-This-Document.html b/0.0.1/html_split/Contributing-to-This-Document.html new file mode 100644 index 0000000..eac6c28 --- /dev/null +++ b/0.0.1/html_split/Contributing-to-This-Document.html @@ -0,0 +1,55 @@ + + + + + +Contributing to This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

5 Contributing to This Document

+

Contributions to this document are welcome. If you would like to help +with this project as a contributor, please read the section +‘How to Contribute’. +

+ + + + + diff --git a/0.0.1/html_split/Contributors.html b/0.0.1/html_split/Contributors.html new file mode 100644 index 0000000..53ba0ef --- /dev/null +++ b/0.0.1/html_split/Contributors.html @@ -0,0 +1,57 @@ + + + + + +Contributors (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

+Next: , Previous: , Up: Top   [Contents]

+
+
+

11 Contributors

+ +
Christopher Di Bella
+Florian Sattler
+Michael Adams
+rwdougla
+
+ + + + + diff --git a/0.0.1/html_split/Detailed-Information-for-Modules-and-Topics.html b/0.0.1/html_split/Detailed-Information-for-Modules-and-Topics.html new file mode 100644 index 0000000..c8c9fcd --- /dev/null +++ b/0.0.1/html_split/Detailed-Information-for-Modules-and-Topics.html @@ -0,0 +1,67 @@ + + + + + +Detailed Information for Modules and Topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

8 Detailed Information for Modules and Topics

+ + + + + + + + + + + + + + + diff --git a/0.0.1/html_split/Disclaimer.html b/0.0.1/html_split/Disclaimer.html new file mode 100644 index 0000000..a911983 --- /dev/null +++ b/0.0.1/html_split/Disclaimer.html @@ -0,0 +1,55 @@ + + + + + +Disclaimer (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

2 Disclaimer

+

This document is intended as a proof of concept to solicit feedback from +others. This document is incomplete. This document likely has at least a +few errors. +

+ + + + + diff --git a/0.0.1/html_split/Error-Handling.html b/0.0.1/html_split/Error-Handling.html new file mode 100644 index 0000000..1f8d3e0 --- /dev/null +++ b/0.0.1/html_split/Error-Handling.html @@ -0,0 +1,59 @@ + + + + + +Error Handling (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.9 Error Handling

+ + + + + + +
IDUnitFoundationalMainAdvanced
[‘?’]Classes of Errors???
[‘?’]errno???
[‘?’]Error Codes???
[‘?’]Exception Handling???
+ + + + + + diff --git a/0.0.1/html_split/Examples-of-Course-Curricula.html b/0.0.1/html_split/Examples-of-Course-Curricula.html new file mode 100644 index 0000000..64eb64b --- /dev/null +++ b/0.0.1/html_split/Examples-of-Course-Curricula.html @@ -0,0 +1,53 @@ + + + + + +Examples of Course Curricula (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

9 Examples of Course Curricula

+

[NOTE: Anyone have any suggestions of items to add here?] The +following are examples of curricula for course on C++: … +

+ + + + + diff --git a/0.0.1/html_split/External-ie-Non-Standard-Libraries.html b/0.0.1/html_split/External-ie-Non-Standard-Libraries.html new file mode 100644 index 0000000..2bf081e --- /dev/null +++ b/0.0.1/html_split/External-ie-Non-Standard-Libraries.html @@ -0,0 +1,56 @@ + + + + + +External ie Non Standard Libraries (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.11 External (i.e., Non Standard) Libraries

+ + + +
IDUnitFoundationalMainAdvanced
[‘?’]Graphical User Interfaces???
+ + + + + + diff --git a/0.0.1/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html b/0.0.1/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html new file mode 100644 index 0000000..ce2c1b0 --- /dev/null +++ b/0.0.1/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html @@ -0,0 +1,62 @@ + + + + + +Foundational Calling static_assert with a constant expression (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
+

8.6.4 Foundational: Calling static_assert with a constant

+

expression +

+ + + + + + + + + + + + diff --git a/0.0.1/html_split/Foundational-How-and-when-are-copies-made.html b/0.0.1/html_split/Foundational-How-and-when-are-copies-made.html new file mode 100644 index 0000000..4cec33b --- /dev/null +++ b/0.0.1/html_split/Foundational-How-and-when-are-copies-made.html @@ -0,0 +1,63 @@ + + + + + +Foundational How and when are copies made (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

8.1.4 Foundational: How and when are copies made

+ + + + + + + + + + + + + diff --git a/0.0.1/html_split/Foundational-Using-UDLs.html b/0.0.1/html_split/Foundational-Using-UDLs.html new file mode 100644 index 0000000..adb461e --- /dev/null +++ b/0.0.1/html_split/Foundational-Using-UDLs.html @@ -0,0 +1,61 @@ + + + + + +Foundational Using UDLs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
+

8.2.4 Foundational: Using UDLs

+ + + + + + + + + + + + + diff --git a/0.0.1/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html b/0.0.1/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html new file mode 100644 index 0000000..e37a992 --- /dev/null +++ b/0.0.1/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html @@ -0,0 +1,62 @@ + + + + + +Foundational Using and defining functions with default arguments (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
+

8.3.4 Foundational: Using and defining functions with default

+

arguments +

+ + + + + + + + + + + + diff --git a/0.0.1/html_split/Foundational-Writing-requires_002dexpressions.html b/0.0.1/html_split/Foundational-Writing-requires_002dexpressions.html new file mode 100644 index 0000000..6846c6e --- /dev/null +++ b/0.0.1/html_split/Foundational-Writing-requires_002dexpressions.html @@ -0,0 +1,60 @@ + + + + + +Foundational Writing requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +
+

8.5.1 Foundational: Writing requires-expressions

+ + + + + + + + + + + + + diff --git a/0.0.1/html_split/Functions-default-argument.html b/0.0.1/html_split/Functions-default-argument.html new file mode 100644 index 0000000..2571ca9 --- /dev/null +++ b/0.0.1/html_split/Functions-default-argument.html @@ -0,0 +1,67 @@ + + + + + +Functions default argument (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
+

8.3 Functions: default argument

+

Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

+ + + + + + + + + + + + + + diff --git a/0.0.1/html_split/Functions-user_002ddefined-literals.html b/0.0.1/html_split/Functions-user_002ddefined-literals.html new file mode 100644 index 0000000..7e41de9 --- /dev/null +++ b/0.0.1/html_split/Functions-user_002ddefined-literals.html @@ -0,0 +1,66 @@ + + + + + +Functions user-defined literals (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

8.2 Functions: user-defined literals

+

Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

+ + + + + + + + + + + + + diff --git a/0.0.1/html_split/Functions.html b/0.0.1/html_split/Functions.html new file mode 100644 index 0000000..82175a5 --- /dev/null +++ b/0.0.1/html_split/Functions.html @@ -0,0 +1,61 @@ + + + + + +Functions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.4 Functions

+ + + + + + + + +
IDUnitFoundationalMainAdvanced
[‘?’]Calling Functions???
[‘?’]Parameter Passing (e.g., Passing By Value and Reference)???
[‘func-args’]Default Arguments‘✔️’
[‘?’]Returning Multiple Values???
[‘?’]Overloading???
[‘udl’]User-Defined Literals‘✔️’‘✔️’
+ + + + + + diff --git a/0.0.1/html_split/Generic-Programming-Templates.html b/0.0.1/html_split/Generic-Programming-Templates.html new file mode 100644 index 0000000..1a22cd7 --- /dev/null +++ b/0.0.1/html_split/Generic-Programming-Templates.html @@ -0,0 +1,61 @@ + + + + + +Generic Programming Templates (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.8 Generic Programming (Templates)

+ + + + + + + + +
IDUnitFoundationalMainAdvanced
[‘?’]Concepts???
[‘?’]SFINAE???
[‘?’]Template Metaprogramming???
[‘?’]Function Templates???
[‘?’]Requires Clauses???
[‘req-expr’]Requires Expressions‘✔️’‘✔️’
+ + + + + + diff --git a/0.0.1/html_split/Glossary.html b/0.0.1/html_split/Glossary.html new file mode 100644 index 0000000..2bf24f2 --- /dev/null +++ b/0.0.1/html_split/Glossary.html @@ -0,0 +1,58 @@ + + + + + +Glossary (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

+Next: , Previous: , Up: Top   [Contents]

+
+
+

13 Glossary

+

Some possible terms to include in the glossary: +

+
    +
  • learning objective +
  • learning outcome +
+ + + + + + diff --git a/0.0.1/html_split/How-To-Contribute.html b/0.0.1/html_split/How-To-Contribute.html new file mode 100644 index 0000000..f1963d5 --- /dev/null +++ b/0.0.1/html_split/How-To-Contribute.html @@ -0,0 +1,89 @@ + + + + + +How To Contribute (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

+Next: , Previous: , Up: Top   [Contents]

+
+
+

12 How To Contribute

+

Before attempting to contribute any content for consideration for +inclusion in this document, please read the information below and and +the referenced documents as appropriate. +

+

All contributions to this project must be made in accordance with the +license in section License. This teaching-guidelines +document only offers guidance on teaching C++ as it is specified in the +current version of the C++ standard. So, content should be presented +relative to the most-recently ratified version of the standard. A +detailed explanation of how to present the material for a topic is given +in: +

+
    +
  • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to +structure a teaching topic. https://wg21.link/p2193. +
+ +

Any potential contributors should ensure that they read this document. +The following document may also be helpful in providing some general +background on the modular approach to teaching followed herein: +

+ + +

In order to prepare content, it is important to understand what learning +outcomes are, and how to prepare good ones. Some information on learning +outcomes can be found in the References section. The +following document offers a concise introduction to learning outcomes: +

+ + + + + + + diff --git a/0.0.1/html_split/Inheritance-and-Class-Hierarchies.html b/0.0.1/html_split/Inheritance-and-Class-Hierarchies.html new file mode 100644 index 0000000..1a394b0 --- /dev/null +++ b/0.0.1/html_split/Inheritance-and-Class-Hierarchies.html @@ -0,0 +1,57 @@ + + + + + +Inheritance and Class Hierarchies (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.6 Inheritance and Class Hierarchies

+ + + + +
IDUnitFoundationalMainAdvanced
[‘?’]Virtual Functions???
[‘?’]Run-Time Type Information???
+ + + + + + diff --git a/0.0.1/html_split/License.html b/0.0.1/html_split/License.html new file mode 100644 index 0000000..38d2d8d --- /dev/null +++ b/0.0.1/html_split/License.html @@ -0,0 +1,100 @@ + + + + + +License (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

+Next: , Previous: , Up: Top   [Contents]

+
+
+

10 License

+

[NOTE: This license is copied verbatim from the C++ Core +Guidelines.] +

+
Copyright (c) Standard C++ Foundation and its contributors
+
+Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
+perpetual license to copy, use, modify, and create derivative works from this
+project for your personal or internal business use only. The above copyright
+notice and this permission notice shall be included in all copies or
+substantial portions of the project. This license does not grant permission
+to use the trade names, trademarks, service marks, or product names of the
+licensor, except as required for reasonable and customary use in describing
+the origin of the project.
+
+Standard C++ Foundation reserves the right to accept contributions to the
+project at its discretion.
+
+By contributing material to this project, you grant Standard C++ Foundation,
+and those who receive the material directly or indirectly from Standard C++
+Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
+transferrable license to reproduce, prepare derivative works of, publicly
+display, publicly perform, and distribute your contributed material and such
+derivative works, and to sublicense any or all of the foregoing rights to third
+parties for commercial or non-commercial use.  You also grant Standard C++
+Foundation, and those who receive the material directly or indirectly from
+Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
+irrevocable license under your patent claims that directly read on your
+contributed material to make, have made, use, offer to sell, sell and import
+or otherwise dispose of the material. You warrant that your material is your
+original work, or that you have the right to grant the above licenses.
+
+THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
+PROJECT.
+
+If you believe that anything in the project infringes your copyright, please
+contact us at admin@isocpp.org with your contact information and a detailed
+description of your intellectual property, including a specific URL where you
+believe your intellectual property is being infringed.
+
+
+
+

+Next: , Previous: , Up: Top   [Contents]

+
+ + + + + diff --git a/0.0.1/html_split/Main-Advanced-requirements.html b/0.0.1/html_split/Main-Advanced-requirements.html new file mode 100644 index 0000000..6c4ac0e --- /dev/null +++ b/0.0.1/html_split/Main-Advanced-requirements.html @@ -0,0 +1,60 @@ + + + + + +Main Advanced requirements (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +
+

8.5.2 Main: Advanced requirements

+ + + + + + + + + + + + + diff --git a/0.0.1/html_split/Main-Contracts-and-static_005fassert.html b/0.0.1/html_split/Main-Contracts-and-static_005fassert.html new file mode 100644 index 0000000..6c0ba46 --- /dev/null +++ b/0.0.1/html_split/Main-Contracts-and-static_005fassert.html @@ -0,0 +1,61 @@ + + + + + +Main Contracts and static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
+

8.6.5 Main: Contracts and static_assert

+ + + + + + + + + + + + + diff --git a/0.0.1/html_split/Main-Implementing-user_002ddefined-copy-operations.html b/0.0.1/html_split/Main-Implementing-user_002ddefined-copy-operations.html new file mode 100644 index 0000000..e38dfd6 --- /dev/null +++ b/0.0.1/html_split/Main-Implementing-user_002ddefined-copy-operations.html @@ -0,0 +1,62 @@ + + + + + +Main Implementing user-defined copy operations (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

8.1.5 Main: Implementing user-defined copy operations

+ + + + + + + + + + + + + diff --git a/0.0.1/html_split/Main-implementing-UDLs.html b/0.0.1/html_split/Main-implementing-UDLs.html new file mode 100644 index 0000000..1f6f381 --- /dev/null +++ b/0.0.1/html_split/Main-implementing-UDLs.html @@ -0,0 +1,59 @@ + + + + + +Main implementing UDLs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
+

8.2.5 Main: implementing UDLs

+ + + + + + + + + + + + diff --git a/0.0.1/html_split/Main-implementing-_002a.html b/0.0.1/html_split/Main-implementing-_002a.html new file mode 100644 index 0000000..b661f2d --- /dev/null +++ b/0.0.1/html_split/Main-implementing-_002a.html @@ -0,0 +1,62 @@ + + + + + +Main implementing * (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

8.3.5 Main: implementing *

+ + + + + + + + + + + + + diff --git a/0.0.1/html_split/Meta_002derror-handling-static_005fassert.html b/0.0.1/html_split/Meta_002derror-handling-static_005fassert.html new file mode 100644 index 0000000..f81a34e --- /dev/null +++ b/0.0.1/html_split/Meta_002derror-handling-static_005fassert.html @@ -0,0 +1,67 @@ + + + + + +Meta-error handling static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
+

8.6 Meta-error handling: static_assert

+

Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

+ + + + + + + + + + + + + + diff --git a/0.0.1/html_split/Module-name-Requires-Expressions.html b/0.0.1/html_split/Module-name-Requires-Expressions.html new file mode 100644 index 0000000..8bab76c --- /dev/null +++ b/0.0.1/html_split/Module-name-Requires-Expressions.html @@ -0,0 +1,59 @@ + + + + + +Module name Requires Expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
+

8.4 Module name: Requires Expressions

+

Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

+ + + + + + + + + + diff --git a/0.0.1/html_split/Motivation.html b/0.0.1/html_split/Motivation.html new file mode 100644 index 0000000..40b0ec9 --- /dev/null +++ b/0.0.1/html_split/Motivation.html @@ -0,0 +1,57 @@ + + + + + +Motivation (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

8.1.2 Motivation

+

Why is this important? Why do we want to learn/teach this +topic? +

+

Copy semantics allows the user to define how objects of a class get +replicated and interact on a value level. +

+ + + + + diff --git a/0.0.1/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html b/0.0.1/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html new file mode 100644 index 0000000..0a9cb9b --- /dev/null +++ b/0.0.1/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html @@ -0,0 +1,84 @@ + + + + + +Obtaining This Document The Most Recent Version and Alternate Formats (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

+Next: , Previous: , Up: Top   [Contents]

+
+
+

1 Obtaining This Document: The Most Recent Version and Alternate

+

Formats +The most recent version of this document is available as an online HTML +document at: +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/latest/. +

+

The version of the document that you are currently reading is available +in the following formats: +

+
    +
  1. online (HTML) format as a single large HTML document: +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.1/html +[later to be https://cplusplus.github.io/SG20/0.0.1/html?] + +
  2. EPUB format: +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.1/guidelines.epub +[later to be +https:/cplusplus.github.io/SG20/0.0.1/guidelines.epub?] + +
  3. online (HTML) format, split across multiple HTML documents: +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.1/html_split/ +[later to be https://cplusplus.github.io/SG20/0.0.1/html_split/?] +[Note: The support for this format needs more work (in order to +beautify and fix linking issues).] + +
+ +

Older versions of this document are also available. In general version +ver is available at +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/ver. +For example, version v0.1.0 (assuming that this version exists) would be +available at [later to be +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/v0.1.0?]. +

+ + + + + diff --git a/0.0.1/html_split/Organization-of-This-Document.html b/0.0.1/html_split/Organization-of-This-Document.html new file mode 100644 index 0000000..3e48985 --- /dev/null +++ b/0.0.1/html_split/Organization-of-This-Document.html @@ -0,0 +1,101 @@ + + + + + +Organization of This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

6 Organization of This Document

+

The various concepts (i.e., ideas) to potentially be covered are +partitioned into modules. A module is very broad in scope and consists +of numerous topics. [Note: Can I suggest that we use the term +“area” or “unit” instead of “module”? I think that these other +choices are better and also avoid any potential confusion over what is +meant by “module” (i.e., C++ term versus plain English term).] +

+

For each module, topics related to the module are identified. Then, for +each topic, learning outcomes are specified. In order to address a wide +variety of courses on C++, each topic is addressed at three proficiency +levels. These proficiency levels allow each topic to be covered at more +than one level of detail. This allows target audiences with different +background and learning objectives to be accommodated. The three +proficiency levels are as follows: +

+
    +
  • foundational. This level gives the learner the idea that a facility +exists, what benefits it offers, and the basic ways of using it. +[Note: Isn’t this just “novice”/“beginner”?] + +
  • main. This level shows mainstream uses and techniques. For abstraction +and organizational mechanisms it also demonstrates how to build them. +This level should also give the learner a basic (but not detailed) +understanding of how a facility might be implemented so that the learner +can have a first-order understanding of any costs involved. +[Note: The term “main” is not very descriptive/helpful. Could +I suggest using “intermediate”?] + +
  • advanced. This level gives information suitable for an expert. For most +topics there is an expert level of knowledge that most programmers +rarely need and techniques that require detailed understanding of +language rules or library implementation. + +
+ +

The remainder of this document is organized as follows. The various +topics are listed grouped by module. In cases where a topic might be +classified into more than one module, the topic is listed under the +module of most direct relevance. This is done in order to avoid +duplication of content. (In the case that a topic is equally relevant to +multiple modules, the decision of which to select is made by a +proverbial coin toss.) The order in which modules and topics are +presented is not meant to imply any order of coverage in a course. The +order in which items are listed is essentially arbitrary. +

+
+ + + + + + diff --git a/0.0.1/html_split/Overview.html b/0.0.1/html_split/Overview.html new file mode 100644 index 0000000..be44bfa --- /dev/null +++ b/0.0.1/html_split/Overview.html @@ -0,0 +1,61 @@ + + + + + +Overview (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

8.1.1 Overview

+

Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

+ + + + + +
LevelObjectives
Foundationalunderstanding how and when are copies made
Mainimplementing user-defined copy operations
Advancedspecial cases: copy elision
+ + + + + + diff --git a/0.0.1/html_split/Points-to-cover.html b/0.0.1/html_split/Points-to-cover.html new file mode 100644 index 0000000..ba4b5cc --- /dev/null +++ b/0.0.1/html_split/Points-to-cover.html @@ -0,0 +1,69 @@ + + + + + +Points to cover (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

8.1.4.4 Points to cover

+

This section lists important details for each point. +

+
    +
  • Principle of copying +
      +
    • Copying of types, which follow the rule of zero +
    • Copying of types, with user defined copy operations +
    • Copying an object does not change the original +
    + +
  • Practical applications +
      +
    • std::unique_ptr (has no copy) +
    • Strings (copies the value) +
    + +
+ + + + + + diff --git a/0.0.1/html_split/Preprocessor.html b/0.0.1/html_split/Preprocessor.html new file mode 100644 index 0000000..345e396 --- /dev/null +++ b/0.0.1/html_split/Preprocessor.html @@ -0,0 +1,58 @@ + + + + + +Preprocessor (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.2 Preprocessor

+ + + + + +
IDUnitFoundationalMainAdvanced
[‘?’]Preprocessor Metaprogramming???
[‘?’]Inclusion???
[‘?’]Macros???
+ + + + + + diff --git a/0.0.1/html_split/References-on-Learning-Outcomes.html b/0.0.1/html_split/References-on-Learning-Outcomes.html new file mode 100644 index 0000000..7b74cad --- /dev/null +++ b/0.0.1/html_split/References-on-Learning-Outcomes.html @@ -0,0 +1,71 @@ + + + + + +References on Learning Outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

14.1 References on Learning Outcomes

+ + + + + + + diff --git a/0.0.1/html_split/References.html b/0.0.1/html_split/References.html new file mode 100644 index 0000000..f595be2 --- /dev/null +++ b/0.0.1/html_split/References.html @@ -0,0 +1,59 @@ + + + + + +References (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

+Previous: , Up: Top   [Contents]

+
+
+

14 References

+ + + + + + + + + + + diff --git a/0.0.1/html_split/Software-Design.html b/0.0.1/html_split/Software-Design.html new file mode 100644 index 0000000..6b4f6c8 --- /dev/null +++ b/0.0.1/html_split/Software-Design.html @@ -0,0 +1,56 @@ + + + + + +Software Design (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.15 Software Design

+ + + +
IDUnitFoundationalMainAdvanced
[‘?’]Design by Contract???
+ + + + + + diff --git a/0.0.1/html_split/Standard-Library.html b/0.0.1/html_split/Standard-Library.html new file mode 100644 index 0000000..c80c7fc --- /dev/null +++ b/0.0.1/html_split/Standard-Library.html @@ -0,0 +1,57 @@ + + + + + +Standard Library (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.10 Standard Library

+ + + + +
IDUnitFoundationalMainAdvanced
[‘?’]Input/Output (I/O)???
[‘?’]Containers, Iterators, and Algorithms???
+ + + + + + diff --git a/0.0.1/html_split/Student-outcomes.html b/0.0.1/html_split/Student-outcomes.html new file mode 100644 index 0000000..c604549 --- /dev/null +++ b/0.0.1/html_split/Student-outcomes.html @@ -0,0 +1,73 @@ + + + + + +Student outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

8.1.4.2 Student outcomes

+

A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

+

A student should be able to: +

+
    +
  1. explain what copy semantics accomplish +
+ +
    +
  • establishing “equivalent” object state in another object +
+ +
    +
  1. explain difference between copying a reference and copying a value* +
  2. explain where copies are made +
+ +

* In other languages these differences are sometimes referred to as +shallow and deep copy. +

+ + + + + diff --git a/0.0.1/html_split/Summary-of-Modules-and-Topics.html b/0.0.1/html_split/Summary-of-Modules-and-Topics.html new file mode 100644 index 0000000..26b69be --- /dev/null +++ b/0.0.1/html_split/Summary-of-Modules-and-Topics.html @@ -0,0 +1,106 @@ + + + + + +Summary of Modules and Topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7 Summary of Modules and Topics

+

In the sections that follow, the various modules and topics are +presented. There is one section per module. For each module, a table +listing the various topics in that module is provided. The ID for a +topic is linked to the detailed coverage of that topic that comes later +in the document. If a topic has any learning outcomes at a given +proficiency level, this is indicated by a checkmark (“✔️”). If a topic +has no learning outcomes (simply because there are not any, not because +the information is missing), this is indicated by an em dash (“—”). +In the case that the information for a topic is completely missing, a +question mark (“?”) symbol is used. +

+

[NOTE: These topics are taken mostly from the SG20 GitHub +repository. They are not intended to be complete in any sense. In fact, +by gathering together all topics in one place where they are easily +viewed, it is hoped that missing and unbalanced items will be more +obvious.] +

+ + + + + + + + + + + + + + + + + + +
+ + + + + + diff --git a/0.0.1/html_split/Testing-and-Debugging.html b/0.0.1/html_split/Testing-and-Debugging.html new file mode 100644 index 0000000..da60211 --- /dev/null +++ b/0.0.1/html_split/Testing-and-Debugging.html @@ -0,0 +1,59 @@ + + + + + +Testing and Debugging (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

+Next: , Previous: , Up: Summary of Modules and Topics   [Contents]

+
+
+

7.13 Testing and Debugging

+ + + + + + +
IDUnitFoundationalMainAdvanced
[‘?’]Source-Level Debuggers???
[‘?’]Code Sanitizers???
[‘?’]Test Frameworks???
[‘?’]Debugging Strategies???
+ + + + + + diff --git a/0.0.1/html_split/Tooling.html b/0.0.1/html_split/Tooling.html new file mode 100644 index 0000000..43c3b2f --- /dev/null +++ b/0.0.1/html_split/Tooling.html @@ -0,0 +1,57 @@ + + + + + +Tooling (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.14 Tooling

+ + + + +
IDUnitFoundationalMainAdvanced
[‘?’]Compiler Toolchains???
[‘?’]IDEs???
+ + + + + + diff --git a/0.0.1/html_split/Topic-introduction.html b/0.0.1/html_split/Topic-introduction.html new file mode 100644 index 0000000..fff97f2 --- /dev/null +++ b/0.0.1/html_split/Topic-introduction.html @@ -0,0 +1,55 @@ + + + + + +Topic introduction (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

8.1.3 Topic introduction

+

Very brief introduction to the topic. +

+

Explains when and how objects are copied. +

+ + + + + diff --git a/0.0.1/html_split/Use-of-This-Document.html b/0.0.1/html_split/Use-of-This-Document.html new file mode 100644 index 0000000..4c820d5 --- /dev/null +++ b/0.0.1/html_split/Use-of-This-Document.html @@ -0,0 +1,58 @@ + + + + + +Use of This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

4 Use of This Document

+

[NOTE: This document follows the same license model as the C++ +Core Guidelines. The LICENSE document is taken verbatim from the C++ +Core Guidelines.] This document is made available under a MIT-style +license. In simple terms, this license permits copying, use, +modification, and creation of derivative works. A copy of the license is +included in the section LICENSE. +

+ + + + + diff --git a/0.0.1/html_split/User_002dDefined-Types-Classes.html b/0.0.1/html_split/User_002dDefined-Types-Classes.html new file mode 100644 index 0000000..808279a --- /dev/null +++ b/0.0.1/html_split/User_002dDefined-Types-Classes.html @@ -0,0 +1,69 @@ + + + + + +User-Defined Types Classes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.5 User-Defined Types (Classes)

+ + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[‘?’]Special Member Functions???
[‘?’]Types???
[‘?’]Conversions???
[‘?’]Constructors and Destructors???
[‘?’]Move/Copy Constructors and Assignment Operators???
[‘?’]Member Functions???
[‘?’]Sum Types???
[‘?’]User-Defined Literals???
[‘?’]Special Member Functions???
[‘?’]Guidelines for Special Member Functions (e.g., Rule of Five, Rule +of Zero)???
[‘copy’]Copy Semantics‘✔️’‘✔️’
[‘?’]Moving and Copying???
[‘?’]Lambdas???
+ + + + + + diff --git a/0.0.1/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html b/0.0.1/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html new file mode 100644 index 0000000..3f9bf2c --- /dev/null +++ b/0.0.1/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html @@ -0,0 +1,69 @@ + + + + + +Working Group Documents Related to C++ Teaching Guidelines (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

14.2 Working Group Documents Related to C++ Teaching Guidelines

+
    +
  • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — +Standing Document for SG20: Guidelines for Teaching C++ to Beginners. +https://wg21.link/p1389. + +
  • Christopher Di Bella. P1725R0 — Modular Topic Design. +https://wg21.link/p1725. + +
  • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to +structure a teaching topic. https://wg21.link/p2193. + +
  • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study +Group: C++ Education. https://wg21.link/p1231. + +
  • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 +— Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0. + +
+ + + + + + diff --git a/0.0.1/html_split/_0023advanced.html b/0.0.1/html_split/_0023advanced.html new file mode 100644 index 0000000..d503bfc --- /dev/null +++ b/0.0.1/html_split/_0023advanced.html @@ -0,0 +1,40 @@ + + + + + + +#advanced (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #advanced.

+ diff --git a/0.0.1/html_split/_0023advanced_002d1.html b/0.0.1/html_split/_0023advanced_002d1.html new file mode 100644 index 0000000..282a7b8 --- /dev/null +++ b/0.0.1/html_split/_0023advanced_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #advanced-1.

+ diff --git a/0.0.1/html_split/_0023advanced_002d2.html b/0.0.1/html_split/_0023advanced_002d2.html new file mode 100644 index 0000000..039b3ff --- /dev/null +++ b/0.0.1/html_split/_0023advanced_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #advanced-2.

+ diff --git a/0.0.1/html_split/_0023advanced_002d3.html b/0.0.1/html_split/_0023advanced_002d3.html new file mode 100644 index 0000000..ebf5529 --- /dev/null +++ b/0.0.1/html_split/_0023advanced_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #advanced-3.

+ diff --git a/0.0.1/html_split/_0023backgroundrequired_002dknowledge.html b/0.0.1/html_split/_0023backgroundrequired_002dknowledge.html new file mode 100644 index 0000000..9959745 --- /dev/null +++ b/0.0.1/html_split/_0023backgroundrequired_002dknowledge.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #backgroundrequired-knowledge.

+ diff --git a/0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d1.html b/0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d1.html new file mode 100644 index 0000000..f6f6bd0 --- /dev/null +++ b/0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #backgroundrequired-knowledge-1.

+ diff --git a/0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d2.html b/0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d2.html new file mode 100644 index 0000000..b0b297d --- /dev/null +++ b/0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #backgroundrequired-knowledge-2.

+ diff --git a/0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d3.html b/0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d3.html new file mode 100644 index 0000000..ae34d91 --- /dev/null +++ b/0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #backgroundrequired-knowledge-3.

+ diff --git a/0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d4.html b/0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d4.html new file mode 100644 index 0000000..7417f62 --- /dev/null +++ b/0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #backgroundrequired-knowledge-4.

+ diff --git a/0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d5.html b/0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d5.html new file mode 100644 index 0000000..8f0570c --- /dev/null +++ b/0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #backgroundrequired-knowledge-5.

+ diff --git a/0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d6.html b/0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d6.html new file mode 100644 index 0000000..a1cdee1 --- /dev/null +++ b/0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #backgroundrequired-knowledge-6.

+ diff --git a/0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d7.html b/0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d7.html new file mode 100644 index 0000000..893a0ba --- /dev/null +++ b/0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #backgroundrequired-knowledge-7.

+ diff --git a/0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d8.html b/0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d8.html new file mode 100644 index 0000000..6080498 --- /dev/null +++ b/0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #backgroundrequired-knowledge-8.

+ diff --git a/0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d9.html b/0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d9.html new file mode 100644 index 0000000..3ea462d --- /dev/null +++ b/0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #backgroundrequired-knowledge-9.

+ diff --git a/0.0.1/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html b/0.0.1/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html new file mode 100644 index 0000000..925c568 --- /dev/null +++ b/0.0.1/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html @@ -0,0 +1,40 @@ + + + + + + +#basics-types-objects-values-expressions-statements-and-control-flow-constructs (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #basics-types-objects-values-expressions-statements-and-control-flow-constructs.

+ diff --git a/0.0.1/html_split/_0023building.html b/0.0.1/html_split/_0023building.html new file mode 100644 index 0000000..8ffc9df --- /dev/null +++ b/0.0.1/html_split/_0023building.html @@ -0,0 +1,40 @@ + + + + + + +#building (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #building.

+ diff --git a/0.0.1/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html b/0.0.1/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html new file mode 100644 index 0000000..a7e6bad --- /dev/null +++ b/0.0.1/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html @@ -0,0 +1,40 @@ + + + + + + +#c-object-model-copy-semantics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #c-object-model-copy-semantics.

+ diff --git a/0.0.1/html_split/_0023caveats.html b/0.0.1/html_split/_0023caveats.html new file mode 100644 index 0000000..d4bac8b --- /dev/null +++ b/0.0.1/html_split/_0023caveats.html @@ -0,0 +1,40 @@ + + + + + + +#caveats (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #caveats.

+ diff --git a/0.0.1/html_split/_0023caveats_002d1.html b/0.0.1/html_split/_0023caveats_002d1.html new file mode 100644 index 0000000..64faefd --- /dev/null +++ b/0.0.1/html_split/_0023caveats_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #caveats-1.

+ diff --git a/0.0.1/html_split/_0023caveats_002d2.html b/0.0.1/html_split/_0023caveats_002d2.html new file mode 100644 index 0000000..6c66559 --- /dev/null +++ b/0.0.1/html_split/_0023caveats_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #caveats-2.

+ diff --git a/0.0.1/html_split/_0023caveats_002d3.html b/0.0.1/html_split/_0023caveats_002d3.html new file mode 100644 index 0000000..479063f --- /dev/null +++ b/0.0.1/html_split/_0023caveats_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #caveats-3.

+ diff --git a/0.0.1/html_split/_0023caveats_002d4.html b/0.0.1/html_split/_0023caveats_002d4.html new file mode 100644 index 0000000..9588a55 --- /dev/null +++ b/0.0.1/html_split/_0023caveats_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #caveats-4.

+ diff --git a/0.0.1/html_split/_0023caveats_002d5.html b/0.0.1/html_split/_0023caveats_002d5.html new file mode 100644 index 0000000..11edee5 --- /dev/null +++ b/0.0.1/html_split/_0023caveats_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #caveats-5.

+ diff --git a/0.0.1/html_split/_0023caveats_002d6.html b/0.0.1/html_split/_0023caveats_002d6.html new file mode 100644 index 0000000..6cea721 --- /dev/null +++ b/0.0.1/html_split/_0023caveats_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #caveats-6.

+ diff --git a/0.0.1/html_split/_0023caveats_002d7.html b/0.0.1/html_split/_0023caveats_002d7.html new file mode 100644 index 0000000..2a8f1cd --- /dev/null +++ b/0.0.1/html_split/_0023caveats_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #caveats-7.

+ diff --git a/0.0.1/html_split/_0023caveats_002d8.html b/0.0.1/html_split/_0023caveats_002d8.html new file mode 100644 index 0000000..e330642 --- /dev/null +++ b/0.0.1/html_split/_0023caveats_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #caveats-8.

+ diff --git a/0.0.1/html_split/_0023caveats_002d9.html b/0.0.1/html_split/_0023caveats_002d9.html new file mode 100644 index 0000000..004e434 --- /dev/null +++ b/0.0.1/html_split/_0023caveats_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #caveats-9.

+ diff --git a/0.0.1/html_split/_0023compilation_002dmodel.html b/0.0.1/html_split/_0023compilation_002dmodel.html new file mode 100644 index 0000000..1017867 --- /dev/null +++ b/0.0.1/html_split/_0023compilation_002dmodel.html @@ -0,0 +1,40 @@ + + + + + + +#compilation-model (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #compilation-model.

+ diff --git a/0.0.1/html_split/_0023compile_002dtime_002dcomputation.html b/0.0.1/html_split/_0023compile_002dtime_002dcomputation.html new file mode 100644 index 0000000..59b0c57 --- /dev/null +++ b/0.0.1/html_split/_0023compile_002dtime_002dcomputation.html @@ -0,0 +1,40 @@ + + + + + + +#compile-time-computation (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #compile-time-computation.

+ diff --git a/0.0.1/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html b/0.0.1/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html new file mode 100644 index 0000000..9294adf --- /dev/null +++ b/0.0.1/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html @@ -0,0 +1,40 @@ + + + + + + +#context-and-aim-of-this-guide (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #context-and-aim-of-this-guide.

+ diff --git a/0.0.1/html_split/_0023contributing_002dto_002dthis_002ddocument.html b/0.0.1/html_split/_0023contributing_002dto_002dthis_002ddocument.html new file mode 100644 index 0000000..272d848 --- /dev/null +++ b/0.0.1/html_split/_0023contributing_002dto_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#contributing-to-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #contributing-to-this-document.

+ diff --git a/0.0.1/html_split/_0023contributors.html b/0.0.1/html_split/_0023contributors.html new file mode 100644 index 0000000..a391f9d --- /dev/null +++ b/0.0.1/html_split/_0023contributors.html @@ -0,0 +1,40 @@ + + + + + + +#contributors (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #contributors.

+ diff --git a/0.0.1/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html b/0.0.1/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html new file mode 100644 index 0000000..d32c27e --- /dev/null +++ b/0.0.1/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html @@ -0,0 +1,40 @@ + + + + + + +#detailed-information-for-modules-and-topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #detailed-information-for-modules-and-topics.

+ diff --git a/0.0.1/html_split/_0023disclaimer.html b/0.0.1/html_split/_0023disclaimer.html new file mode 100644 index 0000000..e9658d6 --- /dev/null +++ b/0.0.1/html_split/_0023disclaimer.html @@ -0,0 +1,40 @@ + + + + + + +#disclaimer (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #disclaimer.

+ diff --git a/0.0.1/html_split/_0023error_002dhandling.html b/0.0.1/html_split/_0023error_002dhandling.html new file mode 100644 index 0000000..80cfb94 --- /dev/null +++ b/0.0.1/html_split/_0023error_002dhandling.html @@ -0,0 +1,40 @@ + + + + + + +#error-handling (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #error-handling.

+ diff --git a/0.0.1/html_split/_0023examples_002dof_002dcourse_002dcurricula.html b/0.0.1/html_split/_0023examples_002dof_002dcourse_002dcurricula.html new file mode 100644 index 0000000..99af091 --- /dev/null +++ b/0.0.1/html_split/_0023examples_002dof_002dcourse_002dcurricula.html @@ -0,0 +1,40 @@ + + + + + + +#examples-of-course-curricula (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #examples-of-course-curricula.

+ diff --git a/0.0.1/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html b/0.0.1/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html new file mode 100644 index 0000000..fc9b3eb --- /dev/null +++ b/0.0.1/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html @@ -0,0 +1,40 @@ + + + + + + +#external-i.e.-non-standard-libraries (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #external-i.e.-non-standard-libraries.

+ diff --git a/0.0.1/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html b/0.0.1/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html new file mode 100644 index 0000000..f915680 --- /dev/null +++ b/0.0.1/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-calling-static_assert-with-a-constant-expression (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #foundational-calling-static_assert-with-a-constant-expression.

+ diff --git a/0.0.1/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html b/0.0.1/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html new file mode 100644 index 0000000..88f62bc --- /dev/null +++ b/0.0.1/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-how-and-when-are-copies-made (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #foundational-how-and-when-are-copies-made.

+ diff --git a/0.0.1/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html b/0.0.1/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html new file mode 100644 index 0000000..95ab098 --- /dev/null +++ b/0.0.1/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-using-and-defining-functions-with-default-arguments (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #foundational-using-and-defining-functions-with-default-arguments.

+ diff --git a/0.0.1/html_split/_0023foundational_002dusing_002dudls.html b/0.0.1/html_split/_0023foundational_002dusing_002dudls.html new file mode 100644 index 0000000..2f7afdd --- /dev/null +++ b/0.0.1/html_split/_0023foundational_002dusing_002dudls.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-using-udls (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #foundational-using-udls.

+ diff --git a/0.0.1/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html b/0.0.1/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html new file mode 100644 index 0000000..708f2d3 --- /dev/null +++ b/0.0.1/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-writing-requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #foundational-writing-requires-expressions.

+ diff --git a/0.0.1/html_split/_0023functions.html b/0.0.1/html_split/_0023functions.html new file mode 100644 index 0000000..e304abe --- /dev/null +++ b/0.0.1/html_split/_0023functions.html @@ -0,0 +1,40 @@ + + + + + + +#functions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #functions.

+ diff --git a/0.0.1/html_split/_0023functions_002ddefault_002dargument.html b/0.0.1/html_split/_0023functions_002ddefault_002dargument.html new file mode 100644 index 0000000..ccfbcbb --- /dev/null +++ b/0.0.1/html_split/_0023functions_002ddefault_002dargument.html @@ -0,0 +1,40 @@ + + + + + + +#functions-default-argument (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #functions-default-argument.

+ diff --git a/0.0.1/html_split/_0023functions_002duser_002ddefined_002dliterals.html b/0.0.1/html_split/_0023functions_002duser_002ddefined_002dliterals.html new file mode 100644 index 0000000..b4f78b5 --- /dev/null +++ b/0.0.1/html_split/_0023functions_002duser_002ddefined_002dliterals.html @@ -0,0 +1,40 @@ + + + + + + +#functions-user-defined-literals (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #functions-user-defined-literals.

+ diff --git a/0.0.1/html_split/_0023generic_002dprogramming_002dtemplates.html b/0.0.1/html_split/_0023generic_002dprogramming_002dtemplates.html new file mode 100644 index 0000000..3b91080 --- /dev/null +++ b/0.0.1/html_split/_0023generic_002dprogramming_002dtemplates.html @@ -0,0 +1,40 @@ + + + + + + +#generic-programming-templates (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #generic-programming-templates.

+ diff --git a/0.0.1/html_split/_0023glossary.html b/0.0.1/html_split/_0023glossary.html new file mode 100644 index 0000000..9b46bf6 --- /dev/null +++ b/0.0.1/html_split/_0023glossary.html @@ -0,0 +1,40 @@ + + + + + + +#glossary (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #glossary.

+ diff --git a/0.0.1/html_split/_0023how_002dto_002dcontribute.html b/0.0.1/html_split/_0023how_002dto_002dcontribute.html new file mode 100644 index 0000000..d9cff4a --- /dev/null +++ b/0.0.1/html_split/_0023how_002dto_002dcontribute.html @@ -0,0 +1,40 @@ + + + + + + +#how-to-contribute (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #how-to-contribute.

+ diff --git a/0.0.1/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html b/0.0.1/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html new file mode 100644 index 0000000..def5140 --- /dev/null +++ b/0.0.1/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html @@ -0,0 +1,40 @@ + + + + + + +#inheritance-and-class-hierarchies (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #inheritance-and-class-hierarchies.

+ diff --git a/0.0.1/html_split/_0023license.html b/0.0.1/html_split/_0023license.html new file mode 100644 index 0000000..6b44dd1 --- /dev/null +++ b/0.0.1/html_split/_0023license.html @@ -0,0 +1,40 @@ + + + + + + +#license (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #license.

+ diff --git a/0.0.1/html_split/_0023main_002dadvanced_002drequirements.html b/0.0.1/html_split/_0023main_002dadvanced_002drequirements.html new file mode 100644 index 0000000..8214533 --- /dev/null +++ b/0.0.1/html_split/_0023main_002dadvanced_002drequirements.html @@ -0,0 +1,40 @@ + + + + + + +#main-advanced-requirements (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #main-advanced-requirements.

+ diff --git a/0.0.1/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html b/0.0.1/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html new file mode 100644 index 0000000..22b0484 --- /dev/null +++ b/0.0.1/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html @@ -0,0 +1,40 @@ + + + + + + +#main-contracts-and-static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #main-contracts-and-static_assert.

+ diff --git a/0.0.1/html_split/_0023main_002dimplementing.html b/0.0.1/html_split/_0023main_002dimplementing.html new file mode 100644 index 0000000..260008c --- /dev/null +++ b/0.0.1/html_split/_0023main_002dimplementing.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #main-implementing.

+ diff --git a/0.0.1/html_split/_0023main_002dimplementing_002dudls.html b/0.0.1/html_split/_0023main_002dimplementing_002dudls.html new file mode 100644 index 0000000..a41d194 --- /dev/null +++ b/0.0.1/html_split/_0023main_002dimplementing_002dudls.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing-udls (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #main-implementing-udls.

+ diff --git a/0.0.1/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html b/0.0.1/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html new file mode 100644 index 0000000..1e5a4d8 --- /dev/null +++ b/0.0.1/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing-user-defined-copy-operations (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #main-implementing-user-defined-copy-operations.

+ diff --git a/0.0.1/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html b/0.0.1/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html new file mode 100644 index 0000000..4502ed8 --- /dev/null +++ b/0.0.1/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html @@ -0,0 +1,40 @@ + + + + + + +#meta-error-handling-static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #meta-error-handling-static_assert.

+ diff --git a/0.0.1/html_split/_0023module_002dname_002drequires_002dexpressions.html b/0.0.1/html_split/_0023module_002dname_002drequires_002dexpressions.html new file mode 100644 index 0000000..56a9ebf --- /dev/null +++ b/0.0.1/html_split/_0023module_002dname_002drequires_002dexpressions.html @@ -0,0 +1,40 @@ + + + + + + +#module-name-requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #module-name-requires-expressions.

+ diff --git a/0.0.1/html_split/_0023motivation.html b/0.0.1/html_split/_0023motivation.html new file mode 100644 index 0000000..0141374 --- /dev/null +++ b/0.0.1/html_split/_0023motivation.html @@ -0,0 +1,40 @@ + + + + + + +#motivation (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #motivation.

+ diff --git a/0.0.1/html_split/_0023motivation_002d1.html b/0.0.1/html_split/_0023motivation_002d1.html new file mode 100644 index 0000000..7e4a69e --- /dev/null +++ b/0.0.1/html_split/_0023motivation_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #motivation-1.

+ diff --git a/0.0.1/html_split/_0023motivation_002d2.html b/0.0.1/html_split/_0023motivation_002d2.html new file mode 100644 index 0000000..7901fd3 --- /dev/null +++ b/0.0.1/html_split/_0023motivation_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #motivation-2.

+ diff --git a/0.0.1/html_split/_0023motivation_002d3.html b/0.0.1/html_split/_0023motivation_002d3.html new file mode 100644 index 0000000..ec720ad --- /dev/null +++ b/0.0.1/html_split/_0023motivation_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #motivation-3.

+ diff --git a/0.0.1/html_split/_0023motivation_002d4.html b/0.0.1/html_split/_0023motivation_002d4.html new file mode 100644 index 0000000..f53583a --- /dev/null +++ b/0.0.1/html_split/_0023motivation_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #motivation-4.

+ diff --git a/0.0.1/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html b/0.0.1/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html new file mode 100644 index 0000000..57e8b6e --- /dev/null +++ b/0.0.1/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html @@ -0,0 +1,40 @@ + + + + + + +#obtaining-this-document-the-most-recent-version-and-alternate-formats (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #obtaining-this-document-the-most-recent-version-and-alternate-formats.

+ diff --git a/0.0.1/html_split/_0023organization_002dof_002dthis_002ddocument.html b/0.0.1/html_split/_0023organization_002dof_002dthis_002ddocument.html new file mode 100644 index 0000000..e312b8e --- /dev/null +++ b/0.0.1/html_split/_0023organization_002dof_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#organization-of-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #organization-of-this-document.

+ diff --git a/0.0.1/html_split/_0023overview.html b/0.0.1/html_split/_0023overview.html new file mode 100644 index 0000000..b2d4bdc --- /dev/null +++ b/0.0.1/html_split/_0023overview.html @@ -0,0 +1,40 @@ + + + + + + +#overview (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #overview.

+ diff --git a/0.0.1/html_split/_0023overview_002d1.html b/0.0.1/html_split/_0023overview_002d1.html new file mode 100644 index 0000000..d551764 --- /dev/null +++ b/0.0.1/html_split/_0023overview_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#overview-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #overview-1.

+ diff --git a/0.0.1/html_split/_0023overview_002d2.html b/0.0.1/html_split/_0023overview_002d2.html new file mode 100644 index 0000000..5a34b05 --- /dev/null +++ b/0.0.1/html_split/_0023overview_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#overview-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #overview-2.

+ diff --git a/0.0.1/html_split/_0023overview_002d3.html b/0.0.1/html_split/_0023overview_002d3.html new file mode 100644 index 0000000..f230145 --- /dev/null +++ b/0.0.1/html_split/_0023overview_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#overview-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #overview-3.

+ diff --git a/0.0.1/html_split/_0023overview_002d4.html b/0.0.1/html_split/_0023overview_002d4.html new file mode 100644 index 0000000..2436b9a --- /dev/null +++ b/0.0.1/html_split/_0023overview_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#overview-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #overview-4.

+ diff --git a/0.0.1/html_split/_0023points_002dto_002dcover.html b/0.0.1/html_split/_0023points_002dto_002dcover.html new file mode 100644 index 0000000..424b02b --- /dev/null +++ b/0.0.1/html_split/_0023points_002dto_002dcover.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #points-to-cover.

+ diff --git a/0.0.1/html_split/_0023points_002dto_002dcover_002d1.html b/0.0.1/html_split/_0023points_002dto_002dcover_002d1.html new file mode 100644 index 0000000..2a554bb --- /dev/null +++ b/0.0.1/html_split/_0023points_002dto_002dcover_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #points-to-cover-1.

+ diff --git a/0.0.1/html_split/_0023points_002dto_002dcover_002d2.html b/0.0.1/html_split/_0023points_002dto_002dcover_002d2.html new file mode 100644 index 0000000..053a51a --- /dev/null +++ b/0.0.1/html_split/_0023points_002dto_002dcover_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #points-to-cover-2.

+ diff --git a/0.0.1/html_split/_0023points_002dto_002dcover_002d3.html b/0.0.1/html_split/_0023points_002dto_002dcover_002d3.html new file mode 100644 index 0000000..b0dad48 --- /dev/null +++ b/0.0.1/html_split/_0023points_002dto_002dcover_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #points-to-cover-3.

+ diff --git a/0.0.1/html_split/_0023points_002dto_002dcover_002d4.html b/0.0.1/html_split/_0023points_002dto_002dcover_002d4.html new file mode 100644 index 0000000..94de8fa --- /dev/null +++ b/0.0.1/html_split/_0023points_002dto_002dcover_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #points-to-cover-4.

+ diff --git a/0.0.1/html_split/_0023points_002dto_002dcover_002d5.html b/0.0.1/html_split/_0023points_002dto_002dcover_002d5.html new file mode 100644 index 0000000..39d1eaf --- /dev/null +++ b/0.0.1/html_split/_0023points_002dto_002dcover_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #points-to-cover-5.

+ diff --git a/0.0.1/html_split/_0023points_002dto_002dcover_002d6.html b/0.0.1/html_split/_0023points_002dto_002dcover_002d6.html new file mode 100644 index 0000000..92df88f --- /dev/null +++ b/0.0.1/html_split/_0023points_002dto_002dcover_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #points-to-cover-6.

+ diff --git a/0.0.1/html_split/_0023points_002dto_002dcover_002d7.html b/0.0.1/html_split/_0023points_002dto_002dcover_002d7.html new file mode 100644 index 0000000..6e6c895 --- /dev/null +++ b/0.0.1/html_split/_0023points_002dto_002dcover_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #points-to-cover-7.

+ diff --git a/0.0.1/html_split/_0023points_002dto_002dcover_002d8.html b/0.0.1/html_split/_0023points_002dto_002dcover_002d8.html new file mode 100644 index 0000000..b5574e1 --- /dev/null +++ b/0.0.1/html_split/_0023points_002dto_002dcover_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #points-to-cover-8.

+ diff --git a/0.0.1/html_split/_0023preprocessor.html b/0.0.1/html_split/_0023preprocessor.html new file mode 100644 index 0000000..a3bb5f6 --- /dev/null +++ b/0.0.1/html_split/_0023preprocessor.html @@ -0,0 +1,40 @@ + + + + + + +#preprocessor (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #preprocessor.

+ diff --git a/0.0.1/html_split/_0023references.html b/0.0.1/html_split/_0023references.html new file mode 100644 index 0000000..69fbd6b --- /dev/null +++ b/0.0.1/html_split/_0023references.html @@ -0,0 +1,40 @@ + + + + + + +#references (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #references.

+ diff --git a/0.0.1/html_split/_0023references_002don_002dlearning_002doutcomes.html b/0.0.1/html_split/_0023references_002don_002dlearning_002doutcomes.html new file mode 100644 index 0000000..d28fbbf --- /dev/null +++ b/0.0.1/html_split/_0023references_002don_002dlearning_002doutcomes.html @@ -0,0 +1,40 @@ + + + + + + +#references-on-learning-outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #references-on-learning-outcomes.

+ diff --git a/0.0.1/html_split/_0023software_002ddesign.html b/0.0.1/html_split/_0023software_002ddesign.html new file mode 100644 index 0000000..16f5f54 --- /dev/null +++ b/0.0.1/html_split/_0023software_002ddesign.html @@ -0,0 +1,40 @@ + + + + + + +#software-design (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #software-design.

+ diff --git a/0.0.1/html_split/_0023standard_002dlibrary.html b/0.0.1/html_split/_0023standard_002dlibrary.html new file mode 100644 index 0000000..71956d3 --- /dev/null +++ b/0.0.1/html_split/_0023standard_002dlibrary.html @@ -0,0 +1,40 @@ + + + + + + +#standard-library (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #standard-library.

+ diff --git a/0.0.1/html_split/_0023student_002doutcomes.html b/0.0.1/html_split/_0023student_002doutcomes.html new file mode 100644 index 0000000..df0035d --- /dev/null +++ b/0.0.1/html_split/_0023student_002doutcomes.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #student-outcomes.

+ diff --git a/0.0.1/html_split/_0023student_002doutcomes_002d1.html b/0.0.1/html_split/_0023student_002doutcomes_002d1.html new file mode 100644 index 0000000..e9344b7 --- /dev/null +++ b/0.0.1/html_split/_0023student_002doutcomes_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #student-outcomes-1.

+ diff --git a/0.0.1/html_split/_0023student_002doutcomes_002d2.html b/0.0.1/html_split/_0023student_002doutcomes_002d2.html new file mode 100644 index 0000000..6fa7724 --- /dev/null +++ b/0.0.1/html_split/_0023student_002doutcomes_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #student-outcomes-2.

+ diff --git a/0.0.1/html_split/_0023student_002doutcomes_002d3.html b/0.0.1/html_split/_0023student_002doutcomes_002d3.html new file mode 100644 index 0000000..195d9d2 --- /dev/null +++ b/0.0.1/html_split/_0023student_002doutcomes_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #student-outcomes-3.

+ diff --git a/0.0.1/html_split/_0023student_002doutcomes_002d4.html b/0.0.1/html_split/_0023student_002doutcomes_002d4.html new file mode 100644 index 0000000..3e30430 --- /dev/null +++ b/0.0.1/html_split/_0023student_002doutcomes_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #student-outcomes-4.

+ diff --git a/0.0.1/html_split/_0023student_002doutcomes_002d5.html b/0.0.1/html_split/_0023student_002doutcomes_002d5.html new file mode 100644 index 0000000..0a4a7da --- /dev/null +++ b/0.0.1/html_split/_0023student_002doutcomes_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #student-outcomes-5.

+ diff --git a/0.0.1/html_split/_0023student_002doutcomes_002d6.html b/0.0.1/html_split/_0023student_002doutcomes_002d6.html new file mode 100644 index 0000000..c5c4ac0 --- /dev/null +++ b/0.0.1/html_split/_0023student_002doutcomes_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #student-outcomes-6.

+ diff --git a/0.0.1/html_split/_0023student_002doutcomes_002d7.html b/0.0.1/html_split/_0023student_002doutcomes_002d7.html new file mode 100644 index 0000000..5233f94 --- /dev/null +++ b/0.0.1/html_split/_0023student_002doutcomes_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #student-outcomes-7.

+ diff --git a/0.0.1/html_split/_0023student_002doutcomes_002d8.html b/0.0.1/html_split/_0023student_002doutcomes_002d8.html new file mode 100644 index 0000000..f19fd7f --- /dev/null +++ b/0.0.1/html_split/_0023student_002doutcomes_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #student-outcomes-8.

+ diff --git a/0.0.1/html_split/_0023student_002doutcomes_002d9.html b/0.0.1/html_split/_0023student_002doutcomes_002d9.html new file mode 100644 index 0000000..735a21f --- /dev/null +++ b/0.0.1/html_split/_0023student_002doutcomes_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #student-outcomes-9.

+ diff --git a/0.0.1/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html b/0.0.1/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html new file mode 100644 index 0000000..4801178 --- /dev/null +++ b/0.0.1/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html @@ -0,0 +1,40 @@ + + + + + + +#summary-of-modules-and-topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #summary-of-modules-and-topics.

+ diff --git a/0.0.1/html_split/_0023testing_002dand_002ddebugging.html b/0.0.1/html_split/_0023testing_002dand_002ddebugging.html new file mode 100644 index 0000000..1ae096d --- /dev/null +++ b/0.0.1/html_split/_0023testing_002dand_002ddebugging.html @@ -0,0 +1,40 @@ + + + + + + +#testing-and-debugging (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #testing-and-debugging.

+ diff --git a/0.0.1/html_split/_0023tooling.html b/0.0.1/html_split/_0023tooling.html new file mode 100644 index 0000000..634a8dc --- /dev/null +++ b/0.0.1/html_split/_0023tooling.html @@ -0,0 +1,40 @@ + + + + + + +#tooling (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #tooling.

+ diff --git a/0.0.1/html_split/_0023topic_002dintroduction.html b/0.0.1/html_split/_0023topic_002dintroduction.html new file mode 100644 index 0000000..742d5d9 --- /dev/null +++ b/0.0.1/html_split/_0023topic_002dintroduction.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #topic-introduction.

+ diff --git a/0.0.1/html_split/_0023topic_002dintroduction_002d1.html b/0.0.1/html_split/_0023topic_002dintroduction_002d1.html new file mode 100644 index 0000000..a110644 --- /dev/null +++ b/0.0.1/html_split/_0023topic_002dintroduction_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #topic-introduction-1.

+ diff --git a/0.0.1/html_split/_0023topic_002dintroduction_002d2.html b/0.0.1/html_split/_0023topic_002dintroduction_002d2.html new file mode 100644 index 0000000..986bf37 --- /dev/null +++ b/0.0.1/html_split/_0023topic_002dintroduction_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #topic-introduction-2.

+ diff --git a/0.0.1/html_split/_0023topic_002dintroduction_002d3.html b/0.0.1/html_split/_0023topic_002dintroduction_002d3.html new file mode 100644 index 0000000..3d14fd9 --- /dev/null +++ b/0.0.1/html_split/_0023topic_002dintroduction_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #topic-introduction-3.

+ diff --git a/0.0.1/html_split/_0023topic_002dintroduction_002d4.html b/0.0.1/html_split/_0023topic_002dintroduction_002d4.html new file mode 100644 index 0000000..c73a236 --- /dev/null +++ b/0.0.1/html_split/_0023topic_002dintroduction_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #topic-introduction-4.

+ diff --git a/0.0.1/html_split/_0023use_002dof_002dthis_002ddocument.html b/0.0.1/html_split/_0023use_002dof_002dthis_002ddocument.html new file mode 100644 index 0000000..68d835d --- /dev/null +++ b/0.0.1/html_split/_0023use_002dof_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#use-of-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #use-of-this-document.

+ diff --git a/0.0.1/html_split/_0023user_002ddefined_002dtypes_002dclasses.html b/0.0.1/html_split/_0023user_002ddefined_002dtypes_002dclasses.html new file mode 100644 index 0000000..04771a9 --- /dev/null +++ b/0.0.1/html_split/_0023user_002ddefined_002dtypes_002dclasses.html @@ -0,0 +1,40 @@ + + + + + + +#user-defined-types-classes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #user-defined-types-classes.

+ diff --git a/0.0.1/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html b/0.0.1/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html new file mode 100644 index 0000000..f4b9435 --- /dev/null +++ b/0.0.1/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html @@ -0,0 +1,40 @@ + + + + + + +#working-group-documents-related-to-c-teaching-guidelines (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #working-group-documents-related-to-c-teaching-guidelines.

+ diff --git a/0.0.1/html_split/index.html b/0.0.1/html_split/index.html new file mode 100644 index 0000000..c4e5ff0 --- /dev/null +++ b/0.0.1/html_split/index.html @@ -0,0 +1,240 @@ + + + + + +Top (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +

Table of Contents

+ +
+ + +
+ + + +
+

Guidelines for Teaching C++

+ + + + + + + + + + + + + + + + + + +
+ + + + + + diff --git a/0.0.1/html_split/unknown_node.html b/0.0.1/html_split/unknown_node.html new file mode 100644 index 0000000..5a652e5 --- /dev/null +++ b/0.0.1/html_split/unknown_node.html @@ -0,0 +1,763 @@ + + + + + +Guidelines for Teaching C++ + + + + + + + + + + + + + + + + +
+

+   [Contents]

+
+
+

8.1.5.1 Background/Required Knowledge

+

A student is able to: * identify special member functions +[C++ object model: +special member functions] +

+

It helps when a student is able to: * use move semantics +[C++ object model: move +semantics] * explain the rule of zero +[C++ object model: rule-of-zero] +* explain the rule of five [C++ +object model: rule-of-five] +

+
+

+   [Contents]

+
+

8.1.5.2 Student outcomes

+

A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

+

A student should be able to: * explain when they have to implement the +copy operations for their own type * Copy constructor * Copy assignment +operator * implement copy operations for their own types * +Optional: explain when copying with basic and strong exception +guarantees is useful +

+
+

+   [Contents]

+
+

8.1.5.3 Caveats

+

This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

+
    +
  • Intricacies when implementing copy operations: +
      +
    • Examples of how not to write copy operations (e.g., C++03 +std::auto_ptr) +
    + +
+ +
+

+   [Contents]

+
+

8.1.5.4 Points to cover

+

This section lists important details for each point. +

+
    +
  • Copy constructors and copy assignment operators +
      +
    • How compiler generates default copy operations +
    • =default, =delete (No copy) +
    • How-to write your own copy operations +
    • Rule-of-five +
    • Copy assignment operators can be ref-qualified to avoid assigning into +temporary objects. +
    + +
+ +
+

+   [Contents]

+
+

8.2.1 Overview

+

Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

+ + + + + +
LevelObjectives
Foundationalusing and understanding UDLs
Mainimplementing your own UDLs
AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
+ +
+

+   [Contents]

+
+

8.2.2 Motivation

+

Why is this important? Why do we want to learn/teach this +topic? +

+
    +
  • Allows clearer expression of intent in C++. +
  • std::string: "Hello, world!"s +
  • std::chrono: 3h + 10min + 5s +
+ +
+

+   [Contents]

+
+

8.2.3 Topic introduction

+

Very brief introduction to the topic. +

+
    +
  • Explain the existence of user defined literals. Example: +12min + 17s is terse, expressive and type safe. +
+ +
+

+   [Contents]

+
+

8.2.4.1 Background/Required Knowledge

+

A student: * knows how to form numeric literals, e.g., 1.5f means +a float of value 1.5. * is familiar with the major C++ +types: * bool (Boolean type) * int (Integer type) * +double (Floating-point type) * std::string (Text type) * +std::vector (Collection type) * knows that namespaces exist, and +namespace std. * knows what using-declarations and +using-directives are. +[C++ object +model: declarations] +

+
+

+   [Contents]

+
+

8.2.4.2 Student outcomes

+

A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

+

A student should be able to: +

+
    +
  1. use using namespace std::string_literals[1]. +
  2. recognise UDLs in code that they are reading. +
  3. figure out which UDL definitions for a used type exist. +
  4. identify parts of the standard library that make use of UDLs. +
  5. prevent the dangers of temporaries created with "blah"s as well +as with std::string{"blah"}. +
  6. effectively selects the right set of namespaces in using-directives from +the sub-namespaces std::literals. +
+ +

[1]: explain that it’s okay to use a using-directive to “activate” +UDLs. +

+
+

+   [Contents]

+
+

8.2.4.3 Caveats

+

This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

+
    +
  • A student gets confused by the similarities and differences between +built-in suffixes and UDLs and between UDLs from different namespaces. +
  • A student “activates” two suffixes with the same signature from +different namespaces. +
+ +
+

+   [Contents]

+
+

8.2.4.4 Points to cover

+

This section lists important details for each point. +

+
+

+   [Contents]

+
+

8.2.5.1 Background/Required Knowledge

+
    +
  • All of the above. +
+ +
+

+   [Contents]

+
+

8.2.5.2 Student outcomes

+

A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

+

A student should be able to: +

+
    +
  1. write a UDL operator of their own. +
  2. separate unrelated UDLs into distinct namespaces. +
+ +
+

+   [Contents]

+
+

8.2.5.3 Caveats

+

This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

+

No caveats at present. #### Points to cover +

+

This section lists important details for each point. +

+

No caveats at present. ### Advanced {#udl-advanced} +

+

These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

+
+

+   [Contents]

+
+

8.3.1 Overview

+

Functions in C++ may be overloaded with different numbers and types of +parameters. It may be of value to specify default arguments for some +number of parameters, to allow a caller to avoid specifying arguments +that rarely change, or to enable expanding the set of parameters while +maintaining backward compatibility with existing callers. +

+ + + + + +
LevelObjective
FoundationalDefine and use functions with default arguments
Main
Advancedrefinement of default arguments through multiple declarations
+ +
+

+   [Contents]

+
+

8.3.2 Motivation

+

Default arguments allow the omission of arguments with obvious or common +values. Also may be utilized to extend an existing function signature +without forcing changes to existing calling code. +

+
+

+   [Contents]

+
+

8.3.3 Topic introduction

+

Explain how default arguments work and how to define them. +

+
+

+   [Contents]

+
+

8.3.4.1 Background/Required Knowledge

+

A student is able to: +

+ + +
+

+   [Contents]

+
+

8.3.4.2 Student outcomes

+

A student should be able to: +

+
    +
  1. Call to a function with a default argument with or without that argument +specified +
  2. Declare a function with a default argument, and omit the default in the +definition’s signature +
  3. Explain when the lifetime of a default argument begins and ends +
+ +
+

+   [Contents]

+
+

8.3.4.3 Caveats

+
    +
  • When no forward-declaration exists, the definition serves as the +declaration +
  • When multiple declarations exist, only one may specify the default for +any particular parameter, but multiple declarations may specify the +defaults for different parameters. +
  • Additional default values may be specified for other parameters in +repeat declarations +
  • Calling an overloaded function with fewer arguments may be ambiguous +with regard to an overload with default arguments +
+ +
+

+   [Contents]

+
+

8.3.4.4 Points to cover

+
    +
  • Default value may only be specified once for each parameter among all +declarations +
  • Default values must start from the rightmost parameter and continue +leftward without gaps +
  • Considerations of when to use default arguments vs overload set +
+ +
+

+   [Contents]

+
+

8.3.5.2 Student outcomes

+

A student should be able to: +

+
+

+   [Contents]

+
+

8.3.5.3 Caveats

+ +
+

+   [Contents]

+
+

8.3.5.4 Points to cover

+ +
+

+   [Contents]

+
+

8.3.6 Advanced

+

Subsequent redeclarations of the same function may add default argument +values, which are then usable by callers. Though a single parameter +cannot be given a default argument twice in the same translation unit, +it is legal, though ill-advised, to give the same function different +default arguments in different translation units. +

+
+

+   [Contents]

+
+

8.4.1 Overview

+ + + + + +
LevelObjectives
FoundationalDefine and use requires-expressions to check satisfaction of +expressions by given parameters
MainDefine and use requires-expressions to check properties of +expressions
Advanced
+ +
+

+   [Contents]

+
+

8.4.2 Motivation

+

Requires-expressions allow a developer to perform compile-time +evaluation on the validity of other expressions. These are fundamental +to the ability to write concepts. +[Compile-time programming: +concepts] +

+
+

+   [Contents]

+
+

8.5 Topic introduction

+

Requires-expressions are compile-time predicates which evaluate to true +when their specified set of expressions are all valid for a given set of +inputs. +

+ + + + + + +
+

+   [Contents]

+
+

8.5.1.1 Background/Required Knowledge

+

A student is able to: +

+ + +

It is helpful if: +

+
    +
  • The student is aware that attempting to specialize the template with +types or values which do not match otherwise unstated assumptions will +cause errors within the template. +
+ +
+

+   [Contents]

+
+

8.5.1.2 Student outcomes

+

A student should be able to: +

+
    +
  1. Write a simple-requirement to assert the validity of an expression +
  2. Write a type-requirement to check the existence of a type by its +identifier +
  3. Write a compound-requirement to test the resulting type of an expression +
  4. Write a nested-requirement to test the constexpr value of an operation, +as opposed to just the syntactic validity +
  5. Use a requires-expression within a concept, requires-clause, or +if constexpr condition +
+ +
+

+   [Contents]

+
+

8.5.1.3 Caveats

+

To require that expressions, which evaluate to a boolean value like +sizeof(t) == 4, evaluate to true a nested-requirement is +needed (e.g., requires sizeof(t) == 4;). Omitting the +requires results in a simple-requirement, which is satisfied +based purely on syntactic validity, not on the result of the operation. +

+
+

+   [Contents]

+
+

8.5.1.4 Points to cover

+
    +
  • All requires-expression requirements terminate with a semicolon. +
  • simple-requirements are used to check that an expression is well-formed. +
  • nested-requirements are introduced with requires and primarily +used to check the result of an expression computable by the compiler, +including concepts or other requires-expressions. +
  • type-requirements are introduced with typename and used to verify +the existence of a type with a particular identifier. +
  • compound-requirements are enclosed in braces and can be used to check +the resulting type of an expression. +
  • Checks are performed by the compiler, not at run time. +
  • If covering usage of requires-expression with requires-clause, +[Compile-time +programming: requires clause] demonstrate requires requires and +show how to ever avoid writing it by using a concept. +[Compile-time programming: +concepts] +
+ +
+

+   [Contents]

+
+

8.5.2.1 Background/required knowledge

+
    +
  • All of the above. +
  • Knowledge of noexcept +
+ +

A student is able to: +

+ + +
+

+   [Contents]

+
+

8.5.2.2 Student outcomes

+

A student should be able to: +

+
    +
  1. Write compound-requirements which test the noexceptness of an +expression. +
  2. Use a concept as the target of a compound-requirement. +
+ +
+

+   [Contents]

+
+

8.5.2.3 Caveats

+ +
+

+   [Contents]

+
+

8.5.2.4 Points to cover

+
    +
  • Compound-requirements allow the optional ability to test whether an +expression is marked as noexcept, by using a trailing +noexcept keyword. +
+ +
struct S
+{
+    void foo() noexcept {}
+    void bar() {}
+};
+
+static_assert(requires(S s) { { s.foo() } noexcept; } ); // Succeeds. s.foo() is noexcept
+static_assert(requires(S s) { { s.bar() } noexcept; } ); // Fails. s.bar() is not noexcept
+
+
    +
  • If the return-type-requirement of a compound-requirement is a concept, +that concept is given the resulting type as the first parameter, +followed by the specified parameters in the compound-requirement. +{ ++x } -> C<int> would substitute +C<decltype((++x)), int> and check that concept C is satisfied for +those parameters. +
+ +
+

+   [Contents]

+
+

8.5.3 Advanced

+ +
+

+   [Contents]

+
+

8.6.1 Overview

+

Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

+ + + + + +
LevelObjectives
FoundationalCalling static_assert with a constant expression
MainUsing static_assert to detect contract violations and +improve error messages
Advanced
+ +
+

+   [Contents]

+
+

8.6.2 Motivation

+

Why is this important? Why do we want to learn/teach this +topic? +

+

static_assert allows the developer to enforce that conditions +which can be checked during compilation will force build errors when +violated. Additionally, they are the best mechanism by which a developer +can pass useful information to other developers regarding what violation +occurred or what must be done, instead. +

+
+

+   [Contents]

+
+

8.6.3 Topic introduction

+

Very brief introduction to the topic. +

+

static_assert is a compile-time evaluated function that asserts +the truth of a supplied predicate, issuing an optional user-supplied +error message if the predicate is false. +

+
+

+   [Contents]

+
+

8.6.4.1 Background/Required Knowledge

+

A student: +

+
    +
  • Should be able to explain the difference between code evaluated at +compile-time and run-time +
  • Should be able to cite some examples of compile-time known information, +such as sizeof(T) +
+ +
+

+   [Contents]

+
+

8.6.4.2 Student outcomes

+

A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

+

A student should be able to: +

+
    +
  1. Assert the expected size of a structure using static_assert +
+ +
+

+   [Contents]

+
+

8.6.4.3 Caveats

+

This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

+
+

+   [Contents]

+
+

8.6.4.4 Points to cover

+

This section lists important details for each point. +

+
    +
  • X +
  • In addition to what is wrong, a good error message will inform the user +of how to correct it +
+ +
+

+   [Contents]

+
+

8.6.5.1 Background/Required Knowledge

+
    +
  • All of the above. +
  • General understanding of compile-time requirements +
+ +
+

+   [Contents]

+
+

8.6.5.2 Student outcomes

+

A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

+

A student should be able to: +

+
    +
  1. Utilize static_assert to verify preconditions of a meta-function +
  2. Utilize static_assert to verify the results of meta-functions for +known values +
+ +
+

+   [Contents]

+
+

8.6.5.3 Caveats

+

This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

+
+

+   [Contents]

+
+

8.6.5.4 Points to cover

+

This section lists important details for each point. +

+
    +
  • When writing a meta-function, use static_assert to test the +results +
  • Write static_assert calls at the scope of the code they are +guarding +
+ +
template<typename T>
+struct container {
+    std::map<int, T> vals;
+
+    // Test location #1
+    static_assert(
+        std::is_default_constructible_v<T>,
+        "container type T must be default constructible");i
+
+    void add(int key, T const& t) {
+        // Test location #2
+        static_assert(
+            std::is_default_constructible_v<T>,
+            "container type T must be default constructible");
+        // std::map::operator[] requires default constructible type for 
+        // the value. This will cause a build failure deep in the 
+        // implementation of std::map, when T is not default constructible
+        vals[key] = t;
+    }
+};
+
+struct NoDefCtor {
+    NoDefCtor() = delete;
+    NoDefCtor(double d) {}
+};
+
+container<NoDefCtor> c; // If Test #1 was omitted, this would succeed
+// This is ill-formed. Test #2 would catch this and provide a better 
+// error message for the user
+c.add(42, NoDefCtor(1.0)); 
+
+
+

+   [Contents]

+
+

8.6.6 Advanced

+

These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

+ + + + + diff --git a/index.html b/index.html new file mode 100644 index 0000000..604b236 --- /dev/null +++ b/index.html @@ -0,0 +1,6 @@ + + + + +

If you are not redirected in five seconds, click here.

+ diff --git a/latest/guidelines.epub b/latest/guidelines.epub new file mode 100644 index 0000000000000000000000000000000000000000..cc39e0168181ce45a8ef09c2ef4a125eb8bf0fb0 GIT binary patch literal 31519 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 I{GY4;595qa%K!iX literal 0 HcmV?d00001 diff --git a/latest/html/images/cpp_logo.png b/latest/html/images/cpp_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..780e8a32bdd384c1dbd0fc999b9ef9ed2e1bdad6 GIT binary patch literal 23613 zcmaI7WmsH6vo(rKa0u=m!DVpw;KAM98QfiiyIT?*f;$Aa!DVoF7~F#8PTq6Q_uU`& z+<6#grk}3r+TGQ?t5&TYt)e7@@s8vj3=9m0oUG(m7#LV<=sOJs3EDDuY=;Z|Aa;|| zc2je*bn`TEwSW;bcQUo0l5;SzviNFYV(#rSY9R;%15an8uI;9+sK9ULzPft%4PfivmS1VR_K0dyGIyg9(p*@&^-i~f2Ud)a_+W*lY zX#q5IwQ+W{adM>kr_sdJ$=ywe25RYlU4n!2|557*{O@UkP8h3~i8CuZ3){a-`k#)9 zivRyz9UT5oZ=l;(i~noy|EFT0y0^0h>sJe)le?=Kbm1&%{|)8LFX3uo;^yS4?&M_u zKeMP}?d0YJw03f)l28LseNZ$pvvK^_@bNzqii-SljzBjPM>7jKNg*1j4i+05bAEOJ z8@D(QyA(SQCxD$@iicN9LQGPOO@d3BgH4*7SMq;kC7sON9V{H({zumQ|H?}Lud@G~ z!ND0ivZRHpjfaJ~w5yW?)qgIU-{ya}MdE+e_usPS|GO=c|Enx3)EL%(OZ)#?>i=ni z`p>_w|HpBmKmL#FTR1}f-4*KC+tq{0FfiJ+a*|@|UMpvL$j15$GtEXezG@l1JWESM z0Ot3kxIXM%bg9^~;^Mfn)QQ+W@37%0P|M%XQ8#9qX1ipV>m*xfR6cApRj#Mq zPOSmMF`8UH-#kOG?=vk>!q}{cml4fNkNeJu4<72Qr|9(F+IlW#!=K>m zc}4~#a3l*6O%Mi>{d3NA>+yyktr~t8RIPTIlaA!mJrgbmp?6_BqKRSmMc1b6C%^iW z4R|}{mi?{KfAvHQL20D&i%&BzNECv{x5~FBIPQ7Idu>92wi|m{CcTn=ns@$6)R~`h z3%+)GZ9@ImKGNpNsBXQTWAgaaUEb3yV3CJHGaZuDDo)t*%=S|CO=WAw$gJiq8&M2F zH%d32=9zLCh@zP5-N-a+bVKq=g7B}MwFM6usi^Qbz(;SPqp@?LA_wTp2deo_K~?^No>i&@I;qSIwZ?@ zDh?uugX;bYv$yQH2sqXzeY|03-eu`|M#zPe^ItPsJhnUzvT%{R8gX6{W~7@aAjttVORUBPuiO-64cPf=TJ&Z7t9MM zoDB!j5{v}l1Ht>*MRn|80%7>l&?{7ME@rcA1g$xG6SqHJa`%TQQPO-l^8`_R^<36| z96)aAW{S+MFCA17(r%>rA9InUA{4#HjrT_nU!XeBVR%4O49|g4lYqh*>EeLedYt7* za_D6B1!#-k8Q^PS!5*RV8%HDg*rs;BVD)tPM-ubdX4KV?c)i0Qzj%bcJ z6Gh-Z2^m#S!9r&Xg%)Jq6H+1B@g<`Fm;R5bV54K8IMhaQ^p=`E{bi$MK67651c?GP z#Kh*GP)kO%<(dg9-1q&6F}Hyr@ZpfIf6YJ35!lF2Iy*4TOUIp2khk3YYXpm?$p5Vd zvT5PhO0UyTjM8Yd`yEefZ5jpgPZw83x+hmI9d<#NLn=Zd)A;LcTSn286x13j%+MI*Zh4PJ^hj*e_{GDW&rfUb zB?~d4(N3bDFh}s*sb9AEvMQ%kGteVZ8k1TnI#z?eOd(L~vmXPwj0ze;P~6mkBc=1MNaU4++y1}$i!1QwF*w{ zs7oKCL?hY#gxAbe4*N$#-}hSQ)=a$)Qym(|h(_Y%#<-!Wf11VMAPec;=2j`JMNRoP z=!do-rkpdAdS2*`n7%x+qtP>>4MDjLt4FWU*gZ9uH|Iq#sb!i0kC6CJKv!?~3(azY z+mz@^(7V1%UKu0Kz*%r26`at)3(=>^7c=5_Vu{>zaO4zKG^-Uo&&uiB*kPfj_1)>s zCwB7K!4&vtBZgGao}a^)F$nei$6eK6qhZfZvA z54KO8M8gQZq9skS@d<$Xzol7vya z&HR*|{|SzK`6ZVL%ax{%N|F?OYWJ*(b2PF`Q_oZ%If84>f+nusXZI{tCapjiEgC5j znbIYFZ&bg}5s27}%`^vov1>j*8oqlus?`WG%ad_ z=|&A3!2s=@n*(+*Ce9i{E+;1iV-5}QD|VPrX0e@wWD9qkWUwKMJ4k@Cgcdp{VoQ_~ z4vJc*E7Wj8N|$1(`lj zY^QpOowCazC?VKa`XzRlb_r4lJ{OnE<`NE~1{_uhVws})OY4hV_LDRi$ic$NXXIsb z{#YsAG$`UII%Re<0_^}|%|f-2H}P~ik95$#+hA0Ko5NFVjRtiuS@EVX+A_p^lmjbF zh}fKzY+jg{3hfrFIM5iT7xs-81yV3CV)vI=y}DH~J za<#y}&@a=w*2W#uRxog#;rGx;ntZ-$712(Te4ZEEC@q!Nfad zaNQbfNwCJ8j+}JNOmBlJZ0jQ@+1)S`&|`ebA@*}6h!^3N$X%ijnYD?&_&Bq=& z_9Gq7m|1cU7W)WdOFMoUSHvQW+Ly6!Uk)V`Q%n$H2JV5~>@-zYL$41Ey`G<%R8SJ) z!o-USJY+Y+$BGUlql%rc3iHf+s5&roMU|rf%2|{r?nxg!9}sb5Xn-i*qvMv|&U?AM zWc*Sw!VicdL=%ijlT4?gN*WmixZ7+hx%~))akPZgQQ9)}uw{*c!qd$>sc;ilge(cU zv=4Ocf))`Hgpe*V=JmLKe5MhZsW`Bpg-MvH;+I^#h3H0H+|w}@ND=KY1kZqgxmsDA zN>z?;dEIbISt~m&-xswJLDO<)sKUn^)d;dFi)Vj?QBA z#Gu1S&5@*?G7QCa*)EwSWJ0x(|HKRJ#Bbmv8rxbJ?NX;6f%xGF$CBk}OMi=K#gml| z%X>dWvWiOnN_O5>&_vk>=+eQkNRQE_>w_;wsbU))(_HQ{1uPX%Vzzr zJ4u4BJt=3x#G50LcH%y-@O$jfO+-iDGD<_`k&Jfv4cH{Sqj+d2whJd4orrlCmRk_sP>?awsCy6>MMQKZRuZl?YLagF85&XXvJ6ZzQ zjL@I>a1KY%t=#^E=sH4@j~#Ij%6ZSRN29(mM3~M)XM1PA`tC!`g&0S4-i^06*D^fEaFlmempgkNnflT%ad@TMkyaDE3f?e8P0ppFlik~s zzAvIlo(gLhv;fT^hQ6%^Z8TF;Q;+Ltk%GFeFy7V{X`w8cA!gUkgGGv-#l!7AsnJ&3 zeJ%z0#?jwIQP-BN`J3vIcj48}I*Pha-@WFxu_!MHV|x5VZ(+A)8JJ{DSti2+1RlpBb}*N0vNS3{W1o5U;Lxe zBK~<)lQEU&sdfP6Px@t-buG)SFvMsMwm!lom8FQl+REa#+0y+^`7ee?;mh_M)EhQ3 zE#OE{@+b4N3h`gV$gO8|lMHV(=Y9`yU8uJTWsUsQ-?}V?d&4-nlyq{xUE~2`9hMdUM~f(1v)|J2CX0WRRj+oYMw8V^7;33SfCjYdm3idzc-U1Pf4 zBhkMH6d7^~3~RQM1JnV{Td$Dt5vC8JQj_^>cmi zMNVVMKIluB%r4=cA`DCFJ7f@ka%@Xa<`EjLu?Yz)TUQN<|64%ygos>H#){3( z=sxuR^i_08Jqd)|ZXF6|x#D3X-{nD9kSR37}sN}fJn44w7V8T*k zL+8RG<1c|`OstXnN0iAbSXezmFm(r%Me=HWa&5Q2vdQbxjvj-J8{quJM8`kjW$TZT zysinMGO=lGT(vtOYM67Ba**#}01fKrS98xhS3K@5B`g#%O{Vod@xTtiod~ea*?A(7m2vN)4?!cpXdW z6-(nQuvHL=S3Ax|z-v90YJH~Yt4J4^uPS(s<#8iii zW;^7xI3JvEt^kU}UQt3ut$>#d4g z^^-{O(K4Dr^9l*qhS}Dn!8RXgEu>_8qN`MZL^pymfy2QVRI8@+P*n|TWwM5s$UB|laRY?aL0Qg&@W9Hw=J zDch2V9R)1S5Inp&G}#xo@uvyn8JrrAt^p>m1HoQ8c&p8wcqvsQjEaYQhZh(n@I`L37d7axfoD1)okhfv-#317TnC#b z8V^%(U}`ESHgbb$L7ZI4&iqiW0en^u>~0~($6#LisvR-5!l3cWQ|DrdbEFarEDXfP zfcWcvTGts@vrq|(+WQ=vJTnJQ5b05i|A^|BZm2NO^qJfio}{!17BV!v96s`~R%2L^ zycMGinubSnF8_v6Sv~3BXH@8?H%d+gQrGLa5703aycW1GWG2~1Mhhm&P9GKV0&~Y< zYej+-z3F8)HBgPLSWz1=e(?=+7U&@G>*KdqEXQ(Y{McD#oJzdHE)Myur7#z7;44%D z+n`3a%?w)dUwc11iB@sa^y&A{p8)rH^|i1)&REe%QnJ!Y$E)oTK9|=0wKfhaadnqn z;)a>Ecgr2&QT@E0HqqyzARQ=exAaHixE}OL&LkvwI_!U)n#fLL6alLxF6w! z7U93#G^#0|^gQoKSliL(yr<@O(N@$Y6f9*Xs9q0FEZu}GBc&?G%Y9}VZlL@@3$%)U z=jObkZ?7OpKJWofC}QBqLE;bf7<1);Eu$uiI2R}VhID@8Cvy|DaA~ZQAqP>uMSb4`~0*#BHD165|HV}B~?qEVc-ntP!Cn4oVZTfuSBp-)@-svcakI2mmZ|A{(YHkdJ% zm8~$%707RpE3t8dU}oAfuw!*NvCw(A;Swd&aNtThEs1-09YN69DU4?~=TTfaUKzG* z8c$+E5KJKve!x{ysiibLn?*s4)jNG@bE}`aFg?R#smnKy#6>?Des9RSXnr>EnY6j2 zy+$X`mgCAnlzsr`V^LhY2W5OVX(>5A9SWRt?@UTvS0~=_5Av1K+Y$_S>-}X0yq!D` zw`V`?0=;jIJ6{ld{prR$@Moh!cpJQ?cei;{4nc>g*T=)I?^>w*(kb(}WzZhneL`t5 z-OrYh<{h*gL<@{sFmmc+vCk+`VgZFT(fg<}+nVzeJh6e>dTs zuT`BJ@evh3j3ve^TDF_bIyHTQa6i9Pq`WH|CWJ|PU3q%d$GG}SxB;fSJLuCCAPfC7 zXh$sJQzI-_GB2g@Tqs&XJ`?n6`?o+pK5A!xL-en||Dj8N3x-`lnzt0=Zh>WHl93B* zg2l(;N56W&vi&HrDdheWJ%Z|6(8YB2wi2*0%%cT%-7v^%)Q%q_hcQ{wptS@oJFLd)yr&q!;5~XGTSc{G; z@r(B!zb#e!n6}YzjzS5nuk-bwc|iFZDoZT-2*U4=ItvcM^UZff?Sqy6dp|EBU9i=g z9!80hS=~Pi!m@G>&@nGVOT}I>(%xizC4{F_!?O`{2KhH^q(kOH%v)$1K?Hz1DHzHIGqqoc-YCBJuHDw+nx8c|jC6 zZhOs~9t2+ubzQR~At2uaPJ<9MS)(IPWDilp=OJvOuKrFwc-N)7ov>bPI^Y*J8@6u5 zA>0w~P^MT_fFRIOjAqlZa(t)#E73#g-;MYxl7VKKdAk}uNpmesAb%qSYY~5LYc^*) zmyUau20F~{w$O8EXzN*PIR}xMD1~=9CB$A#S|`%ugfF(9fY2kW|9}rC*1cXJeIu87 z&j8C*#)7dqt$DYH7=zctP*BM*_Zy;`fh(toj6^9`j~{?M(DyTP;Z&0|QUN?Ko11AN z6t*4O0GdTo%1p-fvp2GZ&osm#{K-3Gs79oxWXc}EI>v<*u&g@!MNQR4n{A9z;G1rP zU!R(hItx}qN^FF48wBykE#>|?9X!+?Zndyl7B*E8XDajwa;o+bL+wZN+}eqh`^wJi zs9is4sHqmG<>-)O+9v zX%3h3Wj2!7I1J?~hwX?lbb+~0987zH{ZpkaTl)cW&o)T5zJzr;fm^*=4%6Kz_Kt)&h9`k&PZx*B11<@O@5{sB+?i!r}_v?;RV*>dgi=!I%@D%c+FQ zMs$=(kId26KxE{SmGYg_hD@_2yM1*~PnS`7xNwbt#m{s#a>Wl_bT^f-@e_x;jq4RzTSHHY60tS zuu^8kczho26}TBtiPYo6f{_ErfWt&%VWuyyZA`6AUs z%|zhqZuN?UD8XmibC1XxZ`)#WA+E@`E0Z+Mm+Rez1MBjzBxyM_!gGVXc*f1ieSI}! z-4HG=++fVQ8-<(NF2*Rd`0T1XN9=nHD{H}P55AKXzsw|4@Zxz8lVNpOZiA2|H0oei zl1d@u$>WqcrKUjjvLU>^gl_7K@m1`y3l$g34!s?y+ZRQ)9IfSS&-bTTu-&&nCTxbx zF0`yCqAX_|L)DJVApwgy2Uf&_0KccnbyoasWGm1j2{@8-s&+M8K+{QTc~X~Z^hX~t zt`$KrCgDX}lRy+JWqQ=8i)-pax0jDUhNe^10tJFA=~RGD=X2OF1N~%-qZ4-EqfyqP z@=JEg&&c)DwXaK2tNAM-?xY^&*JsOL^O@nuJ@nKj9(qS(>F+yPDU9@reoVXMD3O*< zjlxlAj)YQDxi$}TlG;MCCMQ8oK}^ybyN8|g1)ImizplX)lx+0*H^_G?5o>xlM{FUK zn69?-Nx<)H7EUkug1@17LL(E#BrJggMX)TE_&D-mov(vlsK>}}XoyTW3%;GUTlU%t zM{m?>tl$Nj77t`e754LV&dB9s5E9GE&#+!!>izI?lHr7+RoJAT?Yy|q@moMY+4bek zMgzO=UZM$)!E<9SQ*$;Wqg4nykXa;k1pXJ)TdY2b)#)@eTnjeg;ew5io6M8R7VgtD z6J{ecuK|t?i{Fk9G=PkIo)=Y)!;rrlVLT#C>a3>esaCO~GAOxIzK;qm_wxoz6FtH; zLwc*EgFp)Tqyuu&IC?G0?v#b^d1+p+HVs3N2bZJse5>Z2BpzU^q~=(IR3R;E=l0FR zuKdmSDqrP|rNy8_0N7Nzn4IA%cUX8$%xvtCy1TK-aQwD)Pu|SP{qZq7uk~Wkq3p9Q z41=6^Gm0C+4ptc;(w_V-DQ{^!uDG5c^7Z$b*=1U2UQw}%I;%ElCP&2Oqv z5C}x$@vh-`sr|=$=jHE$dIi17}_ea*1nJKbt2?h2GyTP3U5omt&F{DX;XF zj`1=*_Gfc2pY>)@l>BJz#_KW6i&(hWgYBhiJMziZIX4+Fee|(3G7duESF(ib6^f_y zX-FOVZX_V6G2s2O&3-`J6Y>i0bvc21i-;us!s&AyurATpc@%N@>uCY{q^9CyLsPRMJgzXHeqf|C;8WE5j+ zcVl?5s31%i%}QGVcQO%MW^ZntaDY0+Ad`8SbOm*__6Lu(72?GyvE6&y~@l=B#6175On;Q5-h2 zv>G~YF2T#)>zC{difR||VY%(`pwQHhZ4v$a^;6`Z=Q{b!vQf0Ug6Xgt0UciLD7QUe z4ZA~>FKc}BhFo012RCeg@2;#Q$jPz-w$dQluKf*F@0872z1)IKa^#=+HJ z&K2X+ctOwnJvnn#gLzW9{j~GF#8MZB&0Di(R>mGNh_#L%`-PO91}B+tAqbI;u=v68 z0gu|1KRDN&SL5<*9x1Q$9S*d$6=q>Rl5OcFZq?77PsThOO^BK4aT*4)8oieMlL5T* zBe|hg`vwu}$y+GPE8@`;*wP@7kPXigwCY%Z%b19HYQ{7_uaIL0m!L7gC%FSELeCleRv%&c9Y3|C zz8RHDnS|mn(T*9Oo=B~*?e9(Q`(2-@wb<7B!Akt2C`<)=-u^GeXHaBqX(QTU5PwNk zbDX|9Xs)IdG|G#LL}R$CdBhono=o5>+2PO)XZrdGF#Q$iJ_8=Gdq<6I=BNa4JMR6S?O1b8@^H)Lc z7s*%2`Z0lRk4(wjVIQU75&{ob1~XOtxu6NeeQSGr#H#e81WwP#%iV?y@QWh z5$9+I`-oDM3{|~&)wGo~Pj6k(Ny%0Gq4yn-$-!(lPYD6}DXFd!j#w(~$o@3>+FlId z$@mHxxhdkv53?xA`U0c4c(igq5Uu1r6oC(24H`1lGDy+PH&EN`8!m)#p#ede2TNYl zm^WSn*ZtW$?G%tyOxg&Kp+3829p>8uODTW5|3cYSODULKcqL8|KJ+m~iBfW{B#E=^ zhVzVN`!w+|+T5{mm>d8KbEnoI(48p|lcf4J&Nx9U&8p#$>0kc@Nb%~bSniCHcZ$|( zc5E)XS-i0)sY*U8pTz3T_A5XVo+`auh~p9 z0@qm!CL#)2w(UzUu}n6^RAc)S7ri(NQq@NeoKpRK%)h32H^g35L?LSEE&%riAKPw% zkiA*PJJ8$3`%N;Ehj+~z@2(HzAiA3eX!N)@?VmJQG9(#v5S2NbecI068@k^#;G*t1 z2U*Oy92nJ-Ts{0S{EMD#CjdJo{B(T#n3PDA(D=+cPgZ|*P_;kjvRIOlpc0G3zB_cN zsZm|{ne=IaEr29#@a#Cr0X;PX~H9{Rqno82j|R(Zq_9%&&)B>p62aIet7Tc z&}`8hj6KC`x=X})chU*FX1!|XWeun!UT4RCI=zb^aa~Kr<|F#_5JN6U>z(rY8oH9c z@ZqV`igY@jf>n5uWnrvAgH%Ppp$HlTL760ao?iugK%$d$BHvIjosneRj2a27e%gIY zxS77gq-yy71cHnY)ca6&hufb0Ge(mgTM+ongWsf1S4CGdzWNV+*)dhZvU&Qy zt*(n8zmX_T4+2!;JGP)gDr8YY&eXIz`56co6W&SX9;Gkn&Tdsu#gNNtwFu|77=Jx)` z7TK@s%XgisKd_R4DwP<*lsY!2pb3dh_lw?cg)lC6k6#RaFg%zTCJ9 z1B)-tc)OmTAFWt~HShS1#T=bzYTI)J?Vofz-hL-aP(rzkqAFYA>9(x3dT4(S(g8iST;<-QG%sn(F^YNjJZ!|9qc}I=S5eN?w z40YK)HennR;|9h}kPU%N02t3YnZbhA^wWN~DM?#z;9!(hZfgfoIltZA-RV_uq~h^v zQc@b4k$hzgC*weZphJ8EKkwVjoD|#zeNy`4trfBXAN#hxjUCB}A5ZJw)2-UN2p8}d zNYfyC?Qkn}FM0L{Z&CRLn4!7}qPl&jWA|G@N)0^77SK3hlBb5)_6s77r5+B(-z_b{svh)-Lg@|IEmGv6dpWh;%y+te>s; zzT6JA7xX6_Z$8?^cir6Kcs4vkJeB9ODdWOC8|<8iH+jCb<`@7=mHiV?8oRk{X8*vy zULt+N_f;sC`#q5yK~WzLtp@yB-F911)zC|*UaeQvZIq9O@dcTA``nja9m7m-lns~S z9Vz}UC#b~Po%^YMJ9p0Uxxv-^weVCx6*$OF`{vGFEi|&G0;dp7>MdeD7a*>;mxp8% zXJw@s*GlQO@Ixm45lSQA2h6(D@k?)DW%tX?V)U#XPw|Ba;WV1N^m2D@5sUar_Ke5L9X}w z#fIgbuMhuiV<)c#8Rm8$A>Yjx6r6}ky1lm%>6^k7A+sjDx!+?g z-)CqT+gW0sjDLon9-;A^2~XtuwSs$(ZfL0P3Hc(B#V)4N0%+hi?2qB`^sQ<7vHT^~ zi*$^{ce^ff!>)PN-Z_OA%*90$8rDYDBO7h1pBv!g5!Iy;Fx^jZS^3zgoS?i)HWa4} zjpgw053Db^^BK7q7lPgYFe8IhNR&+gH!f-vJpAqLS64&TvQv|TF#a`zSrZ4BrvR(j z8|&qi^SPT+K4FLEFS_|qjEZFv=cBr>@^5DzZ^sHXffGC95Kg{`9S{>JS2r~+r&a^j zV}Yk4pSU31Dza`Vi|ORf-Sdov^pNaCyI~9t2Lb1(E?BB!j`ZbLtX7rRtpe?%izZ}* z>KQ>JrW{a+sa>s^s;O?%r?013LoouW6cq4lG3?l#BcFi&!xT~z-I;?%CB0_cz$jW# z8gkK)In&HjCFg8*fx%!qpj?kkfl-?>(k^>VGC_}&#R(@StRxGQgUDJY zQ0T205G}UOLJzQFdjiuT#IXY^A+Qw^USDXI(ao2^XF{MCh8~~^CvAOGs#-U1Xh(SdZzpr2C-&TMnz5xao`Tp*&`C75wNK zbUr~&nXgTyCH~5-Zs~g;R|2uYy=hUqTocgidkQ>ReU0$r5jIsKYtC?|NrJ|K2Xm!R zLLf_HW7BTR#PJA)EquF`cXLs*6_l#jC5l$M-{t}3F&;d+b&>}LSTPE(>F^XgjaS=h z?9Z6ET*$s(1H6c|$0ywUSG3)9L0(%Gnt36ZG$%(XB&{RkAOy=)Kpxq_Dm>r}XRv+l>8B}i8jME77qNR~}6KX{HqiL@S8A2UQ;G>%M<^40bUNogQxtirvnCijd5C`49x_W9KNeR)J zrlGuqZ2s2|4o3@L&%cdS&@ygAs-$mkF-(WPBe;1yY?WZ>B_*Xq2G_7eb1G{unN2nS zG}MS5vGFFbvHL{Cg+wmDs!-cQ*+KG+^uT#KXC7KfmMLwa%<>NRI)_e0v&(0s$0){V z&PdU+iBB&x>zIx6<-(Nf{-SC;s7<{qtnY>htoNmIepPl4PxJi!_G7fHdMWy$zz3h) z!9f(RfXo!%1QTE4$|n9UBh|#CkBUXmiXGLXm##I!za1)e${^X`%Ho7%cTe9LA#dRV8TEk1;L~;?3i9-522GT0{_YOC-IsOOjVrC zg#Lr&<1PpLpLs8w_lAei%&;~?$1MH!lg(VtWBMC=o=(Oje(hd;cDYbi3Z8TPDh|0I zEFuVw-$6UfLk>Erz62~A5GjPF=ko}l72Z$xZwaje~lEWibG}@m>K^G=VvRYSG(3P zyP;3+{)XjPngF1U$oF9b`I00!t11ks^bdncc==<0) zB1VP%nuS^cmw8ptfHOtdO@561Ut=!rg7>@<`-hfebqH5lor6k@0 z_vI_EzX_Y@qvNe^gGEbMOKGitOG|%C0S(87`q#YQWBGVymb5RF3Vp~;x6a7A;_D7L z;CSzLYkVjpVB>2Kp6wgBAz@$&@P~y2Z&`o?5S?DmPpJd=*m-S6xvtBwq)7Sbmc89S zt%hDyqBMo^_PJsVy84E~PUINYQK|kMGHgBDqc4nO=U6;&eu^E-NMHPp>>O-u>h2S~ z0`U7QbGS7sz=E2SL2yyOUA%j^J-EawY2Lp>q1zvRpbtwqWbMOeJe%B3yhW`QxixQe4doiPnUdp^1 zpgzr&AOs&y-~Fl0A#N)swC4=}flhV5hco)9rmSDWJ%$>z&^Qmptu>sVWaX9D-zJ7( zsc(ZXHSF;8kTTA}BCbr974h-Xpd(C>tF~>t^v+HAPu0HHMJ;$YQ{t!OB+IOQU%3ou z0N+R$q1qpI?_hD}?)KQmyPg7CIQzDMTN%#xD7O7FszjXlihc2GNAHjvqo+Rvnn?pk zIbMIT6JAeqYjN9kM0W)EP~>+WayWdWNlN8KW)Zr=CTs9|=fUk>4CsN~LT8NpcLqtc zO~NoQ)chDvfKq|Rg3v?f;20#2#KF&KHuec2xR+IOH_@}<^!aWNeU4|Ix604ZgcUREtnVA0TpKB71N8Vq&Y*}C zD*6C1{Slz>ArT8{LFkwgWelG%1VeVY6~)cE^T+_BOPebEGcB}c z7G0ay{eGB|lM-Xy|HDKj(u$8)xJfOo{*;(NwHadQpq@kP{CFFxH2qx;U|V7 zpJGqudmA-5MdIRe9bich{TkTj?oV##GPbW)S%!qbc`@EVA;D!PfH-Gv}T9<$tAgXhkgG&K~KliGlF) zE+vP&)PwBnfE$}zv?!%<9KiFbiEa3zMo0fQ8fUcs|v-a?{1 zV}o<#a)YVs*LqX@=Rcf-Z|s&5ntU5;>QODD9UH1Dm4ccPX6?BZJcjfSWX(j=h*^V~ z&lbOiGe{z72`7Gg8)YZlC}{_oWq?w1xZdRlh+ugN6$FoU`cQ@M4VtNW&qFgDZQmJ( zbulPvy^~}|VAoX=ensu8CA2a1p*OwL)}EGkSngUzWH+5I9;naza#9#MUD>P<}JPG*N4s7s@yF9`p6M2XLqA{~@R$76u3s0UtI-LnfTQ`=uAtYr1dHItkK`hAz{Ms4*sG2wLG{ z(oze%ZqPC1=2bLpy&sA!Uh#N&I%f9rP$S-IoO>lsU224m%O;CA3UMoRq9XV~|KssF zZrF5@E?O!g2FeuWN^VNwcAFh`q-^gBxJ}ZAJ|&dRqBp|XtUGbJR4wbg%FfptJ;001 zK;N2ZUg*~9yc@3k&UvtQ1BT(pY>wr(bP1L-qrxAh2LWNrwspUEU5e^{U}WhCBsN&W zcaz%pbvzi+!@sBbx|5fUnlyZ$Oj6iPvQ-bKOk>>iF^PgKv3D8Sb#K8ij1K@HkVCzS zqE@z7(`Cr_-&fo-H;3g^yWFrN_7bVoNBV*-{d=)bSMYJTWz<&*#!pC8o_ux1XNX@NT<|90I` z=$?|oJ_+!ied+xpHa{;p{}a*&QLae|#tSpK?8s;_1~Yp9zNMp|M9+w5I0S{PNuO5z zpg6jLW0;&~A1yp4dZOM|$>p1bh|9|`&Ng^Z`N{}y{fORisbmV85^=EP=~yk*$lC9^ z2Qp<-TWp2=V*QlE&;A?|nF`%$Q|laL6ypZjX!4d*mrtnMW&uw&cE( zXBrRFU;r2{uX-AH34@{lkSdC$h?OuN?v;Q%Xo2r_eAiNU9_oGsIfqTg)xax&-?w(% zfPl>R{4--WyBl>hi>S`Rhr#Bir+TYFIv;H($ecweOAxZOKA~|%3i))XkMx^^hAkpc zU4B8)uH`K^ewDfDs78n74=igxnhhPn-9iViiVWw}GlZh|l_LH1d|&+;P$W`$JdDp( ztV6pFXVkH5y=QOzJs7vX6eeKa-5{Z-h>*WhV-i?4jE3zEARrt?1h%@M<@??-zdt;f z!)SqZp?H0N(3|vTjIVZszH!R_v{nA$Y0ncH&}u3 z{ys`Km|`B0Cm3PLvc*hqQi-{M&#Yh52mV~k2I%XH^8b`@-_dYAZ5+TO(Ypvju+bB3 z_1+00YV=N!5Z%hEi|C?7@0}3cM(-uDx&*OS?{yKq^IpIA?|aVd%-uQn%z5Vfd_?j+ zJSn!P>e?R&OPp4gtH?gz^ZZB$pC6|8vt0?0t3VXDhzG2TC1oQXI>Hrh3=~Z*K4_jf z&2h7FQWB`Jv&YqQ;RqJ3m7<6dX*dWt)q|T%!~XNZ9OPoT)%sHR3ULwz`_trDH;#i& z`Kq$S=2TuZj^vY^by6IvMwi=K4l^5=?Z{jAbqyt5!t}QHEr0P-W+E=XQCeHCKL=Nl z;$rJg&nmAB^~{I;UbRC93(kK&L^}PNz)UIE>2h)RzDfObaF>C( zfM-pnXSA$}>Nt2mFC9C~XTl!tcHsMd=-}sD?FYfu>o{aRghNZpqs|*^V8VA2v{o6k zB+_a_5NDX8Ua5sLck7XtJGvC)?@EvF;}SlGtbj{SXC#Rz8TyLlV|l+Aq1BkL8Ql6A zbIrJmvAC`wl((?2@B01-ldkwDxf_(dz9S_FBym|^uGghGd%7R{@1V>$K=k_xc%QV&rgXziWxT;%LR$2a|`m}?1!)-%96{_Uy_2`&2xDPsNygl`|8d1oG2Pas@e*1#4Q2 z_2kj+Ez*OoN&l>&V4gCmrWyu#wTQLC1O9@NsKFl%1?~Ap6zR+?3dubFr>0?*UF9ce z&wmY7jPs6&-IS`YN!$vwv2Ark9&<O=KH##5%x|NOD<{%+4ogS*13)I6_xgZo4KKfKr z)78|}qFztY+m`y?9`AcC5?5uam3?TZdwM{3*LDU&tiJw#(3bAdLzrsZR+2DxXasV<-CzwrOyIU8?zB7HrRnHIEniB0pQ z`6A-r56h5GH+jahmw$?G7L(a5^XIxeMy2GQ$lw}hUwE=r-W+r&*P?UQ&y=`WZveX4)K2jq! zHv@K~aZ7a9v(Op6@upE8x2L+-2Q>hJq5@W5P;D?sjZfAZ{wl76yVkvDYjluE#`2!^ zXCn9!t$^Bv=I1q0Y^7xY7kn`{!SY^EWrgVqwNTLQwcYv6&G}XlB7zauvd4UWI`mm1 zf5FUy>?5-xtyqn#tAI&tmfy5F*;DWXKOjQ9K_+bmeD2a}T@*d4^z9#|XJ4w0 z{N4(mcj3<&!9FD*K``3>OI_{VaWOP6!2h~rDbz15#5f}nTIOpU_Mza3sLsM0u z_gD5n`^3_7y867<($HYhXGycz6NL>Jy5`JhzPR)3u2Ig4eDttYE`eJ2rC&ba6jw6V z%rgHYKE1mgc?&&u(YKUj8{kd%A*azalIj!aj-A)a0fd3^5tffR<51y6_d&uzRA@eV|zxdn5vd3M70sx01hah z^|f{w{ajTSZB}cn`|t}7$sJufqO=x+KY64(Bi5H(X()|(g)!=xXwq=wzi)TB5-lbX z5Y?!1WE@`ZVF?OjZPtz$<}&N;usqHNmw{-si@{gp@c9vGO%mdv^J@5SRDfH)pl<^- zhu9S@pa=K`o?$Uqwo3*Ha|Sn^x{c_2p_)*C` zxmy*WBl^&F$S^y%jUn&^g80zd|Loq9eaa zd({gsUV1waN|_}@ls5}yLY5h)hFPhfSx&g0V!8Y>9bEzYd!?KXx%R%4N#n_j(Uqh7 zSN2h%Qf4*YRYk|_0*_UScRQ!F$3pc$dlj*r zvWV67e3}W?~YOhm&2&LWiAmE-)7wPpE5!-Cwv)(qj)aswz(f{hBJKYX0{f zgZA`yY4KST#48F-x2v>CFVN#;xR%|0p8_}@qI)p})_KWH-ypF|gq8Vb{ttn`r+0s` z5Q`Bl+`rr_Pag-vH2;o;?Cis^_FL=J=+HF#iC+~WgxnBKwGeAfZS%i>g)^2k%;A5Q=`~$zMPqor;;BW{yc{DgYhv90pSp9r> zG#P!tw4SQA&gb75oAruiDm^WFIC_F)3g5YV1AmN zKIwFQOyay$lp<92UI{H4iKO)#p+w{x=GN6pjQ-~T+;m*EmV>LWeXwr=<5jD%1k zJ;~hN%F*?Ewl7ztlN*JII>*aGowc7Eq8yFFe& zNo!%wlQ?CBgHmyMPEwU zAOoK_?Y7mr^7trRF`L=>0zQ+|BVJYf$aPgvLw!n;Dp)zN410gR%xUF#0lkwUVj48Q z_tqLX$Icm?rSHsqmLV<9tbcL_+b1kH5PQ?hitp)c&%1Yhb=7yyY+hHICEy-Y9HoXi zMwq0xLHAvTf0oTVGRiWzn_iIW$=`ZAf(y8=((;JCdM_Dps;r5S5n9z*?)sav$Tbbz zk$?J_?|u7xG=ed0rN4e}2c(wTuwa$^v2UP{JJ~f#CbXO0*FnpH^H7Lt$$5V*x2A{y z@`0HtDR%a8clJ=X(d^-dVB^J-uvVgWp2Yi?nqROhS&V;lfJMFn^Z31>1Z|G`fJq?e zW7Jv_bkk>$5{6h9mh*y%udBWJX>EwM>}Nx*oo^NFF9OXJpG~-hmacxHsNa60Bbrq_ zJ^$RkDZ>yW*>sN)AYTNuZD&g*r7IEKZvRMLxuSyMaiomK)!;pvbmHo@s`|EcLgE&n z4(4IOa8ahPc;ZThy6L&-j>8pzFrfpK=<>qeLzp{4rF3Q<44mkf`-&JWHQ}Qk>?G=Pp~G z4xH=YoM`(|lbEvpb@ikfiEQirQUt#}q&mHvyNaedRp)6BRoI7xHidnXPRgk zetv*sfo4bfJmH=2X|9Vj5d*#Z@NF?ZfpTeJoEU+{K@ya za+@`grog<&^i;sxWaH920cYbX{|*u22ffLR0`VJ!Qcmo@3YG^M2mUCF>R=4;7npy+ zVf#(!p?!%3pfHq8Y+Bp84QC}ddU)KN#(a-9=sO;4#SGJv+ zxCGD!edn<40N7jFu$SLNkNP^ABx}gu6h~_FMT?%ZUBdW35Bl4KTXl8 zv#@uS9O&ntH=D;4@OUX(pL!xxC3FxU-M^oQuRh)D{4%;qhNLD6onoERCn@;6+}PJG z7@UhKE|M$ZR7}D9nqE}}YIQrIFqD%SV8^@+`NnJ^8;^{iovi+Zt%9U3kQw3K$-ov0)|&V1reR?nt}L-nq#cQ2S2>f+lh}~iwf{n#owfJ zez=BZMUZVWG;Te{`5pV!htrmEmxSGl%o^jv{>(?M5E>`}XSxhWTnv+}hiLh9&KxlT zT8JQ1h#&SnqLv?RWUpA$Ol}FSBb6`eumMDbZsn5Q5e~0CbOYG%hWCovwED_AtPtJI1 zdd+cWI&}H1d6C@AXx^>dgi^dqTtuKRcoie=zA6pnAh!L%#iO`B#aQf)duQY~k@76R z2|<{huecXduE4l*sof-ZjZ=l9PdX$LKMS;5aQjQ(TVERd!H_7jAAvPvhY&5L5A_#E9C?`nh8**e62Nv@BvkSux6{d?!9Mjj z-teT$2YUU!k1;I?OU49kiYj?6-xMawA5dCHv}47^W5|*!_T*MFydh;^m{2a&-wniH zhLmp_rr84;RltW&yN$-k`0(eCpW#3G3d=&9zy;Dg0-vM91WY;FEA5pO$olEbC%@7u zK_3~m4av)rp5~e%Ls#4@!j<#$Sg1f|K2K2~8+H7^T>CD|W+4TEKV$qgLFo4-%tuHY zKm0%jFH>Yd#wWFK&-{w-j@+nMnvQA^>vrHl-yh`lt7dEkqCeB0t_9(1n#Iu#gVz+n zC55KuD}yJ3pic@{HKZi6MUxT?5JS@ZFKowkH<|+Gg=8bU-d>rqMQeok+LQ(Y}xPU@I3*-$ptBB zC_DtW;730ugNm1yxqZWqy#|nCrhKJYe5C^9m7e;9P6wD(RtW;hB^@C3bAx9XL>Ts* z_6gCY(U;Bpe%B>LPTpI;TTXcfTzDv;mBk9(%;jYKXyxi*!0lOfgbiOSn9Bn<3ys~o zMEY^2%Jtfz@}#E&>aghYz}h>C&%_wco7r8Xq_Q|#_}wDoMO6`NmoxyCDX%Dv+Rt+n z0i`UF5{|4~8lAVb3jr~%>fB_sB0R}@AAkd~S75Ncg_0^jcNF79DL}C&c=v7YDLn0O zqbK~wP2g}DCCpJdUFA7>N`T+XkII#5pxTC*-g9~nt7x@W zhiN3j!(}baB2EL$<*D@iHDFV$s2JR$%F;my~~(Jng{1ynr(91Ll# z4V_}+{$}8TRySmW>e3{BhyhR!38|T{q)QBz7Jvt2haRv!iNaBq{}9HHeU)tDWN-hn z(59Z9G`Y1&dEASb52tYdQY{(5AKzn+iJOoWLfAd#D2MB*ve0~+KE%;u>DhW|BBGk} z3|JKDyGG&tsy<42?<1PD4=1AkIFw1;$ZQ$VFT%v;0$XDGwdRe5MamG6A*8EYDz*X$l_q!sfY8<*!+&Zecb4Wayum)R1i-j7 z8{c08ANz0si`D8>he!60unfj6g^Rcy`*_s&fw6!e#W$3%r!B3sE+bT$8ZTWaTf1xn zY(1<;ofRyip%-k_U#izME+ymdcXS|z9dk%lzpJw_!Bhr{ zW!O%r)YpgH@4~v2yfVw47`h2<+?^#Q!4IwM3F^|r64Jnmnh)O(M?j10iGj1q3i9qaPU z;NG&hVl@R7a2)dj?Vf;@x`<`E_qX50S0zh|6(L7oeJ_QEFOe6BhMh4`<2w>k z%B!1E0aN73r)!x>Z-3Xhzuyu+4{%X(a74joIz6&#i>#^benV^tB+My81sGelt^r`y zX`<@&{lFy*4YdeB z`<(<|CFqV=eKySu@G+z6d~NsI>OqC@5k*YS-2BisAQ$EwEv5{ k<+^65`#d>g;2pU00k&`(N>hQ}@E-Jj{YqV-QqCgqe>C@%9smFU literal 0 HcmV?d00001 diff --git a/latest/html/index.html b/latest/html/index.html new file mode 100644 index 0000000..1f598e8 --- /dev/null +++ b/latest/html/index.html @@ -0,0 +1,1429 @@ + + + + + + + Guidelines for Teaching C++ + + + + + + + + + + + + + + + + + + + + + Guidelines for Teaching C++ + + + + + + + +
+ +
+ +
+ +
+ +
+

Guidelines for Teaching C++

+ +

Version 0.0.1

+ +

SG20 (ISO C++ Study Group on Education)

+
+
+ +
+
+
+ +
+
+ +
+

1 Obtaining This Document: The Most Recent Version and Alternate Formats

+

The most recent version of this document is available as an online HTML document at: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/latest/.

+

The version of the document that you are currently reading is available in the following formats:

+
    +
  1. online (HTML) format as a single large HTML document: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.1/html [later to be https://cplusplus.github.io/SG20/0.0.1/html?]

  2. +
  3. EPUB format: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.1/guidelines.epub [later to be https:/cplusplus.github.io/SG20/0.0.1/guidelines.epub?]

  4. +
  5. online (HTML) format, split across multiple HTML documents: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.1/html_split/ [later to be https://cplusplus.github.io/SG20/0.0.1/html_split/?] [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

  6. +
+

Older versions of this document are also available. In general version ver is available at https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/ver. For example, version v0.1.0 (assuming that this version exists) would be available at [later to be https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/v0.1.0?].

+

2 Disclaimer

+

This document is intended as a proof of concept to solicit feedback from others. This document is incomplete. This document likely has at least a few errors.

+

3 Context and Aim of This Guide

+

This document is intended to serve as a resource for instructors to assist in the preparation of courses on C++ in a variety of settings, including university, college, and industry environments. The main objectives of this document are as follows:

+
    +
  • to provide guidelines for content to be covered by courses of various difficulty levels on C++ (e.g., topics and learning outcomes)
  • +
  • to note some common misunderstandings and problematic points that may be encountered when teaching particular topics
  • +
  • to suggest resources useful for teaching C++
  • +
  • to present examples of curriculum for specific courses
  • +
+

This document does not itself provide a curriculum for a single specific course, but is rather a set of guidelines that can be used to prepare curricula for a wide variety of courses that differ in focus and level of sophistication. (This said, however, some links to other documents with examples of curricula for specific courses may be included herein.) This document only intends to target the teaching of the most recently ratified version of the C++ standard. (This said, however, since older versions of this document are also available, these older versions may be of some use to those who need guidance in older versions of the standard, at least versions that do not predate C++20.)

+

4 Use of This Document

+

[NOTE: This document follows the same license model as the C++ Core Guidelines. The LICENSE document is taken verbatim from the C++ Core Guidelines.] This document is made available under a MIT-style license. In simple terms, this license permits copying, use, modification, and creation of derivative works. A copy of the license is included in the section LICENSE.

+

5 Contributing to This Document

+

Contributions to this document are welcome. If you would like to help with this project as a contributor, please read the section How to Contribute.

+

6 Organization of This Document

+

The various concepts (i.e., ideas) to potentially be covered are partitioned into modules. A module is very broad in scope and consists of numerous topics. [Note: Can I suggest that we use the term “area” or “unit” instead of “module”? I think that these other choices are better and also avoid any potential confusion over what is meant by “module” (i.e., C++ term versus plain English term).]

+

For each module, topics related to the module are identified. Then, for each topic, learning outcomes are specified. In order to address a wide variety of courses on C++, each topic is addressed at three proficiency levels. These proficiency levels allow each topic to be covered at more than one level of detail. This allows target audiences with different background and learning objectives to be accommodated. The three proficiency levels are as follows:

+
    +
  • foundational. This level gives the learner the idea that a facility exists, what benefits it offers, and the basic ways of using it. [Note: Isn’t this just “novice”/“beginner”?]

  • +
  • main. This level shows mainstream uses and techniques. For abstraction and organizational mechanisms it also demonstrates how to build them. This level should also give the learner a basic (but not detailed) understanding of how a facility might be implemented so that the learner can have a first-order understanding of any costs involved. [Note: The term “main” is not very descriptive/helpful. Could I suggest using “intermediate”?]

  • +
  • advanced. This level gives information suitable for an expert. For most topics there is an expert level of knowledge that most programmers rarely need and techniques that require detailed understanding of language rules or library implementation.

  • +
+

The remainder of this document is organized as follows. The various topics are listed grouped by module. In cases where a topic might be classified into more than one module, the topic is listed under the module of most direct relevance. This is done in order to avoid duplication of content. (In the case that a topic is equally relevant to multiple modules, the decision of which to select is made by a proverbial coin toss.) The order in which modules and topics are presented is not meant to imply any order of coverage in a course. The order in which items are listed is essentially arbitrary.

+

7 Summary of Modules and Topics

+

In the sections that follow, the various modules and topics are presented. There is one section per module. For each module, a table listing the various topics in that module is provided. The ID for a topic is linked to the detailed coverage of that topic that comes later in the document. If a topic has any learning outcomes at a given proficiency level, this is indicated by a checkmark (“✔️”). If a topic has no learning outcomes (simply because there are not any, not because the information is missing), this is indicated by an em dash (“—”). In the case that the information for a topic is completely missing, a question mark (“?”) symbol is used.

+

[NOTE: These topics are taken mostly from the SG20 GitHub repository. They are not intended to be complete in any sense. In fact, by gathering together all topics in one place where they are easily viewed, it is hoped that missing and unbalanced items will be more obvious.]

+

7.1 Compilation Model

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Translation Units???
[?]Headers???
[?]Modules???
[?]Name Mangling???
[?]Phases of Translation???
[?]Separate Compilation???
[?]Linkage???
+

7.2 Preprocessor

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Preprocessor Metaprogramming???
[?]Inclusion???
[?]Macros???
+

7.3 Basics Types, Objects, Values, Expressions, Statements, and Control-Flow Constructs

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Constant Objects???
[?]Declarations and Definitions???
[?]Selection Constructs (e.g., if, ternary)???
[?]Looping Constructs (e.g., for, while, etc.)???
+

7.4 Functions

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Calling Functions???
[?]Parameter Passing (e.g., Passing By Value and Reference)???
[func-args]Default Arguments✔️
[?]Returning Multiple Values???
[?]Overloading???
[udl]User-Defined Literals✔️✔️
+

7.5 User-Defined Types (Classes)

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Special Member Functions???
[?]Types???
[?]Conversions???
[?]Constructors and Destructors???
[?]Move/Copy Constructors and Assignment Operators???
[?]Member Functions???
[?]Sum Types???
[?]User-Defined Literals???
[?]Special Member Functions???
[?]Guidelines for Special Member Functions (e.g., Rule of Five, Rule of Zero)???
[copy]Copy Semantics✔️✔️
[?]Moving and Copying???
[?]Lambdas???
+

7.6 Inheritance and Class Hierarchies

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Virtual Functions???
[?]Run-Time Type Information???
+

7.7 Compile-Time Computation

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Constant Expressions and Constant Evaluation???
[static-assert]static_assert✔️✔️
+

7.8 Generic Programming (Templates)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Concepts???
[?]SFINAE???
[?]Template Metaprogramming???
[?]Function Templates???
[?]Requires Clauses???
[req-expr]Requires Expressions✔️✔️
+

7.9 Error Handling

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Classes of Errors???
[?]errno???
[?]Error Codes???
[?]Exception Handling???
+

7.10 Standard Library

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Input/Output (I/O)???
[?]Containers, Iterators, and Algorithms???
+

7.11 External (i.e., Non Standard) Libraries

+ + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Graphical User Interfaces???
+

7.12 Building

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Software Build Tools???
[?]Strategies for Handling Build Problems???
+

7.13 Testing and Debugging

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Source-Level Debuggers???
[?]Code Sanitizers???
[?]Test Frameworks???
[?]Debugging Strategies???
+

7.14 Tooling

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Compiler Toolchains???
[?]IDEs???
+

7.15 Software Design

+ + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Design by Contract???
+

8 Detailed Information for Modules and Topics

+

8.1 C++ object model: copy semantics

+

Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

+

8.1.1 Overview

+

Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

+ ++++ + + + + + + + + + + + + + + + + + + + + +
LevelObjectives
Foundationalunderstanding how and when are copies made
Mainimplementing user-defined copy operations
Advancedspecial cases: copy elision
+

8.1.2 Motivation

+

Why is this important? Why do we want to learn/teach this topic?

+

Copy semantics allows the user to define how objects of a class get replicated and interact on a value level.

+

8.1.3 Topic introduction

+

Very brief introduction to the topic.

+

Explains when and how objects are copied.

+

8.1.4 Foundational: How and when are copies made

+

8.1.4.1 Background/Required Knowledge

+

A student is able to: * explain what a C++ type is? [C++ object model: types] * explain what an object is? [C++ object model: objects], [C++ object model: constant objects] * define and understand class invariants?

+

It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain special member functions [C++ object model: special member functions]

+

8.1.4.2 Student outcomes

+

A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

+

A student should be able to:

+
    +
  1. explain what copy semantics accomplish
  2. +
+
    +
  • establishing “equivalent” object state in another object
  • +
+
    +
  1. explain difference between copying a reference and copying a value*
  2. +
  3. explain where copies are made
  4. +
+

* In other languages these differences are sometimes referred to as shallow and deep copy.

+

8.1.4.3 Caveats

+

This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

+
    +
  • Compiler-provided copy operations may result in ownership problems (e.g., char*). These ownership problems can generally be solved by using types whose copy operations have the appropriate semantics, e.g., std::string instead of char* to hold string values.
  • +
+

8.1.4.4 Points to cover

+

This section lists important details for each point.

+
    +
  • Principle of copying +
      +
    • Copying of types, which follow the rule of zero
    • +
    • Copying of types, with user defined copy operations
    • +
    • Copying an object does not change the original
    • +
  • +
  • Practical applications +
      +
    • std::unique_ptr (has no copy)
    • +
    • Strings (copies the value)
    • +
  • +
+

8.1.5 Main: Implementing user-defined copy operations

+

8.1.5.1 Background/Required Knowledge

+

A student is able to: * identify special member functions [C++ object model: special member functions]

+

It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain the rule of zero [C++ object model: rule-of-zero] * explain the rule of five [C++ object model: rule-of-five]

+

8.1.5.2 Student outcomes

+

A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

+

A student should be able to: * explain when they have to implement the copy operations for their own type * Copy constructor * Copy assignment operator * implement copy operations for their own types * Optional: explain when copying with basic and strong exception guarantees is useful

+

8.1.5.3 Caveats

+

This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

+
    +
  • Intricacies when implementing copy operations: +
      +
    • Examples of how not to write copy operations (e.g., C++03 std::auto_ptr)
    • +
  • +
+

8.1.5.4 Points to cover

+

This section lists important details for each point.

+
    +
  • Copy constructors and copy assignment operators +
      +
    • How compiler generates default copy operations
    • +
    • =default, =delete (No copy)
    • +
    • How-to write your own copy operations
    • +
    • Rule-of-five
    • +
    • Copy assignment operators can be ref-qualified to avoid assigning into temporary objects.
    • +
  • +
+

8.1.6 Advanced

+

These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

+

When can copies be elided and when does the standard guarantee copy elision. References: * Abseil tip of the Week #166 * cppreference - Copy elision

+

8.2 Functions: user-defined literals

+

Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

+

8.2.1 Overview

+

Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

+ ++++ + + + + + + + + + + + + + + + + + + + + +
LevelObjectives
Foundationalusing and understanding UDLs
Mainimplementing your own UDLs
AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
+

8.2.2 Motivation

+

Why is this important? Why do we want to learn/teach this topic?

+
    +
  • Allows clearer expression of intent in C++.
  • +
  • std::string: "Hello, world!"s
  • +
  • std::chrono: 3h + 10min + 5s
  • +
+

8.2.3 Topic introduction

+

Very brief introduction to the topic.

+
    +
  • Explain the existence of user defined literals. Example: 12min + 17s is terse, expressive and type safe.
  • +
+

8.2.4 Foundational: Using UDLs

+

8.2.4.1 Background/Required Knowledge

+

A student: * knows how to form numeric literals, e.g., 1.5f means a float of value 1.5. * is familiar with the major C++ types: * bool (Boolean type) * int (Integer type) * double (Floating-point type) * std::string (Text type) * std::vector (Collection type) * knows that namespaces exist, and namespace std. * knows what using-declarations and using-directives are. [C++ object model: declarations]

+

8.2.4.2 Student outcomes

+

A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

+

A student should be able to:

+
    +
  1. use using namespace std::string_literals[1].
  2. +
  3. recognise UDLs in code that they are reading.
  4. +
  5. figure out which UDL definitions for a used type exist.
  6. +
  7. identify parts of the standard library that make use of UDLs.
  8. +
  9. prevent the dangers of temporaries created with "blah"s as well as with std::string{"blah"}.
  10. +
  11. effectively selects the right set of namespaces in using-directives from the sub-namespaces std::literals.
  12. +
+

[1]: explain that it’s okay to use a using-directive to “activate” UDLs.

+

8.2.4.3 Caveats

+

This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

+
    +
  • A student gets confused by the similarities and differences between built-in suffixes and UDLs and between UDLs from different namespaces.
  • +
  • A student “activates” two suffixes with the same signature from different namespaces.
  • +
+

8.2.4.4 Points to cover

+

This section lists important details for each point.

+

8.2.5 Main: implementing UDLs

+

8.2.5.1 Background/Required Knowledge

+
    +
  • All of the above.
  • +
+

8.2.5.2 Student outcomes

+

A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

+

A student should be able to:

+
    +
  1. write a UDL operator of their own.
  2. +
  3. separate unrelated UDLs into distinct namespaces.
  4. +
+

8.2.5.3 Caveats

+

This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

+

No caveats at present. #### Points to cover

+

This section lists important details for each point.

+

No caveats at present. ### Advanced {#udl-advanced}

+

These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

+

8.3 Functions: default argument

+

Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

+

8.3.1 Overview

+

Functions in C++ may be overloaded with different numbers and types of parameters. It may be of value to specify default arguments for some number of parameters, to allow a caller to avoid specifying arguments that rarely change, or to enable expanding the set of parameters while maintaining backward compatibility with existing callers.

+ ++++ + + + + + + + + + + + + + + + + + + + + +
LevelObjective
FoundationalDefine and use functions with default arguments
Main
Advancedrefinement of default arguments through multiple declarations
+

8.3.2 Motivation

+

Default arguments allow the omission of arguments with obvious or common values. Also may be utilized to extend an existing function signature without forcing changes to existing calling code.

+

8.3.3 Topic introduction

+

Explain how default arguments work and how to define them.

+

8.3.4 Foundational: Using and defining functions with default arguments

+

8.3.4.1 Background/Required Knowledge

+

A student is able to:

+ +

8.3.4.2 Student outcomes

+

A student should be able to:

+
    +
  1. Call to a function with a default argument with or without that argument specified
  2. +
  3. Declare a function with a default argument, and omit the default in the definition’s signature
  4. +
  5. Explain when the lifetime of a default argument begins and ends
  6. +
+

8.3.4.3 Caveats

+
    +
  • When no forward-declaration exists, the definition serves as the declaration
  • +
  • When multiple declarations exist, only one may specify the default for any particular parameter, but multiple declarations may specify the defaults for different parameters.
  • +
  • Additional default values may be specified for other parameters in repeat declarations
  • +
  • Calling an overloaded function with fewer arguments may be ambiguous with regard to an overload with default arguments
  • +
+

8.3.4.4 Points to cover

+
    +
  • Default value may only be specified once for each parameter among all declarations
  • +
  • Default values must start from the rightmost parameter and continue leftward without gaps
  • +
  • Considerations of when to use default arguments vs overload set
  • +
+

8.3.5 Main: implementing *

+

8.3.5.1 Background/required knowledge

+
    +
  • All of the above.
  • +
+

8.3.5.2 Student outcomes

+

A student should be able to:

+

8.3.5.3 Caveats

+

8.3.5.4 Points to cover

+

8.3.6 Advanced

+

Subsequent redeclarations of the same function may add default argument values, which are then usable by callers. Though a single parameter cannot be given a default argument twice in the same translation unit, it is legal, though ill-advised, to give the same function different default arguments in different translation units.

+

8.4 Module name: Requires Expressions

+

Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

+

8.4.1 Overview

+ ++++ + + + + + + + + + + + + + + + + + + + + +
LevelObjectives
FoundationalDefine and use requires-expressions to check satisfaction of expressions by given parameters
MainDefine and use requires-expressions to check properties of expressions
Advanced
+

8.4.2 Motivation

+

Requires-expressions allow a developer to perform compile-time evaluation on the validity of other expressions. These are fundamental to the ability to write concepts. [Compile-time programming: concepts]

+

8.5 Topic introduction

+

Requires-expressions are compile-time predicates which evaluate to true when their specified set of expressions are all valid for a given set of inputs.

+

8.5.1 Foundational: Writing requires-expressions

+

8.5.1.1 Background/Required Knowledge

+

A student is able to:

+ +

It is helpful if:

+
    +
  • The student is aware that attempting to specialize the template with types or values which do not match otherwise unstated assumptions will cause errors within the template.
  • +
+

8.5.1.2 Student outcomes

+

A student should be able to:

+
    +
  1. Write a simple-requirement to assert the validity of an expression
  2. +
  3. Write a type-requirement to check the existence of a type by its identifier
  4. +
  5. Write a compound-requirement to test the resulting type of an expression
  6. +
  7. Write a nested-requirement to test the constexpr value of an operation, as opposed to just the syntactic validity
  8. +
  9. Use a requires-expression within a concept, requires-clause, or if constexpr condition
  10. +
+

8.5.1.3 Caveats

+

To require that expressions, which evaluate to a boolean value like sizeof(t) == 4, evaluate to true a nested-requirement is needed (e.g., requires sizeof(t) == 4;). Omitting the requires results in a simple-requirement, which is satisfied based purely on syntactic validity, not on the result of the operation.

+

8.5.1.4 Points to cover

+
    +
  • All requires-expression requirements terminate with a semicolon.
  • +
  • simple-requirements are used to check that an expression is well-formed.
  • +
  • nested-requirements are introduced with requires and primarily used to check the result of an expression computable by the compiler, including concepts or other requires-expressions.
  • +
  • type-requirements are introduced with typename and used to verify the existence of a type with a particular identifier.
  • +
  • compound-requirements are enclosed in braces and can be used to check the resulting type of an expression.
  • +
  • Checks are performed by the compiler, not at run time.
  • +
  • If covering usage of requires-expression with requires-clause, [Compile-time programming: requires clause] demonstrate requires requires and show how to ever avoid writing it by using a concept. [Compile-time programming: concepts]
  • +
+

8.5.2 Main: Advanced requirements

+

8.5.2.1 Background/required knowledge

+
    +
  • All of the above.
  • +
  • Knowledge of noexcept
  • +
+

A student is able to:

+ +

8.5.2.2 Student outcomes

+

A student should be able to:

+
    +
  1. Write compound-requirements which test the noexceptness of an expression.
  2. +
  3. Use a concept as the target of a compound-requirement.
  4. +
+

8.5.2.3 Caveats

+

8.5.2.4 Points to cover

+
    +
  • Compound-requirements allow the optional ability to test whether an expression is marked as noexcept, by using a trailing noexcept keyword.
  • +
+ +
    +
  • If the return-type-requirement of a compound-requirement is a concept, that concept is given the resulting type as the first parameter, followed by the specified parameters in the compound-requirement. { ++x } -> C<int> would substitute C<decltype((++x)), int> and check that concept C is satisfied for those parameters.
  • +
+

8.5.3 Advanced

+

8.6 Meta-error handling: static_assert

+

Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

+

8.6.1 Overview

+

Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

+ ++++ + + + + + + + + + + + + + + + + + + + + +
LevelObjectives
FoundationalCalling static_assert with a constant expression
MainUsing static_assert to detect contract violations and improve error messages
Advanced
+

8.6.2 Motivation

+

Why is this important? Why do we want to learn/teach this topic?

+

static_assert allows the developer to enforce that conditions which can be checked during compilation will force build errors when violated. Additionally, they are the best mechanism by which a developer can pass useful information to other developers regarding what violation occurred or what must be done, instead.

+

8.6.3 Topic introduction

+

Very brief introduction to the topic.

+

static_assert is a compile-time evaluated function that asserts the truth of a supplied predicate, issuing an optional user-supplied error message if the predicate is false.

+

8.6.4 Foundational: Calling static_assert with a constant expression

+

8.6.4.1 Background/Required Knowledge

+

A student:

+
    +
  • Should be able to explain the difference between code evaluated at compile-time and run-time
  • +
  • Should be able to cite some examples of compile-time known information, such as sizeof(T)
  • +
+

8.6.4.2 Student outcomes

+

A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

+

A student should be able to:

+
    +
  1. Assert the expected size of a structure using static_assert
  2. +
+

8.6.4.3 Caveats

+

This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

+

8.6.4.4 Points to cover

+

This section lists important details for each point.

+
    +
  • X
  • +
  • In addition to what is wrong, a good error message will inform the user of how to correct it
  • +
+

8.6.5 Main: Contracts and static_assert

+

8.6.5.1 Background/Required Knowledge

+
    +
  • All of the above.
  • +
  • General understanding of compile-time requirements
  • +
+

8.6.5.2 Student outcomes

+

A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

+

A student should be able to:

+
    +
  1. Utilize static_assert to verify preconditions of a meta-function
  2. +
  3. Utilize static_assert to verify the results of meta-functions for known values
  4. +
+

8.6.5.3 Caveats

+

This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

+

8.6.5.4 Points to cover

+

This section lists important details for each point.

+
    +
  • When writing a meta-function, use static_assert to test the results
  • +
  • Write static_assert calls at the scope of the code they are guarding
  • +
+ +

8.6.6 Advanced

+

These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

+

9 Examples of Course Curricula

+

[NOTE: Anyone have any suggestions of items to add here?] The following are examples of curricula for course on C++: …

+

10 License

+

[NOTE: This license is copied verbatim from the C++ Core Guidelines.]

+
Copyright (c) Standard C++ Foundation and its contributors
+
+Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
+perpetual license to copy, use, modify, and create derivative works from this
+project for your personal or internal business use only. The above copyright
+notice and this permission notice shall be included in all copies or
+substantial portions of the project. This license does not grant permission
+to use the trade names, trademarks, service marks, or product names of the
+licensor, except as required for reasonable and customary use in describing
+the origin of the project.
+
+Standard C++ Foundation reserves the right to accept contributions to the
+project at its discretion.
+
+By contributing material to this project, you grant Standard C++ Foundation,
+and those who receive the material directly or indirectly from Standard C++
+Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
+transferrable license to reproduce, prepare derivative works of, publicly
+display, publicly perform, and distribute your contributed material and such
+derivative works, and to sublicense any or all of the foregoing rights to third
+parties for commercial or non-commercial use.  You also grant Standard C++
+Foundation, and those who receive the material directly or indirectly from
+Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
+irrevocable license under your patent claims that directly read on your
+contributed material to make, have made, use, offer to sell, sell and import
+or otherwise dispose of the material. You warrant that your material is your
+original work, or that you have the right to grant the above licenses.
+
+THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
+PROJECT.
+
+If you believe that anything in the project infringes your copyright, please
+contact us at admin@isocpp.org with your contact information and a detailed
+description of your intellectual property, including a specific URL where you
+believe your intellectual property is being infringed.
+
+

11 Contributors

+
Christopher Di Bella
+Florian Sattler
+Michael Adams
+rwdougla
+

12 How To Contribute

+

Before attempting to contribute any content for consideration for inclusion in this document, please read the information below and and the referenced documents as appropriate.

+

All contributions to this project must be made in accordance with the license in section License. This teaching-guidelines document only offers guidance on teaching C++ as it is specified in the current version of the C++ standard. So, content should be presented relative to the most-recently ratified version of the standard. A detailed explanation of how to present the material for a topic is given in:

+
    +
  • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.
  • +
+

Any potential contributors should ensure that they read this document. The following document may also be helpful in providing some general background on the modular approach to teaching followed herein:

+ +

In order to prepare content, it is important to understand what learning outcomes are, and how to prepare good ones. Some information on learning outcomes can be found in the References section. The following document offers a concise introduction to learning outcomes:

+ +

13 Glossary

+

Some possible terms to include in the glossary:

+
    +
  • learning objective
  • +
  • learning outcome
  • +
+

14 References

+

14.1 References on Learning Outcomes

+ + +
    +
  • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — Standing Document for SG20: Guidelines for Teaching C++ to Beginners. https://wg21.link/p1389.

  • +
  • Christopher Di Bella. P1725R0 — Modular Topic Design. https://wg21.link/p1725.

  • +
  • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.

  • +
  • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study Group: C++ Education. https://wg21.link/p1231.

  • +
  • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 — Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0.

  • +
+
+
+ +
+ + diff --git a/latest/html_split/Advanced.html b/latest/html_split/Advanced.html new file mode 100644 index 0000000..c4d659a --- /dev/null +++ b/latest/html_split/Advanced.html @@ -0,0 +1,60 @@ + + + + + +Advanced (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

8.1.6 Advanced

+

These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

+

When can copies be elided and when does the standard guarantee copy +elision. References: * Abseil tip of +the Week #166 * +cppreference +- Copy elision +

+ + + + + diff --git a/latest/html_split/Background_002fRequired-Knowledge.html b/latest/html_split/Background_002fRequired-Knowledge.html new file mode 100644 index 0000000..d3ee185 --- /dev/null +++ b/latest/html_split/Background_002fRequired-Knowledge.html @@ -0,0 +1,65 @@ + + + + + +Background/Required Knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

8.1.4.1 Background/Required Knowledge

+

A student is able to: * explain what a C++ type is? +[C++ object model: types] +* explain what an object is? +[C++ object +model: objects], +[C++ object model: +constant objects] * define and understand class invariants? +

+

It helps when a student is able to: * use move semantics +[C++ object model: move +semantics] * explain special member functions +[C++ object model: +special member functions] +

+ + + + + diff --git a/latest/html_split/Background_002frequired-knowledge.html b/latest/html_split/Background_002frequired-knowledge.html new file mode 100644 index 0000000..79fd94d --- /dev/null +++ b/latest/html_split/Background_002frequired-knowledge.html @@ -0,0 +1,54 @@ + + + + + +Background/required knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

8.3.5.1 Background/required knowledge

+
    +
  • All of the above. +
+ + + + + + diff --git a/latest/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html b/latest/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html new file mode 100644 index 0000000..3e850b1 --- /dev/null +++ b/latest/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html @@ -0,0 +1,60 @@ + + + + + +Basics Types Objects Values Expressions Statements and Control-Flow Constructs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.3 Basics Types, Objects, Values, Expressions, Statements, and

+

Control-Flow Constructs +

+ + + + + +
IDUnitFoundationalMainAdvanced
[‘?’]Constant Objects???
[‘?’]Declarations and Definitions???
[‘?’]Selection Constructs (e.g., if, ternary)???
[‘?’]Looping Constructs (e.g., for, while, etc.)???
+ + + + + + diff --git a/latest/html_split/Building.html b/latest/html_split/Building.html new file mode 100644 index 0000000..e628fd0 --- /dev/null +++ b/latest/html_split/Building.html @@ -0,0 +1,57 @@ + + + + + +Building (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.12 Building

+ + + + +
IDUnitFoundationalMainAdvanced
[‘?’]Software Build Tools???
[‘?’]Strategies for Handling Build Problems???
+ + + + + + diff --git a/latest/html_split/C_002b_002b-object-model-copy-semantics.html b/latest/html_split/C_002b_002b-object-model-copy-semantics.html new file mode 100644 index 0000000..6d7350c --- /dev/null +++ b/latest/html_split/C_002b_002b-object-model-copy-semantics.html @@ -0,0 +1,69 @@ + + + + + +C++ object model copy semantics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

8.1 C++ object model: copy semantics

+

Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

+ + + + + + + + + + + + + + diff --git a/latest/html_split/Caveats.html b/latest/html_split/Caveats.html new file mode 100644 index 0000000..c5303c9 --- /dev/null +++ b/latest/html_split/Caveats.html @@ -0,0 +1,62 @@ + + + + + +Caveats (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

8.1.4.3 Caveats

+

This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

+
    +
  • Compiler-provided copy operations may result in ownership problems +(e.g., char*). These ownership problems can generally be solved +by using types whose copy operations have the appropriate semantics, +e.g., std::string instead of char* to hold string values. +
+ + + + + + diff --git a/latest/html_split/Compilation-Model.html b/latest/html_split/Compilation-Model.html new file mode 100644 index 0000000..de11703 --- /dev/null +++ b/latest/html_split/Compilation-Model.html @@ -0,0 +1,62 @@ + + + + + +Compilation Model (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.1 Compilation Model

+ + + + + + + + + +
IDUnitFoundationalMainAdvanced
[‘?’]Translation Units???
[‘?’]Headers???
[‘?’]Modules???
[‘?’]Name Mangling???
[‘?’]Phases of Translation???
[‘?’]Separate Compilation???
[‘?’]Linkage???
+ + + + + + diff --git a/latest/html_split/Compile_002dTime-Computation.html b/latest/html_split/Compile_002dTime-Computation.html new file mode 100644 index 0000000..b9aaa0e --- /dev/null +++ b/latest/html_split/Compile_002dTime-Computation.html @@ -0,0 +1,57 @@ + + + + + +Compile-Time Computation (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.7 Compile-Time Computation

+ + + + +
IDUnitFoundationalMainAdvanced
[‘?’]Constant Expressions and Constant Evaluation???
[‘static-assert’]static_assert‘✔️’‘✔️’
+ + + + + + diff --git a/latest/html_split/Context-and-Aim-of-This-Guide.html b/latest/html_split/Context-and-Aim-of-This-Guide.html new file mode 100644 index 0000000..60efa61 --- /dev/null +++ b/latest/html_split/Context-and-Aim-of-This-Guide.html @@ -0,0 +1,76 @@ + + + + + +Context and Aim of This Guide (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

+Next: , Previous: , Up: Top   [Contents]

+
+
+

3 Context and Aim of This Guide

+

This document is intended to serve as a resource for instructors to +assist in the preparation of courses on C++ in a variety of settings, +including university, college, and industry environments. The main +objectives of this document are as follows: +

+
    +
  • to provide guidelines for content to be covered by courses of various +difficulty levels on C++ (e.g., topics and learning outcomes) +
  • to note some common misunderstandings and problematic points that may be +encountered when teaching particular topics +
  • to suggest resources useful for teaching C++ +
  • to present examples of curriculum for specific courses +
+ +

This document does not itself provide a curriculum for a single specific +course, but is rather a set of guidelines that can be used to prepare +curricula for a wide variety of courses that differ in focus and level +of sophistication. (This said, however, some links to other documents +with examples of curricula for specific courses may be included herein.) +This document only intends to target the teaching of the most recently +ratified version of the C++ standard. (This said, however, since older +versions of this document are also available, these older versions may +be of some use to those who need guidance in older versions of the +standard, at least versions that do not predate C++20.) +

+ + + + + diff --git a/latest/html_split/Contributing-to-This-Document.html b/latest/html_split/Contributing-to-This-Document.html new file mode 100644 index 0000000..eac6c28 --- /dev/null +++ b/latest/html_split/Contributing-to-This-Document.html @@ -0,0 +1,55 @@ + + + + + +Contributing to This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

5 Contributing to This Document

+

Contributions to this document are welcome. If you would like to help +with this project as a contributor, please read the section +‘How to Contribute’. +

+ + + + + diff --git a/latest/html_split/Contributors.html b/latest/html_split/Contributors.html new file mode 100644 index 0000000..53ba0ef --- /dev/null +++ b/latest/html_split/Contributors.html @@ -0,0 +1,57 @@ + + + + + +Contributors (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

+Next: , Previous: , Up: Top   [Contents]

+
+
+

11 Contributors

+ +
Christopher Di Bella
+Florian Sattler
+Michael Adams
+rwdougla
+
+ + + + + diff --git a/latest/html_split/Detailed-Information-for-Modules-and-Topics.html b/latest/html_split/Detailed-Information-for-Modules-and-Topics.html new file mode 100644 index 0000000..c8c9fcd --- /dev/null +++ b/latest/html_split/Detailed-Information-for-Modules-and-Topics.html @@ -0,0 +1,67 @@ + + + + + +Detailed Information for Modules and Topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

8 Detailed Information for Modules and Topics

+ + + + + + + + + + + + + + + diff --git a/latest/html_split/Disclaimer.html b/latest/html_split/Disclaimer.html new file mode 100644 index 0000000..a911983 --- /dev/null +++ b/latest/html_split/Disclaimer.html @@ -0,0 +1,55 @@ + + + + + +Disclaimer (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

2 Disclaimer

+

This document is intended as a proof of concept to solicit feedback from +others. This document is incomplete. This document likely has at least a +few errors. +

+ + + + + diff --git a/latest/html_split/Error-Handling.html b/latest/html_split/Error-Handling.html new file mode 100644 index 0000000..1f8d3e0 --- /dev/null +++ b/latest/html_split/Error-Handling.html @@ -0,0 +1,59 @@ + + + + + +Error Handling (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.9 Error Handling

+ + + + + + +
IDUnitFoundationalMainAdvanced
[‘?’]Classes of Errors???
[‘?’]errno???
[‘?’]Error Codes???
[‘?’]Exception Handling???
+ + + + + + diff --git a/latest/html_split/Examples-of-Course-Curricula.html b/latest/html_split/Examples-of-Course-Curricula.html new file mode 100644 index 0000000..64eb64b --- /dev/null +++ b/latest/html_split/Examples-of-Course-Curricula.html @@ -0,0 +1,53 @@ + + + + + +Examples of Course Curricula (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

9 Examples of Course Curricula

+

[NOTE: Anyone have any suggestions of items to add here?] The +following are examples of curricula for course on C++: … +

+ + + + + diff --git a/latest/html_split/External-ie-Non-Standard-Libraries.html b/latest/html_split/External-ie-Non-Standard-Libraries.html new file mode 100644 index 0000000..2bf081e --- /dev/null +++ b/latest/html_split/External-ie-Non-Standard-Libraries.html @@ -0,0 +1,56 @@ + + + + + +External ie Non Standard Libraries (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.11 External (i.e., Non Standard) Libraries

+ + + +
IDUnitFoundationalMainAdvanced
[‘?’]Graphical User Interfaces???
+ + + + + + diff --git a/latest/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html b/latest/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html new file mode 100644 index 0000000..ce2c1b0 --- /dev/null +++ b/latest/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html @@ -0,0 +1,62 @@ + + + + + +Foundational Calling static_assert with a constant expression (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
+

8.6.4 Foundational: Calling static_assert with a constant

+

expression +

+ + + + + + + + + + + + diff --git a/latest/html_split/Foundational-How-and-when-are-copies-made.html b/latest/html_split/Foundational-How-and-when-are-copies-made.html new file mode 100644 index 0000000..4cec33b --- /dev/null +++ b/latest/html_split/Foundational-How-and-when-are-copies-made.html @@ -0,0 +1,63 @@ + + + + + +Foundational How and when are copies made (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

8.1.4 Foundational: How and when are copies made

+ + + + + + + + + + + + + diff --git a/latest/html_split/Foundational-Using-UDLs.html b/latest/html_split/Foundational-Using-UDLs.html new file mode 100644 index 0000000..adb461e --- /dev/null +++ b/latest/html_split/Foundational-Using-UDLs.html @@ -0,0 +1,61 @@ + + + + + +Foundational Using UDLs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
+

8.2.4 Foundational: Using UDLs

+ + + + + + + + + + + + + diff --git a/latest/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html b/latest/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html new file mode 100644 index 0000000..e37a992 --- /dev/null +++ b/latest/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html @@ -0,0 +1,62 @@ + + + + + +Foundational Using and defining functions with default arguments (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
+

8.3.4 Foundational: Using and defining functions with default

+

arguments +

+ + + + + + + + + + + + diff --git a/latest/html_split/Foundational-Writing-requires_002dexpressions.html b/latest/html_split/Foundational-Writing-requires_002dexpressions.html new file mode 100644 index 0000000..6846c6e --- /dev/null +++ b/latest/html_split/Foundational-Writing-requires_002dexpressions.html @@ -0,0 +1,60 @@ + + + + + +Foundational Writing requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +
+

8.5.1 Foundational: Writing requires-expressions

+ + + + + + + + + + + + + diff --git a/latest/html_split/Functions-default-argument.html b/latest/html_split/Functions-default-argument.html new file mode 100644 index 0000000..2571ca9 --- /dev/null +++ b/latest/html_split/Functions-default-argument.html @@ -0,0 +1,67 @@ + + + + + +Functions default argument (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
+

8.3 Functions: default argument

+

Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

+ + + + + + + + + + + + + + diff --git a/latest/html_split/Functions-user_002ddefined-literals.html b/latest/html_split/Functions-user_002ddefined-literals.html new file mode 100644 index 0000000..7e41de9 --- /dev/null +++ b/latest/html_split/Functions-user_002ddefined-literals.html @@ -0,0 +1,66 @@ + + + + + +Functions user-defined literals (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

8.2 Functions: user-defined literals

+

Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

+ + + + + + + + + + + + + diff --git a/latest/html_split/Functions.html b/latest/html_split/Functions.html new file mode 100644 index 0000000..82175a5 --- /dev/null +++ b/latest/html_split/Functions.html @@ -0,0 +1,61 @@ + + + + + +Functions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.4 Functions

+ + + + + + + + +
IDUnitFoundationalMainAdvanced
[‘?’]Calling Functions???
[‘?’]Parameter Passing (e.g., Passing By Value and Reference)???
[‘func-args’]Default Arguments‘✔️’
[‘?’]Returning Multiple Values???
[‘?’]Overloading???
[‘udl’]User-Defined Literals‘✔️’‘✔️’
+ + + + + + diff --git a/latest/html_split/Generic-Programming-Templates.html b/latest/html_split/Generic-Programming-Templates.html new file mode 100644 index 0000000..1a22cd7 --- /dev/null +++ b/latest/html_split/Generic-Programming-Templates.html @@ -0,0 +1,61 @@ + + + + + +Generic Programming Templates (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.8 Generic Programming (Templates)

+ + + + + + + + +
IDUnitFoundationalMainAdvanced
[‘?’]Concepts???
[‘?’]SFINAE???
[‘?’]Template Metaprogramming???
[‘?’]Function Templates???
[‘?’]Requires Clauses???
[‘req-expr’]Requires Expressions‘✔️’‘✔️’
+ + + + + + diff --git a/latest/html_split/Glossary.html b/latest/html_split/Glossary.html new file mode 100644 index 0000000..2bf24f2 --- /dev/null +++ b/latest/html_split/Glossary.html @@ -0,0 +1,58 @@ + + + + + +Glossary (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

+Next: , Previous: , Up: Top   [Contents]

+
+
+

13 Glossary

+

Some possible terms to include in the glossary: +

+
    +
  • learning objective +
  • learning outcome +
+ + + + + + diff --git a/latest/html_split/How-To-Contribute.html b/latest/html_split/How-To-Contribute.html new file mode 100644 index 0000000..f1963d5 --- /dev/null +++ b/latest/html_split/How-To-Contribute.html @@ -0,0 +1,89 @@ + + + + + +How To Contribute (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

+Next: , Previous: , Up: Top   [Contents]

+
+
+

12 How To Contribute

+

Before attempting to contribute any content for consideration for +inclusion in this document, please read the information below and and +the referenced documents as appropriate. +

+

All contributions to this project must be made in accordance with the +license in section License. This teaching-guidelines +document only offers guidance on teaching C++ as it is specified in the +current version of the C++ standard. So, content should be presented +relative to the most-recently ratified version of the standard. A +detailed explanation of how to present the material for a topic is given +in: +

+
    +
  • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to +structure a teaching topic. https://wg21.link/p2193. +
+ +

Any potential contributors should ensure that they read this document. +The following document may also be helpful in providing some general +background on the modular approach to teaching followed herein: +

+ + +

In order to prepare content, it is important to understand what learning +outcomes are, and how to prepare good ones. Some information on learning +outcomes can be found in the References section. The +following document offers a concise introduction to learning outcomes: +

+ + + + + + + diff --git a/latest/html_split/Inheritance-and-Class-Hierarchies.html b/latest/html_split/Inheritance-and-Class-Hierarchies.html new file mode 100644 index 0000000..1a394b0 --- /dev/null +++ b/latest/html_split/Inheritance-and-Class-Hierarchies.html @@ -0,0 +1,57 @@ + + + + + +Inheritance and Class Hierarchies (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.6 Inheritance and Class Hierarchies

+ + + + +
IDUnitFoundationalMainAdvanced
[‘?’]Virtual Functions???
[‘?’]Run-Time Type Information???
+ + + + + + diff --git a/latest/html_split/License.html b/latest/html_split/License.html new file mode 100644 index 0000000..38d2d8d --- /dev/null +++ b/latest/html_split/License.html @@ -0,0 +1,100 @@ + + + + + +License (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

+Next: , Previous: , Up: Top   [Contents]

+
+
+

10 License

+

[NOTE: This license is copied verbatim from the C++ Core +Guidelines.] +

+
Copyright (c) Standard C++ Foundation and its contributors
+
+Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
+perpetual license to copy, use, modify, and create derivative works from this
+project for your personal or internal business use only. The above copyright
+notice and this permission notice shall be included in all copies or
+substantial portions of the project. This license does not grant permission
+to use the trade names, trademarks, service marks, or product names of the
+licensor, except as required for reasonable and customary use in describing
+the origin of the project.
+
+Standard C++ Foundation reserves the right to accept contributions to the
+project at its discretion.
+
+By contributing material to this project, you grant Standard C++ Foundation,
+and those who receive the material directly or indirectly from Standard C++
+Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
+transferrable license to reproduce, prepare derivative works of, publicly
+display, publicly perform, and distribute your contributed material and such
+derivative works, and to sublicense any or all of the foregoing rights to third
+parties for commercial or non-commercial use.  You also grant Standard C++
+Foundation, and those who receive the material directly or indirectly from
+Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
+irrevocable license under your patent claims that directly read on your
+contributed material to make, have made, use, offer to sell, sell and import
+or otherwise dispose of the material. You warrant that your material is your
+original work, or that you have the right to grant the above licenses.
+
+THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
+PROJECT.
+
+If you believe that anything in the project infringes your copyright, please
+contact us at admin@isocpp.org with your contact information and a detailed
+description of your intellectual property, including a specific URL where you
+believe your intellectual property is being infringed.
+
+
+
+

+Next: , Previous: , Up: Top   [Contents]

+
+ + + + + diff --git a/latest/html_split/Main-Advanced-requirements.html b/latest/html_split/Main-Advanced-requirements.html new file mode 100644 index 0000000..6c4ac0e --- /dev/null +++ b/latest/html_split/Main-Advanced-requirements.html @@ -0,0 +1,60 @@ + + + + + +Main Advanced requirements (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +
+

8.5.2 Main: Advanced requirements

+ + + + + + + + + + + + + diff --git a/latest/html_split/Main-Contracts-and-static_005fassert.html b/latest/html_split/Main-Contracts-and-static_005fassert.html new file mode 100644 index 0000000..6c0ba46 --- /dev/null +++ b/latest/html_split/Main-Contracts-and-static_005fassert.html @@ -0,0 +1,61 @@ + + + + + +Main Contracts and static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
+

8.6.5 Main: Contracts and static_assert

+ + + + + + + + + + + + + diff --git a/latest/html_split/Main-Implementing-user_002ddefined-copy-operations.html b/latest/html_split/Main-Implementing-user_002ddefined-copy-operations.html new file mode 100644 index 0000000..e38dfd6 --- /dev/null +++ b/latest/html_split/Main-Implementing-user_002ddefined-copy-operations.html @@ -0,0 +1,62 @@ + + + + + +Main Implementing user-defined copy operations (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

8.1.5 Main: Implementing user-defined copy operations

+ + + + + + + + + + + + + diff --git a/latest/html_split/Main-implementing-UDLs.html b/latest/html_split/Main-implementing-UDLs.html new file mode 100644 index 0000000..1f6f381 --- /dev/null +++ b/latest/html_split/Main-implementing-UDLs.html @@ -0,0 +1,59 @@ + + + + + +Main implementing UDLs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
+

8.2.5 Main: implementing UDLs

+ + + + + + + + + + + + diff --git a/latest/html_split/Main-implementing-_002a.html b/latest/html_split/Main-implementing-_002a.html new file mode 100644 index 0000000..b661f2d --- /dev/null +++ b/latest/html_split/Main-implementing-_002a.html @@ -0,0 +1,62 @@ + + + + + +Main implementing * (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

8.3.5 Main: implementing *

+ + + + + + + + + + + + + diff --git a/latest/html_split/Meta_002derror-handling-static_005fassert.html b/latest/html_split/Meta_002derror-handling-static_005fassert.html new file mode 100644 index 0000000..f81a34e --- /dev/null +++ b/latest/html_split/Meta_002derror-handling-static_005fassert.html @@ -0,0 +1,67 @@ + + + + + +Meta-error handling static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
+

8.6 Meta-error handling: static_assert

+

Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

+ + + + + + + + + + + + + + diff --git a/latest/html_split/Module-name-Requires-Expressions.html b/latest/html_split/Module-name-Requires-Expressions.html new file mode 100644 index 0000000..8bab76c --- /dev/null +++ b/latest/html_split/Module-name-Requires-Expressions.html @@ -0,0 +1,59 @@ + + + + + +Module name Requires Expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
+

8.4 Module name: Requires Expressions

+

Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

+ + + + + + + + + + diff --git a/latest/html_split/Motivation.html b/latest/html_split/Motivation.html new file mode 100644 index 0000000..40b0ec9 --- /dev/null +++ b/latest/html_split/Motivation.html @@ -0,0 +1,57 @@ + + + + + +Motivation (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

8.1.2 Motivation

+

Why is this important? Why do we want to learn/teach this +topic? +

+

Copy semantics allows the user to define how objects of a class get +replicated and interact on a value level. +

+ + + + + diff --git a/latest/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html b/latest/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html new file mode 100644 index 0000000..0a9cb9b --- /dev/null +++ b/latest/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html @@ -0,0 +1,84 @@ + + + + + +Obtaining This Document The Most Recent Version and Alternate Formats (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

+Next: , Previous: , Up: Top   [Contents]

+
+
+

1 Obtaining This Document: The Most Recent Version and Alternate

+

Formats +The most recent version of this document is available as an online HTML +document at: +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/latest/. +

+

The version of the document that you are currently reading is available +in the following formats: +

+
    +
  1. online (HTML) format as a single large HTML document: +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.1/html +[later to be https://cplusplus.github.io/SG20/0.0.1/html?] + +
  2. EPUB format: +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.1/guidelines.epub +[later to be +https:/cplusplus.github.io/SG20/0.0.1/guidelines.epub?] + +
  3. online (HTML) format, split across multiple HTML documents: +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.1/html_split/ +[later to be https://cplusplus.github.io/SG20/0.0.1/html_split/?] +[Note: The support for this format needs more work (in order to +beautify and fix linking issues).] + +
+ +

Older versions of this document are also available. In general version +ver is available at +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/ver. +For example, version v0.1.0 (assuming that this version exists) would be +available at [later to be +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/v0.1.0?]. +

+ + + + + diff --git a/latest/html_split/Organization-of-This-Document.html b/latest/html_split/Organization-of-This-Document.html new file mode 100644 index 0000000..3e48985 --- /dev/null +++ b/latest/html_split/Organization-of-This-Document.html @@ -0,0 +1,101 @@ + + + + + +Organization of This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

6 Organization of This Document

+

The various concepts (i.e., ideas) to potentially be covered are +partitioned into modules. A module is very broad in scope and consists +of numerous topics. [Note: Can I suggest that we use the term +“area” or “unit” instead of “module”? I think that these other +choices are better and also avoid any potential confusion over what is +meant by “module” (i.e., C++ term versus plain English term).] +

+

For each module, topics related to the module are identified. Then, for +each topic, learning outcomes are specified. In order to address a wide +variety of courses on C++, each topic is addressed at three proficiency +levels. These proficiency levels allow each topic to be covered at more +than one level of detail. This allows target audiences with different +background and learning objectives to be accommodated. The three +proficiency levels are as follows: +

+
    +
  • foundational. This level gives the learner the idea that a facility +exists, what benefits it offers, and the basic ways of using it. +[Note: Isn’t this just “novice”/“beginner”?] + +
  • main. This level shows mainstream uses and techniques. For abstraction +and organizational mechanisms it also demonstrates how to build them. +This level should also give the learner a basic (but not detailed) +understanding of how a facility might be implemented so that the learner +can have a first-order understanding of any costs involved. +[Note: The term “main” is not very descriptive/helpful. Could +I suggest using “intermediate”?] + +
  • advanced. This level gives information suitable for an expert. For most +topics there is an expert level of knowledge that most programmers +rarely need and techniques that require detailed understanding of +language rules or library implementation. + +
+ +

The remainder of this document is organized as follows. The various +topics are listed grouped by module. In cases where a topic might be +classified into more than one module, the topic is listed under the +module of most direct relevance. This is done in order to avoid +duplication of content. (In the case that a topic is equally relevant to +multiple modules, the decision of which to select is made by a +proverbial coin toss.) The order in which modules and topics are +presented is not meant to imply any order of coverage in a course. The +order in which items are listed is essentially arbitrary. +

+
+ + + + + + diff --git a/latest/html_split/Overview.html b/latest/html_split/Overview.html new file mode 100644 index 0000000..be44bfa --- /dev/null +++ b/latest/html_split/Overview.html @@ -0,0 +1,61 @@ + + + + + +Overview (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

8.1.1 Overview

+

Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

+ + + + + +
LevelObjectives
Foundationalunderstanding how and when are copies made
Mainimplementing user-defined copy operations
Advancedspecial cases: copy elision
+ + + + + + diff --git a/latest/html_split/Points-to-cover.html b/latest/html_split/Points-to-cover.html new file mode 100644 index 0000000..ba4b5cc --- /dev/null +++ b/latest/html_split/Points-to-cover.html @@ -0,0 +1,69 @@ + + + + + +Points to cover (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

8.1.4.4 Points to cover

+

This section lists important details for each point. +

+
    +
  • Principle of copying +
      +
    • Copying of types, which follow the rule of zero +
    • Copying of types, with user defined copy operations +
    • Copying an object does not change the original +
    + +
  • Practical applications +
      +
    • std::unique_ptr (has no copy) +
    • Strings (copies the value) +
    + +
+ + + + + + diff --git a/latest/html_split/Preprocessor.html b/latest/html_split/Preprocessor.html new file mode 100644 index 0000000..345e396 --- /dev/null +++ b/latest/html_split/Preprocessor.html @@ -0,0 +1,58 @@ + + + + + +Preprocessor (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.2 Preprocessor

+ + + + + +
IDUnitFoundationalMainAdvanced
[‘?’]Preprocessor Metaprogramming???
[‘?’]Inclusion???
[‘?’]Macros???
+ + + + + + diff --git a/latest/html_split/References-on-Learning-Outcomes.html b/latest/html_split/References-on-Learning-Outcomes.html new file mode 100644 index 0000000..7b74cad --- /dev/null +++ b/latest/html_split/References-on-Learning-Outcomes.html @@ -0,0 +1,71 @@ + + + + + +References on Learning Outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

14.1 References on Learning Outcomes

+ + + + + + + diff --git a/latest/html_split/References.html b/latest/html_split/References.html new file mode 100644 index 0000000..f595be2 --- /dev/null +++ b/latest/html_split/References.html @@ -0,0 +1,59 @@ + + + + + +References (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

+Previous: , Up: Top   [Contents]

+
+
+

14 References

+ + + + + + + + + + + diff --git a/latest/html_split/Software-Design.html b/latest/html_split/Software-Design.html new file mode 100644 index 0000000..6b4f6c8 --- /dev/null +++ b/latest/html_split/Software-Design.html @@ -0,0 +1,56 @@ + + + + + +Software Design (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.15 Software Design

+ + + +
IDUnitFoundationalMainAdvanced
[‘?’]Design by Contract???
+ + + + + + diff --git a/latest/html_split/Standard-Library.html b/latest/html_split/Standard-Library.html new file mode 100644 index 0000000..c80c7fc --- /dev/null +++ b/latest/html_split/Standard-Library.html @@ -0,0 +1,57 @@ + + + + + +Standard Library (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.10 Standard Library

+ + + + +
IDUnitFoundationalMainAdvanced
[‘?’]Input/Output (I/O)???
[‘?’]Containers, Iterators, and Algorithms???
+ + + + + + diff --git a/latest/html_split/Student-outcomes.html b/latest/html_split/Student-outcomes.html new file mode 100644 index 0000000..c604549 --- /dev/null +++ b/latest/html_split/Student-outcomes.html @@ -0,0 +1,73 @@ + + + + + +Student outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

8.1.4.2 Student outcomes

+

A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

+

A student should be able to: +

+
    +
  1. explain what copy semantics accomplish +
+ +
    +
  • establishing “equivalent” object state in another object +
+ +
    +
  1. explain difference between copying a reference and copying a value* +
  2. explain where copies are made +
+ +

* In other languages these differences are sometimes referred to as +shallow and deep copy. +

+ + + + + diff --git a/latest/html_split/Summary-of-Modules-and-Topics.html b/latest/html_split/Summary-of-Modules-and-Topics.html new file mode 100644 index 0000000..26b69be --- /dev/null +++ b/latest/html_split/Summary-of-Modules-and-Topics.html @@ -0,0 +1,106 @@ + + + + + +Summary of Modules and Topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7 Summary of Modules and Topics

+

In the sections that follow, the various modules and topics are +presented. There is one section per module. For each module, a table +listing the various topics in that module is provided. The ID for a +topic is linked to the detailed coverage of that topic that comes later +in the document. If a topic has any learning outcomes at a given +proficiency level, this is indicated by a checkmark (“✔️”). If a topic +has no learning outcomes (simply because there are not any, not because +the information is missing), this is indicated by an em dash (“—”). +In the case that the information for a topic is completely missing, a +question mark (“?”) symbol is used. +

+

[NOTE: These topics are taken mostly from the SG20 GitHub +repository. They are not intended to be complete in any sense. In fact, +by gathering together all topics in one place where they are easily +viewed, it is hoped that missing and unbalanced items will be more +obvious.] +

+ + + + + + + + + + + + + + + + + + +
+ + + + + + diff --git a/latest/html_split/Testing-and-Debugging.html b/latest/html_split/Testing-and-Debugging.html new file mode 100644 index 0000000..da60211 --- /dev/null +++ b/latest/html_split/Testing-and-Debugging.html @@ -0,0 +1,59 @@ + + + + + +Testing and Debugging (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

+Next: , Previous: , Up: Summary of Modules and Topics   [Contents]

+
+
+

7.13 Testing and Debugging

+ + + + + + +
IDUnitFoundationalMainAdvanced
[‘?’]Source-Level Debuggers???
[‘?’]Code Sanitizers???
[‘?’]Test Frameworks???
[‘?’]Debugging Strategies???
+ + + + + + diff --git a/latest/html_split/Tooling.html b/latest/html_split/Tooling.html new file mode 100644 index 0000000..43c3b2f --- /dev/null +++ b/latest/html_split/Tooling.html @@ -0,0 +1,57 @@ + + + + + +Tooling (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.14 Tooling

+ + + + +
IDUnitFoundationalMainAdvanced
[‘?’]Compiler Toolchains???
[‘?’]IDEs???
+ + + + + + diff --git a/latest/html_split/Topic-introduction.html b/latest/html_split/Topic-introduction.html new file mode 100644 index 0000000..fff97f2 --- /dev/null +++ b/latest/html_split/Topic-introduction.html @@ -0,0 +1,55 @@ + + + + + +Topic introduction (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

8.1.3 Topic introduction

+

Very brief introduction to the topic. +

+

Explains when and how objects are copied. +

+ + + + + diff --git a/latest/html_split/Use-of-This-Document.html b/latest/html_split/Use-of-This-Document.html new file mode 100644 index 0000000..4c820d5 --- /dev/null +++ b/latest/html_split/Use-of-This-Document.html @@ -0,0 +1,58 @@ + + + + + +Use of This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

4 Use of This Document

+

[NOTE: This document follows the same license model as the C++ +Core Guidelines. The LICENSE document is taken verbatim from the C++ +Core Guidelines.] This document is made available under a MIT-style +license. In simple terms, this license permits copying, use, +modification, and creation of derivative works. A copy of the license is +included in the section LICENSE. +

+ + + + + diff --git a/latest/html_split/User_002dDefined-Types-Classes.html b/latest/html_split/User_002dDefined-Types-Classes.html new file mode 100644 index 0000000..808279a --- /dev/null +++ b/latest/html_split/User_002dDefined-Types-Classes.html @@ -0,0 +1,69 @@ + + + + + +User-Defined Types Classes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.5 User-Defined Types (Classes)

+ + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[‘?’]Special Member Functions???
[‘?’]Types???
[‘?’]Conversions???
[‘?’]Constructors and Destructors???
[‘?’]Move/Copy Constructors and Assignment Operators???
[‘?’]Member Functions???
[‘?’]Sum Types???
[‘?’]User-Defined Literals???
[‘?’]Special Member Functions???
[‘?’]Guidelines for Special Member Functions (e.g., Rule of Five, Rule +of Zero)???
[‘copy’]Copy Semantics‘✔️’‘✔️’
[‘?’]Moving and Copying???
[‘?’]Lambdas???
+ + + + + + diff --git a/latest/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html b/latest/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html new file mode 100644 index 0000000..3f9bf2c --- /dev/null +++ b/latest/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html @@ -0,0 +1,69 @@ + + + + + +Working Group Documents Related to C++ Teaching Guidelines (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

14.2 Working Group Documents Related to C++ Teaching Guidelines

+
    +
  • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — +Standing Document for SG20: Guidelines for Teaching C++ to Beginners. +https://wg21.link/p1389. + +
  • Christopher Di Bella. P1725R0 — Modular Topic Design. +https://wg21.link/p1725. + +
  • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to +structure a teaching topic. https://wg21.link/p2193. + +
  • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study +Group: C++ Education. https://wg21.link/p1231. + +
  • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 +— Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0. + +
+ + + + + + diff --git a/latest/html_split/_0023advanced.html b/latest/html_split/_0023advanced.html new file mode 100644 index 0000000..d503bfc --- /dev/null +++ b/latest/html_split/_0023advanced.html @@ -0,0 +1,40 @@ + + + + + + +#advanced (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #advanced.

+ diff --git a/latest/html_split/_0023advanced_002d1.html b/latest/html_split/_0023advanced_002d1.html new file mode 100644 index 0000000..282a7b8 --- /dev/null +++ b/latest/html_split/_0023advanced_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #advanced-1.

+ diff --git a/latest/html_split/_0023advanced_002d2.html b/latest/html_split/_0023advanced_002d2.html new file mode 100644 index 0000000..039b3ff --- /dev/null +++ b/latest/html_split/_0023advanced_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #advanced-2.

+ diff --git a/latest/html_split/_0023advanced_002d3.html b/latest/html_split/_0023advanced_002d3.html new file mode 100644 index 0000000..ebf5529 --- /dev/null +++ b/latest/html_split/_0023advanced_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #advanced-3.

+ diff --git a/latest/html_split/_0023backgroundrequired_002dknowledge.html b/latest/html_split/_0023backgroundrequired_002dknowledge.html new file mode 100644 index 0000000..9959745 --- /dev/null +++ b/latest/html_split/_0023backgroundrequired_002dknowledge.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #backgroundrequired-knowledge.

+ diff --git a/latest/html_split/_0023backgroundrequired_002dknowledge_002d1.html b/latest/html_split/_0023backgroundrequired_002dknowledge_002d1.html new file mode 100644 index 0000000..f6f6bd0 --- /dev/null +++ b/latest/html_split/_0023backgroundrequired_002dknowledge_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #backgroundrequired-knowledge-1.

+ diff --git a/latest/html_split/_0023backgroundrequired_002dknowledge_002d2.html b/latest/html_split/_0023backgroundrequired_002dknowledge_002d2.html new file mode 100644 index 0000000..b0b297d --- /dev/null +++ b/latest/html_split/_0023backgroundrequired_002dknowledge_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #backgroundrequired-knowledge-2.

+ diff --git a/latest/html_split/_0023backgroundrequired_002dknowledge_002d3.html b/latest/html_split/_0023backgroundrequired_002dknowledge_002d3.html new file mode 100644 index 0000000..ae34d91 --- /dev/null +++ b/latest/html_split/_0023backgroundrequired_002dknowledge_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #backgroundrequired-knowledge-3.

+ diff --git a/latest/html_split/_0023backgroundrequired_002dknowledge_002d4.html b/latest/html_split/_0023backgroundrequired_002dknowledge_002d4.html new file mode 100644 index 0000000..7417f62 --- /dev/null +++ b/latest/html_split/_0023backgroundrequired_002dknowledge_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #backgroundrequired-knowledge-4.

+ diff --git a/latest/html_split/_0023backgroundrequired_002dknowledge_002d5.html b/latest/html_split/_0023backgroundrequired_002dknowledge_002d5.html new file mode 100644 index 0000000..8f0570c --- /dev/null +++ b/latest/html_split/_0023backgroundrequired_002dknowledge_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #backgroundrequired-knowledge-5.

+ diff --git a/latest/html_split/_0023backgroundrequired_002dknowledge_002d6.html b/latest/html_split/_0023backgroundrequired_002dknowledge_002d6.html new file mode 100644 index 0000000..a1cdee1 --- /dev/null +++ b/latest/html_split/_0023backgroundrequired_002dknowledge_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #backgroundrequired-knowledge-6.

+ diff --git a/latest/html_split/_0023backgroundrequired_002dknowledge_002d7.html b/latest/html_split/_0023backgroundrequired_002dknowledge_002d7.html new file mode 100644 index 0000000..893a0ba --- /dev/null +++ b/latest/html_split/_0023backgroundrequired_002dknowledge_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #backgroundrequired-knowledge-7.

+ diff --git a/latest/html_split/_0023backgroundrequired_002dknowledge_002d8.html b/latest/html_split/_0023backgroundrequired_002dknowledge_002d8.html new file mode 100644 index 0000000..6080498 --- /dev/null +++ b/latest/html_split/_0023backgroundrequired_002dknowledge_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #backgroundrequired-knowledge-8.

+ diff --git a/latest/html_split/_0023backgroundrequired_002dknowledge_002d9.html b/latest/html_split/_0023backgroundrequired_002dknowledge_002d9.html new file mode 100644 index 0000000..3ea462d --- /dev/null +++ b/latest/html_split/_0023backgroundrequired_002dknowledge_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #backgroundrequired-knowledge-9.

+ diff --git a/latest/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html b/latest/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html new file mode 100644 index 0000000..925c568 --- /dev/null +++ b/latest/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html @@ -0,0 +1,40 @@ + + + + + + +#basics-types-objects-values-expressions-statements-and-control-flow-constructs (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #basics-types-objects-values-expressions-statements-and-control-flow-constructs.

+ diff --git a/latest/html_split/_0023building.html b/latest/html_split/_0023building.html new file mode 100644 index 0000000..8ffc9df --- /dev/null +++ b/latest/html_split/_0023building.html @@ -0,0 +1,40 @@ + + + + + + +#building (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #building.

+ diff --git a/latest/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html b/latest/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html new file mode 100644 index 0000000..a7e6bad --- /dev/null +++ b/latest/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html @@ -0,0 +1,40 @@ + + + + + + +#c-object-model-copy-semantics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #c-object-model-copy-semantics.

+ diff --git a/latest/html_split/_0023caveats.html b/latest/html_split/_0023caveats.html new file mode 100644 index 0000000..d4bac8b --- /dev/null +++ b/latest/html_split/_0023caveats.html @@ -0,0 +1,40 @@ + + + + + + +#caveats (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #caveats.

+ diff --git a/latest/html_split/_0023caveats_002d1.html b/latest/html_split/_0023caveats_002d1.html new file mode 100644 index 0000000..64faefd --- /dev/null +++ b/latest/html_split/_0023caveats_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #caveats-1.

+ diff --git a/latest/html_split/_0023caveats_002d2.html b/latest/html_split/_0023caveats_002d2.html new file mode 100644 index 0000000..6c66559 --- /dev/null +++ b/latest/html_split/_0023caveats_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #caveats-2.

+ diff --git a/latest/html_split/_0023caveats_002d3.html b/latest/html_split/_0023caveats_002d3.html new file mode 100644 index 0000000..479063f --- /dev/null +++ b/latest/html_split/_0023caveats_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #caveats-3.

+ diff --git a/latest/html_split/_0023caveats_002d4.html b/latest/html_split/_0023caveats_002d4.html new file mode 100644 index 0000000..9588a55 --- /dev/null +++ b/latest/html_split/_0023caveats_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #caveats-4.

+ diff --git a/latest/html_split/_0023caveats_002d5.html b/latest/html_split/_0023caveats_002d5.html new file mode 100644 index 0000000..11edee5 --- /dev/null +++ b/latest/html_split/_0023caveats_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #caveats-5.

+ diff --git a/latest/html_split/_0023caveats_002d6.html b/latest/html_split/_0023caveats_002d6.html new file mode 100644 index 0000000..6cea721 --- /dev/null +++ b/latest/html_split/_0023caveats_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #caveats-6.

+ diff --git a/latest/html_split/_0023caveats_002d7.html b/latest/html_split/_0023caveats_002d7.html new file mode 100644 index 0000000..2a8f1cd --- /dev/null +++ b/latest/html_split/_0023caveats_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #caveats-7.

+ diff --git a/latest/html_split/_0023caveats_002d8.html b/latest/html_split/_0023caveats_002d8.html new file mode 100644 index 0000000..e330642 --- /dev/null +++ b/latest/html_split/_0023caveats_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #caveats-8.

+ diff --git a/latest/html_split/_0023caveats_002d9.html b/latest/html_split/_0023caveats_002d9.html new file mode 100644 index 0000000..004e434 --- /dev/null +++ b/latest/html_split/_0023caveats_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #caveats-9.

+ diff --git a/latest/html_split/_0023compilation_002dmodel.html b/latest/html_split/_0023compilation_002dmodel.html new file mode 100644 index 0000000..1017867 --- /dev/null +++ b/latest/html_split/_0023compilation_002dmodel.html @@ -0,0 +1,40 @@ + + + + + + +#compilation-model (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #compilation-model.

+ diff --git a/latest/html_split/_0023compile_002dtime_002dcomputation.html b/latest/html_split/_0023compile_002dtime_002dcomputation.html new file mode 100644 index 0000000..59b0c57 --- /dev/null +++ b/latest/html_split/_0023compile_002dtime_002dcomputation.html @@ -0,0 +1,40 @@ + + + + + + +#compile-time-computation (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #compile-time-computation.

+ diff --git a/latest/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html b/latest/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html new file mode 100644 index 0000000..9294adf --- /dev/null +++ b/latest/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html @@ -0,0 +1,40 @@ + + + + + + +#context-and-aim-of-this-guide (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #context-and-aim-of-this-guide.

+ diff --git a/latest/html_split/_0023contributing_002dto_002dthis_002ddocument.html b/latest/html_split/_0023contributing_002dto_002dthis_002ddocument.html new file mode 100644 index 0000000..272d848 --- /dev/null +++ b/latest/html_split/_0023contributing_002dto_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#contributing-to-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #contributing-to-this-document.

+ diff --git a/latest/html_split/_0023contributors.html b/latest/html_split/_0023contributors.html new file mode 100644 index 0000000..a391f9d --- /dev/null +++ b/latest/html_split/_0023contributors.html @@ -0,0 +1,40 @@ + + + + + + +#contributors (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #contributors.

+ diff --git a/latest/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html b/latest/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html new file mode 100644 index 0000000..d32c27e --- /dev/null +++ b/latest/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html @@ -0,0 +1,40 @@ + + + + + + +#detailed-information-for-modules-and-topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #detailed-information-for-modules-and-topics.

+ diff --git a/latest/html_split/_0023disclaimer.html b/latest/html_split/_0023disclaimer.html new file mode 100644 index 0000000..e9658d6 --- /dev/null +++ b/latest/html_split/_0023disclaimer.html @@ -0,0 +1,40 @@ + + + + + + +#disclaimer (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #disclaimer.

+ diff --git a/latest/html_split/_0023error_002dhandling.html b/latest/html_split/_0023error_002dhandling.html new file mode 100644 index 0000000..80cfb94 --- /dev/null +++ b/latest/html_split/_0023error_002dhandling.html @@ -0,0 +1,40 @@ + + + + + + +#error-handling (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #error-handling.

+ diff --git a/latest/html_split/_0023examples_002dof_002dcourse_002dcurricula.html b/latest/html_split/_0023examples_002dof_002dcourse_002dcurricula.html new file mode 100644 index 0000000..99af091 --- /dev/null +++ b/latest/html_split/_0023examples_002dof_002dcourse_002dcurricula.html @@ -0,0 +1,40 @@ + + + + + + +#examples-of-course-curricula (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #examples-of-course-curricula.

+ diff --git a/latest/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html b/latest/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html new file mode 100644 index 0000000..fc9b3eb --- /dev/null +++ b/latest/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html @@ -0,0 +1,40 @@ + + + + + + +#external-i.e.-non-standard-libraries (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #external-i.e.-non-standard-libraries.

+ diff --git a/latest/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html b/latest/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html new file mode 100644 index 0000000..f915680 --- /dev/null +++ b/latest/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-calling-static_assert-with-a-constant-expression (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #foundational-calling-static_assert-with-a-constant-expression.

+ diff --git a/latest/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html b/latest/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html new file mode 100644 index 0000000..88f62bc --- /dev/null +++ b/latest/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-how-and-when-are-copies-made (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #foundational-how-and-when-are-copies-made.

+ diff --git a/latest/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html b/latest/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html new file mode 100644 index 0000000..95ab098 --- /dev/null +++ b/latest/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-using-and-defining-functions-with-default-arguments (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #foundational-using-and-defining-functions-with-default-arguments.

+ diff --git a/latest/html_split/_0023foundational_002dusing_002dudls.html b/latest/html_split/_0023foundational_002dusing_002dudls.html new file mode 100644 index 0000000..2f7afdd --- /dev/null +++ b/latest/html_split/_0023foundational_002dusing_002dudls.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-using-udls (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #foundational-using-udls.

+ diff --git a/latest/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html b/latest/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html new file mode 100644 index 0000000..708f2d3 --- /dev/null +++ b/latest/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-writing-requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #foundational-writing-requires-expressions.

+ diff --git a/latest/html_split/_0023functions.html b/latest/html_split/_0023functions.html new file mode 100644 index 0000000..e304abe --- /dev/null +++ b/latest/html_split/_0023functions.html @@ -0,0 +1,40 @@ + + + + + + +#functions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #functions.

+ diff --git a/latest/html_split/_0023functions_002ddefault_002dargument.html b/latest/html_split/_0023functions_002ddefault_002dargument.html new file mode 100644 index 0000000..ccfbcbb --- /dev/null +++ b/latest/html_split/_0023functions_002ddefault_002dargument.html @@ -0,0 +1,40 @@ + + + + + + +#functions-default-argument (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #functions-default-argument.

+ diff --git a/latest/html_split/_0023functions_002duser_002ddefined_002dliterals.html b/latest/html_split/_0023functions_002duser_002ddefined_002dliterals.html new file mode 100644 index 0000000..b4f78b5 --- /dev/null +++ b/latest/html_split/_0023functions_002duser_002ddefined_002dliterals.html @@ -0,0 +1,40 @@ + + + + + + +#functions-user-defined-literals (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #functions-user-defined-literals.

+ diff --git a/latest/html_split/_0023generic_002dprogramming_002dtemplates.html b/latest/html_split/_0023generic_002dprogramming_002dtemplates.html new file mode 100644 index 0000000..3b91080 --- /dev/null +++ b/latest/html_split/_0023generic_002dprogramming_002dtemplates.html @@ -0,0 +1,40 @@ + + + + + + +#generic-programming-templates (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #generic-programming-templates.

+ diff --git a/latest/html_split/_0023glossary.html b/latest/html_split/_0023glossary.html new file mode 100644 index 0000000..9b46bf6 --- /dev/null +++ b/latest/html_split/_0023glossary.html @@ -0,0 +1,40 @@ + + + + + + +#glossary (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #glossary.

+ diff --git a/latest/html_split/_0023how_002dto_002dcontribute.html b/latest/html_split/_0023how_002dto_002dcontribute.html new file mode 100644 index 0000000..d9cff4a --- /dev/null +++ b/latest/html_split/_0023how_002dto_002dcontribute.html @@ -0,0 +1,40 @@ + + + + + + +#how-to-contribute (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #how-to-contribute.

+ diff --git a/latest/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html b/latest/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html new file mode 100644 index 0000000..def5140 --- /dev/null +++ b/latest/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html @@ -0,0 +1,40 @@ + + + + + + +#inheritance-and-class-hierarchies (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #inheritance-and-class-hierarchies.

+ diff --git a/latest/html_split/_0023license.html b/latest/html_split/_0023license.html new file mode 100644 index 0000000..6b44dd1 --- /dev/null +++ b/latest/html_split/_0023license.html @@ -0,0 +1,40 @@ + + + + + + +#license (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #license.

+ diff --git a/latest/html_split/_0023main_002dadvanced_002drequirements.html b/latest/html_split/_0023main_002dadvanced_002drequirements.html new file mode 100644 index 0000000..8214533 --- /dev/null +++ b/latest/html_split/_0023main_002dadvanced_002drequirements.html @@ -0,0 +1,40 @@ + + + + + + +#main-advanced-requirements (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #main-advanced-requirements.

+ diff --git a/latest/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html b/latest/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html new file mode 100644 index 0000000..22b0484 --- /dev/null +++ b/latest/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html @@ -0,0 +1,40 @@ + + + + + + +#main-contracts-and-static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #main-contracts-and-static_assert.

+ diff --git a/latest/html_split/_0023main_002dimplementing.html b/latest/html_split/_0023main_002dimplementing.html new file mode 100644 index 0000000..260008c --- /dev/null +++ b/latest/html_split/_0023main_002dimplementing.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #main-implementing.

+ diff --git a/latest/html_split/_0023main_002dimplementing_002dudls.html b/latest/html_split/_0023main_002dimplementing_002dudls.html new file mode 100644 index 0000000..a41d194 --- /dev/null +++ b/latest/html_split/_0023main_002dimplementing_002dudls.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing-udls (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #main-implementing-udls.

+ diff --git a/latest/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html b/latest/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html new file mode 100644 index 0000000..1e5a4d8 --- /dev/null +++ b/latest/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing-user-defined-copy-operations (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #main-implementing-user-defined-copy-operations.

+ diff --git a/latest/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html b/latest/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html new file mode 100644 index 0000000..4502ed8 --- /dev/null +++ b/latest/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html @@ -0,0 +1,40 @@ + + + + + + +#meta-error-handling-static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #meta-error-handling-static_assert.

+ diff --git a/latest/html_split/_0023module_002dname_002drequires_002dexpressions.html b/latest/html_split/_0023module_002dname_002drequires_002dexpressions.html new file mode 100644 index 0000000..56a9ebf --- /dev/null +++ b/latest/html_split/_0023module_002dname_002drequires_002dexpressions.html @@ -0,0 +1,40 @@ + + + + + + +#module-name-requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #module-name-requires-expressions.

+ diff --git a/latest/html_split/_0023motivation.html b/latest/html_split/_0023motivation.html new file mode 100644 index 0000000..0141374 --- /dev/null +++ b/latest/html_split/_0023motivation.html @@ -0,0 +1,40 @@ + + + + + + +#motivation (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #motivation.

+ diff --git a/latest/html_split/_0023motivation_002d1.html b/latest/html_split/_0023motivation_002d1.html new file mode 100644 index 0000000..7e4a69e --- /dev/null +++ b/latest/html_split/_0023motivation_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #motivation-1.

+ diff --git a/latest/html_split/_0023motivation_002d2.html b/latest/html_split/_0023motivation_002d2.html new file mode 100644 index 0000000..7901fd3 --- /dev/null +++ b/latest/html_split/_0023motivation_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #motivation-2.

+ diff --git a/latest/html_split/_0023motivation_002d3.html b/latest/html_split/_0023motivation_002d3.html new file mode 100644 index 0000000..ec720ad --- /dev/null +++ b/latest/html_split/_0023motivation_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #motivation-3.

+ diff --git a/latest/html_split/_0023motivation_002d4.html b/latest/html_split/_0023motivation_002d4.html new file mode 100644 index 0000000..f53583a --- /dev/null +++ b/latest/html_split/_0023motivation_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #motivation-4.

+ diff --git a/latest/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html b/latest/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html new file mode 100644 index 0000000..57e8b6e --- /dev/null +++ b/latest/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html @@ -0,0 +1,40 @@ + + + + + + +#obtaining-this-document-the-most-recent-version-and-alternate-formats (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #obtaining-this-document-the-most-recent-version-and-alternate-formats.

+ diff --git a/latest/html_split/_0023organization_002dof_002dthis_002ddocument.html b/latest/html_split/_0023organization_002dof_002dthis_002ddocument.html new file mode 100644 index 0000000..e312b8e --- /dev/null +++ b/latest/html_split/_0023organization_002dof_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#organization-of-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #organization-of-this-document.

+ diff --git a/latest/html_split/_0023overview.html b/latest/html_split/_0023overview.html new file mode 100644 index 0000000..b2d4bdc --- /dev/null +++ b/latest/html_split/_0023overview.html @@ -0,0 +1,40 @@ + + + + + + +#overview (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #overview.

+ diff --git a/latest/html_split/_0023overview_002d1.html b/latest/html_split/_0023overview_002d1.html new file mode 100644 index 0000000..d551764 --- /dev/null +++ b/latest/html_split/_0023overview_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#overview-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #overview-1.

+ diff --git a/latest/html_split/_0023overview_002d2.html b/latest/html_split/_0023overview_002d2.html new file mode 100644 index 0000000..5a34b05 --- /dev/null +++ b/latest/html_split/_0023overview_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#overview-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #overview-2.

+ diff --git a/latest/html_split/_0023overview_002d3.html b/latest/html_split/_0023overview_002d3.html new file mode 100644 index 0000000..f230145 --- /dev/null +++ b/latest/html_split/_0023overview_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#overview-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #overview-3.

+ diff --git a/latest/html_split/_0023overview_002d4.html b/latest/html_split/_0023overview_002d4.html new file mode 100644 index 0000000..2436b9a --- /dev/null +++ b/latest/html_split/_0023overview_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#overview-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #overview-4.

+ diff --git a/latest/html_split/_0023points_002dto_002dcover.html b/latest/html_split/_0023points_002dto_002dcover.html new file mode 100644 index 0000000..424b02b --- /dev/null +++ b/latest/html_split/_0023points_002dto_002dcover.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #points-to-cover.

+ diff --git a/latest/html_split/_0023points_002dto_002dcover_002d1.html b/latest/html_split/_0023points_002dto_002dcover_002d1.html new file mode 100644 index 0000000..2a554bb --- /dev/null +++ b/latest/html_split/_0023points_002dto_002dcover_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #points-to-cover-1.

+ diff --git a/latest/html_split/_0023points_002dto_002dcover_002d2.html b/latest/html_split/_0023points_002dto_002dcover_002d2.html new file mode 100644 index 0000000..053a51a --- /dev/null +++ b/latest/html_split/_0023points_002dto_002dcover_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #points-to-cover-2.

+ diff --git a/latest/html_split/_0023points_002dto_002dcover_002d3.html b/latest/html_split/_0023points_002dto_002dcover_002d3.html new file mode 100644 index 0000000..b0dad48 --- /dev/null +++ b/latest/html_split/_0023points_002dto_002dcover_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #points-to-cover-3.

+ diff --git a/latest/html_split/_0023points_002dto_002dcover_002d4.html b/latest/html_split/_0023points_002dto_002dcover_002d4.html new file mode 100644 index 0000000..94de8fa --- /dev/null +++ b/latest/html_split/_0023points_002dto_002dcover_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #points-to-cover-4.

+ diff --git a/latest/html_split/_0023points_002dto_002dcover_002d5.html b/latest/html_split/_0023points_002dto_002dcover_002d5.html new file mode 100644 index 0000000..39d1eaf --- /dev/null +++ b/latest/html_split/_0023points_002dto_002dcover_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #points-to-cover-5.

+ diff --git a/latest/html_split/_0023points_002dto_002dcover_002d6.html b/latest/html_split/_0023points_002dto_002dcover_002d6.html new file mode 100644 index 0000000..92df88f --- /dev/null +++ b/latest/html_split/_0023points_002dto_002dcover_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #points-to-cover-6.

+ diff --git a/latest/html_split/_0023points_002dto_002dcover_002d7.html b/latest/html_split/_0023points_002dto_002dcover_002d7.html new file mode 100644 index 0000000..6e6c895 --- /dev/null +++ b/latest/html_split/_0023points_002dto_002dcover_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #points-to-cover-7.

+ diff --git a/latest/html_split/_0023points_002dto_002dcover_002d8.html b/latest/html_split/_0023points_002dto_002dcover_002d8.html new file mode 100644 index 0000000..b5574e1 --- /dev/null +++ b/latest/html_split/_0023points_002dto_002dcover_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #points-to-cover-8.

+ diff --git a/latest/html_split/_0023preprocessor.html b/latest/html_split/_0023preprocessor.html new file mode 100644 index 0000000..a3bb5f6 --- /dev/null +++ b/latest/html_split/_0023preprocessor.html @@ -0,0 +1,40 @@ + + + + + + +#preprocessor (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #preprocessor.

+ diff --git a/latest/html_split/_0023references.html b/latest/html_split/_0023references.html new file mode 100644 index 0000000..69fbd6b --- /dev/null +++ b/latest/html_split/_0023references.html @@ -0,0 +1,40 @@ + + + + + + +#references (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #references.

+ diff --git a/latest/html_split/_0023references_002don_002dlearning_002doutcomes.html b/latest/html_split/_0023references_002don_002dlearning_002doutcomes.html new file mode 100644 index 0000000..d28fbbf --- /dev/null +++ b/latest/html_split/_0023references_002don_002dlearning_002doutcomes.html @@ -0,0 +1,40 @@ + + + + + + +#references-on-learning-outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #references-on-learning-outcomes.

+ diff --git a/latest/html_split/_0023software_002ddesign.html b/latest/html_split/_0023software_002ddesign.html new file mode 100644 index 0000000..16f5f54 --- /dev/null +++ b/latest/html_split/_0023software_002ddesign.html @@ -0,0 +1,40 @@ + + + + + + +#software-design (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #software-design.

+ diff --git a/latest/html_split/_0023standard_002dlibrary.html b/latest/html_split/_0023standard_002dlibrary.html new file mode 100644 index 0000000..71956d3 --- /dev/null +++ b/latest/html_split/_0023standard_002dlibrary.html @@ -0,0 +1,40 @@ + + + + + + +#standard-library (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #standard-library.

+ diff --git a/latest/html_split/_0023student_002doutcomes.html b/latest/html_split/_0023student_002doutcomes.html new file mode 100644 index 0000000..df0035d --- /dev/null +++ b/latest/html_split/_0023student_002doutcomes.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #student-outcomes.

+ diff --git a/latest/html_split/_0023student_002doutcomes_002d1.html b/latest/html_split/_0023student_002doutcomes_002d1.html new file mode 100644 index 0000000..e9344b7 --- /dev/null +++ b/latest/html_split/_0023student_002doutcomes_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #student-outcomes-1.

+ diff --git a/latest/html_split/_0023student_002doutcomes_002d2.html b/latest/html_split/_0023student_002doutcomes_002d2.html new file mode 100644 index 0000000..6fa7724 --- /dev/null +++ b/latest/html_split/_0023student_002doutcomes_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #student-outcomes-2.

+ diff --git a/latest/html_split/_0023student_002doutcomes_002d3.html b/latest/html_split/_0023student_002doutcomes_002d3.html new file mode 100644 index 0000000..195d9d2 --- /dev/null +++ b/latest/html_split/_0023student_002doutcomes_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #student-outcomes-3.

+ diff --git a/latest/html_split/_0023student_002doutcomes_002d4.html b/latest/html_split/_0023student_002doutcomes_002d4.html new file mode 100644 index 0000000..3e30430 --- /dev/null +++ b/latest/html_split/_0023student_002doutcomes_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #student-outcomes-4.

+ diff --git a/latest/html_split/_0023student_002doutcomes_002d5.html b/latest/html_split/_0023student_002doutcomes_002d5.html new file mode 100644 index 0000000..0a4a7da --- /dev/null +++ b/latest/html_split/_0023student_002doutcomes_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #student-outcomes-5.

+ diff --git a/latest/html_split/_0023student_002doutcomes_002d6.html b/latest/html_split/_0023student_002doutcomes_002d6.html new file mode 100644 index 0000000..c5c4ac0 --- /dev/null +++ b/latest/html_split/_0023student_002doutcomes_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #student-outcomes-6.

+ diff --git a/latest/html_split/_0023student_002doutcomes_002d7.html b/latest/html_split/_0023student_002doutcomes_002d7.html new file mode 100644 index 0000000..5233f94 --- /dev/null +++ b/latest/html_split/_0023student_002doutcomes_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #student-outcomes-7.

+ diff --git a/latest/html_split/_0023student_002doutcomes_002d8.html b/latest/html_split/_0023student_002doutcomes_002d8.html new file mode 100644 index 0000000..f19fd7f --- /dev/null +++ b/latest/html_split/_0023student_002doutcomes_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #student-outcomes-8.

+ diff --git a/latest/html_split/_0023student_002doutcomes_002d9.html b/latest/html_split/_0023student_002doutcomes_002d9.html new file mode 100644 index 0000000..735a21f --- /dev/null +++ b/latest/html_split/_0023student_002doutcomes_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #student-outcomes-9.

+ diff --git a/latest/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html b/latest/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html new file mode 100644 index 0000000..4801178 --- /dev/null +++ b/latest/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html @@ -0,0 +1,40 @@ + + + + + + +#summary-of-modules-and-topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #summary-of-modules-and-topics.

+ diff --git a/latest/html_split/_0023testing_002dand_002ddebugging.html b/latest/html_split/_0023testing_002dand_002ddebugging.html new file mode 100644 index 0000000..1ae096d --- /dev/null +++ b/latest/html_split/_0023testing_002dand_002ddebugging.html @@ -0,0 +1,40 @@ + + + + + + +#testing-and-debugging (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #testing-and-debugging.

+ diff --git a/latest/html_split/_0023tooling.html b/latest/html_split/_0023tooling.html new file mode 100644 index 0000000..634a8dc --- /dev/null +++ b/latest/html_split/_0023tooling.html @@ -0,0 +1,40 @@ + + + + + + +#tooling (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #tooling.

+ diff --git a/latest/html_split/_0023topic_002dintroduction.html b/latest/html_split/_0023topic_002dintroduction.html new file mode 100644 index 0000000..742d5d9 --- /dev/null +++ b/latest/html_split/_0023topic_002dintroduction.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #topic-introduction.

+ diff --git a/latest/html_split/_0023topic_002dintroduction_002d1.html b/latest/html_split/_0023topic_002dintroduction_002d1.html new file mode 100644 index 0000000..a110644 --- /dev/null +++ b/latest/html_split/_0023topic_002dintroduction_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #topic-introduction-1.

+ diff --git a/latest/html_split/_0023topic_002dintroduction_002d2.html b/latest/html_split/_0023topic_002dintroduction_002d2.html new file mode 100644 index 0000000..986bf37 --- /dev/null +++ b/latest/html_split/_0023topic_002dintroduction_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #topic-introduction-2.

+ diff --git a/latest/html_split/_0023topic_002dintroduction_002d3.html b/latest/html_split/_0023topic_002dintroduction_002d3.html new file mode 100644 index 0000000..3d14fd9 --- /dev/null +++ b/latest/html_split/_0023topic_002dintroduction_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #topic-introduction-3.

+ diff --git a/latest/html_split/_0023topic_002dintroduction_002d4.html b/latest/html_split/_0023topic_002dintroduction_002d4.html new file mode 100644 index 0000000..c73a236 --- /dev/null +++ b/latest/html_split/_0023topic_002dintroduction_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #topic-introduction-4.

+ diff --git a/latest/html_split/_0023use_002dof_002dthis_002ddocument.html b/latest/html_split/_0023use_002dof_002dthis_002ddocument.html new file mode 100644 index 0000000..68d835d --- /dev/null +++ b/latest/html_split/_0023use_002dof_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#use-of-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #use-of-this-document.

+ diff --git a/latest/html_split/_0023user_002ddefined_002dtypes_002dclasses.html b/latest/html_split/_0023user_002ddefined_002dtypes_002dclasses.html new file mode 100644 index 0000000..04771a9 --- /dev/null +++ b/latest/html_split/_0023user_002ddefined_002dtypes_002dclasses.html @@ -0,0 +1,40 @@ + + + + + + +#user-defined-types-classes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #user-defined-types-classes.

+ diff --git a/latest/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html b/latest/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html new file mode 100644 index 0000000..f4b9435 --- /dev/null +++ b/latest/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html @@ -0,0 +1,40 @@ + + + + + + +#working-group-documents-related-to-c-teaching-guidelines (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #working-group-documents-related-to-c-teaching-guidelines.

+ diff --git a/latest/html_split/index.html b/latest/html_split/index.html new file mode 100644 index 0000000..c4e5ff0 --- /dev/null +++ b/latest/html_split/index.html @@ -0,0 +1,240 @@ + + + + + +Top (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +

Table of Contents

+ +
+ + +
+ + + +
+

Guidelines for Teaching C++

+ + + + + + + + + + + + + + + + + + +
+ + + + + + diff --git a/latest/html_split/unknown_node.html b/latest/html_split/unknown_node.html new file mode 100644 index 0000000..5a652e5 --- /dev/null +++ b/latest/html_split/unknown_node.html @@ -0,0 +1,763 @@ + + + + + +Guidelines for Teaching C++ + + + + + + + + + + + + + + + + +
+

+   [Contents]

+
+
+

8.1.5.1 Background/Required Knowledge

+

A student is able to: * identify special member functions +[C++ object model: +special member functions] +

+

It helps when a student is able to: * use move semantics +[C++ object model: move +semantics] * explain the rule of zero +[C++ object model: rule-of-zero] +* explain the rule of five [C++ +object model: rule-of-five] +

+
+

+   [Contents]

+
+

8.1.5.2 Student outcomes

+

A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

+

A student should be able to: * explain when they have to implement the +copy operations for their own type * Copy constructor * Copy assignment +operator * implement copy operations for their own types * +Optional: explain when copying with basic and strong exception +guarantees is useful +

+
+

+   [Contents]

+
+

8.1.5.3 Caveats

+

This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

+
    +
  • Intricacies when implementing copy operations: +
      +
    • Examples of how not to write copy operations (e.g., C++03 +std::auto_ptr) +
    + +
+ +
+

+   [Contents]

+
+

8.1.5.4 Points to cover

+

This section lists important details for each point. +

+
    +
  • Copy constructors and copy assignment operators +
      +
    • How compiler generates default copy operations +
    • =default, =delete (No copy) +
    • How-to write your own copy operations +
    • Rule-of-five +
    • Copy assignment operators can be ref-qualified to avoid assigning into +temporary objects. +
    + +
+ +
+

+   [Contents]

+
+

8.2.1 Overview

+

Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

+ + + + + +
LevelObjectives
Foundationalusing and understanding UDLs
Mainimplementing your own UDLs
AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
+ +
+

+   [Contents]

+
+

8.2.2 Motivation

+

Why is this important? Why do we want to learn/teach this +topic? +

+
    +
  • Allows clearer expression of intent in C++. +
  • std::string: "Hello, world!"s +
  • std::chrono: 3h + 10min + 5s +
+ +
+

+   [Contents]

+
+

8.2.3 Topic introduction

+

Very brief introduction to the topic. +

+
    +
  • Explain the existence of user defined literals. Example: +12min + 17s is terse, expressive and type safe. +
+ +
+

+   [Contents]

+
+

8.2.4.1 Background/Required Knowledge

+

A student: * knows how to form numeric literals, e.g., 1.5f means +a float of value 1.5. * is familiar with the major C++ +types: * bool (Boolean type) * int (Integer type) * +double (Floating-point type) * std::string (Text type) * +std::vector (Collection type) * knows that namespaces exist, and +namespace std. * knows what using-declarations and +using-directives are. +[C++ object +model: declarations] +

+
+

+   [Contents]

+
+

8.2.4.2 Student outcomes

+

A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

+

A student should be able to: +

+
    +
  1. use using namespace std::string_literals[1]. +
  2. recognise UDLs in code that they are reading. +
  3. figure out which UDL definitions for a used type exist. +
  4. identify parts of the standard library that make use of UDLs. +
  5. prevent the dangers of temporaries created with "blah"s as well +as with std::string{"blah"}. +
  6. effectively selects the right set of namespaces in using-directives from +the sub-namespaces std::literals. +
+ +

[1]: explain that it’s okay to use a using-directive to “activate” +UDLs. +

+
+

+   [Contents]

+
+

8.2.4.3 Caveats

+

This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

+
    +
  • A student gets confused by the similarities and differences between +built-in suffixes and UDLs and between UDLs from different namespaces. +
  • A student “activates” two suffixes with the same signature from +different namespaces. +
+ +
+

+   [Contents]

+
+

8.2.4.4 Points to cover

+

This section lists important details for each point. +

+
+

+   [Contents]

+
+

8.2.5.1 Background/Required Knowledge

+
    +
  • All of the above. +
+ +
+

+   [Contents]

+
+

8.2.5.2 Student outcomes

+

A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

+

A student should be able to: +

+
    +
  1. write a UDL operator of their own. +
  2. separate unrelated UDLs into distinct namespaces. +
+ +
+

+   [Contents]

+
+

8.2.5.3 Caveats

+

This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

+

No caveats at present. #### Points to cover +

+

This section lists important details for each point. +

+

No caveats at present. ### Advanced {#udl-advanced} +

+

These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

+
+

+   [Contents]

+
+

8.3.1 Overview

+

Functions in C++ may be overloaded with different numbers and types of +parameters. It may be of value to specify default arguments for some +number of parameters, to allow a caller to avoid specifying arguments +that rarely change, or to enable expanding the set of parameters while +maintaining backward compatibility with existing callers. +

+ + + + + +
LevelObjective
FoundationalDefine and use functions with default arguments
Main
Advancedrefinement of default arguments through multiple declarations
+ +
+

+   [Contents]

+
+

8.3.2 Motivation

+

Default arguments allow the omission of arguments with obvious or common +values. Also may be utilized to extend an existing function signature +without forcing changes to existing calling code. +

+
+

+   [Contents]

+
+

8.3.3 Topic introduction

+

Explain how default arguments work and how to define them. +

+
+

+   [Contents]

+
+

8.3.4.1 Background/Required Knowledge

+

A student is able to: +

+ + +
+

+   [Contents]

+
+

8.3.4.2 Student outcomes

+

A student should be able to: +

+
    +
  1. Call to a function with a default argument with or without that argument +specified +
  2. Declare a function with a default argument, and omit the default in the +definition’s signature +
  3. Explain when the lifetime of a default argument begins and ends +
+ +
+

+   [Contents]

+
+

8.3.4.3 Caveats

+
    +
  • When no forward-declaration exists, the definition serves as the +declaration +
  • When multiple declarations exist, only one may specify the default for +any particular parameter, but multiple declarations may specify the +defaults for different parameters. +
  • Additional default values may be specified for other parameters in +repeat declarations +
  • Calling an overloaded function with fewer arguments may be ambiguous +with regard to an overload with default arguments +
+ +
+

+   [Contents]

+
+

8.3.4.4 Points to cover

+
    +
  • Default value may only be specified once for each parameter among all +declarations +
  • Default values must start from the rightmost parameter and continue +leftward without gaps +
  • Considerations of when to use default arguments vs overload set +
+ +
+

+   [Contents]

+
+

8.3.5.2 Student outcomes

+

A student should be able to: +

+
+

+   [Contents]

+
+

8.3.5.3 Caveats

+ +
+

+   [Contents]

+
+

8.3.5.4 Points to cover

+ +
+

+   [Contents]

+
+

8.3.6 Advanced

+

Subsequent redeclarations of the same function may add default argument +values, which are then usable by callers. Though a single parameter +cannot be given a default argument twice in the same translation unit, +it is legal, though ill-advised, to give the same function different +default arguments in different translation units. +

+
+

+   [Contents]

+
+

8.4.1 Overview

+ + + + + +
LevelObjectives
FoundationalDefine and use requires-expressions to check satisfaction of +expressions by given parameters
MainDefine and use requires-expressions to check properties of +expressions
Advanced
+ +
+

+   [Contents]

+
+

8.4.2 Motivation

+

Requires-expressions allow a developer to perform compile-time +evaluation on the validity of other expressions. These are fundamental +to the ability to write concepts. +[Compile-time programming: +concepts] +

+
+

+   [Contents]

+
+

8.5 Topic introduction

+

Requires-expressions are compile-time predicates which evaluate to true +when their specified set of expressions are all valid for a given set of +inputs. +

+ + + + + + +
+

+   [Contents]

+
+

8.5.1.1 Background/Required Knowledge

+

A student is able to: +

+ + +

It is helpful if: +

+
    +
  • The student is aware that attempting to specialize the template with +types or values which do not match otherwise unstated assumptions will +cause errors within the template. +
+ +
+

+   [Contents]

+
+

8.5.1.2 Student outcomes

+

A student should be able to: +

+
    +
  1. Write a simple-requirement to assert the validity of an expression +
  2. Write a type-requirement to check the existence of a type by its +identifier +
  3. Write a compound-requirement to test the resulting type of an expression +
  4. Write a nested-requirement to test the constexpr value of an operation, +as opposed to just the syntactic validity +
  5. Use a requires-expression within a concept, requires-clause, or +if constexpr condition +
+ +
+

+   [Contents]

+
+

8.5.1.3 Caveats

+

To require that expressions, which evaluate to a boolean value like +sizeof(t) == 4, evaluate to true a nested-requirement is +needed (e.g., requires sizeof(t) == 4;). Omitting the +requires results in a simple-requirement, which is satisfied +based purely on syntactic validity, not on the result of the operation. +

+
+

+   [Contents]

+
+

8.5.1.4 Points to cover

+
    +
  • All requires-expression requirements terminate with a semicolon. +
  • simple-requirements are used to check that an expression is well-formed. +
  • nested-requirements are introduced with requires and primarily +used to check the result of an expression computable by the compiler, +including concepts or other requires-expressions. +
  • type-requirements are introduced with typename and used to verify +the existence of a type with a particular identifier. +
  • compound-requirements are enclosed in braces and can be used to check +the resulting type of an expression. +
  • Checks are performed by the compiler, not at run time. +
  • If covering usage of requires-expression with requires-clause, +[Compile-time +programming: requires clause] demonstrate requires requires and +show how to ever avoid writing it by using a concept. +[Compile-time programming: +concepts] +
+ +
+

+   [Contents]

+
+

8.5.2.1 Background/required knowledge

+
    +
  • All of the above. +
  • Knowledge of noexcept +
+ +

A student is able to: +

+ + +
+

+   [Contents]

+
+

8.5.2.2 Student outcomes

+

A student should be able to: +

+
    +
  1. Write compound-requirements which test the noexceptness of an +expression. +
  2. Use a concept as the target of a compound-requirement. +
+ +
+

+   [Contents]

+
+

8.5.2.3 Caveats

+ +
+

+   [Contents]

+
+

8.5.2.4 Points to cover

+
    +
  • Compound-requirements allow the optional ability to test whether an +expression is marked as noexcept, by using a trailing +noexcept keyword. +
+ +
struct S
+{
+    void foo() noexcept {}
+    void bar() {}
+};
+
+static_assert(requires(S s) { { s.foo() } noexcept; } ); // Succeeds. s.foo() is noexcept
+static_assert(requires(S s) { { s.bar() } noexcept; } ); // Fails. s.bar() is not noexcept
+
+
    +
  • If the return-type-requirement of a compound-requirement is a concept, +that concept is given the resulting type as the first parameter, +followed by the specified parameters in the compound-requirement. +{ ++x } -> C<int> would substitute +C<decltype((++x)), int> and check that concept C is satisfied for +those parameters. +
+ +
+

+   [Contents]

+
+

8.5.3 Advanced

+ +
+

+   [Contents]

+
+

8.6.1 Overview

+

Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

+ + + + + +
LevelObjectives
FoundationalCalling static_assert with a constant expression
MainUsing static_assert to detect contract violations and +improve error messages
Advanced
+ +
+

+   [Contents]

+
+

8.6.2 Motivation

+

Why is this important? Why do we want to learn/teach this +topic? +

+

static_assert allows the developer to enforce that conditions +which can be checked during compilation will force build errors when +violated. Additionally, they are the best mechanism by which a developer +can pass useful information to other developers regarding what violation +occurred or what must be done, instead. +

+
+

+   [Contents]

+
+

8.6.3 Topic introduction

+

Very brief introduction to the topic. +

+

static_assert is a compile-time evaluated function that asserts +the truth of a supplied predicate, issuing an optional user-supplied +error message if the predicate is false. +

+
+

+   [Contents]

+
+

8.6.4.1 Background/Required Knowledge

+

A student: +

+
    +
  • Should be able to explain the difference between code evaluated at +compile-time and run-time +
  • Should be able to cite some examples of compile-time known information, +such as sizeof(T) +
+ +
+

+   [Contents]

+
+

8.6.4.2 Student outcomes

+

A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

+

A student should be able to: +

+
    +
  1. Assert the expected size of a structure using static_assert +
+ +
+

+   [Contents]

+
+

8.6.4.3 Caveats

+

This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

+
+

+   [Contents]

+
+

8.6.4.4 Points to cover

+

This section lists important details for each point. +

+
    +
  • X +
  • In addition to what is wrong, a good error message will inform the user +of how to correct it +
+ +
+

+   [Contents]

+
+

8.6.5.1 Background/Required Knowledge

+
    +
  • All of the above. +
  • General understanding of compile-time requirements +
+ +
+

+   [Contents]

+
+

8.6.5.2 Student outcomes

+

A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

+

A student should be able to: +

+
    +
  1. Utilize static_assert to verify preconditions of a meta-function +
  2. Utilize static_assert to verify the results of meta-functions for +known values +
+ +
+

+   [Contents]

+
+

8.6.5.3 Caveats

+

This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

+
+

+   [Contents]

+
+

8.6.5.4 Points to cover

+

This section lists important details for each point. +

+
    +
  • When writing a meta-function, use static_assert to test the +results +
  • Write static_assert calls at the scope of the code they are +guarding +
+ +
template<typename T>
+struct container {
+    std::map<int, T> vals;
+
+    // Test location #1
+    static_assert(
+        std::is_default_constructible_v<T>,
+        "container type T must be default constructible");i
+
+    void add(int key, T const& t) {
+        // Test location #2
+        static_assert(
+            std::is_default_constructible_v<T>,
+            "container type T must be default constructible");
+        // std::map::operator[] requires default constructible type for 
+        // the value. This will cause a build failure deep in the 
+        // implementation of std::map, when T is not default constructible
+        vals[key] = t;
+    }
+};
+
+struct NoDefCtor {
+    NoDefCtor() = delete;
+    NoDefCtor(double d) {}
+};
+
+container<NoDefCtor> c; // If Test #1 was omitted, this would succeed
+// This is ill-formed. Test #2 would catch this and provide a better 
+// error message for the user
+c.add(42, NoDefCtor(1.0)); 
+
+
+

+   [Contents]

+
+

8.6.6 Advanced

+

These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

+ + + + + From 8c346a12d94085f530086c538aa8882db9106044 Mon Sep 17 00:00:00 2001 From: vulder Date: Sun, 31 Oct 2021 19:25:11 +0000 Subject: [PATCH 05/21] deploy: e9249ec0d572a4dcd7dcf04b3fe201db4acba69c --- 0.0.2/guidelines.epub | Bin 0 -> 31523 bytes 0.0.2/html/images/cpp_logo.png | Bin 0 -> 23613 bytes 0.0.2/html/index.html | 1430 +++++++++++++++++ 0.0.2/html_split/Advanced.html | 60 + .../Background_002fRequired-Knowledge.html | 65 + .../Background_002frequired-knowledge.html | 54 + ...ments-and-Control_002dFlow-Constructs.html | 60 + 0.0.2/html_split/Building.html | 57 + ...002b_002b-object-model-copy-semantics.html | 69 + 0.0.2/html_split/Caveats.html | 62 + 0.0.2/html_split/Compilation-Model.html | 62 + .../Compile_002dTime-Computation.html | 57 + .../Context-and-Aim-of-This-Guide.html | 76 + .../Contributing-to-This-Document.html | 55 + 0.0.2/html_split/Contributors.html | 58 + ...ed-Information-for-Modules-and-Topics.html | 67 + 0.0.2/html_split/Disclaimer.html | 55 + 0.0.2/html_split/Error-Handling.html | 59 + .../Examples-of-Course-Curricula.html | 53 + .../External-ie-Non-Standard-Libraries.html | 56 + ...005fassert-with-a-constant-expression.html | 62 + ...dational-How-and-when-are-copies-made.html | 63 + 0.0.2/html_split/Foundational-Using-UDLs.html | 61 + ...ning-functions-with-default-arguments.html | 62 + ...onal-Writing-requires_002dexpressions.html | 60 + .../Functions-default-argument.html | 67 + .../Functions-user_002ddefined-literals.html | 66 + 0.0.2/html_split/Functions.html | 61 + .../Generic-Programming-Templates.html | 61 + 0.0.2/html_split/Glossary.html | 58 + 0.0.2/html_split/How-To-Contribute.html | 89 + .../Inheritance-and-Class-Hierarchies.html | 57 + 0.0.2/html_split/License.html | 100 ++ .../Main-Advanced-requirements.html | 60 + .../Main-Contracts-and-static_005fassert.html | 61 + ...ting-user_002ddefined-copy-operations.html | 62 + 0.0.2/html_split/Main-implementing-UDLs.html | 59 + 0.0.2/html_split/Main-implementing-_002a.html | 62 + ..._002derror-handling-static_005fassert.html | 67 + .../Module-name-Requires-Expressions.html | 59 + 0.0.2/html_split/Motivation.html | 57 + ...-Recent-Version-and-Alternate-Formats.html | 84 + .../Organization-of-This-Document.html | 101 ++ 0.0.2/html_split/Overview.html | 61 + 0.0.2/html_split/Points-to-cover.html | 69 + 0.0.2/html_split/Preprocessor.html | 58 + .../References-on-Learning-Outcomes.html | 71 + 0.0.2/html_split/References.html | 59 + 0.0.2/html_split/Software-Design.html | 56 + 0.0.2/html_split/Standard-Library.html | 57 + 0.0.2/html_split/Student-outcomes.html | 73 + .../Summary-of-Modules-and-Topics.html | 106 ++ 0.0.2/html_split/Testing-and-Debugging.html | 59 + 0.0.2/html_split/Tooling.html | 57 + 0.0.2/html_split/Topic-introduction.html | 55 + 0.0.2/html_split/Use-of-This-Document.html | 58 + .../User_002dDefined-Types-Classes.html | 69 + ...ed-to-C_002b_002b-Teaching-Guidelines.html | 69 + 0.0.2/html_split/_0023advanced.html | 40 + 0.0.2/html_split/_0023advanced_002d1.html | 40 + 0.0.2/html_split/_0023advanced_002d2.html | 40 + 0.0.2/html_split/_0023advanced_002d3.html | 40 + ..._0023backgroundrequired_002dknowledge.html | 40 + ...ackgroundrequired_002dknowledge_002d1.html | 40 + ...ackgroundrequired_002dknowledge_002d2.html | 40 + ...ackgroundrequired_002dknowledge_002d3.html | 40 + ...ackgroundrequired_002dknowledge_002d4.html | 40 + ...ackgroundrequired_002dknowledge_002d5.html | 40 + ...ackgroundrequired_002dknowledge_002d6.html | 40 + ...ackgroundrequired_002dknowledge_002d7.html | 40 + ...ackgroundrequired_002dknowledge_002d8.html | 40 + ...ackgroundrequired_002dknowledge_002d9.html | 40 + ...d_002dcontrol_002dflow_002dconstructs.html | 40 + 0.0.2/html_split/_0023building.html | 40 + ...ject_002dmodel_002dcopy_002dsemantics.html | 40 + 0.0.2/html_split/_0023caveats.html | 40 + 0.0.2/html_split/_0023caveats_002d1.html | 40 + 0.0.2/html_split/_0023caveats_002d2.html | 40 + 0.0.2/html_split/_0023caveats_002d3.html | 40 + 0.0.2/html_split/_0023caveats_002d4.html | 40 + 0.0.2/html_split/_0023caveats_002d5.html | 40 + 0.0.2/html_split/_0023caveats_002d6.html | 40 + 0.0.2/html_split/_0023caveats_002d7.html | 40 + 0.0.2/html_split/_0023caveats_002d8.html | 40 + 0.0.2/html_split/_0023caveats_002d9.html | 40 + .../_0023compilation_002dmodel.html | 40 + ..._0023compile_002dtime_002dcomputation.html | 40 + ...and_002daim_002dof_002dthis_002dguide.html | 40 + ...ributing_002dto_002dthis_002ddocument.html | 40 + 0.0.2/html_split/_0023contributors.html | 40 + ...02dfor_002dmodules_002dand_002dtopics.html | 40 + 0.0.2/html_split/_0023disclaimer.html | 40 + 0.0.2/html_split/_0023error_002dhandling.html | 40 + ...mples_002dof_002dcourse_002dcurricula.html | 40 + ...2e_002dnon_002dstandard_002dlibraries.html | 40 + ...ith_002da_002dconstant_002dexpression.html | 40 + ..._002dwhen_002dare_002dcopies_002dmade.html | 40 + ...ns_002dwith_002ddefault_002darguments.html | 40 + .../_0023foundational_002dusing_002dudls.html | 40 + ...dwriting_002drequires_002dexpressions.html | 40 + 0.0.2/html_split/_0023functions.html | 40 + ...023functions_002ddefault_002dargument.html | 40 + ...ons_002duser_002ddefined_002dliterals.html | 40 + ...generic_002dprogramming_002dtemplates.html | 40 + 0.0.2/html_split/_0023glossary.html | 40 + .../_0023how_002dto_002dcontribute.html | 40 + ...nce_002dand_002dclass_002dhierarchies.html | 40 + 0.0.2/html_split/_0023license.html | 40 + ...023main_002dadvanced_002drequirements.html | 40 + ...ntracts_002dand_002dstatic_005fassert.html | 40 + .../_0023main_002dimplementing.html | 40 + .../_0023main_002dimplementing_002dudls.html | 40 + ...r_002ddefined_002dcopy_002doperations.html | 40 + ...or_002dhandling_002dstatic_005fassert.html | 40 + ...002dname_002drequires_002dexpressions.html | 40 + 0.0.2/html_split/_0023motivation.html | 40 + 0.0.2/html_split/_0023motivation_002d1.html | 40 + 0.0.2/html_split/_0023motivation_002d2.html | 40 + 0.0.2/html_split/_0023motivation_002d3.html | 40 + 0.0.2/html_split/_0023motivation_002d4.html | 40 + ...ion_002dand_002dalternate_002dformats.html | 40 + ...nization_002dof_002dthis_002ddocument.html | 40 + 0.0.2/html_split/_0023overview.html | 40 + 0.0.2/html_split/_0023overview_002d1.html | 40 + 0.0.2/html_split/_0023overview_002d2.html | 40 + 0.0.2/html_split/_0023overview_002d3.html | 40 + 0.0.2/html_split/_0023overview_002d4.html | 40 + .../_0023points_002dto_002dcover.html | 40 + .../_0023points_002dto_002dcover_002d1.html | 40 + .../_0023points_002dto_002dcover_002d2.html | 40 + .../_0023points_002dto_002dcover_002d3.html | 40 + .../_0023points_002dto_002dcover_002d4.html | 40 + .../_0023points_002dto_002dcover_002d5.html | 40 + .../_0023points_002dto_002dcover_002d6.html | 40 + .../_0023points_002dto_002dcover_002d7.html | 40 + .../_0023points_002dto_002dcover_002d8.html | 40 + 0.0.2/html_split/_0023preprocessor.html | 40 + 0.0.2/html_split/_0023references.html | 40 + ...nces_002don_002dlearning_002doutcomes.html | 40 + .../html_split/_0023software_002ddesign.html | 40 + .../html_split/_0023standard_002dlibrary.html | 40 + .../html_split/_0023student_002doutcomes.html | 40 + .../_0023student_002doutcomes_002d1.html | 40 + .../_0023student_002doutcomes_002d2.html | 40 + .../_0023student_002doutcomes_002d3.html | 40 + .../_0023student_002doutcomes_002d4.html | 40 + .../_0023student_002doutcomes_002d5.html | 40 + .../_0023student_002doutcomes_002d6.html | 40 + .../_0023student_002doutcomes_002d7.html | 40 + .../_0023student_002doutcomes_002d8.html | 40 + .../_0023student_002doutcomes_002d9.html | 40 + ...002dof_002dmodules_002dand_002dtopics.html | 40 + .../_0023testing_002dand_002ddebugging.html | 40 + 0.0.2/html_split/_0023tooling.html | 40 + .../_0023topic_002dintroduction.html | 40 + .../_0023topic_002dintroduction_002d1.html | 40 + .../_0023topic_002dintroduction_002d2.html | 40 + .../_0023topic_002dintroduction_002d3.html | 40 + .../_0023topic_002dintroduction_002d4.html | 40 + ..._0023use_002dof_002dthis_002ddocument.html | 40 + ...ser_002ddefined_002dtypes_002dclasses.html | 40 + ...dto_002dc_002dteaching_002dguidelines.html | 40 + 0.0.2/html_split/index.html | 240 +++ 0.0.2/html_split/unknown_node.html | 763 +++++++++ latest/guidelines.epub | Bin 31519 -> 31523 bytes latest/html/index.html | 11 +- latest/html_split/Contributors.html | 1 + ...-Recent-Version-and-Alternate-Formats.html | 12 +- 168 files changed, 10147 insertions(+), 11 deletions(-) create mode 100644 0.0.2/guidelines.epub create mode 100644 0.0.2/html/images/cpp_logo.png create mode 100644 0.0.2/html/index.html create mode 100644 0.0.2/html_split/Advanced.html create mode 100644 0.0.2/html_split/Background_002fRequired-Knowledge.html create mode 100644 0.0.2/html_split/Background_002frequired-knowledge.html create mode 100644 0.0.2/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html create mode 100644 0.0.2/html_split/Building.html create mode 100644 0.0.2/html_split/C_002b_002b-object-model-copy-semantics.html create mode 100644 0.0.2/html_split/Caveats.html create mode 100644 0.0.2/html_split/Compilation-Model.html create mode 100644 0.0.2/html_split/Compile_002dTime-Computation.html create mode 100644 0.0.2/html_split/Context-and-Aim-of-This-Guide.html create mode 100644 0.0.2/html_split/Contributing-to-This-Document.html create mode 100644 0.0.2/html_split/Contributors.html create mode 100644 0.0.2/html_split/Detailed-Information-for-Modules-and-Topics.html create mode 100644 0.0.2/html_split/Disclaimer.html create mode 100644 0.0.2/html_split/Error-Handling.html create mode 100644 0.0.2/html_split/Examples-of-Course-Curricula.html create mode 100644 0.0.2/html_split/External-ie-Non-Standard-Libraries.html create mode 100644 0.0.2/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html create mode 100644 0.0.2/html_split/Foundational-How-and-when-are-copies-made.html create mode 100644 0.0.2/html_split/Foundational-Using-UDLs.html create mode 100644 0.0.2/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html create mode 100644 0.0.2/html_split/Foundational-Writing-requires_002dexpressions.html create mode 100644 0.0.2/html_split/Functions-default-argument.html create mode 100644 0.0.2/html_split/Functions-user_002ddefined-literals.html create mode 100644 0.0.2/html_split/Functions.html create mode 100644 0.0.2/html_split/Generic-Programming-Templates.html create mode 100644 0.0.2/html_split/Glossary.html create mode 100644 0.0.2/html_split/How-To-Contribute.html create mode 100644 0.0.2/html_split/Inheritance-and-Class-Hierarchies.html create mode 100644 0.0.2/html_split/License.html create mode 100644 0.0.2/html_split/Main-Advanced-requirements.html create mode 100644 0.0.2/html_split/Main-Contracts-and-static_005fassert.html create mode 100644 0.0.2/html_split/Main-Implementing-user_002ddefined-copy-operations.html create mode 100644 0.0.2/html_split/Main-implementing-UDLs.html create mode 100644 0.0.2/html_split/Main-implementing-_002a.html create mode 100644 0.0.2/html_split/Meta_002derror-handling-static_005fassert.html create mode 100644 0.0.2/html_split/Module-name-Requires-Expressions.html create mode 100644 0.0.2/html_split/Motivation.html create mode 100644 0.0.2/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html create mode 100644 0.0.2/html_split/Organization-of-This-Document.html create mode 100644 0.0.2/html_split/Overview.html create mode 100644 0.0.2/html_split/Points-to-cover.html create mode 100644 0.0.2/html_split/Preprocessor.html create mode 100644 0.0.2/html_split/References-on-Learning-Outcomes.html create mode 100644 0.0.2/html_split/References.html create mode 100644 0.0.2/html_split/Software-Design.html create mode 100644 0.0.2/html_split/Standard-Library.html create mode 100644 0.0.2/html_split/Student-outcomes.html create mode 100644 0.0.2/html_split/Summary-of-Modules-and-Topics.html create mode 100644 0.0.2/html_split/Testing-and-Debugging.html create mode 100644 0.0.2/html_split/Tooling.html create mode 100644 0.0.2/html_split/Topic-introduction.html create mode 100644 0.0.2/html_split/Use-of-This-Document.html create mode 100644 0.0.2/html_split/User_002dDefined-Types-Classes.html create mode 100644 0.0.2/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html create mode 100644 0.0.2/html_split/_0023advanced.html create mode 100644 0.0.2/html_split/_0023advanced_002d1.html create mode 100644 0.0.2/html_split/_0023advanced_002d2.html create mode 100644 0.0.2/html_split/_0023advanced_002d3.html create mode 100644 0.0.2/html_split/_0023backgroundrequired_002dknowledge.html create mode 100644 0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d1.html create mode 100644 0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d2.html create mode 100644 0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d3.html create mode 100644 0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d4.html create mode 100644 0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d5.html create mode 100644 0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d6.html create mode 100644 0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d7.html create mode 100644 0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d8.html create mode 100644 0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d9.html create mode 100644 0.0.2/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html create mode 100644 0.0.2/html_split/_0023building.html create mode 100644 0.0.2/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html create mode 100644 0.0.2/html_split/_0023caveats.html create mode 100644 0.0.2/html_split/_0023caveats_002d1.html create mode 100644 0.0.2/html_split/_0023caveats_002d2.html create mode 100644 0.0.2/html_split/_0023caveats_002d3.html create mode 100644 0.0.2/html_split/_0023caveats_002d4.html create mode 100644 0.0.2/html_split/_0023caveats_002d5.html create mode 100644 0.0.2/html_split/_0023caveats_002d6.html create mode 100644 0.0.2/html_split/_0023caveats_002d7.html create mode 100644 0.0.2/html_split/_0023caveats_002d8.html create mode 100644 0.0.2/html_split/_0023caveats_002d9.html create mode 100644 0.0.2/html_split/_0023compilation_002dmodel.html create mode 100644 0.0.2/html_split/_0023compile_002dtime_002dcomputation.html create mode 100644 0.0.2/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html create mode 100644 0.0.2/html_split/_0023contributing_002dto_002dthis_002ddocument.html create mode 100644 0.0.2/html_split/_0023contributors.html create mode 100644 0.0.2/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html create mode 100644 0.0.2/html_split/_0023disclaimer.html create mode 100644 0.0.2/html_split/_0023error_002dhandling.html create mode 100644 0.0.2/html_split/_0023examples_002dof_002dcourse_002dcurricula.html create mode 100644 0.0.2/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html create mode 100644 0.0.2/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html create mode 100644 0.0.2/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html create mode 100644 0.0.2/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html create mode 100644 0.0.2/html_split/_0023foundational_002dusing_002dudls.html create mode 100644 0.0.2/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html create mode 100644 0.0.2/html_split/_0023functions.html create mode 100644 0.0.2/html_split/_0023functions_002ddefault_002dargument.html create mode 100644 0.0.2/html_split/_0023functions_002duser_002ddefined_002dliterals.html create mode 100644 0.0.2/html_split/_0023generic_002dprogramming_002dtemplates.html create mode 100644 0.0.2/html_split/_0023glossary.html create mode 100644 0.0.2/html_split/_0023how_002dto_002dcontribute.html create mode 100644 0.0.2/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html create mode 100644 0.0.2/html_split/_0023license.html create mode 100644 0.0.2/html_split/_0023main_002dadvanced_002drequirements.html create mode 100644 0.0.2/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html create mode 100644 0.0.2/html_split/_0023main_002dimplementing.html create mode 100644 0.0.2/html_split/_0023main_002dimplementing_002dudls.html create mode 100644 0.0.2/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html create mode 100644 0.0.2/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html create mode 100644 0.0.2/html_split/_0023module_002dname_002drequires_002dexpressions.html create mode 100644 0.0.2/html_split/_0023motivation.html create mode 100644 0.0.2/html_split/_0023motivation_002d1.html create mode 100644 0.0.2/html_split/_0023motivation_002d2.html create mode 100644 0.0.2/html_split/_0023motivation_002d3.html create mode 100644 0.0.2/html_split/_0023motivation_002d4.html create mode 100644 0.0.2/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html create mode 100644 0.0.2/html_split/_0023organization_002dof_002dthis_002ddocument.html create mode 100644 0.0.2/html_split/_0023overview.html create mode 100644 0.0.2/html_split/_0023overview_002d1.html create mode 100644 0.0.2/html_split/_0023overview_002d2.html create mode 100644 0.0.2/html_split/_0023overview_002d3.html create mode 100644 0.0.2/html_split/_0023overview_002d4.html create mode 100644 0.0.2/html_split/_0023points_002dto_002dcover.html create mode 100644 0.0.2/html_split/_0023points_002dto_002dcover_002d1.html create mode 100644 0.0.2/html_split/_0023points_002dto_002dcover_002d2.html create mode 100644 0.0.2/html_split/_0023points_002dto_002dcover_002d3.html create mode 100644 0.0.2/html_split/_0023points_002dto_002dcover_002d4.html create mode 100644 0.0.2/html_split/_0023points_002dto_002dcover_002d5.html create mode 100644 0.0.2/html_split/_0023points_002dto_002dcover_002d6.html create mode 100644 0.0.2/html_split/_0023points_002dto_002dcover_002d7.html create mode 100644 0.0.2/html_split/_0023points_002dto_002dcover_002d8.html create mode 100644 0.0.2/html_split/_0023preprocessor.html create mode 100644 0.0.2/html_split/_0023references.html create mode 100644 0.0.2/html_split/_0023references_002don_002dlearning_002doutcomes.html create mode 100644 0.0.2/html_split/_0023software_002ddesign.html create mode 100644 0.0.2/html_split/_0023standard_002dlibrary.html create mode 100644 0.0.2/html_split/_0023student_002doutcomes.html create mode 100644 0.0.2/html_split/_0023student_002doutcomes_002d1.html create mode 100644 0.0.2/html_split/_0023student_002doutcomes_002d2.html create mode 100644 0.0.2/html_split/_0023student_002doutcomes_002d3.html create mode 100644 0.0.2/html_split/_0023student_002doutcomes_002d4.html create mode 100644 0.0.2/html_split/_0023student_002doutcomes_002d5.html create mode 100644 0.0.2/html_split/_0023student_002doutcomes_002d6.html create mode 100644 0.0.2/html_split/_0023student_002doutcomes_002d7.html create mode 100644 0.0.2/html_split/_0023student_002doutcomes_002d8.html create mode 100644 0.0.2/html_split/_0023student_002doutcomes_002d9.html create mode 100644 0.0.2/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html create mode 100644 0.0.2/html_split/_0023testing_002dand_002ddebugging.html create mode 100644 0.0.2/html_split/_0023tooling.html create mode 100644 0.0.2/html_split/_0023topic_002dintroduction.html create mode 100644 0.0.2/html_split/_0023topic_002dintroduction_002d1.html create mode 100644 0.0.2/html_split/_0023topic_002dintroduction_002d2.html create mode 100644 0.0.2/html_split/_0023topic_002dintroduction_002d3.html create mode 100644 0.0.2/html_split/_0023topic_002dintroduction_002d4.html create mode 100644 0.0.2/html_split/_0023use_002dof_002dthis_002ddocument.html create mode 100644 0.0.2/html_split/_0023user_002ddefined_002dtypes_002dclasses.html create mode 100644 0.0.2/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html create mode 100644 0.0.2/html_split/index.html create mode 100644 0.0.2/html_split/unknown_node.html diff --git a/0.0.2/guidelines.epub b/0.0.2/guidelines.epub new file mode 100644 index 0000000000000000000000000000000000000000..37560632ffe0c6bd4b4c73e8834650fcf6940713 GIT binary patch literal 31523 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/L@>!>mExV2h2aS$8i=!~g?sLp6*Z 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 literal 0 HcmV?d00001 diff --git a/0.0.2/html/index.html b/0.0.2/html/index.html new file mode 100644 index 0000000..bf68f9b --- /dev/null +++ b/0.0.2/html/index.html @@ -0,0 +1,1430 @@ + + + + + + + Guidelines for Teaching C++ + + + + + + + + + + + + + + + + + + + + + Guidelines for Teaching C++ + + + + + + + +

+ +
+ +
+ +
+ +
+

Guidelines for Teaching C++

+ +

Version 0.0.2

+ +

SG20 (ISO C++ Study Group on Education)

+
+
+ +
+
+
+ +
+
+ +
+

1 Obtaining This Document: The Most Recent Version and Alternate Formats

+

The most recent version of this document is available as an online HTML document at: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/latest/.

+

The version of the document that you are currently reading is available in the following formats:

+
    +
  1. online (HTML) format as a single large HTML document: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.2/html [later to be https://cplusplus.github.io/SG20/0.0.2/html?]

  2. +
  3. EPUB format: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.2/guidelines.epub [later to be https:/cplusplus.github.io/SG20/0.0.2/guidelines.epub?]

  4. +
  5. online (HTML) format, split across multiple HTML documents: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.2/html_split/ [later to be https://cplusplus.github.io/SG20/0.0.2/html_split/?] [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

  6. +
+

Older versions of this document are also available. In general version ver is available at https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/ver. For example, version v0.1.0 (assuming that this version exists) would be available at [later to be https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/v0.1.0?].

+

2 Disclaimer

+

This document is intended as a proof of concept to solicit feedback from others. This document is incomplete. This document likely has at least a few errors.

+

3 Context and Aim of This Guide

+

This document is intended to serve as a resource for instructors to assist in the preparation of courses on C++ in a variety of settings, including university, college, and industry environments. The main objectives of this document are as follows:

+
    +
  • to provide guidelines for content to be covered by courses of various difficulty levels on C++ (e.g., topics and learning outcomes)
  • +
  • to note some common misunderstandings and problematic points that may be encountered when teaching particular topics
  • +
  • to suggest resources useful for teaching C++
  • +
  • to present examples of curriculum for specific courses
  • +
+

This document does not itself provide a curriculum for a single specific course, but is rather a set of guidelines that can be used to prepare curricula for a wide variety of courses that differ in focus and level of sophistication. (This said, however, some links to other documents with examples of curricula for specific courses may be included herein.) This document only intends to target the teaching of the most recently ratified version of the C++ standard. (This said, however, since older versions of this document are also available, these older versions may be of some use to those who need guidance in older versions of the standard, at least versions that do not predate C++20.)

+

4 Use of This Document

+

[NOTE: This document follows the same license model as the C++ Core Guidelines. The LICENSE document is taken verbatim from the C++ Core Guidelines.] This document is made available under a MIT-style license. In simple terms, this license permits copying, use, modification, and creation of derivative works. A copy of the license is included in the section LICENSE.

+

5 Contributing to This Document

+

Contributions to this document are welcome. If you would like to help with this project as a contributor, please read the section How to Contribute.

+

6 Organization of This Document

+

The various concepts (i.e., ideas) to potentially be covered are partitioned into modules. A module is very broad in scope and consists of numerous topics. [Note: Can I suggest that we use the term “area” or “unit” instead of “module”? I think that these other choices are better and also avoid any potential confusion over what is meant by “module” (i.e., C++ term versus plain English term).]

+

For each module, topics related to the module are identified. Then, for each topic, learning outcomes are specified. In order to address a wide variety of courses on C++, each topic is addressed at three proficiency levels. These proficiency levels allow each topic to be covered at more than one level of detail. This allows target audiences with different background and learning objectives to be accommodated. The three proficiency levels are as follows:

+
    +
  • foundational. This level gives the learner the idea that a facility exists, what benefits it offers, and the basic ways of using it. [Note: Isn’t this just “novice”/“beginner”?]

  • +
  • main. This level shows mainstream uses and techniques. For abstraction and organizational mechanisms it also demonstrates how to build them. This level should also give the learner a basic (but not detailed) understanding of how a facility might be implemented so that the learner can have a first-order understanding of any costs involved. [Note: The term “main” is not very descriptive/helpful. Could I suggest using “intermediate”?]

  • +
  • advanced. This level gives information suitable for an expert. For most topics there is an expert level of knowledge that most programmers rarely need and techniques that require detailed understanding of language rules or library implementation.

  • +
+

The remainder of this document is organized as follows. The various topics are listed grouped by module. In cases where a topic might be classified into more than one module, the topic is listed under the module of most direct relevance. This is done in order to avoid duplication of content. (In the case that a topic is equally relevant to multiple modules, the decision of which to select is made by a proverbial coin toss.) The order in which modules and topics are presented is not meant to imply any order of coverage in a course. The order in which items are listed is essentially arbitrary.

+

7 Summary of Modules and Topics

+

In the sections that follow, the various modules and topics are presented. There is one section per module. For each module, a table listing the various topics in that module is provided. The ID for a topic is linked to the detailed coverage of that topic that comes later in the document. If a topic has any learning outcomes at a given proficiency level, this is indicated by a checkmark (“✔️”). If a topic has no learning outcomes (simply because there are not any, not because the information is missing), this is indicated by an em dash (“—”). In the case that the information for a topic is completely missing, a question mark (“?”) symbol is used.

+

[NOTE: These topics are taken mostly from the SG20 GitHub repository. They are not intended to be complete in any sense. In fact, by gathering together all topics in one place where they are easily viewed, it is hoped that missing and unbalanced items will be more obvious.]

+

7.1 Compilation Model

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Translation Units???
[?]Headers???
[?]Modules???
[?]Name Mangling???
[?]Phases of Translation???
[?]Separate Compilation???
[?]Linkage???
+

7.2 Preprocessor

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Preprocessor Metaprogramming???
[?]Inclusion???
[?]Macros???
+

7.3 Basics Types, Objects, Values, Expressions, Statements, and Control-Flow Constructs

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Constant Objects???
[?]Declarations and Definitions???
[?]Selection Constructs (e.g., if, ternary)???
[?]Looping Constructs (e.g., for, while, etc.)???
+

7.4 Functions

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Calling Functions???
[?]Parameter Passing (e.g., Passing By Value and Reference)???
[func-args]Default Arguments✔️
[?]Returning Multiple Values???
[?]Overloading???
[udl]User-Defined Literals✔️✔️
+

7.5 User-Defined Types (Classes)

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Special Member Functions???
[?]Types???
[?]Conversions???
[?]Constructors and Destructors???
[?]Move/Copy Constructors and Assignment Operators???
[?]Member Functions???
[?]Sum Types???
[?]User-Defined Literals???
[?]Special Member Functions???
[?]Guidelines for Special Member Functions (e.g., Rule of Five, Rule of Zero)???
[copy]Copy Semantics✔️✔️
[?]Moving and Copying???
[?]Lambdas???
+

7.6 Inheritance and Class Hierarchies

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Virtual Functions???
[?]Run-Time Type Information???
+

7.7 Compile-Time Computation

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Constant Expressions and Constant Evaluation???
[static-assert]static_assert✔️✔️
+

7.8 Generic Programming (Templates)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Concepts???
[?]SFINAE???
[?]Template Metaprogramming???
[?]Function Templates???
[?]Requires Clauses???
[req-expr]Requires Expressions✔️✔️
+

7.9 Error Handling

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Classes of Errors???
[?]errno???
[?]Error Codes???
[?]Exception Handling???
+

7.10 Standard Library

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Input/Output (I/O)???
[?]Containers, Iterators, and Algorithms???
+

7.11 External (i.e., Non Standard) Libraries

+ + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Graphical User Interfaces???
+

7.12 Building

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Software Build Tools???
[?]Strategies for Handling Build Problems???
+

7.13 Testing and Debugging

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Source-Level Debuggers???
[?]Code Sanitizers???
[?]Test Frameworks???
[?]Debugging Strategies???
+

7.14 Tooling

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Compiler Toolchains???
[?]IDEs???
+

7.15 Software Design

+ + + + + + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[?]Design by Contract???
+

8 Detailed Information for Modules and Topics

+

8.1 C++ object model: copy semantics

+

Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

+

8.1.1 Overview

+

Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

+ ++++ + + + + + + + + + + + + + + + + + + + + +
LevelObjectives
Foundationalunderstanding how and when are copies made
Mainimplementing user-defined copy operations
Advancedspecial cases: copy elision
+

8.1.2 Motivation

+

Why is this important? Why do we want to learn/teach this topic?

+

Copy semantics allows the user to define how objects of a class get replicated and interact on a value level.

+

8.1.3 Topic introduction

+

Very brief introduction to the topic.

+

Explains when and how objects are copied.

+

8.1.4 Foundational: How and when are copies made

+

8.1.4.1 Background/Required Knowledge

+

A student is able to: * explain what a C++ type is? [C++ object model: types] * explain what an object is? [C++ object model: objects], [C++ object model: constant objects] * define and understand class invariants?

+

It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain special member functions [C++ object model: special member functions]

+

8.1.4.2 Student outcomes

+

A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

+

A student should be able to:

+
    +
  1. explain what copy semantics accomplish
  2. +
+
    +
  • establishing “equivalent” object state in another object
  • +
+
    +
  1. explain difference between copying a reference and copying a value*
  2. +
  3. explain where copies are made
  4. +
+

* In other languages these differences are sometimes referred to as shallow and deep copy.

+

8.1.4.3 Caveats

+

This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

+
    +
  • Compiler-provided copy operations may result in ownership problems (e.g., char*). These ownership problems can generally be solved by using types whose copy operations have the appropriate semantics, e.g., std::string instead of char* to hold string values.
  • +
+

8.1.4.4 Points to cover

+

This section lists important details for each point.

+
    +
  • Principle of copying +
      +
    • Copying of types, which follow the rule of zero
    • +
    • Copying of types, with user defined copy operations
    • +
    • Copying an object does not change the original
    • +
  • +
  • Practical applications +
      +
    • std::unique_ptr (has no copy)
    • +
    • Strings (copies the value)
    • +
  • +
+

8.1.5 Main: Implementing user-defined copy operations

+

8.1.5.1 Background/Required Knowledge

+

A student is able to: * identify special member functions [C++ object model: special member functions]

+

It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain the rule of zero [C++ object model: rule-of-zero] * explain the rule of five [C++ object model: rule-of-five]

+

8.1.5.2 Student outcomes

+

A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

+

A student should be able to: * explain when they have to implement the copy operations for their own type * Copy constructor * Copy assignment operator * implement copy operations for their own types * Optional: explain when copying with basic and strong exception guarantees is useful

+

8.1.5.3 Caveats

+

This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

+
    +
  • Intricacies when implementing copy operations: +
      +
    • Examples of how not to write copy operations (e.g., C++03 std::auto_ptr)
    • +
  • +
+

8.1.5.4 Points to cover

+

This section lists important details for each point.

+
    +
  • Copy constructors and copy assignment operators +
      +
    • How compiler generates default copy operations
    • +
    • =default, =delete (No copy)
    • +
    • How-to write your own copy operations
    • +
    • Rule-of-five
    • +
    • Copy assignment operators can be ref-qualified to avoid assigning into temporary objects.
    • +
  • +
+

8.1.6 Advanced

+

These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

+

When can copies be elided and when does the standard guarantee copy elision. References: * Abseil tip of the Week #166 * cppreference - Copy elision

+

8.2 Functions: user-defined literals

+

Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

+

8.2.1 Overview

+

Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

+ ++++ + + + + + + + + + + + + + + + + + + + + +
LevelObjectives
Foundationalusing and understanding UDLs
Mainimplementing your own UDLs
AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
+

8.2.2 Motivation

+

Why is this important? Why do we want to learn/teach this topic?

+
    +
  • Allows clearer expression of intent in C++.
  • +
  • std::string: "Hello, world!"s
  • +
  • std::chrono: 3h + 10min + 5s
  • +
+

8.2.3 Topic introduction

+

Very brief introduction to the topic.

+
    +
  • Explain the existence of user defined literals. Example: 12min + 17s is terse, expressive and type safe.
  • +
+

8.2.4 Foundational: Using UDLs

+

8.2.4.1 Background/Required Knowledge

+

A student: * knows how to form numeric literals, e.g., 1.5f means a float of value 1.5. * is familiar with the major C++ types: * bool (Boolean type) * int (Integer type) * double (Floating-point type) * std::string (Text type) * std::vector (Collection type) * knows that namespaces exist, and namespace std. * knows what using-declarations and using-directives are. [C++ object model: declarations]

+

8.2.4.2 Student outcomes

+

A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

+

A student should be able to:

+
    +
  1. use using namespace std::string_literals[1].
  2. +
  3. recognise UDLs in code that they are reading.
  4. +
  5. figure out which UDL definitions for a used type exist.
  6. +
  7. identify parts of the standard library that make use of UDLs.
  8. +
  9. prevent the dangers of temporaries created with "blah"s as well as with std::string{"blah"}.
  10. +
  11. effectively selects the right set of namespaces in using-directives from the sub-namespaces std::literals.
  12. +
+

[1]: explain that it’s okay to use a using-directive to “activate” UDLs.

+

8.2.4.3 Caveats

+

This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

+
    +
  • A student gets confused by the similarities and differences between built-in suffixes and UDLs and between UDLs from different namespaces.
  • +
  • A student “activates” two suffixes with the same signature from different namespaces.
  • +
+

8.2.4.4 Points to cover

+

This section lists important details for each point.

+

8.2.5 Main: implementing UDLs

+

8.2.5.1 Background/Required Knowledge

+
    +
  • All of the above.
  • +
+

8.2.5.2 Student outcomes

+

A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

+

A student should be able to:

+
    +
  1. write a UDL operator of their own.
  2. +
  3. separate unrelated UDLs into distinct namespaces.
  4. +
+

8.2.5.3 Caveats

+

This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

+

No caveats at present. #### Points to cover

+

This section lists important details for each point.

+

No caveats at present. ### Advanced {#udl-advanced}

+

These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

+

8.3 Functions: default argument

+

Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

+

8.3.1 Overview

+

Functions in C++ may be overloaded with different numbers and types of parameters. It may be of value to specify default arguments for some number of parameters, to allow a caller to avoid specifying arguments that rarely change, or to enable expanding the set of parameters while maintaining backward compatibility with existing callers.

+ ++++ + + + + + + + + + + + + + + + + + + + + +
LevelObjective
FoundationalDefine and use functions with default arguments
Main
Advancedrefinement of default arguments through multiple declarations
+

8.3.2 Motivation

+

Default arguments allow the omission of arguments with obvious or common values. Also may be utilized to extend an existing function signature without forcing changes to existing calling code.

+

8.3.3 Topic introduction

+

Explain how default arguments work and how to define them.

+

8.3.4 Foundational: Using and defining functions with default arguments

+

8.3.4.1 Background/Required Knowledge

+

A student is able to:

+ +

8.3.4.2 Student outcomes

+

A student should be able to:

+
    +
  1. Call to a function with a default argument with or without that argument specified
  2. +
  3. Declare a function with a default argument, and omit the default in the definition’s signature
  4. +
  5. Explain when the lifetime of a default argument begins and ends
  6. +
+

8.3.4.3 Caveats

+
    +
  • When no forward-declaration exists, the definition serves as the declaration
  • +
  • When multiple declarations exist, only one may specify the default for any particular parameter, but multiple declarations may specify the defaults for different parameters.
  • +
  • Additional default values may be specified for other parameters in repeat declarations
  • +
  • Calling an overloaded function with fewer arguments may be ambiguous with regard to an overload with default arguments
  • +
+

8.3.4.4 Points to cover

+
    +
  • Default value may only be specified once for each parameter among all declarations
  • +
  • Default values must start from the rightmost parameter and continue leftward without gaps
  • +
  • Considerations of when to use default arguments vs overload set
  • +
+

8.3.5 Main: implementing *

+

8.3.5.1 Background/required knowledge

+
    +
  • All of the above.
  • +
+

8.3.5.2 Student outcomes

+

A student should be able to:

+

8.3.5.3 Caveats

+

8.3.5.4 Points to cover

+

8.3.6 Advanced

+

Subsequent redeclarations of the same function may add default argument values, which are then usable by callers. Though a single parameter cannot be given a default argument twice in the same translation unit, it is legal, though ill-advised, to give the same function different default arguments in different translation units.

+

8.4 Module name: Requires Expressions

+

Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

+

8.4.1 Overview

+ ++++ + + + + + + + + + + + + + + + + + + + + +
LevelObjectives
FoundationalDefine and use requires-expressions to check satisfaction of expressions by given parameters
MainDefine and use requires-expressions to check properties of expressions
Advanced
+

8.4.2 Motivation

+

Requires-expressions allow a developer to perform compile-time evaluation on the validity of other expressions. These are fundamental to the ability to write concepts. [Compile-time programming: concepts]

+

8.5 Topic introduction

+

Requires-expressions are compile-time predicates which evaluate to true when their specified set of expressions are all valid for a given set of inputs.

+

8.5.1 Foundational: Writing requires-expressions

+

8.5.1.1 Background/Required Knowledge

+

A student is able to:

+ +

It is helpful if:

+
    +
  • The student is aware that attempting to specialize the template with types or values which do not match otherwise unstated assumptions will cause errors within the template.
  • +
+

8.5.1.2 Student outcomes

+

A student should be able to:

+
    +
  1. Write a simple-requirement to assert the validity of an expression
  2. +
  3. Write a type-requirement to check the existence of a type by its identifier
  4. +
  5. Write a compound-requirement to test the resulting type of an expression
  6. +
  7. Write a nested-requirement to test the constexpr value of an operation, as opposed to just the syntactic validity
  8. +
  9. Use a requires-expression within a concept, requires-clause, or if constexpr condition
  10. +
+

8.5.1.3 Caveats

+

To require that expressions, which evaluate to a boolean value like sizeof(t) == 4, evaluate to true a nested-requirement is needed (e.g., requires sizeof(t) == 4;). Omitting the requires results in a simple-requirement, which is satisfied based purely on syntactic validity, not on the result of the operation.

+

8.5.1.4 Points to cover

+
    +
  • All requires-expression requirements terminate with a semicolon.
  • +
  • simple-requirements are used to check that an expression is well-formed.
  • +
  • nested-requirements are introduced with requires and primarily used to check the result of an expression computable by the compiler, including concepts or other requires-expressions.
  • +
  • type-requirements are introduced with typename and used to verify the existence of a type with a particular identifier.
  • +
  • compound-requirements are enclosed in braces and can be used to check the resulting type of an expression.
  • +
  • Checks are performed by the compiler, not at run time.
  • +
  • If covering usage of requires-expression with requires-clause, [Compile-time programming: requires clause] demonstrate requires requires and show how to ever avoid writing it by using a concept. [Compile-time programming: concepts]
  • +
+

8.5.2 Main: Advanced requirements

+

8.5.2.1 Background/required knowledge

+
    +
  • All of the above.
  • +
  • Knowledge of noexcept
  • +
+

A student is able to:

+ +

8.5.2.2 Student outcomes

+

A student should be able to:

+
    +
  1. Write compound-requirements which test the noexceptness of an expression.
  2. +
  3. Use a concept as the target of a compound-requirement.
  4. +
+

8.5.2.3 Caveats

+

8.5.2.4 Points to cover

+
    +
  • Compound-requirements allow the optional ability to test whether an expression is marked as noexcept, by using a trailing noexcept keyword.
  • +
+ +
    +
  • If the return-type-requirement of a compound-requirement is a concept, that concept is given the resulting type as the first parameter, followed by the specified parameters in the compound-requirement. { ++x } -> C<int> would substitute C<decltype((++x)), int> and check that concept C is satisfied for those parameters.
  • +
+

8.5.3 Advanced

+

8.6 Meta-error handling: static_assert

+

Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

+

8.6.1 Overview

+

Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

+ ++++ + + + + + + + + + + + + + + + + + + + + +
LevelObjectives
FoundationalCalling static_assert with a constant expression
MainUsing static_assert to detect contract violations and improve error messages
Advanced
+

8.6.2 Motivation

+

Why is this important? Why do we want to learn/teach this topic?

+

static_assert allows the developer to enforce that conditions which can be checked during compilation will force build errors when violated. Additionally, they are the best mechanism by which a developer can pass useful information to other developers regarding what violation occurred or what must be done, instead.

+

8.6.3 Topic introduction

+

Very brief introduction to the topic.

+

static_assert is a compile-time evaluated function that asserts the truth of a supplied predicate, issuing an optional user-supplied error message if the predicate is false.

+

8.6.4 Foundational: Calling static_assert with a constant expression

+

8.6.4.1 Background/Required Knowledge

+

A student:

+
    +
  • Should be able to explain the difference between code evaluated at compile-time and run-time
  • +
  • Should be able to cite some examples of compile-time known information, such as sizeof(T)
  • +
+

8.6.4.2 Student outcomes

+

A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

+

A student should be able to:

+
    +
  1. Assert the expected size of a structure using static_assert
  2. +
+

8.6.4.3 Caveats

+

This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

+

8.6.4.4 Points to cover

+

This section lists important details for each point.

+
    +
  • X
  • +
  • In addition to what is wrong, a good error message will inform the user of how to correct it
  • +
+

8.6.5 Main: Contracts and static_assert

+

8.6.5.1 Background/Required Knowledge

+
    +
  • All of the above.
  • +
  • General understanding of compile-time requirements
  • +
+

8.6.5.2 Student outcomes

+

A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

+

A student should be able to:

+
    +
  1. Utilize static_assert to verify preconditions of a meta-function
  2. +
  3. Utilize static_assert to verify the results of meta-functions for known values
  4. +
+

8.6.5.3 Caveats

+

This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

+

8.6.5.4 Points to cover

+

This section lists important details for each point.

+
    +
  • When writing a meta-function, use static_assert to test the results
  • +
  • Write static_assert calls at the scope of the code they are guarding
  • +
+ +

8.6.6 Advanced

+

These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

+

9 Examples of Course Curricula

+

[NOTE: Anyone have any suggestions of items to add here?] The following are examples of curricula for course on C++: …

+

10 License

+

[NOTE: This license is copied verbatim from the C++ Core Guidelines.]

+
Copyright (c) Standard C++ Foundation and its contributors
+
+Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
+perpetual license to copy, use, modify, and create derivative works from this
+project for your personal or internal business use only. The above copyright
+notice and this permission notice shall be included in all copies or
+substantial portions of the project. This license does not grant permission
+to use the trade names, trademarks, service marks, or product names of the
+licensor, except as required for reasonable and customary use in describing
+the origin of the project.
+
+Standard C++ Foundation reserves the right to accept contributions to the
+project at its discretion.
+
+By contributing material to this project, you grant Standard C++ Foundation,
+and those who receive the material directly or indirectly from Standard C++
+Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
+transferrable license to reproduce, prepare derivative works of, publicly
+display, publicly perform, and distribute your contributed material and such
+derivative works, and to sublicense any or all of the foregoing rights to third
+parties for commercial or non-commercial use.  You also grant Standard C++
+Foundation, and those who receive the material directly or indirectly from
+Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
+irrevocable license under your patent claims that directly read on your
+contributed material to make, have made, use, offer to sell, sell and import
+or otherwise dispose of the material. You warrant that your material is your
+original work, or that you have the right to grant the above licenses.
+
+THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
+PROJECT.
+
+If you believe that anything in the project infringes your copyright, please
+contact us at admin@isocpp.org with your contact information and a detailed
+description of your intellectual property, including a specific URL where you
+believe your intellectual property is being infringed.
+
+

11 Contributors

+
Christopher Di Bella
+Florian Sattler
+Michael Adams
+rwdougla
+vulder
+

12 How To Contribute

+

Before attempting to contribute any content for consideration for inclusion in this document, please read the information below and and the referenced documents as appropriate.

+

All contributions to this project must be made in accordance with the license in section License. This teaching-guidelines document only offers guidance on teaching C++ as it is specified in the current version of the C++ standard. So, content should be presented relative to the most-recently ratified version of the standard. A detailed explanation of how to present the material for a topic is given in:

+
    +
  • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.
  • +
+

Any potential contributors should ensure that they read this document. The following document may also be helpful in providing some general background on the modular approach to teaching followed herein:

+ +

In order to prepare content, it is important to understand what learning outcomes are, and how to prepare good ones. Some information on learning outcomes can be found in the References section. The following document offers a concise introduction to learning outcomes:

+ +

13 Glossary

+

Some possible terms to include in the glossary:

+
    +
  • learning objective
  • +
  • learning outcome
  • +
+

14 References

+

14.1 References on Learning Outcomes

+ + +
    +
  • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — Standing Document for SG20: Guidelines for Teaching C++ to Beginners. https://wg21.link/p1389.

  • +
  • Christopher Di Bella. P1725R0 — Modular Topic Design. https://wg21.link/p1725.

  • +
  • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.

  • +
  • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study Group: C++ Education. https://wg21.link/p1231.

  • +
  • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 — Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0.

  • +
+
+
+ +
+ + diff --git a/0.0.2/html_split/Advanced.html b/0.0.2/html_split/Advanced.html new file mode 100644 index 0000000..c4d659a --- /dev/null +++ b/0.0.2/html_split/Advanced.html @@ -0,0 +1,60 @@ + + + + + +Advanced (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

8.1.6 Advanced

+

These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

+

When can copies be elided and when does the standard guarantee copy +elision. References: * Abseil tip of +the Week #166 * +cppreference +- Copy elision +

+ + + + + diff --git a/0.0.2/html_split/Background_002fRequired-Knowledge.html b/0.0.2/html_split/Background_002fRequired-Knowledge.html new file mode 100644 index 0000000..d3ee185 --- /dev/null +++ b/0.0.2/html_split/Background_002fRequired-Knowledge.html @@ -0,0 +1,65 @@ + + + + + +Background/Required Knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

8.1.4.1 Background/Required Knowledge

+

A student is able to: * explain what a C++ type is? +[C++ object model: types] +* explain what an object is? +[C++ object +model: objects], +[C++ object model: +constant objects] * define and understand class invariants? +

+

It helps when a student is able to: * use move semantics +[C++ object model: move +semantics] * explain special member functions +[C++ object model: +special member functions] +

+ + + + + diff --git a/0.0.2/html_split/Background_002frequired-knowledge.html b/0.0.2/html_split/Background_002frequired-knowledge.html new file mode 100644 index 0000000..79fd94d --- /dev/null +++ b/0.0.2/html_split/Background_002frequired-knowledge.html @@ -0,0 +1,54 @@ + + + + + +Background/required knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

8.3.5.1 Background/required knowledge

+
    +
  • All of the above. +
+ + + + + + diff --git a/0.0.2/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html b/0.0.2/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html new file mode 100644 index 0000000..3e850b1 --- /dev/null +++ b/0.0.2/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html @@ -0,0 +1,60 @@ + + + + + +Basics Types Objects Values Expressions Statements and Control-Flow Constructs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.3 Basics Types, Objects, Values, Expressions, Statements, and

+

Control-Flow Constructs +

+ + + + + +
IDUnitFoundationalMainAdvanced
[‘?’]Constant Objects???
[‘?’]Declarations and Definitions???
[‘?’]Selection Constructs (e.g., if, ternary)???
[‘?’]Looping Constructs (e.g., for, while, etc.)???
+ + + + + + diff --git a/0.0.2/html_split/Building.html b/0.0.2/html_split/Building.html new file mode 100644 index 0000000..e628fd0 --- /dev/null +++ b/0.0.2/html_split/Building.html @@ -0,0 +1,57 @@ + + + + + +Building (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.12 Building

+ + + + +
IDUnitFoundationalMainAdvanced
[‘?’]Software Build Tools???
[‘?’]Strategies for Handling Build Problems???
+ + + + + + diff --git a/0.0.2/html_split/C_002b_002b-object-model-copy-semantics.html b/0.0.2/html_split/C_002b_002b-object-model-copy-semantics.html new file mode 100644 index 0000000..6d7350c --- /dev/null +++ b/0.0.2/html_split/C_002b_002b-object-model-copy-semantics.html @@ -0,0 +1,69 @@ + + + + + +C++ object model copy semantics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

8.1 C++ object model: copy semantics

+

Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

+ + + + + + + + + + + + + + diff --git a/0.0.2/html_split/Caveats.html b/0.0.2/html_split/Caveats.html new file mode 100644 index 0000000..c5303c9 --- /dev/null +++ b/0.0.2/html_split/Caveats.html @@ -0,0 +1,62 @@ + + + + + +Caveats (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

8.1.4.3 Caveats

+

This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

+
    +
  • Compiler-provided copy operations may result in ownership problems +(e.g., char*). These ownership problems can generally be solved +by using types whose copy operations have the appropriate semantics, +e.g., std::string instead of char* to hold string values. +
+ + + + + + diff --git a/0.0.2/html_split/Compilation-Model.html b/0.0.2/html_split/Compilation-Model.html new file mode 100644 index 0000000..de11703 --- /dev/null +++ b/0.0.2/html_split/Compilation-Model.html @@ -0,0 +1,62 @@ + + + + + +Compilation Model (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.1 Compilation Model

+ + + + + + + + + +
IDUnitFoundationalMainAdvanced
[‘?’]Translation Units???
[‘?’]Headers???
[‘?’]Modules???
[‘?’]Name Mangling???
[‘?’]Phases of Translation???
[‘?’]Separate Compilation???
[‘?’]Linkage???
+ + + + + + diff --git a/0.0.2/html_split/Compile_002dTime-Computation.html b/0.0.2/html_split/Compile_002dTime-Computation.html new file mode 100644 index 0000000..b9aaa0e --- /dev/null +++ b/0.0.2/html_split/Compile_002dTime-Computation.html @@ -0,0 +1,57 @@ + + + + + +Compile-Time Computation (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.7 Compile-Time Computation

+ + + + +
IDUnitFoundationalMainAdvanced
[‘?’]Constant Expressions and Constant Evaluation???
[‘static-assert’]static_assert‘✔️’‘✔️’
+ + + + + + diff --git a/0.0.2/html_split/Context-and-Aim-of-This-Guide.html b/0.0.2/html_split/Context-and-Aim-of-This-Guide.html new file mode 100644 index 0000000..60efa61 --- /dev/null +++ b/0.0.2/html_split/Context-and-Aim-of-This-Guide.html @@ -0,0 +1,76 @@ + + + + + +Context and Aim of This Guide (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

+Next: , Previous: , Up: Top   [Contents]

+
+
+

3 Context and Aim of This Guide

+

This document is intended to serve as a resource for instructors to +assist in the preparation of courses on C++ in a variety of settings, +including university, college, and industry environments. The main +objectives of this document are as follows: +

+
    +
  • to provide guidelines for content to be covered by courses of various +difficulty levels on C++ (e.g., topics and learning outcomes) +
  • to note some common misunderstandings and problematic points that may be +encountered when teaching particular topics +
  • to suggest resources useful for teaching C++ +
  • to present examples of curriculum for specific courses +
+ +

This document does not itself provide a curriculum for a single specific +course, but is rather a set of guidelines that can be used to prepare +curricula for a wide variety of courses that differ in focus and level +of sophistication. (This said, however, some links to other documents +with examples of curricula for specific courses may be included herein.) +This document only intends to target the teaching of the most recently +ratified version of the C++ standard. (This said, however, since older +versions of this document are also available, these older versions may +be of some use to those who need guidance in older versions of the +standard, at least versions that do not predate C++20.) +

+ + + + + diff --git a/0.0.2/html_split/Contributing-to-This-Document.html b/0.0.2/html_split/Contributing-to-This-Document.html new file mode 100644 index 0000000..eac6c28 --- /dev/null +++ b/0.0.2/html_split/Contributing-to-This-Document.html @@ -0,0 +1,55 @@ + + + + + +Contributing to This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

5 Contributing to This Document

+

Contributions to this document are welcome. If you would like to help +with this project as a contributor, please read the section +‘How to Contribute’. +

+ + + + + diff --git a/0.0.2/html_split/Contributors.html b/0.0.2/html_split/Contributors.html new file mode 100644 index 0000000..8adb4b1 --- /dev/null +++ b/0.0.2/html_split/Contributors.html @@ -0,0 +1,58 @@ + + + + + +Contributors (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

+Next: , Previous: , Up: Top   [Contents]

+
+
+

11 Contributors

+ +
Christopher Di Bella
+Florian Sattler
+Michael Adams
+rwdougla
+vulder
+
+ + + + + diff --git a/0.0.2/html_split/Detailed-Information-for-Modules-and-Topics.html b/0.0.2/html_split/Detailed-Information-for-Modules-and-Topics.html new file mode 100644 index 0000000..c8c9fcd --- /dev/null +++ b/0.0.2/html_split/Detailed-Information-for-Modules-and-Topics.html @@ -0,0 +1,67 @@ + + + + + +Detailed Information for Modules and Topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

8 Detailed Information for Modules and Topics

+ + + + + + + + + + + + + + + diff --git a/0.0.2/html_split/Disclaimer.html b/0.0.2/html_split/Disclaimer.html new file mode 100644 index 0000000..a911983 --- /dev/null +++ b/0.0.2/html_split/Disclaimer.html @@ -0,0 +1,55 @@ + + + + + +Disclaimer (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

2 Disclaimer

+

This document is intended as a proof of concept to solicit feedback from +others. This document is incomplete. This document likely has at least a +few errors. +

+ + + + + diff --git a/0.0.2/html_split/Error-Handling.html b/0.0.2/html_split/Error-Handling.html new file mode 100644 index 0000000..1f8d3e0 --- /dev/null +++ b/0.0.2/html_split/Error-Handling.html @@ -0,0 +1,59 @@ + + + + + +Error Handling (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.9 Error Handling

+ + + + + + +
IDUnitFoundationalMainAdvanced
[‘?’]Classes of Errors???
[‘?’]errno???
[‘?’]Error Codes???
[‘?’]Exception Handling???
+ + + + + + diff --git a/0.0.2/html_split/Examples-of-Course-Curricula.html b/0.0.2/html_split/Examples-of-Course-Curricula.html new file mode 100644 index 0000000..64eb64b --- /dev/null +++ b/0.0.2/html_split/Examples-of-Course-Curricula.html @@ -0,0 +1,53 @@ + + + + + +Examples of Course Curricula (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

9 Examples of Course Curricula

+

[NOTE: Anyone have any suggestions of items to add here?] The +following are examples of curricula for course on C++: … +

+ + + + + diff --git a/0.0.2/html_split/External-ie-Non-Standard-Libraries.html b/0.0.2/html_split/External-ie-Non-Standard-Libraries.html new file mode 100644 index 0000000..2bf081e --- /dev/null +++ b/0.0.2/html_split/External-ie-Non-Standard-Libraries.html @@ -0,0 +1,56 @@ + + + + + +External ie Non Standard Libraries (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.11 External (i.e., Non Standard) Libraries

+ + + +
IDUnitFoundationalMainAdvanced
[‘?’]Graphical User Interfaces???
+ + + + + + diff --git a/0.0.2/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html b/0.0.2/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html new file mode 100644 index 0000000..ce2c1b0 --- /dev/null +++ b/0.0.2/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html @@ -0,0 +1,62 @@ + + + + + +Foundational Calling static_assert with a constant expression (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
+

8.6.4 Foundational: Calling static_assert with a constant

+

expression +

+ + + + + + + + + + + + diff --git a/0.0.2/html_split/Foundational-How-and-when-are-copies-made.html b/0.0.2/html_split/Foundational-How-and-when-are-copies-made.html new file mode 100644 index 0000000..4cec33b --- /dev/null +++ b/0.0.2/html_split/Foundational-How-and-when-are-copies-made.html @@ -0,0 +1,63 @@ + + + + + +Foundational How and when are copies made (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

8.1.4 Foundational: How and when are copies made

+ + + + + + + + + + + + + diff --git a/0.0.2/html_split/Foundational-Using-UDLs.html b/0.0.2/html_split/Foundational-Using-UDLs.html new file mode 100644 index 0000000..adb461e --- /dev/null +++ b/0.0.2/html_split/Foundational-Using-UDLs.html @@ -0,0 +1,61 @@ + + + + + +Foundational Using UDLs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
+

8.2.4 Foundational: Using UDLs

+ + + + + + + + + + + + + diff --git a/0.0.2/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html b/0.0.2/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html new file mode 100644 index 0000000..e37a992 --- /dev/null +++ b/0.0.2/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html @@ -0,0 +1,62 @@ + + + + + +Foundational Using and defining functions with default arguments (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
+

8.3.4 Foundational: Using and defining functions with default

+

arguments +

+ + + + + + + + + + + + diff --git a/0.0.2/html_split/Foundational-Writing-requires_002dexpressions.html b/0.0.2/html_split/Foundational-Writing-requires_002dexpressions.html new file mode 100644 index 0000000..6846c6e --- /dev/null +++ b/0.0.2/html_split/Foundational-Writing-requires_002dexpressions.html @@ -0,0 +1,60 @@ + + + + + +Foundational Writing requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +
+

8.5.1 Foundational: Writing requires-expressions

+ + + + + + + + + + + + + diff --git a/0.0.2/html_split/Functions-default-argument.html b/0.0.2/html_split/Functions-default-argument.html new file mode 100644 index 0000000..2571ca9 --- /dev/null +++ b/0.0.2/html_split/Functions-default-argument.html @@ -0,0 +1,67 @@ + + + + + +Functions default argument (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
+

8.3 Functions: default argument

+

Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

+ + + + + + + + + + + + + + diff --git a/0.0.2/html_split/Functions-user_002ddefined-literals.html b/0.0.2/html_split/Functions-user_002ddefined-literals.html new file mode 100644 index 0000000..7e41de9 --- /dev/null +++ b/0.0.2/html_split/Functions-user_002ddefined-literals.html @@ -0,0 +1,66 @@ + + + + + +Functions user-defined literals (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

8.2 Functions: user-defined literals

+

Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

+ + + + + + + + + + + + + diff --git a/0.0.2/html_split/Functions.html b/0.0.2/html_split/Functions.html new file mode 100644 index 0000000..82175a5 --- /dev/null +++ b/0.0.2/html_split/Functions.html @@ -0,0 +1,61 @@ + + + + + +Functions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.4 Functions

+ + + + + + + + +
IDUnitFoundationalMainAdvanced
[‘?’]Calling Functions???
[‘?’]Parameter Passing (e.g., Passing By Value and Reference)???
[‘func-args’]Default Arguments‘✔️’
[‘?’]Returning Multiple Values???
[‘?’]Overloading???
[‘udl’]User-Defined Literals‘✔️’‘✔️’
+ + + + + + diff --git a/0.0.2/html_split/Generic-Programming-Templates.html b/0.0.2/html_split/Generic-Programming-Templates.html new file mode 100644 index 0000000..1a22cd7 --- /dev/null +++ b/0.0.2/html_split/Generic-Programming-Templates.html @@ -0,0 +1,61 @@ + + + + + +Generic Programming Templates (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.8 Generic Programming (Templates)

+ + + + + + + + +
IDUnitFoundationalMainAdvanced
[‘?’]Concepts???
[‘?’]SFINAE???
[‘?’]Template Metaprogramming???
[‘?’]Function Templates???
[‘?’]Requires Clauses???
[‘req-expr’]Requires Expressions‘✔️’‘✔️’
+ + + + + + diff --git a/0.0.2/html_split/Glossary.html b/0.0.2/html_split/Glossary.html new file mode 100644 index 0000000..2bf24f2 --- /dev/null +++ b/0.0.2/html_split/Glossary.html @@ -0,0 +1,58 @@ + + + + + +Glossary (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

+Next: , Previous: , Up: Top   [Contents]

+
+
+

13 Glossary

+

Some possible terms to include in the glossary: +

+
    +
  • learning objective +
  • learning outcome +
+ + + + + + diff --git a/0.0.2/html_split/How-To-Contribute.html b/0.0.2/html_split/How-To-Contribute.html new file mode 100644 index 0000000..f1963d5 --- /dev/null +++ b/0.0.2/html_split/How-To-Contribute.html @@ -0,0 +1,89 @@ + + + + + +How To Contribute (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

+Next: , Previous: , Up: Top   [Contents]

+
+
+

12 How To Contribute

+

Before attempting to contribute any content for consideration for +inclusion in this document, please read the information below and and +the referenced documents as appropriate. +

+

All contributions to this project must be made in accordance with the +license in section License. This teaching-guidelines +document only offers guidance on teaching C++ as it is specified in the +current version of the C++ standard. So, content should be presented +relative to the most-recently ratified version of the standard. A +detailed explanation of how to present the material for a topic is given +in: +

+
    +
  • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to +structure a teaching topic. https://wg21.link/p2193. +
+ +

Any potential contributors should ensure that they read this document. +The following document may also be helpful in providing some general +background on the modular approach to teaching followed herein: +

+ + +

In order to prepare content, it is important to understand what learning +outcomes are, and how to prepare good ones. Some information on learning +outcomes can be found in the References section. The +following document offers a concise introduction to learning outcomes: +

+ + + + + + + diff --git a/0.0.2/html_split/Inheritance-and-Class-Hierarchies.html b/0.0.2/html_split/Inheritance-and-Class-Hierarchies.html new file mode 100644 index 0000000..1a394b0 --- /dev/null +++ b/0.0.2/html_split/Inheritance-and-Class-Hierarchies.html @@ -0,0 +1,57 @@ + + + + + +Inheritance and Class Hierarchies (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.6 Inheritance and Class Hierarchies

+ + + + +
IDUnitFoundationalMainAdvanced
[‘?’]Virtual Functions???
[‘?’]Run-Time Type Information???
+ + + + + + diff --git a/0.0.2/html_split/License.html b/0.0.2/html_split/License.html new file mode 100644 index 0000000..38d2d8d --- /dev/null +++ b/0.0.2/html_split/License.html @@ -0,0 +1,100 @@ + + + + + +License (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

+Next: , Previous: , Up: Top   [Contents]

+
+
+

10 License

+

[NOTE: This license is copied verbatim from the C++ Core +Guidelines.] +

+
Copyright (c) Standard C++ Foundation and its contributors
+
+Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
+perpetual license to copy, use, modify, and create derivative works from this
+project for your personal or internal business use only. The above copyright
+notice and this permission notice shall be included in all copies or
+substantial portions of the project. This license does not grant permission
+to use the trade names, trademarks, service marks, or product names of the
+licensor, except as required for reasonable and customary use in describing
+the origin of the project.
+
+Standard C++ Foundation reserves the right to accept contributions to the
+project at its discretion.
+
+By contributing material to this project, you grant Standard C++ Foundation,
+and those who receive the material directly or indirectly from Standard C++
+Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
+transferrable license to reproduce, prepare derivative works of, publicly
+display, publicly perform, and distribute your contributed material and such
+derivative works, and to sublicense any or all of the foregoing rights to third
+parties for commercial or non-commercial use.  You also grant Standard C++
+Foundation, and those who receive the material directly or indirectly from
+Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
+irrevocable license under your patent claims that directly read on your
+contributed material to make, have made, use, offer to sell, sell and import
+or otherwise dispose of the material. You warrant that your material is your
+original work, or that you have the right to grant the above licenses.
+
+THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
+PROJECT.
+
+If you believe that anything in the project infringes your copyright, please
+contact us at admin@isocpp.org with your contact information and a detailed
+description of your intellectual property, including a specific URL where you
+believe your intellectual property is being infringed.
+
+
+
+

+Next: , Previous: , Up: Top   [Contents]

+
+ + + + + diff --git a/0.0.2/html_split/Main-Advanced-requirements.html b/0.0.2/html_split/Main-Advanced-requirements.html new file mode 100644 index 0000000..6c4ac0e --- /dev/null +++ b/0.0.2/html_split/Main-Advanced-requirements.html @@ -0,0 +1,60 @@ + + + + + +Main Advanced requirements (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +
+

8.5.2 Main: Advanced requirements

+ + + + + + + + + + + + + diff --git a/0.0.2/html_split/Main-Contracts-and-static_005fassert.html b/0.0.2/html_split/Main-Contracts-and-static_005fassert.html new file mode 100644 index 0000000..6c0ba46 --- /dev/null +++ b/0.0.2/html_split/Main-Contracts-and-static_005fassert.html @@ -0,0 +1,61 @@ + + + + + +Main Contracts and static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
+

8.6.5 Main: Contracts and static_assert

+ + + + + + + + + + + + + diff --git a/0.0.2/html_split/Main-Implementing-user_002ddefined-copy-operations.html b/0.0.2/html_split/Main-Implementing-user_002ddefined-copy-operations.html new file mode 100644 index 0000000..e38dfd6 --- /dev/null +++ b/0.0.2/html_split/Main-Implementing-user_002ddefined-copy-operations.html @@ -0,0 +1,62 @@ + + + + + +Main Implementing user-defined copy operations (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

8.1.5 Main: Implementing user-defined copy operations

+ + + + + + + + + + + + + diff --git a/0.0.2/html_split/Main-implementing-UDLs.html b/0.0.2/html_split/Main-implementing-UDLs.html new file mode 100644 index 0000000..1f6f381 --- /dev/null +++ b/0.0.2/html_split/Main-implementing-UDLs.html @@ -0,0 +1,59 @@ + + + + + +Main implementing UDLs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
+

8.2.5 Main: implementing UDLs

+ + + + + + + + + + + + diff --git a/0.0.2/html_split/Main-implementing-_002a.html b/0.0.2/html_split/Main-implementing-_002a.html new file mode 100644 index 0000000..b661f2d --- /dev/null +++ b/0.0.2/html_split/Main-implementing-_002a.html @@ -0,0 +1,62 @@ + + + + + +Main implementing * (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

8.3.5 Main: implementing *

+ + + + + + + + + + + + + diff --git a/0.0.2/html_split/Meta_002derror-handling-static_005fassert.html b/0.0.2/html_split/Meta_002derror-handling-static_005fassert.html new file mode 100644 index 0000000..f81a34e --- /dev/null +++ b/0.0.2/html_split/Meta_002derror-handling-static_005fassert.html @@ -0,0 +1,67 @@ + + + + + +Meta-error handling static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
+

8.6 Meta-error handling: static_assert

+

Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

+ + + + + + + + + + + + + + diff --git a/0.0.2/html_split/Module-name-Requires-Expressions.html b/0.0.2/html_split/Module-name-Requires-Expressions.html new file mode 100644 index 0000000..8bab76c --- /dev/null +++ b/0.0.2/html_split/Module-name-Requires-Expressions.html @@ -0,0 +1,59 @@ + + + + + +Module name Requires Expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
+

8.4 Module name: Requires Expressions

+

Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

+ + + + + + + + + + diff --git a/0.0.2/html_split/Motivation.html b/0.0.2/html_split/Motivation.html new file mode 100644 index 0000000..40b0ec9 --- /dev/null +++ b/0.0.2/html_split/Motivation.html @@ -0,0 +1,57 @@ + + + + + +Motivation (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

8.1.2 Motivation

+

Why is this important? Why do we want to learn/teach this +topic? +

+

Copy semantics allows the user to define how objects of a class get +replicated and interact on a value level. +

+ + + + + diff --git a/0.0.2/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html b/0.0.2/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html new file mode 100644 index 0000000..a235793 --- /dev/null +++ b/0.0.2/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html @@ -0,0 +1,84 @@ + + + + + +Obtaining This Document The Most Recent Version and Alternate Formats (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

+Next: , Previous: , Up: Top   [Contents]

+
+
+

1 Obtaining This Document: The Most Recent Version and Alternate

+

Formats +The most recent version of this document is available as an online HTML +document at: +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/latest/. +

+

The version of the document that you are currently reading is available +in the following formats: +

+
    +
  1. online (HTML) format as a single large HTML document: +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.2/html +[later to be https://cplusplus.github.io/SG20/0.0.2/html?] + +
  2. EPUB format: +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.2/guidelines.epub +[later to be +https:/cplusplus.github.io/SG20/0.0.2/guidelines.epub?] + +
  3. online (HTML) format, split across multiple HTML documents: +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.2/html_split/ +[later to be https://cplusplus.github.io/SG20/0.0.2/html_split/?] +[Note: The support for this format needs more work (in order to +beautify and fix linking issues).] + +
+ +

Older versions of this document are also available. In general version +ver is available at +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/ver. +For example, version v0.1.0 (assuming that this version exists) would be +available at [later to be +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/v0.1.0?]. +

+ + + + + diff --git a/0.0.2/html_split/Organization-of-This-Document.html b/0.0.2/html_split/Organization-of-This-Document.html new file mode 100644 index 0000000..3e48985 --- /dev/null +++ b/0.0.2/html_split/Organization-of-This-Document.html @@ -0,0 +1,101 @@ + + + + + +Organization of This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

6 Organization of This Document

+

The various concepts (i.e., ideas) to potentially be covered are +partitioned into modules. A module is very broad in scope and consists +of numerous topics. [Note: Can I suggest that we use the term +“area” or “unit” instead of “module”? I think that these other +choices are better and also avoid any potential confusion over what is +meant by “module” (i.e., C++ term versus plain English term).] +

+

For each module, topics related to the module are identified. Then, for +each topic, learning outcomes are specified. In order to address a wide +variety of courses on C++, each topic is addressed at three proficiency +levels. These proficiency levels allow each topic to be covered at more +than one level of detail. This allows target audiences with different +background and learning objectives to be accommodated. The three +proficiency levels are as follows: +

+
    +
  • foundational. This level gives the learner the idea that a facility +exists, what benefits it offers, and the basic ways of using it. +[Note: Isn’t this just “novice”/“beginner”?] + +
  • main. This level shows mainstream uses and techniques. For abstraction +and organizational mechanisms it also demonstrates how to build them. +This level should also give the learner a basic (but not detailed) +understanding of how a facility might be implemented so that the learner +can have a first-order understanding of any costs involved. +[Note: The term “main” is not very descriptive/helpful. Could +I suggest using “intermediate”?] + +
  • advanced. This level gives information suitable for an expert. For most +topics there is an expert level of knowledge that most programmers +rarely need and techniques that require detailed understanding of +language rules or library implementation. + +
+ +

The remainder of this document is organized as follows. The various +topics are listed grouped by module. In cases where a topic might be +classified into more than one module, the topic is listed under the +module of most direct relevance. This is done in order to avoid +duplication of content. (In the case that a topic is equally relevant to +multiple modules, the decision of which to select is made by a +proverbial coin toss.) The order in which modules and topics are +presented is not meant to imply any order of coverage in a course. The +order in which items are listed is essentially arbitrary. +

+
+ + + + + + diff --git a/0.0.2/html_split/Overview.html b/0.0.2/html_split/Overview.html new file mode 100644 index 0000000..be44bfa --- /dev/null +++ b/0.0.2/html_split/Overview.html @@ -0,0 +1,61 @@ + + + + + +Overview (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

8.1.1 Overview

+

Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

+ + + + + +
LevelObjectives
Foundationalunderstanding how and when are copies made
Mainimplementing user-defined copy operations
Advancedspecial cases: copy elision
+ + + + + + diff --git a/0.0.2/html_split/Points-to-cover.html b/0.0.2/html_split/Points-to-cover.html new file mode 100644 index 0000000..ba4b5cc --- /dev/null +++ b/0.0.2/html_split/Points-to-cover.html @@ -0,0 +1,69 @@ + + + + + +Points to cover (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

8.1.4.4 Points to cover

+

This section lists important details for each point. +

+
    +
  • Principle of copying +
      +
    • Copying of types, which follow the rule of zero +
    • Copying of types, with user defined copy operations +
    • Copying an object does not change the original +
    + +
  • Practical applications +
      +
    • std::unique_ptr (has no copy) +
    • Strings (copies the value) +
    + +
+ + + + + + diff --git a/0.0.2/html_split/Preprocessor.html b/0.0.2/html_split/Preprocessor.html new file mode 100644 index 0000000..345e396 --- /dev/null +++ b/0.0.2/html_split/Preprocessor.html @@ -0,0 +1,58 @@ + + + + + +Preprocessor (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.2 Preprocessor

+ + + + + +
IDUnitFoundationalMainAdvanced
[‘?’]Preprocessor Metaprogramming???
[‘?’]Inclusion???
[‘?’]Macros???
+ + + + + + diff --git a/0.0.2/html_split/References-on-Learning-Outcomes.html b/0.0.2/html_split/References-on-Learning-Outcomes.html new file mode 100644 index 0000000..7b74cad --- /dev/null +++ b/0.0.2/html_split/References-on-Learning-Outcomes.html @@ -0,0 +1,71 @@ + + + + + +References on Learning Outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

14.1 References on Learning Outcomes

+ + + + + + + diff --git a/0.0.2/html_split/References.html b/0.0.2/html_split/References.html new file mode 100644 index 0000000..f595be2 --- /dev/null +++ b/0.0.2/html_split/References.html @@ -0,0 +1,59 @@ + + + + + +References (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

+Previous: , Up: Top   [Contents]

+
+
+

14 References

+ + + + + + + + + + + diff --git a/0.0.2/html_split/Software-Design.html b/0.0.2/html_split/Software-Design.html new file mode 100644 index 0000000..6b4f6c8 --- /dev/null +++ b/0.0.2/html_split/Software-Design.html @@ -0,0 +1,56 @@ + + + + + +Software Design (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.15 Software Design

+ + + +
IDUnitFoundationalMainAdvanced
[‘?’]Design by Contract???
+ + + + + + diff --git a/0.0.2/html_split/Standard-Library.html b/0.0.2/html_split/Standard-Library.html new file mode 100644 index 0000000..c80c7fc --- /dev/null +++ b/0.0.2/html_split/Standard-Library.html @@ -0,0 +1,57 @@ + + + + + +Standard Library (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.10 Standard Library

+ + + + +
IDUnitFoundationalMainAdvanced
[‘?’]Input/Output (I/O)???
[‘?’]Containers, Iterators, and Algorithms???
+ + + + + + diff --git a/0.0.2/html_split/Student-outcomes.html b/0.0.2/html_split/Student-outcomes.html new file mode 100644 index 0000000..c604549 --- /dev/null +++ b/0.0.2/html_split/Student-outcomes.html @@ -0,0 +1,73 @@ + + + + + +Student outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

8.1.4.2 Student outcomes

+

A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

+

A student should be able to: +

+
    +
  1. explain what copy semantics accomplish +
+ +
    +
  • establishing “equivalent” object state in another object +
+ +
    +
  1. explain difference between copying a reference and copying a value* +
  2. explain where copies are made +
+ +

* In other languages these differences are sometimes referred to as +shallow and deep copy. +

+ + + + + diff --git a/0.0.2/html_split/Summary-of-Modules-and-Topics.html b/0.0.2/html_split/Summary-of-Modules-and-Topics.html new file mode 100644 index 0000000..26b69be --- /dev/null +++ b/0.0.2/html_split/Summary-of-Modules-and-Topics.html @@ -0,0 +1,106 @@ + + + + + +Summary of Modules and Topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7 Summary of Modules and Topics

+

In the sections that follow, the various modules and topics are +presented. There is one section per module. For each module, a table +listing the various topics in that module is provided. The ID for a +topic is linked to the detailed coverage of that topic that comes later +in the document. If a topic has any learning outcomes at a given +proficiency level, this is indicated by a checkmark (“✔️”). If a topic +has no learning outcomes (simply because there are not any, not because +the information is missing), this is indicated by an em dash (“—”). +In the case that the information for a topic is completely missing, a +question mark (“?”) symbol is used. +

+

[NOTE: These topics are taken mostly from the SG20 GitHub +repository. They are not intended to be complete in any sense. In fact, +by gathering together all topics in one place where they are easily +viewed, it is hoped that missing and unbalanced items will be more +obvious.] +

+ + + + + + + + + + + + + + + + + + +
+ + + + + + diff --git a/0.0.2/html_split/Testing-and-Debugging.html b/0.0.2/html_split/Testing-and-Debugging.html new file mode 100644 index 0000000..da60211 --- /dev/null +++ b/0.0.2/html_split/Testing-and-Debugging.html @@ -0,0 +1,59 @@ + + + + + +Testing and Debugging (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

+Next: , Previous: , Up: Summary of Modules and Topics   [Contents]

+
+
+

7.13 Testing and Debugging

+ + + + + + +
IDUnitFoundationalMainAdvanced
[‘?’]Source-Level Debuggers???
[‘?’]Code Sanitizers???
[‘?’]Test Frameworks???
[‘?’]Debugging Strategies???
+ + + + + + diff --git a/0.0.2/html_split/Tooling.html b/0.0.2/html_split/Tooling.html new file mode 100644 index 0000000..43c3b2f --- /dev/null +++ b/0.0.2/html_split/Tooling.html @@ -0,0 +1,57 @@ + + + + + +Tooling (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.14 Tooling

+ + + + +
IDUnitFoundationalMainAdvanced
[‘?’]Compiler Toolchains???
[‘?’]IDEs???
+ + + + + + diff --git a/0.0.2/html_split/Topic-introduction.html b/0.0.2/html_split/Topic-introduction.html new file mode 100644 index 0000000..fff97f2 --- /dev/null +++ b/0.0.2/html_split/Topic-introduction.html @@ -0,0 +1,55 @@ + + + + + +Topic introduction (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

8.1.3 Topic introduction

+

Very brief introduction to the topic. +

+

Explains when and how objects are copied. +

+ + + + + diff --git a/0.0.2/html_split/Use-of-This-Document.html b/0.0.2/html_split/Use-of-This-Document.html new file mode 100644 index 0000000..4c820d5 --- /dev/null +++ b/0.0.2/html_split/Use-of-This-Document.html @@ -0,0 +1,58 @@ + + + + + +Use of This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

4 Use of This Document

+

[NOTE: This document follows the same license model as the C++ +Core Guidelines. The LICENSE document is taken verbatim from the C++ +Core Guidelines.] This document is made available under a MIT-style +license. In simple terms, this license permits copying, use, +modification, and creation of derivative works. A copy of the license is +included in the section LICENSE. +

+ + + + + diff --git a/0.0.2/html_split/User_002dDefined-Types-Classes.html b/0.0.2/html_split/User_002dDefined-Types-Classes.html new file mode 100644 index 0000000..808279a --- /dev/null +++ b/0.0.2/html_split/User_002dDefined-Types-Classes.html @@ -0,0 +1,69 @@ + + + + + +User-Defined Types Classes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
+

7.5 User-Defined Types (Classes)

+ + + + + + + + + + + + + + + +
IDUnitFoundationalMainAdvanced
[‘?’]Special Member Functions???
[‘?’]Types???
[‘?’]Conversions???
[‘?’]Constructors and Destructors???
[‘?’]Move/Copy Constructors and Assignment Operators???
[‘?’]Member Functions???
[‘?’]Sum Types???
[‘?’]User-Defined Literals???
[‘?’]Special Member Functions???
[‘?’]Guidelines for Special Member Functions (e.g., Rule of Five, Rule +of Zero)???
[‘copy’]Copy Semantics‘✔️’‘✔️’
[‘?’]Moving and Copying???
[‘?’]Lambdas???
+ + + + + + diff --git a/0.0.2/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html b/0.0.2/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html new file mode 100644 index 0000000..3f9bf2c --- /dev/null +++ b/0.0.2/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html @@ -0,0 +1,69 @@ + + + + + +Working Group Documents Related to C++ Teaching Guidelines (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
+

14.2 Working Group Documents Related to C++ Teaching Guidelines

+
    +
  • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — +Standing Document for SG20: Guidelines for Teaching C++ to Beginners. +https://wg21.link/p1389. + +
  • Christopher Di Bella. P1725R0 — Modular Topic Design. +https://wg21.link/p1725. + +
  • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to +structure a teaching topic. https://wg21.link/p2193. + +
  • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study +Group: C++ Education. https://wg21.link/p1231. + +
  • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 +— Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0. + +
+ + + + + + diff --git a/0.0.2/html_split/_0023advanced.html b/0.0.2/html_split/_0023advanced.html new file mode 100644 index 0000000..d503bfc --- /dev/null +++ b/0.0.2/html_split/_0023advanced.html @@ -0,0 +1,40 @@ + + + + + + +#advanced (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #advanced.

+ diff --git a/0.0.2/html_split/_0023advanced_002d1.html b/0.0.2/html_split/_0023advanced_002d1.html new file mode 100644 index 0000000..282a7b8 --- /dev/null +++ b/0.0.2/html_split/_0023advanced_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #advanced-1.

+ diff --git a/0.0.2/html_split/_0023advanced_002d2.html b/0.0.2/html_split/_0023advanced_002d2.html new file mode 100644 index 0000000..039b3ff --- /dev/null +++ b/0.0.2/html_split/_0023advanced_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #advanced-2.

+ diff --git a/0.0.2/html_split/_0023advanced_002d3.html b/0.0.2/html_split/_0023advanced_002d3.html new file mode 100644 index 0000000..ebf5529 --- /dev/null +++ b/0.0.2/html_split/_0023advanced_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #advanced-3.

+ diff --git a/0.0.2/html_split/_0023backgroundrequired_002dknowledge.html b/0.0.2/html_split/_0023backgroundrequired_002dknowledge.html new file mode 100644 index 0000000..9959745 --- /dev/null +++ b/0.0.2/html_split/_0023backgroundrequired_002dknowledge.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #backgroundrequired-knowledge.

+ diff --git a/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d1.html b/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d1.html new file mode 100644 index 0000000..f6f6bd0 --- /dev/null +++ b/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #backgroundrequired-knowledge-1.

+ diff --git a/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d2.html b/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d2.html new file mode 100644 index 0000000..b0b297d --- /dev/null +++ b/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #backgroundrequired-knowledge-2.

+ diff --git a/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d3.html b/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d3.html new file mode 100644 index 0000000..ae34d91 --- /dev/null +++ b/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #backgroundrequired-knowledge-3.

+ diff --git a/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d4.html b/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d4.html new file mode 100644 index 0000000..7417f62 --- /dev/null +++ b/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #backgroundrequired-knowledge-4.

+ diff --git a/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d5.html b/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d5.html new file mode 100644 index 0000000..8f0570c --- /dev/null +++ b/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #backgroundrequired-knowledge-5.

+ diff --git a/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d6.html b/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d6.html new file mode 100644 index 0000000..a1cdee1 --- /dev/null +++ b/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #backgroundrequired-knowledge-6.

+ diff --git a/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d7.html b/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d7.html new file mode 100644 index 0000000..893a0ba --- /dev/null +++ b/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #backgroundrequired-knowledge-7.

+ diff --git a/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d8.html b/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d8.html new file mode 100644 index 0000000..6080498 --- /dev/null +++ b/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #backgroundrequired-knowledge-8.

+ diff --git a/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d9.html b/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d9.html new file mode 100644 index 0000000..3ea462d --- /dev/null +++ b/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #backgroundrequired-knowledge-9.

+ diff --git a/0.0.2/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html b/0.0.2/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html new file mode 100644 index 0000000..925c568 --- /dev/null +++ b/0.0.2/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html @@ -0,0 +1,40 @@ + + + + + + +#basics-types-objects-values-expressions-statements-and-control-flow-constructs (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #basics-types-objects-values-expressions-statements-and-control-flow-constructs.

+ diff --git a/0.0.2/html_split/_0023building.html b/0.0.2/html_split/_0023building.html new file mode 100644 index 0000000..8ffc9df --- /dev/null +++ b/0.0.2/html_split/_0023building.html @@ -0,0 +1,40 @@ + + + + + + +#building (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #building.

+ diff --git a/0.0.2/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html b/0.0.2/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html new file mode 100644 index 0000000..a7e6bad --- /dev/null +++ b/0.0.2/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html @@ -0,0 +1,40 @@ + + + + + + +#c-object-model-copy-semantics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #c-object-model-copy-semantics.

+ diff --git a/0.0.2/html_split/_0023caveats.html b/0.0.2/html_split/_0023caveats.html new file mode 100644 index 0000000..d4bac8b --- /dev/null +++ b/0.0.2/html_split/_0023caveats.html @@ -0,0 +1,40 @@ + + + + + + +#caveats (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #caveats.

+ diff --git a/0.0.2/html_split/_0023caveats_002d1.html b/0.0.2/html_split/_0023caveats_002d1.html new file mode 100644 index 0000000..64faefd --- /dev/null +++ b/0.0.2/html_split/_0023caveats_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #caveats-1.

+ diff --git a/0.0.2/html_split/_0023caveats_002d2.html b/0.0.2/html_split/_0023caveats_002d2.html new file mode 100644 index 0000000..6c66559 --- /dev/null +++ b/0.0.2/html_split/_0023caveats_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #caveats-2.

+ diff --git a/0.0.2/html_split/_0023caveats_002d3.html b/0.0.2/html_split/_0023caveats_002d3.html new file mode 100644 index 0000000..479063f --- /dev/null +++ b/0.0.2/html_split/_0023caveats_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #caveats-3.

+ diff --git a/0.0.2/html_split/_0023caveats_002d4.html b/0.0.2/html_split/_0023caveats_002d4.html new file mode 100644 index 0000000..9588a55 --- /dev/null +++ b/0.0.2/html_split/_0023caveats_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #caveats-4.

+ diff --git a/0.0.2/html_split/_0023caveats_002d5.html b/0.0.2/html_split/_0023caveats_002d5.html new file mode 100644 index 0000000..11edee5 --- /dev/null +++ b/0.0.2/html_split/_0023caveats_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #caveats-5.

+ diff --git a/0.0.2/html_split/_0023caveats_002d6.html b/0.0.2/html_split/_0023caveats_002d6.html new file mode 100644 index 0000000..6cea721 --- /dev/null +++ b/0.0.2/html_split/_0023caveats_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #caveats-6.

+ diff --git a/0.0.2/html_split/_0023caveats_002d7.html b/0.0.2/html_split/_0023caveats_002d7.html new file mode 100644 index 0000000..2a8f1cd --- /dev/null +++ b/0.0.2/html_split/_0023caveats_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #caveats-7.

+ diff --git a/0.0.2/html_split/_0023caveats_002d8.html b/0.0.2/html_split/_0023caveats_002d8.html new file mode 100644 index 0000000..e330642 --- /dev/null +++ b/0.0.2/html_split/_0023caveats_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #caveats-8.

+ diff --git a/0.0.2/html_split/_0023caveats_002d9.html b/0.0.2/html_split/_0023caveats_002d9.html new file mode 100644 index 0000000..004e434 --- /dev/null +++ b/0.0.2/html_split/_0023caveats_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #caveats-9.

+ diff --git a/0.0.2/html_split/_0023compilation_002dmodel.html b/0.0.2/html_split/_0023compilation_002dmodel.html new file mode 100644 index 0000000..1017867 --- /dev/null +++ b/0.0.2/html_split/_0023compilation_002dmodel.html @@ -0,0 +1,40 @@ + + + + + + +#compilation-model (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #compilation-model.

+ diff --git a/0.0.2/html_split/_0023compile_002dtime_002dcomputation.html b/0.0.2/html_split/_0023compile_002dtime_002dcomputation.html new file mode 100644 index 0000000..59b0c57 --- /dev/null +++ b/0.0.2/html_split/_0023compile_002dtime_002dcomputation.html @@ -0,0 +1,40 @@ + + + + + + +#compile-time-computation (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #compile-time-computation.

+ diff --git a/0.0.2/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html b/0.0.2/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html new file mode 100644 index 0000000..9294adf --- /dev/null +++ b/0.0.2/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html @@ -0,0 +1,40 @@ + + + + + + +#context-and-aim-of-this-guide (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #context-and-aim-of-this-guide.

+ diff --git a/0.0.2/html_split/_0023contributing_002dto_002dthis_002ddocument.html b/0.0.2/html_split/_0023contributing_002dto_002dthis_002ddocument.html new file mode 100644 index 0000000..272d848 --- /dev/null +++ b/0.0.2/html_split/_0023contributing_002dto_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#contributing-to-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #contributing-to-this-document.

+ diff --git a/0.0.2/html_split/_0023contributors.html b/0.0.2/html_split/_0023contributors.html new file mode 100644 index 0000000..a391f9d --- /dev/null +++ b/0.0.2/html_split/_0023contributors.html @@ -0,0 +1,40 @@ + + + + + + +#contributors (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #contributors.

+ diff --git a/0.0.2/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html b/0.0.2/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html new file mode 100644 index 0000000..d32c27e --- /dev/null +++ b/0.0.2/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html @@ -0,0 +1,40 @@ + + + + + + +#detailed-information-for-modules-and-topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #detailed-information-for-modules-and-topics.

+ diff --git a/0.0.2/html_split/_0023disclaimer.html b/0.0.2/html_split/_0023disclaimer.html new file mode 100644 index 0000000..e9658d6 --- /dev/null +++ b/0.0.2/html_split/_0023disclaimer.html @@ -0,0 +1,40 @@ + + + + + + +#disclaimer (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #disclaimer.

+ diff --git a/0.0.2/html_split/_0023error_002dhandling.html b/0.0.2/html_split/_0023error_002dhandling.html new file mode 100644 index 0000000..80cfb94 --- /dev/null +++ b/0.0.2/html_split/_0023error_002dhandling.html @@ -0,0 +1,40 @@ + + + + + + +#error-handling (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #error-handling.

+ diff --git a/0.0.2/html_split/_0023examples_002dof_002dcourse_002dcurricula.html b/0.0.2/html_split/_0023examples_002dof_002dcourse_002dcurricula.html new file mode 100644 index 0000000..99af091 --- /dev/null +++ b/0.0.2/html_split/_0023examples_002dof_002dcourse_002dcurricula.html @@ -0,0 +1,40 @@ + + + + + + +#examples-of-course-curricula (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #examples-of-course-curricula.

+ diff --git a/0.0.2/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html b/0.0.2/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html new file mode 100644 index 0000000..fc9b3eb --- /dev/null +++ b/0.0.2/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html @@ -0,0 +1,40 @@ + + + + + + +#external-i.e.-non-standard-libraries (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #external-i.e.-non-standard-libraries.

+ diff --git a/0.0.2/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html b/0.0.2/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html new file mode 100644 index 0000000..f915680 --- /dev/null +++ b/0.0.2/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-calling-static_assert-with-a-constant-expression (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #foundational-calling-static_assert-with-a-constant-expression.

+ diff --git a/0.0.2/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html b/0.0.2/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html new file mode 100644 index 0000000..88f62bc --- /dev/null +++ b/0.0.2/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-how-and-when-are-copies-made (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #foundational-how-and-when-are-copies-made.

+ diff --git a/0.0.2/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html b/0.0.2/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html new file mode 100644 index 0000000..95ab098 --- /dev/null +++ b/0.0.2/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-using-and-defining-functions-with-default-arguments (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #foundational-using-and-defining-functions-with-default-arguments.

+ diff --git a/0.0.2/html_split/_0023foundational_002dusing_002dudls.html b/0.0.2/html_split/_0023foundational_002dusing_002dudls.html new file mode 100644 index 0000000..2f7afdd --- /dev/null +++ b/0.0.2/html_split/_0023foundational_002dusing_002dudls.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-using-udls (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #foundational-using-udls.

+ diff --git a/0.0.2/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html b/0.0.2/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html new file mode 100644 index 0000000..708f2d3 --- /dev/null +++ b/0.0.2/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-writing-requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #foundational-writing-requires-expressions.

+ diff --git a/0.0.2/html_split/_0023functions.html b/0.0.2/html_split/_0023functions.html new file mode 100644 index 0000000..e304abe --- /dev/null +++ b/0.0.2/html_split/_0023functions.html @@ -0,0 +1,40 @@ + + + + + + +#functions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #functions.

+ diff --git a/0.0.2/html_split/_0023functions_002ddefault_002dargument.html b/0.0.2/html_split/_0023functions_002ddefault_002dargument.html new file mode 100644 index 0000000..ccfbcbb --- /dev/null +++ b/0.0.2/html_split/_0023functions_002ddefault_002dargument.html @@ -0,0 +1,40 @@ + + + + + + +#functions-default-argument (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #functions-default-argument.

+ diff --git a/0.0.2/html_split/_0023functions_002duser_002ddefined_002dliterals.html b/0.0.2/html_split/_0023functions_002duser_002ddefined_002dliterals.html new file mode 100644 index 0000000..b4f78b5 --- /dev/null +++ b/0.0.2/html_split/_0023functions_002duser_002ddefined_002dliterals.html @@ -0,0 +1,40 @@ + + + + + + +#functions-user-defined-literals (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #functions-user-defined-literals.

+ diff --git a/0.0.2/html_split/_0023generic_002dprogramming_002dtemplates.html b/0.0.2/html_split/_0023generic_002dprogramming_002dtemplates.html new file mode 100644 index 0000000..3b91080 --- /dev/null +++ b/0.0.2/html_split/_0023generic_002dprogramming_002dtemplates.html @@ -0,0 +1,40 @@ + + + + + + +#generic-programming-templates (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #generic-programming-templates.

+ diff --git a/0.0.2/html_split/_0023glossary.html b/0.0.2/html_split/_0023glossary.html new file mode 100644 index 0000000..9b46bf6 --- /dev/null +++ b/0.0.2/html_split/_0023glossary.html @@ -0,0 +1,40 @@ + + + + + + +#glossary (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #glossary.

+ diff --git a/0.0.2/html_split/_0023how_002dto_002dcontribute.html b/0.0.2/html_split/_0023how_002dto_002dcontribute.html new file mode 100644 index 0000000..d9cff4a --- /dev/null +++ b/0.0.2/html_split/_0023how_002dto_002dcontribute.html @@ -0,0 +1,40 @@ + + + + + + +#how-to-contribute (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #how-to-contribute.

+ diff --git a/0.0.2/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html b/0.0.2/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html new file mode 100644 index 0000000..def5140 --- /dev/null +++ b/0.0.2/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html @@ -0,0 +1,40 @@ + + + + + + +#inheritance-and-class-hierarchies (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #inheritance-and-class-hierarchies.

+ diff --git a/0.0.2/html_split/_0023license.html b/0.0.2/html_split/_0023license.html new file mode 100644 index 0000000..6b44dd1 --- /dev/null +++ b/0.0.2/html_split/_0023license.html @@ -0,0 +1,40 @@ + + + + + + +#license (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #license.

+ diff --git a/0.0.2/html_split/_0023main_002dadvanced_002drequirements.html b/0.0.2/html_split/_0023main_002dadvanced_002drequirements.html new file mode 100644 index 0000000..8214533 --- /dev/null +++ b/0.0.2/html_split/_0023main_002dadvanced_002drequirements.html @@ -0,0 +1,40 @@ + + + + + + +#main-advanced-requirements (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #main-advanced-requirements.

+ diff --git a/0.0.2/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html b/0.0.2/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html new file mode 100644 index 0000000..22b0484 --- /dev/null +++ b/0.0.2/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html @@ -0,0 +1,40 @@ + + + + + + +#main-contracts-and-static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #main-contracts-and-static_assert.

+ diff --git a/0.0.2/html_split/_0023main_002dimplementing.html b/0.0.2/html_split/_0023main_002dimplementing.html new file mode 100644 index 0000000..260008c --- /dev/null +++ b/0.0.2/html_split/_0023main_002dimplementing.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #main-implementing.

+ diff --git a/0.0.2/html_split/_0023main_002dimplementing_002dudls.html b/0.0.2/html_split/_0023main_002dimplementing_002dudls.html new file mode 100644 index 0000000..a41d194 --- /dev/null +++ b/0.0.2/html_split/_0023main_002dimplementing_002dudls.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing-udls (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #main-implementing-udls.

+ diff --git a/0.0.2/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html b/0.0.2/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html new file mode 100644 index 0000000..1e5a4d8 --- /dev/null +++ b/0.0.2/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing-user-defined-copy-operations (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #main-implementing-user-defined-copy-operations.

+ diff --git a/0.0.2/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html b/0.0.2/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html new file mode 100644 index 0000000..4502ed8 --- /dev/null +++ b/0.0.2/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html @@ -0,0 +1,40 @@ + + + + + + +#meta-error-handling-static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #meta-error-handling-static_assert.

+ diff --git a/0.0.2/html_split/_0023module_002dname_002drequires_002dexpressions.html b/0.0.2/html_split/_0023module_002dname_002drequires_002dexpressions.html new file mode 100644 index 0000000..56a9ebf --- /dev/null +++ b/0.0.2/html_split/_0023module_002dname_002drequires_002dexpressions.html @@ -0,0 +1,40 @@ + + + + + + +#module-name-requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #module-name-requires-expressions.

+ diff --git a/0.0.2/html_split/_0023motivation.html b/0.0.2/html_split/_0023motivation.html new file mode 100644 index 0000000..0141374 --- /dev/null +++ b/0.0.2/html_split/_0023motivation.html @@ -0,0 +1,40 @@ + + + + + + +#motivation (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #motivation.

+ diff --git a/0.0.2/html_split/_0023motivation_002d1.html b/0.0.2/html_split/_0023motivation_002d1.html new file mode 100644 index 0000000..7e4a69e --- /dev/null +++ b/0.0.2/html_split/_0023motivation_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #motivation-1.

+ diff --git a/0.0.2/html_split/_0023motivation_002d2.html b/0.0.2/html_split/_0023motivation_002d2.html new file mode 100644 index 0000000..7901fd3 --- /dev/null +++ b/0.0.2/html_split/_0023motivation_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #motivation-2.

+ diff --git a/0.0.2/html_split/_0023motivation_002d3.html b/0.0.2/html_split/_0023motivation_002d3.html new file mode 100644 index 0000000..ec720ad --- /dev/null +++ b/0.0.2/html_split/_0023motivation_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #motivation-3.

+ diff --git a/0.0.2/html_split/_0023motivation_002d4.html b/0.0.2/html_split/_0023motivation_002d4.html new file mode 100644 index 0000000..f53583a --- /dev/null +++ b/0.0.2/html_split/_0023motivation_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #motivation-4.

+ diff --git a/0.0.2/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html b/0.0.2/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html new file mode 100644 index 0000000..57e8b6e --- /dev/null +++ b/0.0.2/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html @@ -0,0 +1,40 @@ + + + + + + +#obtaining-this-document-the-most-recent-version-and-alternate-formats (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #obtaining-this-document-the-most-recent-version-and-alternate-formats.

+ diff --git a/0.0.2/html_split/_0023organization_002dof_002dthis_002ddocument.html b/0.0.2/html_split/_0023organization_002dof_002dthis_002ddocument.html new file mode 100644 index 0000000..e312b8e --- /dev/null +++ b/0.0.2/html_split/_0023organization_002dof_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#organization-of-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #organization-of-this-document.

+ diff --git a/0.0.2/html_split/_0023overview.html b/0.0.2/html_split/_0023overview.html new file mode 100644 index 0000000..b2d4bdc --- /dev/null +++ b/0.0.2/html_split/_0023overview.html @@ -0,0 +1,40 @@ + + + + + + +#overview (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #overview.

+ diff --git a/0.0.2/html_split/_0023overview_002d1.html b/0.0.2/html_split/_0023overview_002d1.html new file mode 100644 index 0000000..d551764 --- /dev/null +++ b/0.0.2/html_split/_0023overview_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#overview-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #overview-1.

+ diff --git a/0.0.2/html_split/_0023overview_002d2.html b/0.0.2/html_split/_0023overview_002d2.html new file mode 100644 index 0000000..5a34b05 --- /dev/null +++ b/0.0.2/html_split/_0023overview_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#overview-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #overview-2.

+ diff --git a/0.0.2/html_split/_0023overview_002d3.html b/0.0.2/html_split/_0023overview_002d3.html new file mode 100644 index 0000000..f230145 --- /dev/null +++ b/0.0.2/html_split/_0023overview_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#overview-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #overview-3.

+ diff --git a/0.0.2/html_split/_0023overview_002d4.html b/0.0.2/html_split/_0023overview_002d4.html new file mode 100644 index 0000000..2436b9a --- /dev/null +++ b/0.0.2/html_split/_0023overview_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#overview-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #overview-4.

+ diff --git a/0.0.2/html_split/_0023points_002dto_002dcover.html b/0.0.2/html_split/_0023points_002dto_002dcover.html new file mode 100644 index 0000000..424b02b --- /dev/null +++ b/0.0.2/html_split/_0023points_002dto_002dcover.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #points-to-cover.

+ diff --git a/0.0.2/html_split/_0023points_002dto_002dcover_002d1.html b/0.0.2/html_split/_0023points_002dto_002dcover_002d1.html new file mode 100644 index 0000000..2a554bb --- /dev/null +++ b/0.0.2/html_split/_0023points_002dto_002dcover_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #points-to-cover-1.

+ diff --git a/0.0.2/html_split/_0023points_002dto_002dcover_002d2.html b/0.0.2/html_split/_0023points_002dto_002dcover_002d2.html new file mode 100644 index 0000000..053a51a --- /dev/null +++ b/0.0.2/html_split/_0023points_002dto_002dcover_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #points-to-cover-2.

+ diff --git a/0.0.2/html_split/_0023points_002dto_002dcover_002d3.html b/0.0.2/html_split/_0023points_002dto_002dcover_002d3.html new file mode 100644 index 0000000..b0dad48 --- /dev/null +++ b/0.0.2/html_split/_0023points_002dto_002dcover_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #points-to-cover-3.

+ diff --git a/0.0.2/html_split/_0023points_002dto_002dcover_002d4.html b/0.0.2/html_split/_0023points_002dto_002dcover_002d4.html new file mode 100644 index 0000000..94de8fa --- /dev/null +++ b/0.0.2/html_split/_0023points_002dto_002dcover_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #points-to-cover-4.

+ diff --git a/0.0.2/html_split/_0023points_002dto_002dcover_002d5.html b/0.0.2/html_split/_0023points_002dto_002dcover_002d5.html new file mode 100644 index 0000000..39d1eaf --- /dev/null +++ b/0.0.2/html_split/_0023points_002dto_002dcover_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #points-to-cover-5.

+ diff --git a/0.0.2/html_split/_0023points_002dto_002dcover_002d6.html b/0.0.2/html_split/_0023points_002dto_002dcover_002d6.html new file mode 100644 index 0000000..92df88f --- /dev/null +++ b/0.0.2/html_split/_0023points_002dto_002dcover_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #points-to-cover-6.

+ diff --git a/0.0.2/html_split/_0023points_002dto_002dcover_002d7.html b/0.0.2/html_split/_0023points_002dto_002dcover_002d7.html new file mode 100644 index 0000000..6e6c895 --- /dev/null +++ b/0.0.2/html_split/_0023points_002dto_002dcover_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #points-to-cover-7.

+ diff --git a/0.0.2/html_split/_0023points_002dto_002dcover_002d8.html b/0.0.2/html_split/_0023points_002dto_002dcover_002d8.html new file mode 100644 index 0000000..b5574e1 --- /dev/null +++ b/0.0.2/html_split/_0023points_002dto_002dcover_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #points-to-cover-8.

+ diff --git a/0.0.2/html_split/_0023preprocessor.html b/0.0.2/html_split/_0023preprocessor.html new file mode 100644 index 0000000..a3bb5f6 --- /dev/null +++ b/0.0.2/html_split/_0023preprocessor.html @@ -0,0 +1,40 @@ + + + + + + +#preprocessor (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #preprocessor.

+ diff --git a/0.0.2/html_split/_0023references.html b/0.0.2/html_split/_0023references.html new file mode 100644 index 0000000..69fbd6b --- /dev/null +++ b/0.0.2/html_split/_0023references.html @@ -0,0 +1,40 @@ + + + + + + +#references (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #references.

+ diff --git a/0.0.2/html_split/_0023references_002don_002dlearning_002doutcomes.html b/0.0.2/html_split/_0023references_002don_002dlearning_002doutcomes.html new file mode 100644 index 0000000..d28fbbf --- /dev/null +++ b/0.0.2/html_split/_0023references_002don_002dlearning_002doutcomes.html @@ -0,0 +1,40 @@ + + + + + + +#references-on-learning-outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #references-on-learning-outcomes.

+ diff --git a/0.0.2/html_split/_0023software_002ddesign.html b/0.0.2/html_split/_0023software_002ddesign.html new file mode 100644 index 0000000..16f5f54 --- /dev/null +++ b/0.0.2/html_split/_0023software_002ddesign.html @@ -0,0 +1,40 @@ + + + + + + +#software-design (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #software-design.

+ diff --git a/0.0.2/html_split/_0023standard_002dlibrary.html b/0.0.2/html_split/_0023standard_002dlibrary.html new file mode 100644 index 0000000..71956d3 --- /dev/null +++ b/0.0.2/html_split/_0023standard_002dlibrary.html @@ -0,0 +1,40 @@ + + + + + + +#standard-library (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #standard-library.

+ diff --git a/0.0.2/html_split/_0023student_002doutcomes.html b/0.0.2/html_split/_0023student_002doutcomes.html new file mode 100644 index 0000000..df0035d --- /dev/null +++ b/0.0.2/html_split/_0023student_002doutcomes.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #student-outcomes.

+ diff --git a/0.0.2/html_split/_0023student_002doutcomes_002d1.html b/0.0.2/html_split/_0023student_002doutcomes_002d1.html new file mode 100644 index 0000000..e9344b7 --- /dev/null +++ b/0.0.2/html_split/_0023student_002doutcomes_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #student-outcomes-1.

+ diff --git a/0.0.2/html_split/_0023student_002doutcomes_002d2.html b/0.0.2/html_split/_0023student_002doutcomes_002d2.html new file mode 100644 index 0000000..6fa7724 --- /dev/null +++ b/0.0.2/html_split/_0023student_002doutcomes_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #student-outcomes-2.

+ diff --git a/0.0.2/html_split/_0023student_002doutcomes_002d3.html b/0.0.2/html_split/_0023student_002doutcomes_002d3.html new file mode 100644 index 0000000..195d9d2 --- /dev/null +++ b/0.0.2/html_split/_0023student_002doutcomes_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #student-outcomes-3.

+ diff --git a/0.0.2/html_split/_0023student_002doutcomes_002d4.html b/0.0.2/html_split/_0023student_002doutcomes_002d4.html new file mode 100644 index 0000000..3e30430 --- /dev/null +++ b/0.0.2/html_split/_0023student_002doutcomes_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #student-outcomes-4.

+ diff --git a/0.0.2/html_split/_0023student_002doutcomes_002d5.html b/0.0.2/html_split/_0023student_002doutcomes_002d5.html new file mode 100644 index 0000000..0a4a7da --- /dev/null +++ b/0.0.2/html_split/_0023student_002doutcomes_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #student-outcomes-5.

+ diff --git a/0.0.2/html_split/_0023student_002doutcomes_002d6.html b/0.0.2/html_split/_0023student_002doutcomes_002d6.html new file mode 100644 index 0000000..c5c4ac0 --- /dev/null +++ b/0.0.2/html_split/_0023student_002doutcomes_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #student-outcomes-6.

+ diff --git a/0.0.2/html_split/_0023student_002doutcomes_002d7.html b/0.0.2/html_split/_0023student_002doutcomes_002d7.html new file mode 100644 index 0000000..5233f94 --- /dev/null +++ b/0.0.2/html_split/_0023student_002doutcomes_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #student-outcomes-7.

+ diff --git a/0.0.2/html_split/_0023student_002doutcomes_002d8.html b/0.0.2/html_split/_0023student_002doutcomes_002d8.html new file mode 100644 index 0000000..f19fd7f --- /dev/null +++ b/0.0.2/html_split/_0023student_002doutcomes_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #student-outcomes-8.

+ diff --git a/0.0.2/html_split/_0023student_002doutcomes_002d9.html b/0.0.2/html_split/_0023student_002doutcomes_002d9.html new file mode 100644 index 0000000..735a21f --- /dev/null +++ b/0.0.2/html_split/_0023student_002doutcomes_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #student-outcomes-9.

+ diff --git a/0.0.2/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html b/0.0.2/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html new file mode 100644 index 0000000..4801178 --- /dev/null +++ b/0.0.2/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html @@ -0,0 +1,40 @@ + + + + + + +#summary-of-modules-and-topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #summary-of-modules-and-topics.

+ diff --git a/0.0.2/html_split/_0023testing_002dand_002ddebugging.html b/0.0.2/html_split/_0023testing_002dand_002ddebugging.html new file mode 100644 index 0000000..1ae096d --- /dev/null +++ b/0.0.2/html_split/_0023testing_002dand_002ddebugging.html @@ -0,0 +1,40 @@ + + + + + + +#testing-and-debugging (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #testing-and-debugging.

+ diff --git a/0.0.2/html_split/_0023tooling.html b/0.0.2/html_split/_0023tooling.html new file mode 100644 index 0000000..634a8dc --- /dev/null +++ b/0.0.2/html_split/_0023tooling.html @@ -0,0 +1,40 @@ + + + + + + +#tooling (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #tooling.

+ diff --git a/0.0.2/html_split/_0023topic_002dintroduction.html b/0.0.2/html_split/_0023topic_002dintroduction.html new file mode 100644 index 0000000..742d5d9 --- /dev/null +++ b/0.0.2/html_split/_0023topic_002dintroduction.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #topic-introduction.

+ diff --git a/0.0.2/html_split/_0023topic_002dintroduction_002d1.html b/0.0.2/html_split/_0023topic_002dintroduction_002d1.html new file mode 100644 index 0000000..a110644 --- /dev/null +++ b/0.0.2/html_split/_0023topic_002dintroduction_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #topic-introduction-1.

+ diff --git a/0.0.2/html_split/_0023topic_002dintroduction_002d2.html b/0.0.2/html_split/_0023topic_002dintroduction_002d2.html new file mode 100644 index 0000000..986bf37 --- /dev/null +++ b/0.0.2/html_split/_0023topic_002dintroduction_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #topic-introduction-2.

+ diff --git a/0.0.2/html_split/_0023topic_002dintroduction_002d3.html b/0.0.2/html_split/_0023topic_002dintroduction_002d3.html new file mode 100644 index 0000000..3d14fd9 --- /dev/null +++ b/0.0.2/html_split/_0023topic_002dintroduction_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #topic-introduction-3.

+ diff --git a/0.0.2/html_split/_0023topic_002dintroduction_002d4.html b/0.0.2/html_split/_0023topic_002dintroduction_002d4.html new file mode 100644 index 0000000..c73a236 --- /dev/null +++ b/0.0.2/html_split/_0023topic_002dintroduction_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #topic-introduction-4.

+ diff --git a/0.0.2/html_split/_0023use_002dof_002dthis_002ddocument.html b/0.0.2/html_split/_0023use_002dof_002dthis_002ddocument.html new file mode 100644 index 0000000..68d835d --- /dev/null +++ b/0.0.2/html_split/_0023use_002dof_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#use-of-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #use-of-this-document.

+ diff --git a/0.0.2/html_split/_0023user_002ddefined_002dtypes_002dclasses.html b/0.0.2/html_split/_0023user_002ddefined_002dtypes_002dclasses.html new file mode 100644 index 0000000..04771a9 --- /dev/null +++ b/0.0.2/html_split/_0023user_002ddefined_002dtypes_002dclasses.html @@ -0,0 +1,40 @@ + + + + + + +#user-defined-types-classes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #user-defined-types-classes.

+ diff --git a/0.0.2/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html b/0.0.2/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html new file mode 100644 index 0000000..f4b9435 --- /dev/null +++ b/0.0.2/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html @@ -0,0 +1,40 @@ + + + + + + +#working-group-documents-related-to-c-teaching-guidelines (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

The node you are looking for is at #working-group-documents-related-to-c-teaching-guidelines.

+ diff --git a/0.0.2/html_split/index.html b/0.0.2/html_split/index.html new file mode 100644 index 0000000..c4e5ff0 --- /dev/null +++ b/0.0.2/html_split/index.html @@ -0,0 +1,240 @@ + + + + + +Top (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +

Table of Contents

+ +
+ + +
+ + + +
+

Guidelines for Teaching C++

+ + + + + + + + + + + + + + + + + + +
+ + + + + + diff --git a/0.0.2/html_split/unknown_node.html b/0.0.2/html_split/unknown_node.html new file mode 100644 index 0000000..5a652e5 --- /dev/null +++ b/0.0.2/html_split/unknown_node.html @@ -0,0 +1,763 @@ + + + + + +Guidelines for Teaching C++ + + + + + + + + + + + + + + + + +
+

+   [Contents]

+
+
+

8.1.5.1 Background/Required Knowledge

+

A student is able to: * identify special member functions +[C++ object model: +special member functions] +

+

It helps when a student is able to: * use move semantics +[C++ object model: move +semantics] * explain the rule of zero +[C++ object model: rule-of-zero] +* explain the rule of five [C++ +object model: rule-of-five] +

+
+

+   [Contents]

+
+

8.1.5.2 Student outcomes

+

A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

+

A student should be able to: * explain when they have to implement the +copy operations for their own type * Copy constructor * Copy assignment +operator * implement copy operations for their own types * +Optional: explain when copying with basic and strong exception +guarantees is useful +

+
+

+   [Contents]

+
+

8.1.5.3 Caveats

+

This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

+
    +
  • Intricacies when implementing copy operations: +
      +
    • Examples of how not to write copy operations (e.g., C++03 +std::auto_ptr) +
    + +
+ +
+

+   [Contents]

+
+

8.1.5.4 Points to cover

+

This section lists important details for each point. +

+
    +
  • Copy constructors and copy assignment operators +
      +
    • How compiler generates default copy operations +
    • =default, =delete (No copy) +
    • How-to write your own copy operations +
    • Rule-of-five +
    • Copy assignment operators can be ref-qualified to avoid assigning into +temporary objects. +
    + +
+ +
+

+   [Contents]

+
+

8.2.1 Overview

+

Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

+ + + + + +
LevelObjectives
Foundationalusing and understanding UDLs
Mainimplementing your own UDLs
AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
+ +
+

+   [Contents]

+
+

8.2.2 Motivation

+

Why is this important? Why do we want to learn/teach this +topic? +

+
    +
  • Allows clearer expression of intent in C++. +
  • std::string: "Hello, world!"s +
  • std::chrono: 3h + 10min + 5s +
+ +
+

+   [Contents]

+
+

8.2.3 Topic introduction

+

Very brief introduction to the topic. +

+
    +
  • Explain the existence of user defined literals. Example: +12min + 17s is terse, expressive and type safe. +
+ +
+

+   [Contents]

+
+

8.2.4.1 Background/Required Knowledge

+

A student: * knows how to form numeric literals, e.g., 1.5f means +a float of value 1.5. * is familiar with the major C++ +types: * bool (Boolean type) * int (Integer type) * +double (Floating-point type) * std::string (Text type) * +std::vector (Collection type) * knows that namespaces exist, and +namespace std. * knows what using-declarations and +using-directives are. +[C++ object +model: declarations] +

+
+

+   [Contents]

+
+

8.2.4.2 Student outcomes

+

A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

+

A student should be able to: +

+
    +
  1. use using namespace std::string_literals[1]. +
  2. recognise UDLs in code that they are reading. +
  3. figure out which UDL definitions for a used type exist. +
  4. identify parts of the standard library that make use of UDLs. +
  5. prevent the dangers of temporaries created with "blah"s as well +as with std::string{"blah"}. +
  6. effectively selects the right set of namespaces in using-directives from +the sub-namespaces std::literals. +
+ +

[1]: explain that it’s okay to use a using-directive to “activate” +UDLs. +

+
+

+   [Contents]

+
+

8.2.4.3 Caveats

+

This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

+
    +
  • A student gets confused by the similarities and differences between +built-in suffixes and UDLs and between UDLs from different namespaces. +
  • A student “activates” two suffixes with the same signature from +different namespaces. +
+ +
+

+   [Contents]

+
+

8.2.4.4 Points to cover

+

This section lists important details for each point. +

+
+

+   [Contents]

+
+

8.2.5.1 Background/Required Knowledge

+
    +
  • All of the above. +
+ +
+

+   [Contents]

+
+

8.2.5.2 Student outcomes

+

A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

+

A student should be able to: +

+
    +
  1. write a UDL operator of their own. +
  2. separate unrelated UDLs into distinct namespaces. +
+ +
+

+   [Contents]

+
+

8.2.5.3 Caveats

+

This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

+

No caveats at present. #### Points to cover +

+

This section lists important details for each point. +

+

No caveats at present. ### Advanced {#udl-advanced} +

+

These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

+
+

+   [Contents]

+
+

8.3.1 Overview

+

Functions in C++ may be overloaded with different numbers and types of +parameters. It may be of value to specify default arguments for some +number of parameters, to allow a caller to avoid specifying arguments +that rarely change, or to enable expanding the set of parameters while +maintaining backward compatibility with existing callers. +

+ + + + + +
LevelObjective
FoundationalDefine and use functions with default arguments
Main
Advancedrefinement of default arguments through multiple declarations
+ +
+

+   [Contents]

+
+

8.3.2 Motivation

+

Default arguments allow the omission of arguments with obvious or common +values. Also may be utilized to extend an existing function signature +without forcing changes to existing calling code. +

+
+

+   [Contents]

+
+

8.3.3 Topic introduction

+

Explain how default arguments work and how to define them. +

+
+

+   [Contents]

+
+

8.3.4.1 Background/Required Knowledge

+

A student is able to: +

+ + +
+

+   [Contents]

+
+

8.3.4.2 Student outcomes

+

A student should be able to: +

+
    +
  1. Call to a function with a default argument with or without that argument +specified +
  2. Declare a function with a default argument, and omit the default in the +definition’s signature +
  3. Explain when the lifetime of a default argument begins and ends +
+ +
+

+   [Contents]

+
+

8.3.4.3 Caveats

+
    +
  • When no forward-declaration exists, the definition serves as the +declaration +
  • When multiple declarations exist, only one may specify the default for +any particular parameter, but multiple declarations may specify the +defaults for different parameters. +
  • Additional default values may be specified for other parameters in +repeat declarations +
  • Calling an overloaded function with fewer arguments may be ambiguous +with regard to an overload with default arguments +
+ +
+

+   [Contents]

+
+

8.3.4.4 Points to cover

+
    +
  • Default value may only be specified once for each parameter among all +declarations +
  • Default values must start from the rightmost parameter and continue +leftward without gaps +
  • Considerations of when to use default arguments vs overload set +
+ +
+

+   [Contents]

+
+

8.3.5.2 Student outcomes

+

A student should be able to: +

+
+

+   [Contents]

+
+

8.3.5.3 Caveats

+ +
+

+   [Contents]

+
+

8.3.5.4 Points to cover

+ +
+

+   [Contents]

+
+

8.3.6 Advanced

+

Subsequent redeclarations of the same function may add default argument +values, which are then usable by callers. Though a single parameter +cannot be given a default argument twice in the same translation unit, +it is legal, though ill-advised, to give the same function different +default arguments in different translation units. +

+
+

+   [Contents]

+
+

8.4.1 Overview

+ + + + + +
LevelObjectives
FoundationalDefine and use requires-expressions to check satisfaction of +expressions by given parameters
MainDefine and use requires-expressions to check properties of +expressions
Advanced
+ +
+

+   [Contents]

+
+

8.4.2 Motivation

+

Requires-expressions allow a developer to perform compile-time +evaluation on the validity of other expressions. These are fundamental +to the ability to write concepts. +[Compile-time programming: +concepts] +

+
+

+   [Contents]

+
+

8.5 Topic introduction

+

Requires-expressions are compile-time predicates which evaluate to true +when their specified set of expressions are all valid for a given set of +inputs. +

+ + + + + + +
+

+   [Contents]

+
+

8.5.1.1 Background/Required Knowledge

+

A student is able to: +

+ + +

It is helpful if: +

+
    +
  • The student is aware that attempting to specialize the template with +types or values which do not match otherwise unstated assumptions will +cause errors within the template. +
+ +
+

+   [Contents]

+
+

8.5.1.2 Student outcomes

+

A student should be able to: +

+
    +
  1. Write a simple-requirement to assert the validity of an expression +
  2. Write a type-requirement to check the existence of a type by its +identifier +
  3. Write a compound-requirement to test the resulting type of an expression +
  4. Write a nested-requirement to test the constexpr value of an operation, +as opposed to just the syntactic validity +
  5. Use a requires-expression within a concept, requires-clause, or +if constexpr condition +
+ +
+

+   [Contents]

+
+

8.5.1.3 Caveats

+

To require that expressions, which evaluate to a boolean value like +sizeof(t) == 4, evaluate to true a nested-requirement is +needed (e.g., requires sizeof(t) == 4;). Omitting the +requires results in a simple-requirement, which is satisfied +based purely on syntactic validity, not on the result of the operation. +

+
+

+   [Contents]

+
+

8.5.1.4 Points to cover

+
    +
  • All requires-expression requirements terminate with a semicolon. +
  • simple-requirements are used to check that an expression is well-formed. +
  • nested-requirements are introduced with requires and primarily +used to check the result of an expression computable by the compiler, +including concepts or other requires-expressions. +
  • type-requirements are introduced with typename and used to verify +the existence of a type with a particular identifier. +
  • compound-requirements are enclosed in braces and can be used to check +the resulting type of an expression. +
  • Checks are performed by the compiler, not at run time. +
  • If covering usage of requires-expression with requires-clause, +[Compile-time +programming: requires clause] demonstrate requires requires and +show how to ever avoid writing it by using a concept. +[Compile-time programming: +concepts] +
+ +
+

+   [Contents]

+
+

8.5.2.1 Background/required knowledge

+
    +
  • All of the above. +
  • Knowledge of noexcept +
+ +

A student is able to: +

+ + +
+

+   [Contents]

+
+

8.5.2.2 Student outcomes

+

A student should be able to: +

+
    +
  1. Write compound-requirements which test the noexceptness of an +expression. +
  2. Use a concept as the target of a compound-requirement. +
+ +
+

+   [Contents]

+
+

8.5.2.3 Caveats

+ +
+

+   [Contents]

+
+

8.5.2.4 Points to cover

+
    +
  • Compound-requirements allow the optional ability to test whether an +expression is marked as noexcept, by using a trailing +noexcept keyword. +
+ +
struct S
+{
+    void foo() noexcept {}
+    void bar() {}
+};
+
+static_assert(requires(S s) { { s.foo() } noexcept; } ); // Succeeds. s.foo() is noexcept
+static_assert(requires(S s) { { s.bar() } noexcept; } ); // Fails. s.bar() is not noexcept
+
+
    +
  • If the return-type-requirement of a compound-requirement is a concept, +that concept is given the resulting type as the first parameter, +followed by the specified parameters in the compound-requirement. +{ ++x } -> C<int> would substitute +C<decltype((++x)), int> and check that concept C is satisfied for +those parameters. +
+ +
+

+   [Contents]

+
+

8.5.3 Advanced

+ +
+

+   [Contents]

+
+

8.6.1 Overview

+

Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

+ + + + + +
LevelObjectives
FoundationalCalling static_assert with a constant expression
MainUsing static_assert to detect contract violations and +improve error messages
Advanced
+ +
+

+   [Contents]

+
+

8.6.2 Motivation

+

Why is this important? Why do we want to learn/teach this +topic? +

+

static_assert allows the developer to enforce that conditions +which can be checked during compilation will force build errors when +violated. Additionally, they are the best mechanism by which a developer +can pass useful information to other developers regarding what violation +occurred or what must be done, instead. +

+
+

+   [Contents]

+
+

8.6.3 Topic introduction

+

Very brief introduction to the topic. +

+

static_assert is a compile-time evaluated function that asserts +the truth of a supplied predicate, issuing an optional user-supplied +error message if the predicate is false. +

+
+

+   [Contents]

+
+

8.6.4.1 Background/Required Knowledge

+

A student: +

+
    +
  • Should be able to explain the difference between code evaluated at +compile-time and run-time +
  • Should be able to cite some examples of compile-time known information, +such as sizeof(T) +
+ +
+

+   [Contents]

+
+

8.6.4.2 Student outcomes

+

A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

+

A student should be able to: +

+
    +
  1. Assert the expected size of a structure using static_assert +
+ +
+

+   [Contents]

+
+

8.6.4.3 Caveats

+

This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

+
+

+   [Contents]

+
+

8.6.4.4 Points to cover

+

This section lists important details for each point. +

+
    +
  • X +
  • In addition to what is wrong, a good error message will inform the user +of how to correct it +
+ +
+

+   [Contents]

+
+

8.6.5.1 Background/Required Knowledge

+
    +
  • All of the above. +
  • General understanding of compile-time requirements +
+ +
+

+   [Contents]

+
+

8.6.5.2 Student outcomes

+

A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

+

A student should be able to: +

+
    +
  1. Utilize static_assert to verify preconditions of a meta-function +
  2. Utilize static_assert to verify the results of meta-functions for +known values +
+ +
+

+   [Contents]

+
+

8.6.5.3 Caveats

+

This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

+
+

+   [Contents]

+
+

8.6.5.4 Points to cover

+

This section lists important details for each point. +

+
    +
  • When writing a meta-function, use static_assert to test the +results +
  • Write static_assert calls at the scope of the code they are +guarding +
+ +
template<typename T>
+struct container {
+    std::map<int, T> vals;
+
+    // Test location #1
+    static_assert(
+        std::is_default_constructible_v<T>,
+        "container type T must be default constructible");i
+
+    void add(int key, T const& t) {
+        // Test location #2
+        static_assert(
+            std::is_default_constructible_v<T>,
+            "container type T must be default constructible");
+        // std::map::operator[] requires default constructible type for 
+        // the value. This will cause a build failure deep in the 
+        // implementation of std::map, when T is not default constructible
+        vals[key] = t;
+    }
+};
+
+struct NoDefCtor {
+    NoDefCtor() = delete;
+    NoDefCtor(double d) {}
+};
+
+container<NoDefCtor> c; // If Test #1 was omitted, this would succeed
+// This is ill-formed. Test #2 would catch this and provide a better 
+// error message for the user
+c.add(42, NoDefCtor(1.0)); 
+
+
+

+   [Contents]

+
+

8.6.6 Advanced

+

These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

+ + + + + diff --git a/latest/guidelines.epub b/latest/guidelines.epub index cc39e0168181ce45a8ef09c2ef4a125eb8bf0fb0..37560632ffe0c6bd4b4c73e8834650fcf6940713 100644 GIT binary patch delta 4184 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 delta 4162 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 SjtlsOxP`k&t>t;@`u_l13ZTLO diff --git a/latest/html/index.html b/latest/html/index.html index 1f598e8..bf68f9b 100644 --- a/latest/html/index.html +++ b/latest/html/index.html @@ -106,7 +106,7 @@

Guidelines for Teaching C++

-

Version 0.0.1

+

Version 0.0.2

SG20 (ISO C++ Study Group on Education)

@@ -203,9 +203,9 @@

<

The most recent version of this document is available as an online HTML document at: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/latest/.

The version of the document that you are currently reading is available in the following formats:

    -
  1. online (HTML) format as a single large HTML document: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.1/html [later to be https://cplusplus.github.io/SG20/0.0.1/html?]

  2. -
  3. EPUB format: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.1/guidelines.epub [later to be https:/cplusplus.github.io/SG20/0.0.1/guidelines.epub?]

  4. -
  5. online (HTML) format, split across multiple HTML documents: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.1/html_split/ [later to be https://cplusplus.github.io/SG20/0.0.1/html_split/?] [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

  6. +
  7. online (HTML) format as a single large HTML document: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.2/html [later to be https://cplusplus.github.io/SG20/0.0.2/html?]

  8. +
  9. EPUB format: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.2/guidelines.epub [later to be https:/cplusplus.github.io/SG20/0.0.2/guidelines.epub?]

  10. +
  11. online (HTML) format, split across multiple HTML documents: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.2/html_split/ [later to be https://cplusplus.github.io/SG20/0.0.2/html_split/?] [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

Older versions of this document are also available. In general version ver is available at https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/ver. For example, version v0.1.0 (assuming that this version exists) would be available at [later to be https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/v0.1.0?].

2 Disclaimer

@@ -1384,7 +1384,8 @@

11 Contributors
Christopher Di Bella
 Florian Sattler
 Michael Adams
-rwdougla
+rwdougla +vulder

12 How To Contribute

Before attempting to contribute any content for consideration for inclusion in this document, please read the information below and and the referenced documents as appropriate.

All contributions to this project must be made in accordance with the license in section License. This teaching-guidelines document only offers guidance on teaching C++ as it is specified in the current version of the C++ standard. So, content should be presented relative to the most-recently ratified version of the standard. A detailed explanation of how to present the material for a topic is given in:

diff --git a/latest/html_split/Contributors.html b/latest/html_split/Contributors.html index 53ba0ef..8adb4b1 100644 --- a/latest/html_split/Contributors.html +++ b/latest/html_split/Contributors.html @@ -49,6 +49,7 @@ Florian Sattler Michael Adams rwdougla +vulder diff --git a/latest/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html b/latest/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html index 0a9cb9b..a235793 100644 --- a/latest/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html +++ b/latest/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html @@ -54,17 +54,17 @@

  1. online (HTML) format as a single large HTML document: -https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.1/html -[later to be https://cplusplus.github.io/SG20/0.0.1/html?] +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.2/html +[later to be https://cplusplus.github.io/SG20/0.0.2/html?]
  2. EPUB format: -https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.1/guidelines.epub +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.2/guidelines.epub [later to be -https:/cplusplus.github.io/SG20/0.0.1/guidelines.epub?] +https:/cplusplus.github.io/SG20/0.0.2/guidelines.epub?]
  3. online (HTML) format, split across multiple HTML documents: -https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.1/html_split/ -[later to be https://cplusplus.github.io/SG20/0.0.1/html_split/?] +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.2/html_split/ +[later to be https://cplusplus.github.io/SG20/0.0.2/html_split/?] [Note: The support for this format needs more work (in order to beautify and fix linking issues).] From 8f06986f94d1819966c7a2d2e2ca6394dab7efaf Mon Sep 17 00:00:00 2001 From: vulder Date: Sun, 31 Oct 2021 19:35:23 +0000 Subject: [PATCH 06/21] deploy: c9e59f78dec4413fdc007e8ce787763cd04c5734 --- 0.0.3/guidelines.epub | Bin 0 -> 31524 bytes 0.0.3/html/images/cpp_logo.png | Bin 0 -> 23613 bytes 0.0.3/html/index.html | 1430 +++++++++++++++++ 0.0.3/html_split/Advanced.html | 60 + .../Background_002fRequired-Knowledge.html | 65 + .../Background_002frequired-knowledge.html | 54 + ...ments-and-Control_002dFlow-Constructs.html | 60 + 0.0.3/html_split/Building.html | 57 + ...002b_002b-object-model-copy-semantics.html | 69 + 0.0.3/html_split/Caveats.html | 62 + 0.0.3/html_split/Compilation-Model.html | 62 + .../Compile_002dTime-Computation.html | 57 + .../Context-and-Aim-of-This-Guide.html | 76 + .../Contributing-to-This-Document.html | 55 + 0.0.3/html_split/Contributors.html | 58 + ...ed-Information-for-Modules-and-Topics.html | 67 + 0.0.3/html_split/Disclaimer.html | 55 + 0.0.3/html_split/Error-Handling.html | 59 + .../Examples-of-Course-Curricula.html | 53 + .../External-ie-Non-Standard-Libraries.html | 56 + ...005fassert-with-a-constant-expression.html | 62 + ...dational-How-and-when-are-copies-made.html | 63 + 0.0.3/html_split/Foundational-Using-UDLs.html | 61 + ...ning-functions-with-default-arguments.html | 62 + ...onal-Writing-requires_002dexpressions.html | 60 + .../Functions-default-argument.html | 67 + .../Functions-user_002ddefined-literals.html | 66 + 0.0.3/html_split/Functions.html | 61 + .../Generic-Programming-Templates.html | 61 + 0.0.3/html_split/Glossary.html | 58 + 0.0.3/html_split/How-To-Contribute.html | 89 + .../Inheritance-and-Class-Hierarchies.html | 57 + 0.0.3/html_split/License.html | 100 ++ .../Main-Advanced-requirements.html | 60 + .../Main-Contracts-and-static_005fassert.html | 61 + ...ting-user_002ddefined-copy-operations.html | 62 + 0.0.3/html_split/Main-implementing-UDLs.html | 59 + 0.0.3/html_split/Main-implementing-_002a.html | 62 + ..._002derror-handling-static_005fassert.html | 67 + .../Module-name-Requires-Expressions.html | 59 + 0.0.3/html_split/Motivation.html | 57 + ...-Recent-Version-and-Alternate-Formats.html | 84 + .../Organization-of-This-Document.html | 101 ++ 0.0.3/html_split/Overview.html | 61 + 0.0.3/html_split/Points-to-cover.html | 69 + 0.0.3/html_split/Preprocessor.html | 58 + .../References-on-Learning-Outcomes.html | 71 + 0.0.3/html_split/References.html | 59 + 0.0.3/html_split/Software-Design.html | 56 + 0.0.3/html_split/Standard-Library.html | 57 + 0.0.3/html_split/Student-outcomes.html | 73 + .../Summary-of-Modules-and-Topics.html | 106 ++ 0.0.3/html_split/Testing-and-Debugging.html | 59 + 0.0.3/html_split/Tooling.html | 57 + 0.0.3/html_split/Topic-introduction.html | 55 + 0.0.3/html_split/Use-of-This-Document.html | 58 + .../User_002dDefined-Types-Classes.html | 69 + ...ed-to-C_002b_002b-Teaching-Guidelines.html | 69 + 0.0.3/html_split/_0023advanced.html | 40 + 0.0.3/html_split/_0023advanced_002d1.html | 40 + 0.0.3/html_split/_0023advanced_002d2.html | 40 + 0.0.3/html_split/_0023advanced_002d3.html | 40 + ..._0023backgroundrequired_002dknowledge.html | 40 + ...ackgroundrequired_002dknowledge_002d1.html | 40 + ...ackgroundrequired_002dknowledge_002d2.html | 40 + ...ackgroundrequired_002dknowledge_002d3.html | 40 + ...ackgroundrequired_002dknowledge_002d4.html | 40 + ...ackgroundrequired_002dknowledge_002d5.html | 40 + ...ackgroundrequired_002dknowledge_002d6.html | 40 + ...ackgroundrequired_002dknowledge_002d7.html | 40 + ...ackgroundrequired_002dknowledge_002d8.html | 40 + ...ackgroundrequired_002dknowledge_002d9.html | 40 + ...d_002dcontrol_002dflow_002dconstructs.html | 40 + 0.0.3/html_split/_0023building.html | 40 + ...ject_002dmodel_002dcopy_002dsemantics.html | 40 + 0.0.3/html_split/_0023caveats.html | 40 + 0.0.3/html_split/_0023caveats_002d1.html | 40 + 0.0.3/html_split/_0023caveats_002d2.html | 40 + 0.0.3/html_split/_0023caveats_002d3.html | 40 + 0.0.3/html_split/_0023caveats_002d4.html | 40 + 0.0.3/html_split/_0023caveats_002d5.html | 40 + 0.0.3/html_split/_0023caveats_002d6.html | 40 + 0.0.3/html_split/_0023caveats_002d7.html | 40 + 0.0.3/html_split/_0023caveats_002d8.html | 40 + 0.0.3/html_split/_0023caveats_002d9.html | 40 + .../_0023compilation_002dmodel.html | 40 + ..._0023compile_002dtime_002dcomputation.html | 40 + ...and_002daim_002dof_002dthis_002dguide.html | 40 + ...ributing_002dto_002dthis_002ddocument.html | 40 + 0.0.3/html_split/_0023contributors.html | 40 + ...02dfor_002dmodules_002dand_002dtopics.html | 40 + 0.0.3/html_split/_0023disclaimer.html | 40 + 0.0.3/html_split/_0023error_002dhandling.html | 40 + ...mples_002dof_002dcourse_002dcurricula.html | 40 + ...2e_002dnon_002dstandard_002dlibraries.html | 40 + ...ith_002da_002dconstant_002dexpression.html | 40 + ..._002dwhen_002dare_002dcopies_002dmade.html | 40 + ...ns_002dwith_002ddefault_002darguments.html | 40 + .../_0023foundational_002dusing_002dudls.html | 40 + ...dwriting_002drequires_002dexpressions.html | 40 + 0.0.3/html_split/_0023functions.html | 40 + ...023functions_002ddefault_002dargument.html | 40 + ...ons_002duser_002ddefined_002dliterals.html | 40 + ...generic_002dprogramming_002dtemplates.html | 40 + 0.0.3/html_split/_0023glossary.html | 40 + .../_0023how_002dto_002dcontribute.html | 40 + ...nce_002dand_002dclass_002dhierarchies.html | 40 + 0.0.3/html_split/_0023license.html | 40 + ...023main_002dadvanced_002drequirements.html | 40 + ...ntracts_002dand_002dstatic_005fassert.html | 40 + .../_0023main_002dimplementing.html | 40 + .../_0023main_002dimplementing_002dudls.html | 40 + ...r_002ddefined_002dcopy_002doperations.html | 40 + ...or_002dhandling_002dstatic_005fassert.html | 40 + ...002dname_002drequires_002dexpressions.html | 40 + 0.0.3/html_split/_0023motivation.html | 40 + 0.0.3/html_split/_0023motivation_002d1.html | 40 + 0.0.3/html_split/_0023motivation_002d2.html | 40 + 0.0.3/html_split/_0023motivation_002d3.html | 40 + 0.0.3/html_split/_0023motivation_002d4.html | 40 + ...ion_002dand_002dalternate_002dformats.html | 40 + ...nization_002dof_002dthis_002ddocument.html | 40 + 0.0.3/html_split/_0023overview.html | 40 + 0.0.3/html_split/_0023overview_002d1.html | 40 + 0.0.3/html_split/_0023overview_002d2.html | 40 + 0.0.3/html_split/_0023overview_002d3.html | 40 + 0.0.3/html_split/_0023overview_002d4.html | 40 + .../_0023points_002dto_002dcover.html | 40 + .../_0023points_002dto_002dcover_002d1.html | 40 + .../_0023points_002dto_002dcover_002d2.html | 40 + .../_0023points_002dto_002dcover_002d3.html | 40 + .../_0023points_002dto_002dcover_002d4.html | 40 + .../_0023points_002dto_002dcover_002d5.html | 40 + .../_0023points_002dto_002dcover_002d6.html | 40 + .../_0023points_002dto_002dcover_002d7.html | 40 + .../_0023points_002dto_002dcover_002d8.html | 40 + 0.0.3/html_split/_0023preprocessor.html | 40 + 0.0.3/html_split/_0023references.html | 40 + ...nces_002don_002dlearning_002doutcomes.html | 40 + .../html_split/_0023software_002ddesign.html | 40 + .../html_split/_0023standard_002dlibrary.html | 40 + .../html_split/_0023student_002doutcomes.html | 40 + .../_0023student_002doutcomes_002d1.html | 40 + .../_0023student_002doutcomes_002d2.html | 40 + .../_0023student_002doutcomes_002d3.html | 40 + .../_0023student_002doutcomes_002d4.html | 40 + .../_0023student_002doutcomes_002d5.html | 40 + .../_0023student_002doutcomes_002d6.html | 40 + .../_0023student_002doutcomes_002d7.html | 40 + .../_0023student_002doutcomes_002d8.html | 40 + .../_0023student_002doutcomes_002d9.html | 40 + ...002dof_002dmodules_002dand_002dtopics.html | 40 + .../_0023testing_002dand_002ddebugging.html | 40 + 0.0.3/html_split/_0023tooling.html | 40 + .../_0023topic_002dintroduction.html | 40 + .../_0023topic_002dintroduction_002d1.html | 40 + .../_0023topic_002dintroduction_002d2.html | 40 + .../_0023topic_002dintroduction_002d3.html | 40 + .../_0023topic_002dintroduction_002d4.html | 40 + ..._0023use_002dof_002dthis_002ddocument.html | 40 + ...ser_002ddefined_002dtypes_002dclasses.html | 40 + ...dto_002dc_002dteaching_002dguidelines.html | 40 + 0.0.3/html_split/index.html | 240 +++ 0.0.3/html_split/unknown_node.html | 763 +++++++++ index.html | 5 +- latest/images/cpp_logo.png | Bin 0 -> 23613 bytes latest/index.html | 1430 +++++++++++++++++ 167 files changed, 11567 insertions(+), 2 deletions(-) create mode 100644 0.0.3/guidelines.epub create mode 100644 0.0.3/html/images/cpp_logo.png create mode 100644 0.0.3/html/index.html create mode 100644 0.0.3/html_split/Advanced.html create mode 100644 0.0.3/html_split/Background_002fRequired-Knowledge.html create mode 100644 0.0.3/html_split/Background_002frequired-knowledge.html create mode 100644 0.0.3/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html create mode 100644 0.0.3/html_split/Building.html create mode 100644 0.0.3/html_split/C_002b_002b-object-model-copy-semantics.html create mode 100644 0.0.3/html_split/Caveats.html create mode 100644 0.0.3/html_split/Compilation-Model.html create mode 100644 0.0.3/html_split/Compile_002dTime-Computation.html create mode 100644 0.0.3/html_split/Context-and-Aim-of-This-Guide.html create mode 100644 0.0.3/html_split/Contributing-to-This-Document.html create mode 100644 0.0.3/html_split/Contributors.html create mode 100644 0.0.3/html_split/Detailed-Information-for-Modules-and-Topics.html create mode 100644 0.0.3/html_split/Disclaimer.html create mode 100644 0.0.3/html_split/Error-Handling.html create mode 100644 0.0.3/html_split/Examples-of-Course-Curricula.html create mode 100644 0.0.3/html_split/External-ie-Non-Standard-Libraries.html create mode 100644 0.0.3/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html create mode 100644 0.0.3/html_split/Foundational-How-and-when-are-copies-made.html create mode 100644 0.0.3/html_split/Foundational-Using-UDLs.html create mode 100644 0.0.3/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html create mode 100644 0.0.3/html_split/Foundational-Writing-requires_002dexpressions.html create mode 100644 0.0.3/html_split/Functions-default-argument.html create mode 100644 0.0.3/html_split/Functions-user_002ddefined-literals.html create mode 100644 0.0.3/html_split/Functions.html create mode 100644 0.0.3/html_split/Generic-Programming-Templates.html create mode 100644 0.0.3/html_split/Glossary.html create mode 100644 0.0.3/html_split/How-To-Contribute.html create mode 100644 0.0.3/html_split/Inheritance-and-Class-Hierarchies.html create mode 100644 0.0.3/html_split/License.html create mode 100644 0.0.3/html_split/Main-Advanced-requirements.html create mode 100644 0.0.3/html_split/Main-Contracts-and-static_005fassert.html create mode 100644 0.0.3/html_split/Main-Implementing-user_002ddefined-copy-operations.html create mode 100644 0.0.3/html_split/Main-implementing-UDLs.html create mode 100644 0.0.3/html_split/Main-implementing-_002a.html create mode 100644 0.0.3/html_split/Meta_002derror-handling-static_005fassert.html create mode 100644 0.0.3/html_split/Module-name-Requires-Expressions.html create mode 100644 0.0.3/html_split/Motivation.html create mode 100644 0.0.3/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html create mode 100644 0.0.3/html_split/Organization-of-This-Document.html create mode 100644 0.0.3/html_split/Overview.html create mode 100644 0.0.3/html_split/Points-to-cover.html create mode 100644 0.0.3/html_split/Preprocessor.html create mode 100644 0.0.3/html_split/References-on-Learning-Outcomes.html create mode 100644 0.0.3/html_split/References.html create mode 100644 0.0.3/html_split/Software-Design.html create mode 100644 0.0.3/html_split/Standard-Library.html create mode 100644 0.0.3/html_split/Student-outcomes.html create mode 100644 0.0.3/html_split/Summary-of-Modules-and-Topics.html create mode 100644 0.0.3/html_split/Testing-and-Debugging.html create mode 100644 0.0.3/html_split/Tooling.html create mode 100644 0.0.3/html_split/Topic-introduction.html create mode 100644 0.0.3/html_split/Use-of-This-Document.html create mode 100644 0.0.3/html_split/User_002dDefined-Types-Classes.html create mode 100644 0.0.3/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html create mode 100644 0.0.3/html_split/_0023advanced.html create mode 100644 0.0.3/html_split/_0023advanced_002d1.html create mode 100644 0.0.3/html_split/_0023advanced_002d2.html create mode 100644 0.0.3/html_split/_0023advanced_002d3.html create mode 100644 0.0.3/html_split/_0023backgroundrequired_002dknowledge.html create mode 100644 0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d1.html create mode 100644 0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d2.html create mode 100644 0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d3.html create mode 100644 0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d4.html create mode 100644 0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d5.html create mode 100644 0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d6.html create mode 100644 0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d7.html create mode 100644 0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d8.html create mode 100644 0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d9.html create mode 100644 0.0.3/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html create mode 100644 0.0.3/html_split/_0023building.html create mode 100644 0.0.3/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html create mode 100644 0.0.3/html_split/_0023caveats.html create mode 100644 0.0.3/html_split/_0023caveats_002d1.html create mode 100644 0.0.3/html_split/_0023caveats_002d2.html create mode 100644 0.0.3/html_split/_0023caveats_002d3.html create mode 100644 0.0.3/html_split/_0023caveats_002d4.html create mode 100644 0.0.3/html_split/_0023caveats_002d5.html create mode 100644 0.0.3/html_split/_0023caveats_002d6.html create mode 100644 0.0.3/html_split/_0023caveats_002d7.html create mode 100644 0.0.3/html_split/_0023caveats_002d8.html create mode 100644 0.0.3/html_split/_0023caveats_002d9.html create mode 100644 0.0.3/html_split/_0023compilation_002dmodel.html create mode 100644 0.0.3/html_split/_0023compile_002dtime_002dcomputation.html create mode 100644 0.0.3/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html create mode 100644 0.0.3/html_split/_0023contributing_002dto_002dthis_002ddocument.html create mode 100644 0.0.3/html_split/_0023contributors.html create mode 100644 0.0.3/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html create mode 100644 0.0.3/html_split/_0023disclaimer.html create mode 100644 0.0.3/html_split/_0023error_002dhandling.html create mode 100644 0.0.3/html_split/_0023examples_002dof_002dcourse_002dcurricula.html create mode 100644 0.0.3/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html create mode 100644 0.0.3/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html create mode 100644 0.0.3/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html create mode 100644 0.0.3/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html create mode 100644 0.0.3/html_split/_0023foundational_002dusing_002dudls.html create mode 100644 0.0.3/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html create mode 100644 0.0.3/html_split/_0023functions.html create mode 100644 0.0.3/html_split/_0023functions_002ddefault_002dargument.html create mode 100644 0.0.3/html_split/_0023functions_002duser_002ddefined_002dliterals.html create mode 100644 0.0.3/html_split/_0023generic_002dprogramming_002dtemplates.html create mode 100644 0.0.3/html_split/_0023glossary.html create mode 100644 0.0.3/html_split/_0023how_002dto_002dcontribute.html create mode 100644 0.0.3/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html create mode 100644 0.0.3/html_split/_0023license.html create mode 100644 0.0.3/html_split/_0023main_002dadvanced_002drequirements.html create mode 100644 0.0.3/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html create mode 100644 0.0.3/html_split/_0023main_002dimplementing.html create mode 100644 0.0.3/html_split/_0023main_002dimplementing_002dudls.html create mode 100644 0.0.3/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html create mode 100644 0.0.3/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html create mode 100644 0.0.3/html_split/_0023module_002dname_002drequires_002dexpressions.html create mode 100644 0.0.3/html_split/_0023motivation.html create mode 100644 0.0.3/html_split/_0023motivation_002d1.html create mode 100644 0.0.3/html_split/_0023motivation_002d2.html create mode 100644 0.0.3/html_split/_0023motivation_002d3.html create mode 100644 0.0.3/html_split/_0023motivation_002d4.html create mode 100644 0.0.3/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html create mode 100644 0.0.3/html_split/_0023organization_002dof_002dthis_002ddocument.html create mode 100644 0.0.3/html_split/_0023overview.html create mode 100644 0.0.3/html_split/_0023overview_002d1.html create mode 100644 0.0.3/html_split/_0023overview_002d2.html create mode 100644 0.0.3/html_split/_0023overview_002d3.html create mode 100644 0.0.3/html_split/_0023overview_002d4.html create mode 100644 0.0.3/html_split/_0023points_002dto_002dcover.html create mode 100644 0.0.3/html_split/_0023points_002dto_002dcover_002d1.html create mode 100644 0.0.3/html_split/_0023points_002dto_002dcover_002d2.html create mode 100644 0.0.3/html_split/_0023points_002dto_002dcover_002d3.html create mode 100644 0.0.3/html_split/_0023points_002dto_002dcover_002d4.html create mode 100644 0.0.3/html_split/_0023points_002dto_002dcover_002d5.html create mode 100644 0.0.3/html_split/_0023points_002dto_002dcover_002d6.html create mode 100644 0.0.3/html_split/_0023points_002dto_002dcover_002d7.html create mode 100644 0.0.3/html_split/_0023points_002dto_002dcover_002d8.html create mode 100644 0.0.3/html_split/_0023preprocessor.html create mode 100644 0.0.3/html_split/_0023references.html create mode 100644 0.0.3/html_split/_0023references_002don_002dlearning_002doutcomes.html create mode 100644 0.0.3/html_split/_0023software_002ddesign.html create mode 100644 0.0.3/html_split/_0023standard_002dlibrary.html create mode 100644 0.0.3/html_split/_0023student_002doutcomes.html create mode 100644 0.0.3/html_split/_0023student_002doutcomes_002d1.html create mode 100644 0.0.3/html_split/_0023student_002doutcomes_002d2.html create mode 100644 0.0.3/html_split/_0023student_002doutcomes_002d3.html create mode 100644 0.0.3/html_split/_0023student_002doutcomes_002d4.html create mode 100644 0.0.3/html_split/_0023student_002doutcomes_002d5.html create mode 100644 0.0.3/html_split/_0023student_002doutcomes_002d6.html create mode 100644 0.0.3/html_split/_0023student_002doutcomes_002d7.html create mode 100644 0.0.3/html_split/_0023student_002doutcomes_002d8.html create mode 100644 0.0.3/html_split/_0023student_002doutcomes_002d9.html create mode 100644 0.0.3/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html create mode 100644 0.0.3/html_split/_0023testing_002dand_002ddebugging.html create mode 100644 0.0.3/html_split/_0023tooling.html create mode 100644 0.0.3/html_split/_0023topic_002dintroduction.html create mode 100644 0.0.3/html_split/_0023topic_002dintroduction_002d1.html create mode 100644 0.0.3/html_split/_0023topic_002dintroduction_002d2.html create mode 100644 0.0.3/html_split/_0023topic_002dintroduction_002d3.html create mode 100644 0.0.3/html_split/_0023topic_002dintroduction_002d4.html create mode 100644 0.0.3/html_split/_0023use_002dof_002dthis_002ddocument.html create mode 100644 0.0.3/html_split/_0023user_002ddefined_002dtypes_002dclasses.html create mode 100644 0.0.3/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html create mode 100644 0.0.3/html_split/index.html create mode 100644 0.0.3/html_split/unknown_node.html create mode 100644 latest/images/cpp_logo.png create mode 100644 latest/index.html diff --git a/0.0.3/guidelines.epub b/0.0.3/guidelines.epub new file mode 100644 index 0000000000000000000000000000000000000000..ffbbf606fcd92242a2d107f8c3bdad91e85a1181 GIT binary patch literal 31524 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 literal 0 HcmV?d00001 diff --git a/0.0.3/html/index.html b/0.0.3/html/index.html new file mode 100644 index 0000000..6659bd3 --- /dev/null +++ b/0.0.3/html/index.html @@ -0,0 +1,1430 @@ + + + + + + + Guidelines for Teaching C++ + + + + + + + + + + + + + + + + + + + + + Guidelines for Teaching C++ + + + + + + + +

    + +
    + +
    + +
    + +
    +

    Guidelines for Teaching C++

    + +

    Version 0.0.3

    + +

    SG20 (ISO C++ Study Group on Education)

    +
    +
    + +
    +
    +
    + +
    +
    + +
    +

    1 Obtaining This Document: The Most Recent Version and Alternate Formats

    +

    The most recent version of this document is available as an online HTML document at: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/latest/.

    +

    The version of the document that you are currently reading is available in the following formats:

    +
      +
    1. online (HTML) format as a single large HTML document: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.3/html [later to be https://cplusplus.github.io/SG20/0.0.3/html?]

    2. +
    3. EPUB format: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.3/guidelines.epub [later to be https:/cplusplus.github.io/SG20/0.0.3/guidelines.epub?]

    4. +
    5. online (HTML) format, split across multiple HTML documents: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.3/html_split/ [later to be https://cplusplus.github.io/SG20/0.0.3/html_split/?] [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

    6. +
    +

    Older versions of this document are also available. In general version ver is available at https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/ver. For example, version v0.1.0 (assuming that this version exists) would be available at [later to be https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/v0.1.0?].

    +

    2 Disclaimer

    +

    This document is intended as a proof of concept to solicit feedback from others. This document is incomplete. This document likely has at least a few errors.

    +

    3 Context and Aim of This Guide

    +

    This document is intended to serve as a resource for instructors to assist in the preparation of courses on C++ in a variety of settings, including university, college, and industry environments. The main objectives of this document are as follows:

    +
      +
    • to provide guidelines for content to be covered by courses of various difficulty levels on C++ (e.g., topics and learning outcomes)
    • +
    • to note some common misunderstandings and problematic points that may be encountered when teaching particular topics
    • +
    • to suggest resources useful for teaching C++
    • +
    • to present examples of curriculum for specific courses
    • +
    +

    This document does not itself provide a curriculum for a single specific course, but is rather a set of guidelines that can be used to prepare curricula for a wide variety of courses that differ in focus and level of sophistication. (This said, however, some links to other documents with examples of curricula for specific courses may be included herein.) This document only intends to target the teaching of the most recently ratified version of the C++ standard. (This said, however, since older versions of this document are also available, these older versions may be of some use to those who need guidance in older versions of the standard, at least versions that do not predate C++20.)

    +

    4 Use of This Document

    +

    [NOTE: This document follows the same license model as the C++ Core Guidelines. The LICENSE document is taken verbatim from the C++ Core Guidelines.] This document is made available under a MIT-style license. In simple terms, this license permits copying, use, modification, and creation of derivative works. A copy of the license is included in the section LICENSE.

    +

    5 Contributing to This Document

    +

    Contributions to this document are welcome. If you would like to help with this project as a contributor, please read the section How to Contribute.

    +

    6 Organization of This Document

    +

    The various concepts (i.e., ideas) to potentially be covered are partitioned into modules. A module is very broad in scope and consists of numerous topics. [Note: Can I suggest that we use the term “area” or “unit” instead of “module”? I think that these other choices are better and also avoid any potential confusion over what is meant by “module” (i.e., C++ term versus plain English term).]

    +

    For each module, topics related to the module are identified. Then, for each topic, learning outcomes are specified. In order to address a wide variety of courses on C++, each topic is addressed at three proficiency levels. These proficiency levels allow each topic to be covered at more than one level of detail. This allows target audiences with different background and learning objectives to be accommodated. The three proficiency levels are as follows:

    +
      +
    • foundational. This level gives the learner the idea that a facility exists, what benefits it offers, and the basic ways of using it. [Note: Isn’t this just “novice”/“beginner”?]

    • +
    • main. This level shows mainstream uses and techniques. For abstraction and organizational mechanisms it also demonstrates how to build them. This level should also give the learner a basic (but not detailed) understanding of how a facility might be implemented so that the learner can have a first-order understanding of any costs involved. [Note: The term “main” is not very descriptive/helpful. Could I suggest using “intermediate”?]

    • +
    • advanced. This level gives information suitable for an expert. For most topics there is an expert level of knowledge that most programmers rarely need and techniques that require detailed understanding of language rules or library implementation.

    • +
    +

    The remainder of this document is organized as follows. The various topics are listed grouped by module. In cases where a topic might be classified into more than one module, the topic is listed under the module of most direct relevance. This is done in order to avoid duplication of content. (In the case that a topic is equally relevant to multiple modules, the decision of which to select is made by a proverbial coin toss.) The order in which modules and topics are presented is not meant to imply any order of coverage in a course. The order in which items are listed is essentially arbitrary.

    +

    7 Summary of Modules and Topics

    +

    In the sections that follow, the various modules and topics are presented. There is one section per module. For each module, a table listing the various topics in that module is provided. The ID for a topic is linked to the detailed coverage of that topic that comes later in the document. If a topic has any learning outcomes at a given proficiency level, this is indicated by a checkmark (“✔️”). If a topic has no learning outcomes (simply because there are not any, not because the information is missing), this is indicated by an em dash (“—”). In the case that the information for a topic is completely missing, a question mark (“?”) symbol is used.

    +

    [NOTE: These topics are taken mostly from the SG20 GitHub repository. They are not intended to be complete in any sense. In fact, by gathering together all topics in one place where they are easily viewed, it is hoped that missing and unbalanced items will be more obvious.]

    +

    7.1 Compilation Model

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Translation Units???
    [?]Headers???
    [?]Modules???
    [?]Name Mangling???
    [?]Phases of Translation???
    [?]Separate Compilation???
    [?]Linkage???
    +

    7.2 Preprocessor

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Preprocessor Metaprogramming???
    [?]Inclusion???
    [?]Macros???
    +

    7.3 Basics Types, Objects, Values, Expressions, Statements, and Control-Flow Constructs

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Constant Objects???
    [?]Declarations and Definitions???
    [?]Selection Constructs (e.g., if, ternary)???
    [?]Looping Constructs (e.g., for, while, etc.)???
    +

    7.4 Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Calling Functions???
    [?]Parameter Passing (e.g., Passing By Value and Reference)???
    [func-args]Default Arguments✔️
    [?]Returning Multiple Values???
    [?]Overloading???
    [udl]User-Defined Literals✔️✔️
    +

    7.5 User-Defined Types (Classes)

    + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Special Member Functions???
    [?]Types???
    [?]Conversions???
    [?]Constructors and Destructors???
    [?]Move/Copy Constructors and Assignment Operators???
    [?]Member Functions???
    [?]Sum Types???
    [?]User-Defined Literals???
    [?]Special Member Functions???
    [?]Guidelines for Special Member Functions (e.g., Rule of Five, Rule of Zero)???
    [copy]Copy Semantics✔️✔️
    [?]Moving and Copying???
    [?]Lambdas???
    +

    7.6 Inheritance and Class Hierarchies

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Virtual Functions???
    [?]Run-Time Type Information???
    +

    7.7 Compile-Time Computation

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Constant Expressions and Constant Evaluation???
    [static-assert]static_assert✔️✔️
    +

    7.8 Generic Programming (Templates)

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Concepts???
    [?]SFINAE???
    [?]Template Metaprogramming???
    [?]Function Templates???
    [?]Requires Clauses???
    [req-expr]Requires Expressions✔️✔️
    +

    7.9 Error Handling

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Classes of Errors???
    [?]errno???
    [?]Error Codes???
    [?]Exception Handling???
    +

    7.10 Standard Library

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Input/Output (I/O)???
    [?]Containers, Iterators, and Algorithms???
    +

    7.11 External (i.e., Non Standard) Libraries

    + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Graphical User Interfaces???
    +

    7.12 Building

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Software Build Tools???
    [?]Strategies for Handling Build Problems???
    +

    7.13 Testing and Debugging

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Source-Level Debuggers???
    [?]Code Sanitizers???
    [?]Test Frameworks???
    [?]Debugging Strategies???
    +

    7.14 Tooling

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Compiler Toolchains???
    [?]IDEs???
    +

    7.15 Software Design

    + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Design by Contract???
    +

    8 Detailed Information for Modules and Topics

    +

    8.1 C++ object model: copy semantics

    +

    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

    +

    8.1.1 Overview

    +

    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

    + ++++ + + + + + + + + + + + + + + + + + + + + +
    LevelObjectives
    Foundationalunderstanding how and when are copies made
    Mainimplementing user-defined copy operations
    Advancedspecial cases: copy elision
    +

    8.1.2 Motivation

    +

    Why is this important? Why do we want to learn/teach this topic?

    +

    Copy semantics allows the user to define how objects of a class get replicated and interact on a value level.

    +

    8.1.3 Topic introduction

    +

    Very brief introduction to the topic.

    +

    Explains when and how objects are copied.

    +

    8.1.4 Foundational: How and when are copies made

    +

    8.1.4.1 Background/Required Knowledge

    +

    A student is able to: * explain what a C++ type is? [C++ object model: types] * explain what an object is? [C++ object model: objects], [C++ object model: constant objects] * define and understand class invariants?

    +

    It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain special member functions [C++ object model: special member functions]

    +

    8.1.4.2 Student outcomes

    +

    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

    +

    A student should be able to:

    +
      +
    1. explain what copy semantics accomplish
    2. +
    +
      +
    • establishing “equivalent” object state in another object
    • +
    +
      +
    1. explain difference between copying a reference and copying a value*
    2. +
    3. explain where copies are made
    4. +
    +

    * In other languages these differences are sometimes referred to as shallow and deep copy.

    +

    8.1.4.3 Caveats

    +

    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

    +
      +
    • Compiler-provided copy operations may result in ownership problems (e.g., char*). These ownership problems can generally be solved by using types whose copy operations have the appropriate semantics, e.g., std::string instead of char* to hold string values.
    • +
    +

    8.1.4.4 Points to cover

    +

    This section lists important details for each point.

    +
      +
    • Principle of copying +
        +
      • Copying of types, which follow the rule of zero
      • +
      • Copying of types, with user defined copy operations
      • +
      • Copying an object does not change the original
      • +
    • +
    • Practical applications +
        +
      • std::unique_ptr (has no copy)
      • +
      • Strings (copies the value)
      • +
    • +
    +

    8.1.5 Main: Implementing user-defined copy operations

    +

    8.1.5.1 Background/Required Knowledge

    +

    A student is able to: * identify special member functions [C++ object model: special member functions]

    +

    It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain the rule of zero [C++ object model: rule-of-zero] * explain the rule of five [C++ object model: rule-of-five]

    +

    8.1.5.2 Student outcomes

    +

    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

    +

    A student should be able to: * explain when they have to implement the copy operations for their own type * Copy constructor * Copy assignment operator * implement copy operations for their own types * Optional: explain when copying with basic and strong exception guarantees is useful

    +

    8.1.5.3 Caveats

    +

    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

    +
      +
    • Intricacies when implementing copy operations: +
        +
      • Examples of how not to write copy operations (e.g., C++03 std::auto_ptr)
      • +
    • +
    +

    8.1.5.4 Points to cover

    +

    This section lists important details for each point.

    +
      +
    • Copy constructors and copy assignment operators +
        +
      • How compiler generates default copy operations
      • +
      • =default, =delete (No copy)
      • +
      • How-to write your own copy operations
      • +
      • Rule-of-five
      • +
      • Copy assignment operators can be ref-qualified to avoid assigning into temporary objects.
      • +
    • +
    +

    8.1.6 Advanced

    +

    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

    +

    When can copies be elided and when does the standard guarantee copy elision. References: * Abseil tip of the Week #166 * cppreference - Copy elision

    +

    8.2 Functions: user-defined literals

    +

    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

    +

    8.2.1 Overview

    +

    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

    + ++++ + + + + + + + + + + + + + + + + + + + + +
    LevelObjectives
    Foundationalusing and understanding UDLs
    Mainimplementing your own UDLs
    AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
    +

    8.2.2 Motivation

    +

    Why is this important? Why do we want to learn/teach this topic?

    +
      +
    • Allows clearer expression of intent in C++.
    • +
    • std::string: "Hello, world!"s
    • +
    • std::chrono: 3h + 10min + 5s
    • +
    +

    8.2.3 Topic introduction

    +

    Very brief introduction to the topic.

    +
      +
    • Explain the existence of user defined literals. Example: 12min + 17s is terse, expressive and type safe.
    • +
    +

    8.2.4 Foundational: Using UDLs

    +

    8.2.4.1 Background/Required Knowledge

    +

    A student: * knows how to form numeric literals, e.g., 1.5f means a float of value 1.5. * is familiar with the major C++ types: * bool (Boolean type) * int (Integer type) * double (Floating-point type) * std::string (Text type) * std::vector (Collection type) * knows that namespaces exist, and namespace std. * knows what using-declarations and using-directives are. [C++ object model: declarations]

    +

    8.2.4.2 Student outcomes

    +

    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

    +

    A student should be able to:

    +
      +
    1. use using namespace std::string_literals[1].
    2. +
    3. recognise UDLs in code that they are reading.
    4. +
    5. figure out which UDL definitions for a used type exist.
    6. +
    7. identify parts of the standard library that make use of UDLs.
    8. +
    9. prevent the dangers of temporaries created with "blah"s as well as with std::string{"blah"}.
    10. +
    11. effectively selects the right set of namespaces in using-directives from the sub-namespaces std::literals.
    12. +
    +

    [1]: explain that it’s okay to use a using-directive to “activate” UDLs.

    +

    8.2.4.3 Caveats

    +

    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

    +
      +
    • A student gets confused by the similarities and differences between built-in suffixes and UDLs and between UDLs from different namespaces.
    • +
    • A student “activates” two suffixes with the same signature from different namespaces.
    • +
    +

    8.2.4.4 Points to cover

    +

    This section lists important details for each point.

    +

    8.2.5 Main: implementing UDLs

    +

    8.2.5.1 Background/Required Knowledge

    +
      +
    • All of the above.
    • +
    +

    8.2.5.2 Student outcomes

    +

    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

    +

    A student should be able to:

    +
      +
    1. write a UDL operator of their own.
    2. +
    3. separate unrelated UDLs into distinct namespaces.
    4. +
    +

    8.2.5.3 Caveats

    +

    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

    +

    No caveats at present. #### Points to cover

    +

    This section lists important details for each point.

    +

    No caveats at present. ### Advanced {#udl-advanced}

    +

    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

    +

    8.3 Functions: default argument

    +

    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

    +

    8.3.1 Overview

    +

    Functions in C++ may be overloaded with different numbers and types of parameters. It may be of value to specify default arguments for some number of parameters, to allow a caller to avoid specifying arguments that rarely change, or to enable expanding the set of parameters while maintaining backward compatibility with existing callers.

    + ++++ + + + + + + + + + + + + + + + + + + + + +
    LevelObjective
    FoundationalDefine and use functions with default arguments
    Main
    Advancedrefinement of default arguments through multiple declarations
    +

    8.3.2 Motivation

    +

    Default arguments allow the omission of arguments with obvious or common values. Also may be utilized to extend an existing function signature without forcing changes to existing calling code.

    +

    8.3.3 Topic introduction

    +

    Explain how default arguments work and how to define them.

    +

    8.3.4 Foundational: Using and defining functions with default arguments

    +

    8.3.4.1 Background/Required Knowledge

    +

    A student is able to:

    + +

    8.3.4.2 Student outcomes

    +

    A student should be able to:

    +
      +
    1. Call to a function with a default argument with or without that argument specified
    2. +
    3. Declare a function with a default argument, and omit the default in the definition’s signature
    4. +
    5. Explain when the lifetime of a default argument begins and ends
    6. +
    +

    8.3.4.3 Caveats

    +
      +
    • When no forward-declaration exists, the definition serves as the declaration
    • +
    • When multiple declarations exist, only one may specify the default for any particular parameter, but multiple declarations may specify the defaults for different parameters.
    • +
    • Additional default values may be specified for other parameters in repeat declarations
    • +
    • Calling an overloaded function with fewer arguments may be ambiguous with regard to an overload with default arguments
    • +
    +

    8.3.4.4 Points to cover

    +
      +
    • Default value may only be specified once for each parameter among all declarations
    • +
    • Default values must start from the rightmost parameter and continue leftward without gaps
    • +
    • Considerations of when to use default arguments vs overload set
    • +
    +

    8.3.5 Main: implementing *

    +

    8.3.5.1 Background/required knowledge

    +
      +
    • All of the above.
    • +
    +

    8.3.5.2 Student outcomes

    +

    A student should be able to:

    +

    8.3.5.3 Caveats

    +

    8.3.5.4 Points to cover

    +

    8.3.6 Advanced

    +

    Subsequent redeclarations of the same function may add default argument values, which are then usable by callers. Though a single parameter cannot be given a default argument twice in the same translation unit, it is legal, though ill-advised, to give the same function different default arguments in different translation units.

    +

    8.4 Module name: Requires Expressions

    +

    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

    +

    8.4.1 Overview

    + ++++ + + + + + + + + + + + + + + + + + + + + +
    LevelObjectives
    FoundationalDefine and use requires-expressions to check satisfaction of expressions by given parameters
    MainDefine and use requires-expressions to check properties of expressions
    Advanced
    +

    8.4.2 Motivation

    +

    Requires-expressions allow a developer to perform compile-time evaluation on the validity of other expressions. These are fundamental to the ability to write concepts. [Compile-time programming: concepts]

    +

    8.5 Topic introduction

    +

    Requires-expressions are compile-time predicates which evaluate to true when their specified set of expressions are all valid for a given set of inputs.

    +

    8.5.1 Foundational: Writing requires-expressions

    +

    8.5.1.1 Background/Required Knowledge

    +

    A student is able to:

    + +

    It is helpful if:

    +
      +
    • The student is aware that attempting to specialize the template with types or values which do not match otherwise unstated assumptions will cause errors within the template.
    • +
    +

    8.5.1.2 Student outcomes

    +

    A student should be able to:

    +
      +
    1. Write a simple-requirement to assert the validity of an expression
    2. +
    3. Write a type-requirement to check the existence of a type by its identifier
    4. +
    5. Write a compound-requirement to test the resulting type of an expression
    6. +
    7. Write a nested-requirement to test the constexpr value of an operation, as opposed to just the syntactic validity
    8. +
    9. Use a requires-expression within a concept, requires-clause, or if constexpr condition
    10. +
    +

    8.5.1.3 Caveats

    +

    To require that expressions, which evaluate to a boolean value like sizeof(t) == 4, evaluate to true a nested-requirement is needed (e.g., requires sizeof(t) == 4;). Omitting the requires results in a simple-requirement, which is satisfied based purely on syntactic validity, not on the result of the operation.

    +

    8.5.1.4 Points to cover

    +
      +
    • All requires-expression requirements terminate with a semicolon.
    • +
    • simple-requirements are used to check that an expression is well-formed.
    • +
    • nested-requirements are introduced with requires and primarily used to check the result of an expression computable by the compiler, including concepts or other requires-expressions.
    • +
    • type-requirements are introduced with typename and used to verify the existence of a type with a particular identifier.
    • +
    • compound-requirements are enclosed in braces and can be used to check the resulting type of an expression.
    • +
    • Checks are performed by the compiler, not at run time.
    • +
    • If covering usage of requires-expression with requires-clause, [Compile-time programming: requires clause] demonstrate requires requires and show how to ever avoid writing it by using a concept. [Compile-time programming: concepts]
    • +
    +

    8.5.2 Main: Advanced requirements

    +

    8.5.2.1 Background/required knowledge

    +
      +
    • All of the above.
    • +
    • Knowledge of noexcept
    • +
    +

    A student is able to:

    + +

    8.5.2.2 Student outcomes

    +

    A student should be able to:

    +
      +
    1. Write compound-requirements which test the noexceptness of an expression.
    2. +
    3. Use a concept as the target of a compound-requirement.
    4. +
    +

    8.5.2.3 Caveats

    +

    8.5.2.4 Points to cover

    +
      +
    • Compound-requirements allow the optional ability to test whether an expression is marked as noexcept, by using a trailing noexcept keyword.
    • +
    + +
      +
    • If the return-type-requirement of a compound-requirement is a concept, that concept is given the resulting type as the first parameter, followed by the specified parameters in the compound-requirement. { ++x } -> C<int> would substitute C<decltype((++x)), int> and check that concept C is satisfied for those parameters.
    • +
    +

    8.5.3 Advanced

    +

    8.6 Meta-error handling: static_assert

    +

    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

    +

    8.6.1 Overview

    +

    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

    + ++++ + + + + + + + + + + + + + + + + + + + + +
    LevelObjectives
    FoundationalCalling static_assert with a constant expression
    MainUsing static_assert to detect contract violations and improve error messages
    Advanced
    +

    8.6.2 Motivation

    +

    Why is this important? Why do we want to learn/teach this topic?

    +

    static_assert allows the developer to enforce that conditions which can be checked during compilation will force build errors when violated. Additionally, they are the best mechanism by which a developer can pass useful information to other developers regarding what violation occurred or what must be done, instead.

    +

    8.6.3 Topic introduction

    +

    Very brief introduction to the topic.

    +

    static_assert is a compile-time evaluated function that asserts the truth of a supplied predicate, issuing an optional user-supplied error message if the predicate is false.

    +

    8.6.4 Foundational: Calling static_assert with a constant expression

    +

    8.6.4.1 Background/Required Knowledge

    +

    A student:

    +
      +
    • Should be able to explain the difference between code evaluated at compile-time and run-time
    • +
    • Should be able to cite some examples of compile-time known information, such as sizeof(T)
    • +
    +

    8.6.4.2 Student outcomes

    +

    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

    +

    A student should be able to:

    +
      +
    1. Assert the expected size of a structure using static_assert
    2. +
    +

    8.6.4.3 Caveats

    +

    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

    +

    8.6.4.4 Points to cover

    +

    This section lists important details for each point.

    +
      +
    • X
    • +
    • In addition to what is wrong, a good error message will inform the user of how to correct it
    • +
    +

    8.6.5 Main: Contracts and static_assert

    +

    8.6.5.1 Background/Required Knowledge

    +
      +
    • All of the above.
    • +
    • General understanding of compile-time requirements
    • +
    +

    8.6.5.2 Student outcomes

    +

    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

    +

    A student should be able to:

    +
      +
    1. Utilize static_assert to verify preconditions of a meta-function
    2. +
    3. Utilize static_assert to verify the results of meta-functions for known values
    4. +
    +

    8.6.5.3 Caveats

    +

    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

    +

    8.6.5.4 Points to cover

    +

    This section lists important details for each point.

    +
      +
    • When writing a meta-function, use static_assert to test the results
    • +
    • Write static_assert calls at the scope of the code they are guarding
    • +
    + +

    8.6.6 Advanced

    +

    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

    +

    9 Examples of Course Curricula

    +

    [NOTE: Anyone have any suggestions of items to add here?] The following are examples of curricula for course on C++: …

    +

    10 License

    +

    [NOTE: This license is copied verbatim from the C++ Core Guidelines.]

    +
    Copyright (c) Standard C++ Foundation and its contributors
    +
    +Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
    +perpetual license to copy, use, modify, and create derivative works from this
    +project for your personal or internal business use only. The above copyright
    +notice and this permission notice shall be included in all copies or
    +substantial portions of the project. This license does not grant permission
    +to use the trade names, trademarks, service marks, or product names of the
    +licensor, except as required for reasonable and customary use in describing
    +the origin of the project.
    +
    +Standard C++ Foundation reserves the right to accept contributions to the
    +project at its discretion.
    +
    +By contributing material to this project, you grant Standard C++ Foundation,
    +and those who receive the material directly or indirectly from Standard C++
    +Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
    +transferrable license to reproduce, prepare derivative works of, publicly
    +display, publicly perform, and distribute your contributed material and such
    +derivative works, and to sublicense any or all of the foregoing rights to third
    +parties for commercial or non-commercial use.  You also grant Standard C++
    +Foundation, and those who receive the material directly or indirectly from
    +Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
    +irrevocable license under your patent claims that directly read on your
    +contributed material to make, have made, use, offer to sell, sell and import
    +or otherwise dispose of the material. You warrant that your material is your
    +original work, or that you have the right to grant the above licenses.
    +
    +THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    +OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
    +PROJECT.
    +
    +If you believe that anything in the project infringes your copyright, please
    +contact us at admin@isocpp.org with your contact information and a detailed
    +description of your intellectual property, including a specific URL where you
    +believe your intellectual property is being infringed.
    +
    +

    11 Contributors

    +
    Christopher Di Bella
    +Florian Sattler
    +Michael Adams
    +rwdougla
    +vulder
    +

    12 How To Contribute

    +

    Before attempting to contribute any content for consideration for inclusion in this document, please read the information below and and the referenced documents as appropriate.

    +

    All contributions to this project must be made in accordance with the license in section License. This teaching-guidelines document only offers guidance on teaching C++ as it is specified in the current version of the C++ standard. So, content should be presented relative to the most-recently ratified version of the standard. A detailed explanation of how to present the material for a topic is given in:

    +
      +
    • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.
    • +
    +

    Any potential contributors should ensure that they read this document. The following document may also be helpful in providing some general background on the modular approach to teaching followed herein:

    + +

    In order to prepare content, it is important to understand what learning outcomes are, and how to prepare good ones. Some information on learning outcomes can be found in the References section. The following document offers a concise introduction to learning outcomes:

    + +

    13 Glossary

    +

    Some possible terms to include in the glossary:

    +
      +
    • learning objective
    • +
    • learning outcome
    • +
    +

    14 References

    +

    14.1 References on Learning Outcomes

    + + +
      +
    • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — Standing Document for SG20: Guidelines for Teaching C++ to Beginners. https://wg21.link/p1389.

    • +
    • Christopher Di Bella. P1725R0 — Modular Topic Design. https://wg21.link/p1725.

    • +
    • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.

    • +
    • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study Group: C++ Education. https://wg21.link/p1231.

    • +
    • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 — Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0.

    • +
    +
    +
    + +
    + + diff --git a/0.0.3/html_split/Advanced.html b/0.0.3/html_split/Advanced.html new file mode 100644 index 0000000..c4d659a --- /dev/null +++ b/0.0.3/html_split/Advanced.html @@ -0,0 +1,60 @@ + + + + + +Advanced (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
    +

    8.1.6 Advanced

    +

    These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

    +

    When can copies be elided and when does the standard guarantee copy +elision. References: * Abseil tip of +the Week #166 * +cppreference +- Copy elision +

    + + + + + diff --git a/0.0.3/html_split/Background_002fRequired-Knowledge.html b/0.0.3/html_split/Background_002fRequired-Knowledge.html new file mode 100644 index 0000000..d3ee185 --- /dev/null +++ b/0.0.3/html_split/Background_002fRequired-Knowledge.html @@ -0,0 +1,65 @@ + + + + + +Background/Required Knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    8.1.4.1 Background/Required Knowledge

    +

    A student is able to: * explain what a C++ type is? +[C++ object model: types] +* explain what an object is? +[C++ object +model: objects], +[C++ object model: +constant objects] * define and understand class invariants? +

    +

    It helps when a student is able to: * use move semantics +[C++ object model: move +semantics] * explain special member functions +[C++ object model: +special member functions] +

    + + + + + diff --git a/0.0.3/html_split/Background_002frequired-knowledge.html b/0.0.3/html_split/Background_002frequired-knowledge.html new file mode 100644 index 0000000..79fd94d --- /dev/null +++ b/0.0.3/html_split/Background_002frequired-knowledge.html @@ -0,0 +1,54 @@ + + + + + +Background/required knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
    +

    8.3.5.1 Background/required knowledge

    +
      +
    • All of the above. +
    + + + + + + diff --git a/0.0.3/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html b/0.0.3/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html new file mode 100644 index 0000000..3e850b1 --- /dev/null +++ b/0.0.3/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html @@ -0,0 +1,60 @@ + + + + + +Basics Types Objects Values Expressions Statements and Control-Flow Constructs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    7.3 Basics Types, Objects, Values, Expressions, Statements, and

    +

    Control-Flow Constructs +

    + + + + + +
    IDUnitFoundationalMainAdvanced
    [‘?’]Constant Objects???
    [‘?’]Declarations and Definitions???
    [‘?’]Selection Constructs (e.g., if, ternary)???
    [‘?’]Looping Constructs (e.g., for, while, etc.)???
    + + + + + + diff --git a/0.0.3/html_split/Building.html b/0.0.3/html_split/Building.html new file mode 100644 index 0000000..e628fd0 --- /dev/null +++ b/0.0.3/html_split/Building.html @@ -0,0 +1,57 @@ + + + + + +Building (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    7.12 Building

    + + + + +
    IDUnitFoundationalMainAdvanced
    [‘?’]Software Build Tools???
    [‘?’]Strategies for Handling Build Problems???
    + + + + + + diff --git a/0.0.3/html_split/C_002b_002b-object-model-copy-semantics.html b/0.0.3/html_split/C_002b_002b-object-model-copy-semantics.html new file mode 100644 index 0000000..6d7350c --- /dev/null +++ b/0.0.3/html_split/C_002b_002b-object-model-copy-semantics.html @@ -0,0 +1,69 @@ + + + + + +C++ object model copy semantics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    8.1 C++ object model: copy semantics

    +

    Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

    + + + + + + + + + + + + + + diff --git a/0.0.3/html_split/Caveats.html b/0.0.3/html_split/Caveats.html new file mode 100644 index 0000000..c5303c9 --- /dev/null +++ b/0.0.3/html_split/Caveats.html @@ -0,0 +1,62 @@ + + + + + +Caveats (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    8.1.4.3 Caveats

    +

    This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

    +
      +
    • Compiler-provided copy operations may result in ownership problems +(e.g., char*). These ownership problems can generally be solved +by using types whose copy operations have the appropriate semantics, +e.g., std::string instead of char* to hold string values. +
    + + + + + + diff --git a/0.0.3/html_split/Compilation-Model.html b/0.0.3/html_split/Compilation-Model.html new file mode 100644 index 0000000..de11703 --- /dev/null +++ b/0.0.3/html_split/Compilation-Model.html @@ -0,0 +1,62 @@ + + + + + +Compilation Model (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    7.1 Compilation Model

    + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [‘?’]Translation Units???
    [‘?’]Headers???
    [‘?’]Modules???
    [‘?’]Name Mangling???
    [‘?’]Phases of Translation???
    [‘?’]Separate Compilation???
    [‘?’]Linkage???
    + + + + + + diff --git a/0.0.3/html_split/Compile_002dTime-Computation.html b/0.0.3/html_split/Compile_002dTime-Computation.html new file mode 100644 index 0000000..b9aaa0e --- /dev/null +++ b/0.0.3/html_split/Compile_002dTime-Computation.html @@ -0,0 +1,57 @@ + + + + + +Compile-Time Computation (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    7.7 Compile-Time Computation

    + + + + +
    IDUnitFoundationalMainAdvanced
    [‘?’]Constant Expressions and Constant Evaluation???
    [‘static-assert’]static_assert‘✔️’‘✔️’
    + + + + + + diff --git a/0.0.3/html_split/Context-and-Aim-of-This-Guide.html b/0.0.3/html_split/Context-and-Aim-of-This-Guide.html new file mode 100644 index 0000000..60efa61 --- /dev/null +++ b/0.0.3/html_split/Context-and-Aim-of-This-Guide.html @@ -0,0 +1,76 @@ + + + + + +Context and Aim of This Guide (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
    +

    +Next: , Previous: , Up: Top   [Contents]

    +
    +
    +

    3 Context and Aim of This Guide

    +

    This document is intended to serve as a resource for instructors to +assist in the preparation of courses on C++ in a variety of settings, +including university, college, and industry environments. The main +objectives of this document are as follows: +

    +
      +
    • to provide guidelines for content to be covered by courses of various +difficulty levels on C++ (e.g., topics and learning outcomes) +
    • to note some common misunderstandings and problematic points that may be +encountered when teaching particular topics +
    • to suggest resources useful for teaching C++ +
    • to present examples of curriculum for specific courses +
    + +

    This document does not itself provide a curriculum for a single specific +course, but is rather a set of guidelines that can be used to prepare +curricula for a wide variety of courses that differ in focus and level +of sophistication. (This said, however, some links to other documents +with examples of curricula for specific courses may be included herein.) +This document only intends to target the teaching of the most recently +ratified version of the C++ standard. (This said, however, since older +versions of this document are also available, these older versions may +be of some use to those who need guidance in older versions of the +standard, at least versions that do not predate C++20.) +

    + + + + + diff --git a/0.0.3/html_split/Contributing-to-This-Document.html b/0.0.3/html_split/Contributing-to-This-Document.html new file mode 100644 index 0000000..eac6c28 --- /dev/null +++ b/0.0.3/html_split/Contributing-to-This-Document.html @@ -0,0 +1,55 @@ + + + + + +Contributing to This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    5 Contributing to This Document

    +

    Contributions to this document are welcome. If you would like to help +with this project as a contributor, please read the section +‘How to Contribute’. +

    + + + + + diff --git a/0.0.3/html_split/Contributors.html b/0.0.3/html_split/Contributors.html new file mode 100644 index 0000000..8adb4b1 --- /dev/null +++ b/0.0.3/html_split/Contributors.html @@ -0,0 +1,58 @@ + + + + + +Contributors (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
    +

    +Next: , Previous: , Up: Top   [Contents]

    +
    +
    +

    11 Contributors

    + +
    Christopher Di Bella
    +Florian Sattler
    +Michael Adams
    +rwdougla
    +vulder
    +
    + + + + + diff --git a/0.0.3/html_split/Detailed-Information-for-Modules-and-Topics.html b/0.0.3/html_split/Detailed-Information-for-Modules-and-Topics.html new file mode 100644 index 0000000..c8c9fcd --- /dev/null +++ b/0.0.3/html_split/Detailed-Information-for-Modules-and-Topics.html @@ -0,0 +1,67 @@ + + + + + +Detailed Information for Modules and Topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    8 Detailed Information for Modules and Topics

    + + + + + + + + + + + + + + + diff --git a/0.0.3/html_split/Disclaimer.html b/0.0.3/html_split/Disclaimer.html new file mode 100644 index 0000000..a911983 --- /dev/null +++ b/0.0.3/html_split/Disclaimer.html @@ -0,0 +1,55 @@ + + + + + +Disclaimer (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    2 Disclaimer

    +

    This document is intended as a proof of concept to solicit feedback from +others. This document is incomplete. This document likely has at least a +few errors. +

    + + + + + diff --git a/0.0.3/html_split/Error-Handling.html b/0.0.3/html_split/Error-Handling.html new file mode 100644 index 0000000..1f8d3e0 --- /dev/null +++ b/0.0.3/html_split/Error-Handling.html @@ -0,0 +1,59 @@ + + + + + +Error Handling (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    7.9 Error Handling

    + + + + + + +
    IDUnitFoundationalMainAdvanced
    [‘?’]Classes of Errors???
    [‘?’]errno???
    [‘?’]Error Codes???
    [‘?’]Exception Handling???
    + + + + + + diff --git a/0.0.3/html_split/Examples-of-Course-Curricula.html b/0.0.3/html_split/Examples-of-Course-Curricula.html new file mode 100644 index 0000000..64eb64b --- /dev/null +++ b/0.0.3/html_split/Examples-of-Course-Curricula.html @@ -0,0 +1,53 @@ + + + + + +Examples of Course Curricula (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
    +

    9 Examples of Course Curricula

    +

    [NOTE: Anyone have any suggestions of items to add here?] The +following are examples of curricula for course on C++: … +

    + + + + + diff --git a/0.0.3/html_split/External-ie-Non-Standard-Libraries.html b/0.0.3/html_split/External-ie-Non-Standard-Libraries.html new file mode 100644 index 0000000..2bf081e --- /dev/null +++ b/0.0.3/html_split/External-ie-Non-Standard-Libraries.html @@ -0,0 +1,56 @@ + + + + + +External ie Non Standard Libraries (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    7.11 External (i.e., Non Standard) Libraries

    + + + +
    IDUnitFoundationalMainAdvanced
    [‘?’]Graphical User Interfaces???
    + + + + + + diff --git a/0.0.3/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html b/0.0.3/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html new file mode 100644 index 0000000..ce2c1b0 --- /dev/null +++ b/0.0.3/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html @@ -0,0 +1,62 @@ + + + + + +Foundational Calling static_assert with a constant expression (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
    +

    8.6.4 Foundational: Calling static_assert with a constant

    +

    expression +

    + + + + + + + + + + + + diff --git a/0.0.3/html_split/Foundational-How-and-when-are-copies-made.html b/0.0.3/html_split/Foundational-How-and-when-are-copies-made.html new file mode 100644 index 0000000..4cec33b --- /dev/null +++ b/0.0.3/html_split/Foundational-How-and-when-are-copies-made.html @@ -0,0 +1,63 @@ + + + + + +Foundational How and when are copies made (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    8.1.4 Foundational: How and when are copies made

    + + + + + + + + + + + + + diff --git a/0.0.3/html_split/Foundational-Using-UDLs.html b/0.0.3/html_split/Foundational-Using-UDLs.html new file mode 100644 index 0000000..adb461e --- /dev/null +++ b/0.0.3/html_split/Foundational-Using-UDLs.html @@ -0,0 +1,61 @@ + + + + + +Foundational Using UDLs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
    +

    8.2.4 Foundational: Using UDLs

    + + + + + + + + + + + + + diff --git a/0.0.3/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html b/0.0.3/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html new file mode 100644 index 0000000..e37a992 --- /dev/null +++ b/0.0.3/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html @@ -0,0 +1,62 @@ + + + + + +Foundational Using and defining functions with default arguments (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
    +

    8.3.4 Foundational: Using and defining functions with default

    +

    arguments +

    + + + + + + + + + + + + diff --git a/0.0.3/html_split/Foundational-Writing-requires_002dexpressions.html b/0.0.3/html_split/Foundational-Writing-requires_002dexpressions.html new file mode 100644 index 0000000..6846c6e --- /dev/null +++ b/0.0.3/html_split/Foundational-Writing-requires_002dexpressions.html @@ -0,0 +1,60 @@ + + + + + +Foundational Writing requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +
    +

    8.5.1 Foundational: Writing requires-expressions

    + + + + + + + + + + + + + diff --git a/0.0.3/html_split/Functions-default-argument.html b/0.0.3/html_split/Functions-default-argument.html new file mode 100644 index 0000000..2571ca9 --- /dev/null +++ b/0.0.3/html_split/Functions-default-argument.html @@ -0,0 +1,67 @@ + + + + + +Functions default argument (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
    +

    8.3 Functions: default argument

    +

    Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

    + + + + + + + + + + + + + + diff --git a/0.0.3/html_split/Functions-user_002ddefined-literals.html b/0.0.3/html_split/Functions-user_002ddefined-literals.html new file mode 100644 index 0000000..7e41de9 --- /dev/null +++ b/0.0.3/html_split/Functions-user_002ddefined-literals.html @@ -0,0 +1,66 @@ + + + + + +Functions user-defined literals (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
    +

    8.2 Functions: user-defined literals

    +

    Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

    + + + + + + + + + + + + + diff --git a/0.0.3/html_split/Functions.html b/0.0.3/html_split/Functions.html new file mode 100644 index 0000000..82175a5 --- /dev/null +++ b/0.0.3/html_split/Functions.html @@ -0,0 +1,61 @@ + + + + + +Functions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    7.4 Functions

    + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [‘?’]Calling Functions???
    [‘?’]Parameter Passing (e.g., Passing By Value and Reference)???
    [‘func-args’]Default Arguments‘✔️’
    [‘?’]Returning Multiple Values???
    [‘?’]Overloading???
    [‘udl’]User-Defined Literals‘✔️’‘✔️’
    + + + + + + diff --git a/0.0.3/html_split/Generic-Programming-Templates.html b/0.0.3/html_split/Generic-Programming-Templates.html new file mode 100644 index 0000000..1a22cd7 --- /dev/null +++ b/0.0.3/html_split/Generic-Programming-Templates.html @@ -0,0 +1,61 @@ + + + + + +Generic Programming Templates (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    7.8 Generic Programming (Templates)

    + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [‘?’]Concepts???
    [‘?’]SFINAE???
    [‘?’]Template Metaprogramming???
    [‘?’]Function Templates???
    [‘?’]Requires Clauses???
    [‘req-expr’]Requires Expressions‘✔️’‘✔️’
    + + + + + + diff --git a/0.0.3/html_split/Glossary.html b/0.0.3/html_split/Glossary.html new file mode 100644 index 0000000..2bf24f2 --- /dev/null +++ b/0.0.3/html_split/Glossary.html @@ -0,0 +1,58 @@ + + + + + +Glossary (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
    +

    +Next: , Previous: , Up: Top   [Contents]

    +
    +
    +

    13 Glossary

    +

    Some possible terms to include in the glossary: +

    +
      +
    • learning objective +
    • learning outcome +
    + + + + + + diff --git a/0.0.3/html_split/How-To-Contribute.html b/0.0.3/html_split/How-To-Contribute.html new file mode 100644 index 0000000..f1963d5 --- /dev/null +++ b/0.0.3/html_split/How-To-Contribute.html @@ -0,0 +1,89 @@ + + + + + +How To Contribute (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
    +

    +Next: , Previous: , Up: Top   [Contents]

    +
    +
    +

    12 How To Contribute

    +

    Before attempting to contribute any content for consideration for +inclusion in this document, please read the information below and and +the referenced documents as appropriate. +

    +

    All contributions to this project must be made in accordance with the +license in section License. This teaching-guidelines +document only offers guidance on teaching C++ as it is specified in the +current version of the C++ standard. So, content should be presented +relative to the most-recently ratified version of the standard. A +detailed explanation of how to present the material for a topic is given +in: +

    +
      +
    • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to +structure a teaching topic. https://wg21.link/p2193. +
    + +

    Any potential contributors should ensure that they read this document. +The following document may also be helpful in providing some general +background on the modular approach to teaching followed herein: +

    + + +

    In order to prepare content, it is important to understand what learning +outcomes are, and how to prepare good ones. Some information on learning +outcomes can be found in the References section. The +following document offers a concise introduction to learning outcomes: +

    + + + + + + + diff --git a/0.0.3/html_split/Inheritance-and-Class-Hierarchies.html b/0.0.3/html_split/Inheritance-and-Class-Hierarchies.html new file mode 100644 index 0000000..1a394b0 --- /dev/null +++ b/0.0.3/html_split/Inheritance-and-Class-Hierarchies.html @@ -0,0 +1,57 @@ + + + + + +Inheritance and Class Hierarchies (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    7.6 Inheritance and Class Hierarchies

    + + + + +
    IDUnitFoundationalMainAdvanced
    [‘?’]Virtual Functions???
    [‘?’]Run-Time Type Information???
    + + + + + + diff --git a/0.0.3/html_split/License.html b/0.0.3/html_split/License.html new file mode 100644 index 0000000..38d2d8d --- /dev/null +++ b/0.0.3/html_split/License.html @@ -0,0 +1,100 @@ + + + + + +License (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
    +

    +Next: , Previous: , Up: Top   [Contents]

    +
    +
    +

    10 License

    +

    [NOTE: This license is copied verbatim from the C++ Core +Guidelines.] +

    +
    Copyright (c) Standard C++ Foundation and its contributors
    +
    +Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
    +perpetual license to copy, use, modify, and create derivative works from this
    +project for your personal or internal business use only. The above copyright
    +notice and this permission notice shall be included in all copies or
    +substantial portions of the project. This license does not grant permission
    +to use the trade names, trademarks, service marks, or product names of the
    +licensor, except as required for reasonable and customary use in describing
    +the origin of the project.
    +
    +Standard C++ Foundation reserves the right to accept contributions to the
    +project at its discretion.
    +
    +By contributing material to this project, you grant Standard C++ Foundation,
    +and those who receive the material directly or indirectly from Standard C++
    +Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
    +transferrable license to reproduce, prepare derivative works of, publicly
    +display, publicly perform, and distribute your contributed material and such
    +derivative works, and to sublicense any or all of the foregoing rights to third
    +parties for commercial or non-commercial use.  You also grant Standard C++
    +Foundation, and those who receive the material directly or indirectly from
    +Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
    +irrevocable license under your patent claims that directly read on your
    +contributed material to make, have made, use, offer to sell, sell and import
    +or otherwise dispose of the material. You warrant that your material is your
    +original work, or that you have the right to grant the above licenses.
    +
    +THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    +OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
    +PROJECT.
    +
    +If you believe that anything in the project infringes your copyright, please
    +contact us at admin@isocpp.org with your contact information and a detailed
    +description of your intellectual property, including a specific URL where you
    +believe your intellectual property is being infringed.
    +
    +
    +
    +

    +Next: , Previous: , Up: Top   [Contents]

    +
    + + + + + diff --git a/0.0.3/html_split/Main-Advanced-requirements.html b/0.0.3/html_split/Main-Advanced-requirements.html new file mode 100644 index 0000000..6c4ac0e --- /dev/null +++ b/0.0.3/html_split/Main-Advanced-requirements.html @@ -0,0 +1,60 @@ + + + + + +Main Advanced requirements (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +
    +

    8.5.2 Main: Advanced requirements

    + + + + + + + + + + + + + diff --git a/0.0.3/html_split/Main-Contracts-and-static_005fassert.html b/0.0.3/html_split/Main-Contracts-and-static_005fassert.html new file mode 100644 index 0000000..6c0ba46 --- /dev/null +++ b/0.0.3/html_split/Main-Contracts-and-static_005fassert.html @@ -0,0 +1,61 @@ + + + + + +Main Contracts and static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
    +

    8.6.5 Main: Contracts and static_assert

    + + + + + + + + + + + + + diff --git a/0.0.3/html_split/Main-Implementing-user_002ddefined-copy-operations.html b/0.0.3/html_split/Main-Implementing-user_002ddefined-copy-operations.html new file mode 100644 index 0000000..e38dfd6 --- /dev/null +++ b/0.0.3/html_split/Main-Implementing-user_002ddefined-copy-operations.html @@ -0,0 +1,62 @@ + + + + + +Main Implementing user-defined copy operations (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
    +

    8.1.5 Main: Implementing user-defined copy operations

    + + + + + + + + + + + + + diff --git a/0.0.3/html_split/Main-implementing-UDLs.html b/0.0.3/html_split/Main-implementing-UDLs.html new file mode 100644 index 0000000..1f6f381 --- /dev/null +++ b/0.0.3/html_split/Main-implementing-UDLs.html @@ -0,0 +1,59 @@ + + + + + +Main implementing UDLs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
    +

    8.2.5 Main: implementing UDLs

    + + + + + + + + + + + + diff --git a/0.0.3/html_split/Main-implementing-_002a.html b/0.0.3/html_split/Main-implementing-_002a.html new file mode 100644 index 0000000..b661f2d --- /dev/null +++ b/0.0.3/html_split/Main-implementing-_002a.html @@ -0,0 +1,62 @@ + + + + + +Main implementing * (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
    +

    8.3.5 Main: implementing *

    + + + + + + + + + + + + + diff --git a/0.0.3/html_split/Meta_002derror-handling-static_005fassert.html b/0.0.3/html_split/Meta_002derror-handling-static_005fassert.html new file mode 100644 index 0000000..f81a34e --- /dev/null +++ b/0.0.3/html_split/Meta_002derror-handling-static_005fassert.html @@ -0,0 +1,67 @@ + + + + + +Meta-error handling static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
    +

    8.6 Meta-error handling: static_assert

    +

    Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

    + + + + + + + + + + + + + + diff --git a/0.0.3/html_split/Module-name-Requires-Expressions.html b/0.0.3/html_split/Module-name-Requires-Expressions.html new file mode 100644 index 0000000..8bab76c --- /dev/null +++ b/0.0.3/html_split/Module-name-Requires-Expressions.html @@ -0,0 +1,59 @@ + + + + + +Module name Requires Expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
    +

    8.4 Module name: Requires Expressions

    +

    Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

    + + + + + + + + + + diff --git a/0.0.3/html_split/Motivation.html b/0.0.3/html_split/Motivation.html new file mode 100644 index 0000000..40b0ec9 --- /dev/null +++ b/0.0.3/html_split/Motivation.html @@ -0,0 +1,57 @@ + + + + + +Motivation (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    8.1.2 Motivation

    +

    Why is this important? Why do we want to learn/teach this +topic? +

    +

    Copy semantics allows the user to define how objects of a class get +replicated and interact on a value level. +

    + + + + + diff --git a/0.0.3/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html b/0.0.3/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html new file mode 100644 index 0000000..d45dda1 --- /dev/null +++ b/0.0.3/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html @@ -0,0 +1,84 @@ + + + + + +Obtaining This Document The Most Recent Version and Alternate Formats (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
    +

    +Next: , Previous: , Up: Top   [Contents]

    +
    +
    +

    1 Obtaining This Document: The Most Recent Version and Alternate

    +

    Formats +The most recent version of this document is available as an online HTML +document at: +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/latest/. +

    +

    The version of the document that you are currently reading is available +in the following formats: +

    +
      +
    1. online (HTML) format as a single large HTML document: +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.3/html +[later to be https://cplusplus.github.io/SG20/0.0.3/html?] + +
    2. EPUB format: +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.3/guidelines.epub +[later to be +https:/cplusplus.github.io/SG20/0.0.3/guidelines.epub?] + +
    3. online (HTML) format, split across multiple HTML documents: +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.3/html_split/ +[later to be https://cplusplus.github.io/SG20/0.0.3/html_split/?] +[Note: The support for this format needs more work (in order to +beautify and fix linking issues).] + +
    + +

    Older versions of this document are also available. In general version +ver is available at +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/ver. +For example, version v0.1.0 (assuming that this version exists) would be +available at [later to be +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/v0.1.0?]. +

    + + + + + diff --git a/0.0.3/html_split/Organization-of-This-Document.html b/0.0.3/html_split/Organization-of-This-Document.html new file mode 100644 index 0000000..3e48985 --- /dev/null +++ b/0.0.3/html_split/Organization-of-This-Document.html @@ -0,0 +1,101 @@ + + + + + +Organization of This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    6 Organization of This Document

    +

    The various concepts (i.e., ideas) to potentially be covered are +partitioned into modules. A module is very broad in scope and consists +of numerous topics. [Note: Can I suggest that we use the term +“area” or “unit” instead of “module”? I think that these other +choices are better and also avoid any potential confusion over what is +meant by “module” (i.e., C++ term versus plain English term).] +

    +

    For each module, topics related to the module are identified. Then, for +each topic, learning outcomes are specified. In order to address a wide +variety of courses on C++, each topic is addressed at three proficiency +levels. These proficiency levels allow each topic to be covered at more +than one level of detail. This allows target audiences with different +background and learning objectives to be accommodated. The three +proficiency levels are as follows: +

    +
      +
    • foundational. This level gives the learner the idea that a facility +exists, what benefits it offers, and the basic ways of using it. +[Note: Isn’t this just “novice”/“beginner”?] + +
    • main. This level shows mainstream uses and techniques. For abstraction +and organizational mechanisms it also demonstrates how to build them. +This level should also give the learner a basic (but not detailed) +understanding of how a facility might be implemented so that the learner +can have a first-order understanding of any costs involved. +[Note: The term “main” is not very descriptive/helpful. Could +I suggest using “intermediate”?] + +
    • advanced. This level gives information suitable for an expert. For most +topics there is an expert level of knowledge that most programmers +rarely need and techniques that require detailed understanding of +language rules or library implementation. + +
    + +

    The remainder of this document is organized as follows. The various +topics are listed grouped by module. In cases where a topic might be +classified into more than one module, the topic is listed under the +module of most direct relevance. This is done in order to avoid +duplication of content. (In the case that a topic is equally relevant to +multiple modules, the decision of which to select is made by a +proverbial coin toss.) The order in which modules and topics are +presented is not meant to imply any order of coverage in a course. The +order in which items are listed is essentially arbitrary. +

    +
    + + + + + + diff --git a/0.0.3/html_split/Overview.html b/0.0.3/html_split/Overview.html new file mode 100644 index 0000000..be44bfa --- /dev/null +++ b/0.0.3/html_split/Overview.html @@ -0,0 +1,61 @@ + + + + + +Overview (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    8.1.1 Overview

    +

    Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

    + + + + + +
    LevelObjectives
    Foundationalunderstanding how and when are copies made
    Mainimplementing user-defined copy operations
    Advancedspecial cases: copy elision
    + + + + + + diff --git a/0.0.3/html_split/Points-to-cover.html b/0.0.3/html_split/Points-to-cover.html new file mode 100644 index 0000000..ba4b5cc --- /dev/null +++ b/0.0.3/html_split/Points-to-cover.html @@ -0,0 +1,69 @@ + + + + + +Points to cover (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    8.1.4.4 Points to cover

    +

    This section lists important details for each point. +

    +
      +
    • Principle of copying +
        +
      • Copying of types, which follow the rule of zero +
      • Copying of types, with user defined copy operations +
      • Copying an object does not change the original +
      + +
    • Practical applications +
        +
      • std::unique_ptr (has no copy) +
      • Strings (copies the value) +
      + +
    + + + + + + diff --git a/0.0.3/html_split/Preprocessor.html b/0.0.3/html_split/Preprocessor.html new file mode 100644 index 0000000..345e396 --- /dev/null +++ b/0.0.3/html_split/Preprocessor.html @@ -0,0 +1,58 @@ + + + + + +Preprocessor (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    7.2 Preprocessor

    + + + + + +
    IDUnitFoundationalMainAdvanced
    [‘?’]Preprocessor Metaprogramming???
    [‘?’]Inclusion???
    [‘?’]Macros???
    + + + + + + diff --git a/0.0.3/html_split/References-on-Learning-Outcomes.html b/0.0.3/html_split/References-on-Learning-Outcomes.html new file mode 100644 index 0000000..7b74cad --- /dev/null +++ b/0.0.3/html_split/References-on-Learning-Outcomes.html @@ -0,0 +1,71 @@ + + + + + +References on Learning Outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    14.1 References on Learning Outcomes

    + + + + + + + diff --git a/0.0.3/html_split/References.html b/0.0.3/html_split/References.html new file mode 100644 index 0000000..f595be2 --- /dev/null +++ b/0.0.3/html_split/References.html @@ -0,0 +1,59 @@ + + + + + +References (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
    +

    +Previous: , Up: Top   [Contents]

    +
    +
    +

    14 References

    + + + + + + + + + + + diff --git a/0.0.3/html_split/Software-Design.html b/0.0.3/html_split/Software-Design.html new file mode 100644 index 0000000..6b4f6c8 --- /dev/null +++ b/0.0.3/html_split/Software-Design.html @@ -0,0 +1,56 @@ + + + + + +Software Design (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    7.15 Software Design

    + + + +
    IDUnitFoundationalMainAdvanced
    [‘?’]Design by Contract???
    + + + + + + diff --git a/0.0.3/html_split/Standard-Library.html b/0.0.3/html_split/Standard-Library.html new file mode 100644 index 0000000..c80c7fc --- /dev/null +++ b/0.0.3/html_split/Standard-Library.html @@ -0,0 +1,57 @@ + + + + + +Standard Library (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    7.10 Standard Library

    + + + + +
    IDUnitFoundationalMainAdvanced
    [‘?’]Input/Output (I/O)???
    [‘?’]Containers, Iterators, and Algorithms???
    + + + + + + diff --git a/0.0.3/html_split/Student-outcomes.html b/0.0.3/html_split/Student-outcomes.html new file mode 100644 index 0000000..c604549 --- /dev/null +++ b/0.0.3/html_split/Student-outcomes.html @@ -0,0 +1,73 @@ + + + + + +Student outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    8.1.4.2 Student outcomes

    +

    A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

    +

    A student should be able to: +

    +
      +
    1. explain what copy semantics accomplish +
    + +
      +
    • establishing “equivalent” object state in another object +
    + +
      +
    1. explain difference between copying a reference and copying a value* +
    2. explain where copies are made +
    + +

    * In other languages these differences are sometimes referred to as +shallow and deep copy. +

    + + + + + diff --git a/0.0.3/html_split/Summary-of-Modules-and-Topics.html b/0.0.3/html_split/Summary-of-Modules-and-Topics.html new file mode 100644 index 0000000..26b69be --- /dev/null +++ b/0.0.3/html_split/Summary-of-Modules-and-Topics.html @@ -0,0 +1,106 @@ + + + + + +Summary of Modules and Topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    7 Summary of Modules and Topics

    +

    In the sections that follow, the various modules and topics are +presented. There is one section per module. For each module, a table +listing the various topics in that module is provided. The ID for a +topic is linked to the detailed coverage of that topic that comes later +in the document. If a topic has any learning outcomes at a given +proficiency level, this is indicated by a checkmark (“✔️”). If a topic +has no learning outcomes (simply because there are not any, not because +the information is missing), this is indicated by an em dash (“—”). +In the case that the information for a topic is completely missing, a +question mark (“?”) symbol is used. +

    +

    [NOTE: These topics are taken mostly from the SG20 GitHub +repository. They are not intended to be complete in any sense. In fact, +by gathering together all topics in one place where they are easily +viewed, it is hoped that missing and unbalanced items will be more +obvious.] +

    + + + + + + + + + + + + + + + + + + +
    + + + + + + diff --git a/0.0.3/html_split/Testing-and-Debugging.html b/0.0.3/html_split/Testing-and-Debugging.html new file mode 100644 index 0000000..da60211 --- /dev/null +++ b/0.0.3/html_split/Testing-and-Debugging.html @@ -0,0 +1,59 @@ + + + + + +Testing and Debugging (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
    +

    +Next: , Previous: , Up: Summary of Modules and Topics   [Contents]

    +
    +
    +

    7.13 Testing and Debugging

    + + + + + + +
    IDUnitFoundationalMainAdvanced
    [‘?’]Source-Level Debuggers???
    [‘?’]Code Sanitizers???
    [‘?’]Test Frameworks???
    [‘?’]Debugging Strategies???
    + + + + + + diff --git a/0.0.3/html_split/Tooling.html b/0.0.3/html_split/Tooling.html new file mode 100644 index 0000000..43c3b2f --- /dev/null +++ b/0.0.3/html_split/Tooling.html @@ -0,0 +1,57 @@ + + + + + +Tooling (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    7.14 Tooling

    + + + + +
    IDUnitFoundationalMainAdvanced
    [‘?’]Compiler Toolchains???
    [‘?’]IDEs???
    + + + + + + diff --git a/0.0.3/html_split/Topic-introduction.html b/0.0.3/html_split/Topic-introduction.html new file mode 100644 index 0000000..fff97f2 --- /dev/null +++ b/0.0.3/html_split/Topic-introduction.html @@ -0,0 +1,55 @@ + + + + + +Topic introduction (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    8.1.3 Topic introduction

    +

    Very brief introduction to the topic. +

    +

    Explains when and how objects are copied. +

    + + + + + diff --git a/0.0.3/html_split/Use-of-This-Document.html b/0.0.3/html_split/Use-of-This-Document.html new file mode 100644 index 0000000..4c820d5 --- /dev/null +++ b/0.0.3/html_split/Use-of-This-Document.html @@ -0,0 +1,58 @@ + + + + + +Use of This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    4 Use of This Document

    +

    [NOTE: This document follows the same license model as the C++ +Core Guidelines. The LICENSE document is taken verbatim from the C++ +Core Guidelines.] This document is made available under a MIT-style +license. In simple terms, this license permits copying, use, +modification, and creation of derivative works. A copy of the license is +included in the section LICENSE. +

    + + + + + diff --git a/0.0.3/html_split/User_002dDefined-Types-Classes.html b/0.0.3/html_split/User_002dDefined-Types-Classes.html new file mode 100644 index 0000000..808279a --- /dev/null +++ b/0.0.3/html_split/User_002dDefined-Types-Classes.html @@ -0,0 +1,69 @@ + + + + + +User-Defined Types Classes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    7.5 User-Defined Types (Classes)

    + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [‘?’]Special Member Functions???
    [‘?’]Types???
    [‘?’]Conversions???
    [‘?’]Constructors and Destructors???
    [‘?’]Move/Copy Constructors and Assignment Operators???
    [‘?’]Member Functions???
    [‘?’]Sum Types???
    [‘?’]User-Defined Literals???
    [‘?’]Special Member Functions???
    [‘?’]Guidelines for Special Member Functions (e.g., Rule of Five, Rule +of Zero)???
    [‘copy’]Copy Semantics‘✔️’‘✔️’
    [‘?’]Moving and Copying???
    [‘?’]Lambdas???
    + + + + + + diff --git a/0.0.3/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html b/0.0.3/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html new file mode 100644 index 0000000..3f9bf2c --- /dev/null +++ b/0.0.3/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html @@ -0,0 +1,69 @@ + + + + + +Working Group Documents Related to C++ Teaching Guidelines (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
    +

    14.2 Working Group Documents Related to C++ Teaching Guidelines

    +
      +
    • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — +Standing Document for SG20: Guidelines for Teaching C++ to Beginners. +https://wg21.link/p1389. + +
    • Christopher Di Bella. P1725R0 — Modular Topic Design. +https://wg21.link/p1725. + +
    • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to +structure a teaching topic. https://wg21.link/p2193. + +
    • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study +Group: C++ Education. https://wg21.link/p1231. + +
    • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 +— Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0. + +
    + + + + + + diff --git a/0.0.3/html_split/_0023advanced.html b/0.0.3/html_split/_0023advanced.html new file mode 100644 index 0000000..d503bfc --- /dev/null +++ b/0.0.3/html_split/_0023advanced.html @@ -0,0 +1,40 @@ + + + + + + +#advanced (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #advanced.

    + diff --git a/0.0.3/html_split/_0023advanced_002d1.html b/0.0.3/html_split/_0023advanced_002d1.html new file mode 100644 index 0000000..282a7b8 --- /dev/null +++ b/0.0.3/html_split/_0023advanced_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #advanced-1.

    + diff --git a/0.0.3/html_split/_0023advanced_002d2.html b/0.0.3/html_split/_0023advanced_002d2.html new file mode 100644 index 0000000..039b3ff --- /dev/null +++ b/0.0.3/html_split/_0023advanced_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #advanced-2.

    + diff --git a/0.0.3/html_split/_0023advanced_002d3.html b/0.0.3/html_split/_0023advanced_002d3.html new file mode 100644 index 0000000..ebf5529 --- /dev/null +++ b/0.0.3/html_split/_0023advanced_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #advanced-3.

    + diff --git a/0.0.3/html_split/_0023backgroundrequired_002dknowledge.html b/0.0.3/html_split/_0023backgroundrequired_002dknowledge.html new file mode 100644 index 0000000..9959745 --- /dev/null +++ b/0.0.3/html_split/_0023backgroundrequired_002dknowledge.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #backgroundrequired-knowledge.

    + diff --git a/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d1.html b/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d1.html new file mode 100644 index 0000000..f6f6bd0 --- /dev/null +++ b/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #backgroundrequired-knowledge-1.

    + diff --git a/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d2.html b/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d2.html new file mode 100644 index 0000000..b0b297d --- /dev/null +++ b/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #backgroundrequired-knowledge-2.

    + diff --git a/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d3.html b/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d3.html new file mode 100644 index 0000000..ae34d91 --- /dev/null +++ b/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #backgroundrequired-knowledge-3.

    + diff --git a/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d4.html b/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d4.html new file mode 100644 index 0000000..7417f62 --- /dev/null +++ b/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #backgroundrequired-knowledge-4.

    + diff --git a/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d5.html b/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d5.html new file mode 100644 index 0000000..8f0570c --- /dev/null +++ b/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #backgroundrequired-knowledge-5.

    + diff --git a/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d6.html b/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d6.html new file mode 100644 index 0000000..a1cdee1 --- /dev/null +++ b/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #backgroundrequired-knowledge-6.

    + diff --git a/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d7.html b/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d7.html new file mode 100644 index 0000000..893a0ba --- /dev/null +++ b/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #backgroundrequired-knowledge-7.

    + diff --git a/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d8.html b/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d8.html new file mode 100644 index 0000000..6080498 --- /dev/null +++ b/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #backgroundrequired-knowledge-8.

    + diff --git a/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d9.html b/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d9.html new file mode 100644 index 0000000..3ea462d --- /dev/null +++ b/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #backgroundrequired-knowledge-9.

    + diff --git a/0.0.3/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html b/0.0.3/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html new file mode 100644 index 0000000..925c568 --- /dev/null +++ b/0.0.3/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html @@ -0,0 +1,40 @@ + + + + + + +#basics-types-objects-values-expressions-statements-and-control-flow-constructs (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #basics-types-objects-values-expressions-statements-and-control-flow-constructs.

    + diff --git a/0.0.3/html_split/_0023building.html b/0.0.3/html_split/_0023building.html new file mode 100644 index 0000000..8ffc9df --- /dev/null +++ b/0.0.3/html_split/_0023building.html @@ -0,0 +1,40 @@ + + + + + + +#building (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #building.

    + diff --git a/0.0.3/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html b/0.0.3/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html new file mode 100644 index 0000000..a7e6bad --- /dev/null +++ b/0.0.3/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html @@ -0,0 +1,40 @@ + + + + + + +#c-object-model-copy-semantics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #c-object-model-copy-semantics.

    + diff --git a/0.0.3/html_split/_0023caveats.html b/0.0.3/html_split/_0023caveats.html new file mode 100644 index 0000000..d4bac8b --- /dev/null +++ b/0.0.3/html_split/_0023caveats.html @@ -0,0 +1,40 @@ + + + + + + +#caveats (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #caveats.

    + diff --git a/0.0.3/html_split/_0023caveats_002d1.html b/0.0.3/html_split/_0023caveats_002d1.html new file mode 100644 index 0000000..64faefd --- /dev/null +++ b/0.0.3/html_split/_0023caveats_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #caveats-1.

    + diff --git a/0.0.3/html_split/_0023caveats_002d2.html b/0.0.3/html_split/_0023caveats_002d2.html new file mode 100644 index 0000000..6c66559 --- /dev/null +++ b/0.0.3/html_split/_0023caveats_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #caveats-2.

    + diff --git a/0.0.3/html_split/_0023caveats_002d3.html b/0.0.3/html_split/_0023caveats_002d3.html new file mode 100644 index 0000000..479063f --- /dev/null +++ b/0.0.3/html_split/_0023caveats_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #caveats-3.

    + diff --git a/0.0.3/html_split/_0023caveats_002d4.html b/0.0.3/html_split/_0023caveats_002d4.html new file mode 100644 index 0000000..9588a55 --- /dev/null +++ b/0.0.3/html_split/_0023caveats_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #caveats-4.

    + diff --git a/0.0.3/html_split/_0023caveats_002d5.html b/0.0.3/html_split/_0023caveats_002d5.html new file mode 100644 index 0000000..11edee5 --- /dev/null +++ b/0.0.3/html_split/_0023caveats_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #caveats-5.

    + diff --git a/0.0.3/html_split/_0023caveats_002d6.html b/0.0.3/html_split/_0023caveats_002d6.html new file mode 100644 index 0000000..6cea721 --- /dev/null +++ b/0.0.3/html_split/_0023caveats_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #caveats-6.

    + diff --git a/0.0.3/html_split/_0023caveats_002d7.html b/0.0.3/html_split/_0023caveats_002d7.html new file mode 100644 index 0000000..2a8f1cd --- /dev/null +++ b/0.0.3/html_split/_0023caveats_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #caveats-7.

    + diff --git a/0.0.3/html_split/_0023caveats_002d8.html b/0.0.3/html_split/_0023caveats_002d8.html new file mode 100644 index 0000000..e330642 --- /dev/null +++ b/0.0.3/html_split/_0023caveats_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #caveats-8.

    + diff --git a/0.0.3/html_split/_0023caveats_002d9.html b/0.0.3/html_split/_0023caveats_002d9.html new file mode 100644 index 0000000..004e434 --- /dev/null +++ b/0.0.3/html_split/_0023caveats_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #caveats-9.

    + diff --git a/0.0.3/html_split/_0023compilation_002dmodel.html b/0.0.3/html_split/_0023compilation_002dmodel.html new file mode 100644 index 0000000..1017867 --- /dev/null +++ b/0.0.3/html_split/_0023compilation_002dmodel.html @@ -0,0 +1,40 @@ + + + + + + +#compilation-model (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #compilation-model.

    + diff --git a/0.0.3/html_split/_0023compile_002dtime_002dcomputation.html b/0.0.3/html_split/_0023compile_002dtime_002dcomputation.html new file mode 100644 index 0000000..59b0c57 --- /dev/null +++ b/0.0.3/html_split/_0023compile_002dtime_002dcomputation.html @@ -0,0 +1,40 @@ + + + + + + +#compile-time-computation (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #compile-time-computation.

    + diff --git a/0.0.3/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html b/0.0.3/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html new file mode 100644 index 0000000..9294adf --- /dev/null +++ b/0.0.3/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html @@ -0,0 +1,40 @@ + + + + + + +#context-and-aim-of-this-guide (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #context-and-aim-of-this-guide.

    + diff --git a/0.0.3/html_split/_0023contributing_002dto_002dthis_002ddocument.html b/0.0.3/html_split/_0023contributing_002dto_002dthis_002ddocument.html new file mode 100644 index 0000000..272d848 --- /dev/null +++ b/0.0.3/html_split/_0023contributing_002dto_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#contributing-to-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #contributing-to-this-document.

    + diff --git a/0.0.3/html_split/_0023contributors.html b/0.0.3/html_split/_0023contributors.html new file mode 100644 index 0000000..a391f9d --- /dev/null +++ b/0.0.3/html_split/_0023contributors.html @@ -0,0 +1,40 @@ + + + + + + +#contributors (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #contributors.

    + diff --git a/0.0.3/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html b/0.0.3/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html new file mode 100644 index 0000000..d32c27e --- /dev/null +++ b/0.0.3/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html @@ -0,0 +1,40 @@ + + + + + + +#detailed-information-for-modules-and-topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #detailed-information-for-modules-and-topics.

    + diff --git a/0.0.3/html_split/_0023disclaimer.html b/0.0.3/html_split/_0023disclaimer.html new file mode 100644 index 0000000..e9658d6 --- /dev/null +++ b/0.0.3/html_split/_0023disclaimer.html @@ -0,0 +1,40 @@ + + + + + + +#disclaimer (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #disclaimer.

    + diff --git a/0.0.3/html_split/_0023error_002dhandling.html b/0.0.3/html_split/_0023error_002dhandling.html new file mode 100644 index 0000000..80cfb94 --- /dev/null +++ b/0.0.3/html_split/_0023error_002dhandling.html @@ -0,0 +1,40 @@ + + + + + + +#error-handling (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #error-handling.

    + diff --git a/0.0.3/html_split/_0023examples_002dof_002dcourse_002dcurricula.html b/0.0.3/html_split/_0023examples_002dof_002dcourse_002dcurricula.html new file mode 100644 index 0000000..99af091 --- /dev/null +++ b/0.0.3/html_split/_0023examples_002dof_002dcourse_002dcurricula.html @@ -0,0 +1,40 @@ + + + + + + +#examples-of-course-curricula (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #examples-of-course-curricula.

    + diff --git a/0.0.3/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html b/0.0.3/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html new file mode 100644 index 0000000..fc9b3eb --- /dev/null +++ b/0.0.3/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html @@ -0,0 +1,40 @@ + + + + + + +#external-i.e.-non-standard-libraries (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #external-i.e.-non-standard-libraries.

    + diff --git a/0.0.3/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html b/0.0.3/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html new file mode 100644 index 0000000..f915680 --- /dev/null +++ b/0.0.3/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-calling-static_assert-with-a-constant-expression (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #foundational-calling-static_assert-with-a-constant-expression.

    + diff --git a/0.0.3/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html b/0.0.3/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html new file mode 100644 index 0000000..88f62bc --- /dev/null +++ b/0.0.3/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-how-and-when-are-copies-made (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #foundational-how-and-when-are-copies-made.

    + diff --git a/0.0.3/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html b/0.0.3/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html new file mode 100644 index 0000000..95ab098 --- /dev/null +++ b/0.0.3/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-using-and-defining-functions-with-default-arguments (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #foundational-using-and-defining-functions-with-default-arguments.

    + diff --git a/0.0.3/html_split/_0023foundational_002dusing_002dudls.html b/0.0.3/html_split/_0023foundational_002dusing_002dudls.html new file mode 100644 index 0000000..2f7afdd --- /dev/null +++ b/0.0.3/html_split/_0023foundational_002dusing_002dudls.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-using-udls (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #foundational-using-udls.

    + diff --git a/0.0.3/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html b/0.0.3/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html new file mode 100644 index 0000000..708f2d3 --- /dev/null +++ b/0.0.3/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-writing-requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #foundational-writing-requires-expressions.

    + diff --git a/0.0.3/html_split/_0023functions.html b/0.0.3/html_split/_0023functions.html new file mode 100644 index 0000000..e304abe --- /dev/null +++ b/0.0.3/html_split/_0023functions.html @@ -0,0 +1,40 @@ + + + + + + +#functions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #functions.

    + diff --git a/0.0.3/html_split/_0023functions_002ddefault_002dargument.html b/0.0.3/html_split/_0023functions_002ddefault_002dargument.html new file mode 100644 index 0000000..ccfbcbb --- /dev/null +++ b/0.0.3/html_split/_0023functions_002ddefault_002dargument.html @@ -0,0 +1,40 @@ + + + + + + +#functions-default-argument (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #functions-default-argument.

    + diff --git a/0.0.3/html_split/_0023functions_002duser_002ddefined_002dliterals.html b/0.0.3/html_split/_0023functions_002duser_002ddefined_002dliterals.html new file mode 100644 index 0000000..b4f78b5 --- /dev/null +++ b/0.0.3/html_split/_0023functions_002duser_002ddefined_002dliterals.html @@ -0,0 +1,40 @@ + + + + + + +#functions-user-defined-literals (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #functions-user-defined-literals.

    + diff --git a/0.0.3/html_split/_0023generic_002dprogramming_002dtemplates.html b/0.0.3/html_split/_0023generic_002dprogramming_002dtemplates.html new file mode 100644 index 0000000..3b91080 --- /dev/null +++ b/0.0.3/html_split/_0023generic_002dprogramming_002dtemplates.html @@ -0,0 +1,40 @@ + + + + + + +#generic-programming-templates (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #generic-programming-templates.

    + diff --git a/0.0.3/html_split/_0023glossary.html b/0.0.3/html_split/_0023glossary.html new file mode 100644 index 0000000..9b46bf6 --- /dev/null +++ b/0.0.3/html_split/_0023glossary.html @@ -0,0 +1,40 @@ + + + + + + +#glossary (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #glossary.

    + diff --git a/0.0.3/html_split/_0023how_002dto_002dcontribute.html b/0.0.3/html_split/_0023how_002dto_002dcontribute.html new file mode 100644 index 0000000..d9cff4a --- /dev/null +++ b/0.0.3/html_split/_0023how_002dto_002dcontribute.html @@ -0,0 +1,40 @@ + + + + + + +#how-to-contribute (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #how-to-contribute.

    + diff --git a/0.0.3/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html b/0.0.3/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html new file mode 100644 index 0000000..def5140 --- /dev/null +++ b/0.0.3/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html @@ -0,0 +1,40 @@ + + + + + + +#inheritance-and-class-hierarchies (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #inheritance-and-class-hierarchies.

    + diff --git a/0.0.3/html_split/_0023license.html b/0.0.3/html_split/_0023license.html new file mode 100644 index 0000000..6b44dd1 --- /dev/null +++ b/0.0.3/html_split/_0023license.html @@ -0,0 +1,40 @@ + + + + + + +#license (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #license.

    + diff --git a/0.0.3/html_split/_0023main_002dadvanced_002drequirements.html b/0.0.3/html_split/_0023main_002dadvanced_002drequirements.html new file mode 100644 index 0000000..8214533 --- /dev/null +++ b/0.0.3/html_split/_0023main_002dadvanced_002drequirements.html @@ -0,0 +1,40 @@ + + + + + + +#main-advanced-requirements (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #main-advanced-requirements.

    + diff --git a/0.0.3/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html b/0.0.3/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html new file mode 100644 index 0000000..22b0484 --- /dev/null +++ b/0.0.3/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html @@ -0,0 +1,40 @@ + + + + + + +#main-contracts-and-static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #main-contracts-and-static_assert.

    + diff --git a/0.0.3/html_split/_0023main_002dimplementing.html b/0.0.3/html_split/_0023main_002dimplementing.html new file mode 100644 index 0000000..260008c --- /dev/null +++ b/0.0.3/html_split/_0023main_002dimplementing.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #main-implementing.

    + diff --git a/0.0.3/html_split/_0023main_002dimplementing_002dudls.html b/0.0.3/html_split/_0023main_002dimplementing_002dudls.html new file mode 100644 index 0000000..a41d194 --- /dev/null +++ b/0.0.3/html_split/_0023main_002dimplementing_002dudls.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing-udls (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #main-implementing-udls.

    + diff --git a/0.0.3/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html b/0.0.3/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html new file mode 100644 index 0000000..1e5a4d8 --- /dev/null +++ b/0.0.3/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing-user-defined-copy-operations (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #main-implementing-user-defined-copy-operations.

    + diff --git a/0.0.3/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html b/0.0.3/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html new file mode 100644 index 0000000..4502ed8 --- /dev/null +++ b/0.0.3/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html @@ -0,0 +1,40 @@ + + + + + + +#meta-error-handling-static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #meta-error-handling-static_assert.

    + diff --git a/0.0.3/html_split/_0023module_002dname_002drequires_002dexpressions.html b/0.0.3/html_split/_0023module_002dname_002drequires_002dexpressions.html new file mode 100644 index 0000000..56a9ebf --- /dev/null +++ b/0.0.3/html_split/_0023module_002dname_002drequires_002dexpressions.html @@ -0,0 +1,40 @@ + + + + + + +#module-name-requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #module-name-requires-expressions.

    + diff --git a/0.0.3/html_split/_0023motivation.html b/0.0.3/html_split/_0023motivation.html new file mode 100644 index 0000000..0141374 --- /dev/null +++ b/0.0.3/html_split/_0023motivation.html @@ -0,0 +1,40 @@ + + + + + + +#motivation (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #motivation.

    + diff --git a/0.0.3/html_split/_0023motivation_002d1.html b/0.0.3/html_split/_0023motivation_002d1.html new file mode 100644 index 0000000..7e4a69e --- /dev/null +++ b/0.0.3/html_split/_0023motivation_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #motivation-1.

    + diff --git a/0.0.3/html_split/_0023motivation_002d2.html b/0.0.3/html_split/_0023motivation_002d2.html new file mode 100644 index 0000000..7901fd3 --- /dev/null +++ b/0.0.3/html_split/_0023motivation_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #motivation-2.

    + diff --git a/0.0.3/html_split/_0023motivation_002d3.html b/0.0.3/html_split/_0023motivation_002d3.html new file mode 100644 index 0000000..ec720ad --- /dev/null +++ b/0.0.3/html_split/_0023motivation_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #motivation-3.

    + diff --git a/0.0.3/html_split/_0023motivation_002d4.html b/0.0.3/html_split/_0023motivation_002d4.html new file mode 100644 index 0000000..f53583a --- /dev/null +++ b/0.0.3/html_split/_0023motivation_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #motivation-4.

    + diff --git a/0.0.3/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html b/0.0.3/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html new file mode 100644 index 0000000..57e8b6e --- /dev/null +++ b/0.0.3/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html @@ -0,0 +1,40 @@ + + + + + + +#obtaining-this-document-the-most-recent-version-and-alternate-formats (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #obtaining-this-document-the-most-recent-version-and-alternate-formats.

    + diff --git a/0.0.3/html_split/_0023organization_002dof_002dthis_002ddocument.html b/0.0.3/html_split/_0023organization_002dof_002dthis_002ddocument.html new file mode 100644 index 0000000..e312b8e --- /dev/null +++ b/0.0.3/html_split/_0023organization_002dof_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#organization-of-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #organization-of-this-document.

    + diff --git a/0.0.3/html_split/_0023overview.html b/0.0.3/html_split/_0023overview.html new file mode 100644 index 0000000..b2d4bdc --- /dev/null +++ b/0.0.3/html_split/_0023overview.html @@ -0,0 +1,40 @@ + + + + + + +#overview (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #overview.

    + diff --git a/0.0.3/html_split/_0023overview_002d1.html b/0.0.3/html_split/_0023overview_002d1.html new file mode 100644 index 0000000..d551764 --- /dev/null +++ b/0.0.3/html_split/_0023overview_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#overview-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #overview-1.

    + diff --git a/0.0.3/html_split/_0023overview_002d2.html b/0.0.3/html_split/_0023overview_002d2.html new file mode 100644 index 0000000..5a34b05 --- /dev/null +++ b/0.0.3/html_split/_0023overview_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#overview-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #overview-2.

    + diff --git a/0.0.3/html_split/_0023overview_002d3.html b/0.0.3/html_split/_0023overview_002d3.html new file mode 100644 index 0000000..f230145 --- /dev/null +++ b/0.0.3/html_split/_0023overview_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#overview-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #overview-3.

    + diff --git a/0.0.3/html_split/_0023overview_002d4.html b/0.0.3/html_split/_0023overview_002d4.html new file mode 100644 index 0000000..2436b9a --- /dev/null +++ b/0.0.3/html_split/_0023overview_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#overview-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #overview-4.

    + diff --git a/0.0.3/html_split/_0023points_002dto_002dcover.html b/0.0.3/html_split/_0023points_002dto_002dcover.html new file mode 100644 index 0000000..424b02b --- /dev/null +++ b/0.0.3/html_split/_0023points_002dto_002dcover.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #points-to-cover.

    + diff --git a/0.0.3/html_split/_0023points_002dto_002dcover_002d1.html b/0.0.3/html_split/_0023points_002dto_002dcover_002d1.html new file mode 100644 index 0000000..2a554bb --- /dev/null +++ b/0.0.3/html_split/_0023points_002dto_002dcover_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #points-to-cover-1.

    + diff --git a/0.0.3/html_split/_0023points_002dto_002dcover_002d2.html b/0.0.3/html_split/_0023points_002dto_002dcover_002d2.html new file mode 100644 index 0000000..053a51a --- /dev/null +++ b/0.0.3/html_split/_0023points_002dto_002dcover_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #points-to-cover-2.

    + diff --git a/0.0.3/html_split/_0023points_002dto_002dcover_002d3.html b/0.0.3/html_split/_0023points_002dto_002dcover_002d3.html new file mode 100644 index 0000000..b0dad48 --- /dev/null +++ b/0.0.3/html_split/_0023points_002dto_002dcover_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #points-to-cover-3.

    + diff --git a/0.0.3/html_split/_0023points_002dto_002dcover_002d4.html b/0.0.3/html_split/_0023points_002dto_002dcover_002d4.html new file mode 100644 index 0000000..94de8fa --- /dev/null +++ b/0.0.3/html_split/_0023points_002dto_002dcover_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #points-to-cover-4.

    + diff --git a/0.0.3/html_split/_0023points_002dto_002dcover_002d5.html b/0.0.3/html_split/_0023points_002dto_002dcover_002d5.html new file mode 100644 index 0000000..39d1eaf --- /dev/null +++ b/0.0.3/html_split/_0023points_002dto_002dcover_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #points-to-cover-5.

    + diff --git a/0.0.3/html_split/_0023points_002dto_002dcover_002d6.html b/0.0.3/html_split/_0023points_002dto_002dcover_002d6.html new file mode 100644 index 0000000..92df88f --- /dev/null +++ b/0.0.3/html_split/_0023points_002dto_002dcover_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #points-to-cover-6.

    + diff --git a/0.0.3/html_split/_0023points_002dto_002dcover_002d7.html b/0.0.3/html_split/_0023points_002dto_002dcover_002d7.html new file mode 100644 index 0000000..6e6c895 --- /dev/null +++ b/0.0.3/html_split/_0023points_002dto_002dcover_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #points-to-cover-7.

    + diff --git a/0.0.3/html_split/_0023points_002dto_002dcover_002d8.html b/0.0.3/html_split/_0023points_002dto_002dcover_002d8.html new file mode 100644 index 0000000..b5574e1 --- /dev/null +++ b/0.0.3/html_split/_0023points_002dto_002dcover_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #points-to-cover-8.

    + diff --git a/0.0.3/html_split/_0023preprocessor.html b/0.0.3/html_split/_0023preprocessor.html new file mode 100644 index 0000000..a3bb5f6 --- /dev/null +++ b/0.0.3/html_split/_0023preprocessor.html @@ -0,0 +1,40 @@ + + + + + + +#preprocessor (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #preprocessor.

    + diff --git a/0.0.3/html_split/_0023references.html b/0.0.3/html_split/_0023references.html new file mode 100644 index 0000000..69fbd6b --- /dev/null +++ b/0.0.3/html_split/_0023references.html @@ -0,0 +1,40 @@ + + + + + + +#references (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #references.

    + diff --git a/0.0.3/html_split/_0023references_002don_002dlearning_002doutcomes.html b/0.0.3/html_split/_0023references_002don_002dlearning_002doutcomes.html new file mode 100644 index 0000000..d28fbbf --- /dev/null +++ b/0.0.3/html_split/_0023references_002don_002dlearning_002doutcomes.html @@ -0,0 +1,40 @@ + + + + + + +#references-on-learning-outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #references-on-learning-outcomes.

    + diff --git a/0.0.3/html_split/_0023software_002ddesign.html b/0.0.3/html_split/_0023software_002ddesign.html new file mode 100644 index 0000000..16f5f54 --- /dev/null +++ b/0.0.3/html_split/_0023software_002ddesign.html @@ -0,0 +1,40 @@ + + + + + + +#software-design (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #software-design.

    + diff --git a/0.0.3/html_split/_0023standard_002dlibrary.html b/0.0.3/html_split/_0023standard_002dlibrary.html new file mode 100644 index 0000000..71956d3 --- /dev/null +++ b/0.0.3/html_split/_0023standard_002dlibrary.html @@ -0,0 +1,40 @@ + + + + + + +#standard-library (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #standard-library.

    + diff --git a/0.0.3/html_split/_0023student_002doutcomes.html b/0.0.3/html_split/_0023student_002doutcomes.html new file mode 100644 index 0000000..df0035d --- /dev/null +++ b/0.0.3/html_split/_0023student_002doutcomes.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #student-outcomes.

    + diff --git a/0.0.3/html_split/_0023student_002doutcomes_002d1.html b/0.0.3/html_split/_0023student_002doutcomes_002d1.html new file mode 100644 index 0000000..e9344b7 --- /dev/null +++ b/0.0.3/html_split/_0023student_002doutcomes_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #student-outcomes-1.

    + diff --git a/0.0.3/html_split/_0023student_002doutcomes_002d2.html b/0.0.3/html_split/_0023student_002doutcomes_002d2.html new file mode 100644 index 0000000..6fa7724 --- /dev/null +++ b/0.0.3/html_split/_0023student_002doutcomes_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #student-outcomes-2.

    + diff --git a/0.0.3/html_split/_0023student_002doutcomes_002d3.html b/0.0.3/html_split/_0023student_002doutcomes_002d3.html new file mode 100644 index 0000000..195d9d2 --- /dev/null +++ b/0.0.3/html_split/_0023student_002doutcomes_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #student-outcomes-3.

    + diff --git a/0.0.3/html_split/_0023student_002doutcomes_002d4.html b/0.0.3/html_split/_0023student_002doutcomes_002d4.html new file mode 100644 index 0000000..3e30430 --- /dev/null +++ b/0.0.3/html_split/_0023student_002doutcomes_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #student-outcomes-4.

    + diff --git a/0.0.3/html_split/_0023student_002doutcomes_002d5.html b/0.0.3/html_split/_0023student_002doutcomes_002d5.html new file mode 100644 index 0000000..0a4a7da --- /dev/null +++ b/0.0.3/html_split/_0023student_002doutcomes_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #student-outcomes-5.

    + diff --git a/0.0.3/html_split/_0023student_002doutcomes_002d6.html b/0.0.3/html_split/_0023student_002doutcomes_002d6.html new file mode 100644 index 0000000..c5c4ac0 --- /dev/null +++ b/0.0.3/html_split/_0023student_002doutcomes_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #student-outcomes-6.

    + diff --git a/0.0.3/html_split/_0023student_002doutcomes_002d7.html b/0.0.3/html_split/_0023student_002doutcomes_002d7.html new file mode 100644 index 0000000..5233f94 --- /dev/null +++ b/0.0.3/html_split/_0023student_002doutcomes_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #student-outcomes-7.

    + diff --git a/0.0.3/html_split/_0023student_002doutcomes_002d8.html b/0.0.3/html_split/_0023student_002doutcomes_002d8.html new file mode 100644 index 0000000..f19fd7f --- /dev/null +++ b/0.0.3/html_split/_0023student_002doutcomes_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #student-outcomes-8.

    + diff --git a/0.0.3/html_split/_0023student_002doutcomes_002d9.html b/0.0.3/html_split/_0023student_002doutcomes_002d9.html new file mode 100644 index 0000000..735a21f --- /dev/null +++ b/0.0.3/html_split/_0023student_002doutcomes_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #student-outcomes-9.

    + diff --git a/0.0.3/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html b/0.0.3/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html new file mode 100644 index 0000000..4801178 --- /dev/null +++ b/0.0.3/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html @@ -0,0 +1,40 @@ + + + + + + +#summary-of-modules-and-topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #summary-of-modules-and-topics.

    + diff --git a/0.0.3/html_split/_0023testing_002dand_002ddebugging.html b/0.0.3/html_split/_0023testing_002dand_002ddebugging.html new file mode 100644 index 0000000..1ae096d --- /dev/null +++ b/0.0.3/html_split/_0023testing_002dand_002ddebugging.html @@ -0,0 +1,40 @@ + + + + + + +#testing-and-debugging (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #testing-and-debugging.

    + diff --git a/0.0.3/html_split/_0023tooling.html b/0.0.3/html_split/_0023tooling.html new file mode 100644 index 0000000..634a8dc --- /dev/null +++ b/0.0.3/html_split/_0023tooling.html @@ -0,0 +1,40 @@ + + + + + + +#tooling (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #tooling.

    + diff --git a/0.0.3/html_split/_0023topic_002dintroduction.html b/0.0.3/html_split/_0023topic_002dintroduction.html new file mode 100644 index 0000000..742d5d9 --- /dev/null +++ b/0.0.3/html_split/_0023topic_002dintroduction.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #topic-introduction.

    + diff --git a/0.0.3/html_split/_0023topic_002dintroduction_002d1.html b/0.0.3/html_split/_0023topic_002dintroduction_002d1.html new file mode 100644 index 0000000..a110644 --- /dev/null +++ b/0.0.3/html_split/_0023topic_002dintroduction_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #topic-introduction-1.

    + diff --git a/0.0.3/html_split/_0023topic_002dintroduction_002d2.html b/0.0.3/html_split/_0023topic_002dintroduction_002d2.html new file mode 100644 index 0000000..986bf37 --- /dev/null +++ b/0.0.3/html_split/_0023topic_002dintroduction_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #topic-introduction-2.

    + diff --git a/0.0.3/html_split/_0023topic_002dintroduction_002d3.html b/0.0.3/html_split/_0023topic_002dintroduction_002d3.html new file mode 100644 index 0000000..3d14fd9 --- /dev/null +++ b/0.0.3/html_split/_0023topic_002dintroduction_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #topic-introduction-3.

    + diff --git a/0.0.3/html_split/_0023topic_002dintroduction_002d4.html b/0.0.3/html_split/_0023topic_002dintroduction_002d4.html new file mode 100644 index 0000000..c73a236 --- /dev/null +++ b/0.0.3/html_split/_0023topic_002dintroduction_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #topic-introduction-4.

    + diff --git a/0.0.3/html_split/_0023use_002dof_002dthis_002ddocument.html b/0.0.3/html_split/_0023use_002dof_002dthis_002ddocument.html new file mode 100644 index 0000000..68d835d --- /dev/null +++ b/0.0.3/html_split/_0023use_002dof_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#use-of-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #use-of-this-document.

    + diff --git a/0.0.3/html_split/_0023user_002ddefined_002dtypes_002dclasses.html b/0.0.3/html_split/_0023user_002ddefined_002dtypes_002dclasses.html new file mode 100644 index 0000000..04771a9 --- /dev/null +++ b/0.0.3/html_split/_0023user_002ddefined_002dtypes_002dclasses.html @@ -0,0 +1,40 @@ + + + + + + +#user-defined-types-classes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #user-defined-types-classes.

    + diff --git a/0.0.3/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html b/0.0.3/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html new file mode 100644 index 0000000..f4b9435 --- /dev/null +++ b/0.0.3/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html @@ -0,0 +1,40 @@ + + + + + + +#working-group-documents-related-to-c-teaching-guidelines (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #working-group-documents-related-to-c-teaching-guidelines.

    + diff --git a/0.0.3/html_split/index.html b/0.0.3/html_split/index.html new file mode 100644 index 0000000..c4e5ff0 --- /dev/null +++ b/0.0.3/html_split/index.html @@ -0,0 +1,240 @@ + + + + + +Top (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +

    Table of Contents

    + +
    + + +
    + + + +
    +

    Guidelines for Teaching C++

    + + + + + + + + + + + + + + + + + + +
    + + + + + + diff --git a/0.0.3/html_split/unknown_node.html b/0.0.3/html_split/unknown_node.html new file mode 100644 index 0000000..5a652e5 --- /dev/null +++ b/0.0.3/html_split/unknown_node.html @@ -0,0 +1,763 @@ + + + + + +Guidelines for Teaching C++ + + + + + + + + + + + + + + + + +
    +

    +   [Contents]

    +
    +
    +

    8.1.5.1 Background/Required Knowledge

    +

    A student is able to: * identify special member functions +[C++ object model: +special member functions] +

    +

    It helps when a student is able to: * use move semantics +[C++ object model: move +semantics] * explain the rule of zero +[C++ object model: rule-of-zero] +* explain the rule of five [C++ +object model: rule-of-five] +

    +
    +

    +   [Contents]

    +
    +

    8.1.5.2 Student outcomes

    +

    A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

    +

    A student should be able to: * explain when they have to implement the +copy operations for their own type * Copy constructor * Copy assignment +operator * implement copy operations for their own types * +Optional: explain when copying with basic and strong exception +guarantees is useful +

    +
    +

    +   [Contents]

    +
    +

    8.1.5.3 Caveats

    +

    This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

    +
      +
    • Intricacies when implementing copy operations: +
        +
      • Examples of how not to write copy operations (e.g., C++03 +std::auto_ptr) +
      + +
    + +
    +

    +   [Contents]

    +
    +

    8.1.5.4 Points to cover

    +

    This section lists important details for each point. +

    +
      +
    • Copy constructors and copy assignment operators +
        +
      • How compiler generates default copy operations +
      • =default, =delete (No copy) +
      • How-to write your own copy operations +
      • Rule-of-five +
      • Copy assignment operators can be ref-qualified to avoid assigning into +temporary objects. +
      + +
    + +
    +

    +   [Contents]

    +
    +

    8.2.1 Overview

    +

    Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

    + + + + + +
    LevelObjectives
    Foundationalusing and understanding UDLs
    Mainimplementing your own UDLs
    AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
    + +
    +

    +   [Contents]

    +
    +

    8.2.2 Motivation

    +

    Why is this important? Why do we want to learn/teach this +topic? +

    +
      +
    • Allows clearer expression of intent in C++. +
    • std::string: "Hello, world!"s +
    • std::chrono: 3h + 10min + 5s +
    + +
    +

    +   [Contents]

    +
    +

    8.2.3 Topic introduction

    +

    Very brief introduction to the topic. +

    +
      +
    • Explain the existence of user defined literals. Example: +12min + 17s is terse, expressive and type safe. +
    + +
    +

    +   [Contents]

    +
    +

    8.2.4.1 Background/Required Knowledge

    +

    A student: * knows how to form numeric literals, e.g., 1.5f means +a float of value 1.5. * is familiar with the major C++ +types: * bool (Boolean type) * int (Integer type) * +double (Floating-point type) * std::string (Text type) * +std::vector (Collection type) * knows that namespaces exist, and +namespace std. * knows what using-declarations and +using-directives are. +[C++ object +model: declarations] +

    +
    +

    +   [Contents]

    +
    +

    8.2.4.2 Student outcomes

    +

    A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

    +

    A student should be able to: +

    +
      +
    1. use using namespace std::string_literals[1]. +
    2. recognise UDLs in code that they are reading. +
    3. figure out which UDL definitions for a used type exist. +
    4. identify parts of the standard library that make use of UDLs. +
    5. prevent the dangers of temporaries created with "blah"s as well +as with std::string{"blah"}. +
    6. effectively selects the right set of namespaces in using-directives from +the sub-namespaces std::literals. +
    + +

    [1]: explain that it’s okay to use a using-directive to “activate” +UDLs. +

    +
    +

    +   [Contents]

    +
    +

    8.2.4.3 Caveats

    +

    This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

    +
      +
    • A student gets confused by the similarities and differences between +built-in suffixes and UDLs and between UDLs from different namespaces. +
    • A student “activates” two suffixes with the same signature from +different namespaces. +
    + +
    +

    +   [Contents]

    +
    +

    8.2.4.4 Points to cover

    +

    This section lists important details for each point. +

    +
    +

    +   [Contents]

    +
    +

    8.2.5.1 Background/Required Knowledge

    +
      +
    • All of the above. +
    + +
    +

    +   [Contents]

    +
    +

    8.2.5.2 Student outcomes

    +

    A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

    +

    A student should be able to: +

    +
      +
    1. write a UDL operator of their own. +
    2. separate unrelated UDLs into distinct namespaces. +
    + +
    +

    +   [Contents]

    +
    +

    8.2.5.3 Caveats

    +

    This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

    +

    No caveats at present. #### Points to cover +

    +

    This section lists important details for each point. +

    +

    No caveats at present. ### Advanced {#udl-advanced} +

    +

    These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

    +
    +

    +   [Contents]

    +
    +

    8.3.1 Overview

    +

    Functions in C++ may be overloaded with different numbers and types of +parameters. It may be of value to specify default arguments for some +number of parameters, to allow a caller to avoid specifying arguments +that rarely change, or to enable expanding the set of parameters while +maintaining backward compatibility with existing callers. +

    + + + + + +
    LevelObjective
    FoundationalDefine and use functions with default arguments
    Main
    Advancedrefinement of default arguments through multiple declarations
    + +
    +

    +   [Contents]

    +
    +

    8.3.2 Motivation

    +

    Default arguments allow the omission of arguments with obvious or common +values. Also may be utilized to extend an existing function signature +without forcing changes to existing calling code. +

    +
    +

    +   [Contents]

    +
    +

    8.3.3 Topic introduction

    +

    Explain how default arguments work and how to define them. +

    +
    +

    +   [Contents]

    +
    +

    8.3.4.1 Background/Required Knowledge

    +

    A student is able to: +

    + + +
    +

    +   [Contents]

    +
    +

    8.3.4.2 Student outcomes

    +

    A student should be able to: +

    +
      +
    1. Call to a function with a default argument with or without that argument +specified +
    2. Declare a function with a default argument, and omit the default in the +definition’s signature +
    3. Explain when the lifetime of a default argument begins and ends +
    + +
    +

    +   [Contents]

    +
    +

    8.3.4.3 Caveats

    +
      +
    • When no forward-declaration exists, the definition serves as the +declaration +
    • When multiple declarations exist, only one may specify the default for +any particular parameter, but multiple declarations may specify the +defaults for different parameters. +
    • Additional default values may be specified for other parameters in +repeat declarations +
    • Calling an overloaded function with fewer arguments may be ambiguous +with regard to an overload with default arguments +
    + +
    +

    +   [Contents]

    +
    +

    8.3.4.4 Points to cover

    +
      +
    • Default value may only be specified once for each parameter among all +declarations +
    • Default values must start from the rightmost parameter and continue +leftward without gaps +
    • Considerations of when to use default arguments vs overload set +
    + +
    +

    +   [Contents]

    +
    +

    8.3.5.2 Student outcomes

    +

    A student should be able to: +

    +
    +

    +   [Contents]

    +
    +

    8.3.5.3 Caveats

    + +
    +

    +   [Contents]

    +
    +

    8.3.5.4 Points to cover

    + +
    +

    +   [Contents]

    +
    +

    8.3.6 Advanced

    +

    Subsequent redeclarations of the same function may add default argument +values, which are then usable by callers. Though a single parameter +cannot be given a default argument twice in the same translation unit, +it is legal, though ill-advised, to give the same function different +default arguments in different translation units. +

    +
    +

    +   [Contents]

    +
    +

    8.4.1 Overview

    + + + + + +
    LevelObjectives
    FoundationalDefine and use requires-expressions to check satisfaction of +expressions by given parameters
    MainDefine and use requires-expressions to check properties of +expressions
    Advanced
    + +
    +

    +   [Contents]

    +
    +

    8.4.2 Motivation

    +

    Requires-expressions allow a developer to perform compile-time +evaluation on the validity of other expressions. These are fundamental +to the ability to write concepts. +[Compile-time programming: +concepts] +

    +
    +

    +   [Contents]

    +
    +

    8.5 Topic introduction

    +

    Requires-expressions are compile-time predicates which evaluate to true +when their specified set of expressions are all valid for a given set of +inputs. +

    + + + + + + +
    +

    +   [Contents]

    +
    +

    8.5.1.1 Background/Required Knowledge

    +

    A student is able to: +

    + + +

    It is helpful if: +

    +
      +
    • The student is aware that attempting to specialize the template with +types or values which do not match otherwise unstated assumptions will +cause errors within the template. +
    + +
    +

    +   [Contents]

    +
    +

    8.5.1.2 Student outcomes

    +

    A student should be able to: +

    +
      +
    1. Write a simple-requirement to assert the validity of an expression +
    2. Write a type-requirement to check the existence of a type by its +identifier +
    3. Write a compound-requirement to test the resulting type of an expression +
    4. Write a nested-requirement to test the constexpr value of an operation, +as opposed to just the syntactic validity +
    5. Use a requires-expression within a concept, requires-clause, or +if constexpr condition +
    + +
    +

    +   [Contents]

    +
    +

    8.5.1.3 Caveats

    +

    To require that expressions, which evaluate to a boolean value like +sizeof(t) == 4, evaluate to true a nested-requirement is +needed (e.g., requires sizeof(t) == 4;). Omitting the +requires results in a simple-requirement, which is satisfied +based purely on syntactic validity, not on the result of the operation. +

    +
    +

    +   [Contents]

    +
    +

    8.5.1.4 Points to cover

    +
      +
    • All requires-expression requirements terminate with a semicolon. +
    • simple-requirements are used to check that an expression is well-formed. +
    • nested-requirements are introduced with requires and primarily +used to check the result of an expression computable by the compiler, +including concepts or other requires-expressions. +
    • type-requirements are introduced with typename and used to verify +the existence of a type with a particular identifier. +
    • compound-requirements are enclosed in braces and can be used to check +the resulting type of an expression. +
    • Checks are performed by the compiler, not at run time. +
    • If covering usage of requires-expression with requires-clause, +[Compile-time +programming: requires clause] demonstrate requires requires and +show how to ever avoid writing it by using a concept. +[Compile-time programming: +concepts] +
    + +
    +

    +   [Contents]

    +
    +

    8.5.2.1 Background/required knowledge

    +
      +
    • All of the above. +
    • Knowledge of noexcept +
    + +

    A student is able to: +

    + + +
    +

    +   [Contents]

    +
    +

    8.5.2.2 Student outcomes

    +

    A student should be able to: +

    +
      +
    1. Write compound-requirements which test the noexceptness of an +expression. +
    2. Use a concept as the target of a compound-requirement. +
    + +
    +

    +   [Contents]

    +
    +

    8.5.2.3 Caveats

    + +
    +

    +   [Contents]

    +
    +

    8.5.2.4 Points to cover

    +
      +
    • Compound-requirements allow the optional ability to test whether an +expression is marked as noexcept, by using a trailing +noexcept keyword. +
    + +
    struct S
    +{
    +    void foo() noexcept {}
    +    void bar() {}
    +};
    +
    +static_assert(requires(S s) { { s.foo() } noexcept; } ); // Succeeds. s.foo() is noexcept
    +static_assert(requires(S s) { { s.bar() } noexcept; } ); // Fails. s.bar() is not noexcept
    +
    +
      +
    • If the return-type-requirement of a compound-requirement is a concept, +that concept is given the resulting type as the first parameter, +followed by the specified parameters in the compound-requirement. +{ ++x } -> C<int> would substitute +C<decltype((++x)), int> and check that concept C is satisfied for +those parameters. +
    + +
    +

    +   [Contents]

    +
    +

    8.5.3 Advanced

    + +
    +

    +   [Contents]

    +
    +

    8.6.1 Overview

    +

    Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

    + + + + + +
    LevelObjectives
    FoundationalCalling static_assert with a constant expression
    MainUsing static_assert to detect contract violations and +improve error messages
    Advanced
    + +
    +

    +   [Contents]

    +
    +

    8.6.2 Motivation

    +

    Why is this important? Why do we want to learn/teach this +topic? +

    +

    static_assert allows the developer to enforce that conditions +which can be checked during compilation will force build errors when +violated. Additionally, they are the best mechanism by which a developer +can pass useful information to other developers regarding what violation +occurred or what must be done, instead. +

    +
    +

    +   [Contents]

    +
    +

    8.6.3 Topic introduction

    +

    Very brief introduction to the topic. +

    +

    static_assert is a compile-time evaluated function that asserts +the truth of a supplied predicate, issuing an optional user-supplied +error message if the predicate is false. +

    +
    +

    +   [Contents]

    +
    +

    8.6.4.1 Background/Required Knowledge

    +

    A student: +

    +
      +
    • Should be able to explain the difference between code evaluated at +compile-time and run-time +
    • Should be able to cite some examples of compile-time known information, +such as sizeof(T) +
    + +
    +

    +   [Contents]

    +
    +

    8.6.4.2 Student outcomes

    +

    A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

    +

    A student should be able to: +

    +
      +
    1. Assert the expected size of a structure using static_assert +
    + +
    +

    +   [Contents]

    +
    +

    8.6.4.3 Caveats

    +

    This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

    +
    +

    +   [Contents]

    +
    +

    8.6.4.4 Points to cover

    +

    This section lists important details for each point. +

    +
      +
    • X +
    • In addition to what is wrong, a good error message will inform the user +of how to correct it +
    + +
    +

    +   [Contents]

    +
    +

    8.6.5.1 Background/Required Knowledge

    +
      +
    • All of the above. +
    • General understanding of compile-time requirements +
    + +
    +

    +   [Contents]

    +
    +

    8.6.5.2 Student outcomes

    +

    A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

    +

    A student should be able to: +

    +
      +
    1. Utilize static_assert to verify preconditions of a meta-function +
    2. Utilize static_assert to verify the results of meta-functions for +known values +
    + +
    +

    +   [Contents]

    +
    +

    8.6.5.3 Caveats

    +

    This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

    +
    +

    +   [Contents]

    +
    +

    8.6.5.4 Points to cover

    +

    This section lists important details for each point. +

    +
      +
    • When writing a meta-function, use static_assert to test the +results +
    • Write static_assert calls at the scope of the code they are +guarding +
    + +
    template<typename T>
    +struct container {
    +    std::map<int, T> vals;
    +
    +    // Test location #1
    +    static_assert(
    +        std::is_default_constructible_v<T>,
    +        "container type T must be default constructible");i
    +
    +    void add(int key, T const& t) {
    +        // Test location #2
    +        static_assert(
    +            std::is_default_constructible_v<T>,
    +            "container type T must be default constructible");
    +        // std::map::operator[] requires default constructible type for 
    +        // the value. This will cause a build failure deep in the 
    +        // implementation of std::map, when T is not default constructible
    +        vals[key] = t;
    +    }
    +};
    +
    +struct NoDefCtor {
    +    NoDefCtor() = delete;
    +    NoDefCtor(double d) {}
    +};
    +
    +container<NoDefCtor> c; // If Test #1 was omitted, this would succeed
    +// This is ill-formed. Test #2 would catch this and provide a better 
    +// error message for the user
    +c.add(42, NoDefCtor(1.0)); 
    +
    +
    +

    +   [Contents]

    +
    +

    8.6.6 Advanced

    +

    These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

    + + + + + diff --git a/index.html b/index.html index 604b236..6bf9c53 100644 --- a/index.html +++ b/index.html @@ -1,6 +1,7 @@ - + + -

    If you are not redirected in five seconds, click here.

    +

    If you are not redirected in five seconds, click here.

    diff --git a/latest/images/cpp_logo.png b/latest/images/cpp_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..780e8a32bdd384c1dbd0fc999b9ef9ed2e1bdad6 GIT binary patch literal 23613 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 literal 0 HcmV?d00001 diff --git a/latest/index.html b/latest/index.html new file mode 100644 index 0000000..6659bd3 --- /dev/null +++ b/latest/index.html @@ -0,0 +1,1430 @@ + + + + + + + Guidelines for Teaching C++ + + + + + + + + + + + + + + + + + + + + + Guidelines for Teaching C++ + + + + + + + +
    + +
    + +
    + +
    + +
    +

    Guidelines for Teaching C++

    + +

    Version 0.0.3

    + +

    SG20 (ISO C++ Study Group on Education)

    +
    +
    + +
    +
    +
    + +
    +
    + +
    +

    1 Obtaining This Document: The Most Recent Version and Alternate Formats

    +

    The most recent version of this document is available as an online HTML document at: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/latest/.

    +

    The version of the document that you are currently reading is available in the following formats:

    +
      +
    1. online (HTML) format as a single large HTML document: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.3/html [later to be https://cplusplus.github.io/SG20/0.0.3/html?]

    2. +
    3. EPUB format: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.3/guidelines.epub [later to be https:/cplusplus.github.io/SG20/0.0.3/guidelines.epub?]

    4. +
    5. online (HTML) format, split across multiple HTML documents: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.3/html_split/ [later to be https://cplusplus.github.io/SG20/0.0.3/html_split/?] [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

    6. +
    +

    Older versions of this document are also available. In general version ver is available at https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/ver. For example, version v0.1.0 (assuming that this version exists) would be available at [later to be https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/v0.1.0?].

    +

    2 Disclaimer

    +

    This document is intended as a proof of concept to solicit feedback from others. This document is incomplete. This document likely has at least a few errors.

    +

    3 Context and Aim of This Guide

    +

    This document is intended to serve as a resource for instructors to assist in the preparation of courses on C++ in a variety of settings, including university, college, and industry environments. The main objectives of this document are as follows:

    +
      +
    • to provide guidelines for content to be covered by courses of various difficulty levels on C++ (e.g., topics and learning outcomes)
    • +
    • to note some common misunderstandings and problematic points that may be encountered when teaching particular topics
    • +
    • to suggest resources useful for teaching C++
    • +
    • to present examples of curriculum for specific courses
    • +
    +

    This document does not itself provide a curriculum for a single specific course, but is rather a set of guidelines that can be used to prepare curricula for a wide variety of courses that differ in focus and level of sophistication. (This said, however, some links to other documents with examples of curricula for specific courses may be included herein.) This document only intends to target the teaching of the most recently ratified version of the C++ standard. (This said, however, since older versions of this document are also available, these older versions may be of some use to those who need guidance in older versions of the standard, at least versions that do not predate C++20.)

    +

    4 Use of This Document

    +

    [NOTE: This document follows the same license model as the C++ Core Guidelines. The LICENSE document is taken verbatim from the C++ Core Guidelines.] This document is made available under a MIT-style license. In simple terms, this license permits copying, use, modification, and creation of derivative works. A copy of the license is included in the section LICENSE.

    +

    5 Contributing to This Document

    +

    Contributions to this document are welcome. If you would like to help with this project as a contributor, please read the section How to Contribute.

    +

    6 Organization of This Document

    +

    The various concepts (i.e., ideas) to potentially be covered are partitioned into modules. A module is very broad in scope and consists of numerous topics. [Note: Can I suggest that we use the term “area” or “unit” instead of “module”? I think that these other choices are better and also avoid any potential confusion over what is meant by “module” (i.e., C++ term versus plain English term).]

    +

    For each module, topics related to the module are identified. Then, for each topic, learning outcomes are specified. In order to address a wide variety of courses on C++, each topic is addressed at three proficiency levels. These proficiency levels allow each topic to be covered at more than one level of detail. This allows target audiences with different background and learning objectives to be accommodated. The three proficiency levels are as follows:

    +
      +
    • foundational. This level gives the learner the idea that a facility exists, what benefits it offers, and the basic ways of using it. [Note: Isn’t this just “novice”/“beginner”?]

    • +
    • main. This level shows mainstream uses and techniques. For abstraction and organizational mechanisms it also demonstrates how to build them. This level should also give the learner a basic (but not detailed) understanding of how a facility might be implemented so that the learner can have a first-order understanding of any costs involved. [Note: The term “main” is not very descriptive/helpful. Could I suggest using “intermediate”?]

    • +
    • advanced. This level gives information suitable for an expert. For most topics there is an expert level of knowledge that most programmers rarely need and techniques that require detailed understanding of language rules or library implementation.

    • +
    +

    The remainder of this document is organized as follows. The various topics are listed grouped by module. In cases where a topic might be classified into more than one module, the topic is listed under the module of most direct relevance. This is done in order to avoid duplication of content. (In the case that a topic is equally relevant to multiple modules, the decision of which to select is made by a proverbial coin toss.) The order in which modules and topics are presented is not meant to imply any order of coverage in a course. The order in which items are listed is essentially arbitrary.

    +

    7 Summary of Modules and Topics

    +

    In the sections that follow, the various modules and topics are presented. There is one section per module. For each module, a table listing the various topics in that module is provided. The ID for a topic is linked to the detailed coverage of that topic that comes later in the document. If a topic has any learning outcomes at a given proficiency level, this is indicated by a checkmark (“✔️”). If a topic has no learning outcomes (simply because there are not any, not because the information is missing), this is indicated by an em dash (“—”). In the case that the information for a topic is completely missing, a question mark (“?”) symbol is used.

    +

    [NOTE: These topics are taken mostly from the SG20 GitHub repository. They are not intended to be complete in any sense. In fact, by gathering together all topics in one place where they are easily viewed, it is hoped that missing and unbalanced items will be more obvious.]

    +

    7.1 Compilation Model

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Translation Units???
    [?]Headers???
    [?]Modules???
    [?]Name Mangling???
    [?]Phases of Translation???
    [?]Separate Compilation???
    [?]Linkage???
    +

    7.2 Preprocessor

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Preprocessor Metaprogramming???
    [?]Inclusion???
    [?]Macros???
    +

    7.3 Basics Types, Objects, Values, Expressions, Statements, and Control-Flow Constructs

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Constant Objects???
    [?]Declarations and Definitions???
    [?]Selection Constructs (e.g., if, ternary)???
    [?]Looping Constructs (e.g., for, while, etc.)???
    +

    7.4 Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Calling Functions???
    [?]Parameter Passing (e.g., Passing By Value and Reference)???
    [func-args]Default Arguments✔️
    [?]Returning Multiple Values???
    [?]Overloading???
    [udl]User-Defined Literals✔️✔️
    +

    7.5 User-Defined Types (Classes)

    + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Special Member Functions???
    [?]Types???
    [?]Conversions???
    [?]Constructors and Destructors???
    [?]Move/Copy Constructors and Assignment Operators???
    [?]Member Functions???
    [?]Sum Types???
    [?]User-Defined Literals???
    [?]Special Member Functions???
    [?]Guidelines for Special Member Functions (e.g., Rule of Five, Rule of Zero)???
    [copy]Copy Semantics✔️✔️
    [?]Moving and Copying???
    [?]Lambdas???
    +

    7.6 Inheritance and Class Hierarchies

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Virtual Functions???
    [?]Run-Time Type Information???
    +

    7.7 Compile-Time Computation

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Constant Expressions and Constant Evaluation???
    [static-assert]static_assert✔️✔️
    +

    7.8 Generic Programming (Templates)

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Concepts???
    [?]SFINAE???
    [?]Template Metaprogramming???
    [?]Function Templates???
    [?]Requires Clauses???
    [req-expr]Requires Expressions✔️✔️
    +

    7.9 Error Handling

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Classes of Errors???
    [?]errno???
    [?]Error Codes???
    [?]Exception Handling???
    +

    7.10 Standard Library

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Input/Output (I/O)???
    [?]Containers, Iterators, and Algorithms???
    +

    7.11 External (i.e., Non Standard) Libraries

    + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Graphical User Interfaces???
    +

    7.12 Building

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Software Build Tools???
    [?]Strategies for Handling Build Problems???
    +

    7.13 Testing and Debugging

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Source-Level Debuggers???
    [?]Code Sanitizers???
    [?]Test Frameworks???
    [?]Debugging Strategies???
    +

    7.14 Tooling

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Compiler Toolchains???
    [?]IDEs???
    +

    7.15 Software Design

    + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Design by Contract???
    +

    8 Detailed Information for Modules and Topics

    +

    8.1 C++ object model: copy semantics

    +

    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

    +

    8.1.1 Overview

    +

    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

    + ++++ + + + + + + + + + + + + + + + + + + + + +
    LevelObjectives
    Foundationalunderstanding how and when are copies made
    Mainimplementing user-defined copy operations
    Advancedspecial cases: copy elision
    +

    8.1.2 Motivation

    +

    Why is this important? Why do we want to learn/teach this topic?

    +

    Copy semantics allows the user to define how objects of a class get replicated and interact on a value level.

    +

    8.1.3 Topic introduction

    +

    Very brief introduction to the topic.

    +

    Explains when and how objects are copied.

    +

    8.1.4 Foundational: How and when are copies made

    +

    8.1.4.1 Background/Required Knowledge

    +

    A student is able to: * explain what a C++ type is? [C++ object model: types] * explain what an object is? [C++ object model: objects], [C++ object model: constant objects] * define and understand class invariants?

    +

    It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain special member functions [C++ object model: special member functions]

    +

    8.1.4.2 Student outcomes

    +

    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

    +

    A student should be able to:

    +
      +
    1. explain what copy semantics accomplish
    2. +
    +
      +
    • establishing “equivalent” object state in another object
    • +
    +
      +
    1. explain difference between copying a reference and copying a value*
    2. +
    3. explain where copies are made
    4. +
    +

    * In other languages these differences are sometimes referred to as shallow and deep copy.

    +

    8.1.4.3 Caveats

    +

    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

    +
      +
    • Compiler-provided copy operations may result in ownership problems (e.g., char*). These ownership problems can generally be solved by using types whose copy operations have the appropriate semantics, e.g., std::string instead of char* to hold string values.
    • +
    +

    8.1.4.4 Points to cover

    +

    This section lists important details for each point.

    +
      +
    • Principle of copying +
        +
      • Copying of types, which follow the rule of zero
      • +
      • Copying of types, with user defined copy operations
      • +
      • Copying an object does not change the original
      • +
    • +
    • Practical applications +
        +
      • std::unique_ptr (has no copy)
      • +
      • Strings (copies the value)
      • +
    • +
    +

    8.1.5 Main: Implementing user-defined copy operations

    +

    8.1.5.1 Background/Required Knowledge

    +

    A student is able to: * identify special member functions [C++ object model: special member functions]

    +

    It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain the rule of zero [C++ object model: rule-of-zero] * explain the rule of five [C++ object model: rule-of-five]

    +

    8.1.5.2 Student outcomes

    +

    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

    +

    A student should be able to: * explain when they have to implement the copy operations for their own type * Copy constructor * Copy assignment operator * implement copy operations for their own types * Optional: explain when copying with basic and strong exception guarantees is useful

    +

    8.1.5.3 Caveats

    +

    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

    +
      +
    • Intricacies when implementing copy operations: +
        +
      • Examples of how not to write copy operations (e.g., C++03 std::auto_ptr)
      • +
    • +
    +

    8.1.5.4 Points to cover

    +

    This section lists important details for each point.

    +
      +
    • Copy constructors and copy assignment operators +
        +
      • How compiler generates default copy operations
      • +
      • =default, =delete (No copy)
      • +
      • How-to write your own copy operations
      • +
      • Rule-of-five
      • +
      • Copy assignment operators can be ref-qualified to avoid assigning into temporary objects.
      • +
    • +
    +

    8.1.6 Advanced

    +

    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

    +

    When can copies be elided and when does the standard guarantee copy elision. References: * Abseil tip of the Week #166 * cppreference - Copy elision

    +

    8.2 Functions: user-defined literals

    +

    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

    +

    8.2.1 Overview

    +

    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

    + ++++ + + + + + + + + + + + + + + + + + + + + +
    LevelObjectives
    Foundationalusing and understanding UDLs
    Mainimplementing your own UDLs
    AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
    +

    8.2.2 Motivation

    +

    Why is this important? Why do we want to learn/teach this topic?

    +
      +
    • Allows clearer expression of intent in C++.
    • +
    • std::string: "Hello, world!"s
    • +
    • std::chrono: 3h + 10min + 5s
    • +
    +

    8.2.3 Topic introduction

    +

    Very brief introduction to the topic.

    +
      +
    • Explain the existence of user defined literals. Example: 12min + 17s is terse, expressive and type safe.
    • +
    +

    8.2.4 Foundational: Using UDLs

    +

    8.2.4.1 Background/Required Knowledge

    +

    A student: * knows how to form numeric literals, e.g., 1.5f means a float of value 1.5. * is familiar with the major C++ types: * bool (Boolean type) * int (Integer type) * double (Floating-point type) * std::string (Text type) * std::vector (Collection type) * knows that namespaces exist, and namespace std. * knows what using-declarations and using-directives are. [C++ object model: declarations]

    +

    8.2.4.2 Student outcomes

    +

    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

    +

    A student should be able to:

    +
      +
    1. use using namespace std::string_literals[1].
    2. +
    3. recognise UDLs in code that they are reading.
    4. +
    5. figure out which UDL definitions for a used type exist.
    6. +
    7. identify parts of the standard library that make use of UDLs.
    8. +
    9. prevent the dangers of temporaries created with "blah"s as well as with std::string{"blah"}.
    10. +
    11. effectively selects the right set of namespaces in using-directives from the sub-namespaces std::literals.
    12. +
    +

    [1]: explain that it’s okay to use a using-directive to “activate” UDLs.

    +

    8.2.4.3 Caveats

    +

    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

    +
      +
    • A student gets confused by the similarities and differences between built-in suffixes and UDLs and between UDLs from different namespaces.
    • +
    • A student “activates” two suffixes with the same signature from different namespaces.
    • +
    +

    8.2.4.4 Points to cover

    +

    This section lists important details for each point.

    +

    8.2.5 Main: implementing UDLs

    +

    8.2.5.1 Background/Required Knowledge

    +
      +
    • All of the above.
    • +
    +

    8.2.5.2 Student outcomes

    +

    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

    +

    A student should be able to:

    +
      +
    1. write a UDL operator of their own.
    2. +
    3. separate unrelated UDLs into distinct namespaces.
    4. +
    +

    8.2.5.3 Caveats

    +

    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

    +

    No caveats at present. #### Points to cover

    +

    This section lists important details for each point.

    +

    No caveats at present. ### Advanced {#udl-advanced}

    +

    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

    +

    8.3 Functions: default argument

    +

    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

    +

    8.3.1 Overview

    +

    Functions in C++ may be overloaded with different numbers and types of parameters. It may be of value to specify default arguments for some number of parameters, to allow a caller to avoid specifying arguments that rarely change, or to enable expanding the set of parameters while maintaining backward compatibility with existing callers.

    + ++++ + + + + + + + + + + + + + + + + + + + + +
    LevelObjective
    FoundationalDefine and use functions with default arguments
    Main
    Advancedrefinement of default arguments through multiple declarations
    +

    8.3.2 Motivation

    +

    Default arguments allow the omission of arguments with obvious or common values. Also may be utilized to extend an existing function signature without forcing changes to existing calling code.

    +

    8.3.3 Topic introduction

    +

    Explain how default arguments work and how to define them.

    +

    8.3.4 Foundational: Using and defining functions with default arguments

    +

    8.3.4.1 Background/Required Knowledge

    +

    A student is able to:

    + +

    8.3.4.2 Student outcomes

    +

    A student should be able to:

    +
      +
    1. Call to a function with a default argument with or without that argument specified
    2. +
    3. Declare a function with a default argument, and omit the default in the definition’s signature
    4. +
    5. Explain when the lifetime of a default argument begins and ends
    6. +
    +

    8.3.4.3 Caveats

    +
      +
    • When no forward-declaration exists, the definition serves as the declaration
    • +
    • When multiple declarations exist, only one may specify the default for any particular parameter, but multiple declarations may specify the defaults for different parameters.
    • +
    • Additional default values may be specified for other parameters in repeat declarations
    • +
    • Calling an overloaded function with fewer arguments may be ambiguous with regard to an overload with default arguments
    • +
    +

    8.3.4.4 Points to cover

    +
      +
    • Default value may only be specified once for each parameter among all declarations
    • +
    • Default values must start from the rightmost parameter and continue leftward without gaps
    • +
    • Considerations of when to use default arguments vs overload set
    • +
    +

    8.3.5 Main: implementing *

    +

    8.3.5.1 Background/required knowledge

    +
      +
    • All of the above.
    • +
    +

    8.3.5.2 Student outcomes

    +

    A student should be able to:

    +

    8.3.5.3 Caveats

    +

    8.3.5.4 Points to cover

    +

    8.3.6 Advanced

    +

    Subsequent redeclarations of the same function may add default argument values, which are then usable by callers. Though a single parameter cannot be given a default argument twice in the same translation unit, it is legal, though ill-advised, to give the same function different default arguments in different translation units.

    +

    8.4 Module name: Requires Expressions

    +

    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

    +

    8.4.1 Overview

    + ++++ + + + + + + + + + + + + + + + + + + + + +
    LevelObjectives
    FoundationalDefine and use requires-expressions to check satisfaction of expressions by given parameters
    MainDefine and use requires-expressions to check properties of expressions
    Advanced
    +

    8.4.2 Motivation

    +

    Requires-expressions allow a developer to perform compile-time evaluation on the validity of other expressions. These are fundamental to the ability to write concepts. [Compile-time programming: concepts]

    +

    8.5 Topic introduction

    +

    Requires-expressions are compile-time predicates which evaluate to true when their specified set of expressions are all valid for a given set of inputs.

    +

    8.5.1 Foundational: Writing requires-expressions

    +

    8.5.1.1 Background/Required Knowledge

    +

    A student is able to:

    + +

    It is helpful if:

    +
      +
    • The student is aware that attempting to specialize the template with types or values which do not match otherwise unstated assumptions will cause errors within the template.
    • +
    +

    8.5.1.2 Student outcomes

    +

    A student should be able to:

    +
      +
    1. Write a simple-requirement to assert the validity of an expression
    2. +
    3. Write a type-requirement to check the existence of a type by its identifier
    4. +
    5. Write a compound-requirement to test the resulting type of an expression
    6. +
    7. Write a nested-requirement to test the constexpr value of an operation, as opposed to just the syntactic validity
    8. +
    9. Use a requires-expression within a concept, requires-clause, or if constexpr condition
    10. +
    +

    8.5.1.3 Caveats

    +

    To require that expressions, which evaluate to a boolean value like sizeof(t) == 4, evaluate to true a nested-requirement is needed (e.g., requires sizeof(t) == 4;). Omitting the requires results in a simple-requirement, which is satisfied based purely on syntactic validity, not on the result of the operation.

    +

    8.5.1.4 Points to cover

    +
      +
    • All requires-expression requirements terminate with a semicolon.
    • +
    • simple-requirements are used to check that an expression is well-formed.
    • +
    • nested-requirements are introduced with requires and primarily used to check the result of an expression computable by the compiler, including concepts or other requires-expressions.
    • +
    • type-requirements are introduced with typename and used to verify the existence of a type with a particular identifier.
    • +
    • compound-requirements are enclosed in braces and can be used to check the resulting type of an expression.
    • +
    • Checks are performed by the compiler, not at run time.
    • +
    • If covering usage of requires-expression with requires-clause, [Compile-time programming: requires clause] demonstrate requires requires and show how to ever avoid writing it by using a concept. [Compile-time programming: concepts]
    • +
    +

    8.5.2 Main: Advanced requirements

    +

    8.5.2.1 Background/required knowledge

    +
      +
    • All of the above.
    • +
    • Knowledge of noexcept
    • +
    +

    A student is able to:

    + +

    8.5.2.2 Student outcomes

    +

    A student should be able to:

    +
      +
    1. Write compound-requirements which test the noexceptness of an expression.
    2. +
    3. Use a concept as the target of a compound-requirement.
    4. +
    +

    8.5.2.3 Caveats

    +

    8.5.2.4 Points to cover

    +
      +
    • Compound-requirements allow the optional ability to test whether an expression is marked as noexcept, by using a trailing noexcept keyword.
    • +
    + +
      +
    • If the return-type-requirement of a compound-requirement is a concept, that concept is given the resulting type as the first parameter, followed by the specified parameters in the compound-requirement. { ++x } -> C<int> would substitute C<decltype((++x)), int> and check that concept C is satisfied for those parameters.
    • +
    +

    8.5.3 Advanced

    +

    8.6 Meta-error handling: static_assert

    +

    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

    +

    8.6.1 Overview

    +

    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

    + ++++ + + + + + + + + + + + + + + + + + + + + +
    LevelObjectives
    FoundationalCalling static_assert with a constant expression
    MainUsing static_assert to detect contract violations and improve error messages
    Advanced
    +

    8.6.2 Motivation

    +

    Why is this important? Why do we want to learn/teach this topic?

    +

    static_assert allows the developer to enforce that conditions which can be checked during compilation will force build errors when violated. Additionally, they are the best mechanism by which a developer can pass useful information to other developers regarding what violation occurred or what must be done, instead.

    +

    8.6.3 Topic introduction

    +

    Very brief introduction to the topic.

    +

    static_assert is a compile-time evaluated function that asserts the truth of a supplied predicate, issuing an optional user-supplied error message if the predicate is false.

    +

    8.6.4 Foundational: Calling static_assert with a constant expression

    +

    8.6.4.1 Background/Required Knowledge

    +

    A student:

    +
      +
    • Should be able to explain the difference between code evaluated at compile-time and run-time
    • +
    • Should be able to cite some examples of compile-time known information, such as sizeof(T)
    • +
    +

    8.6.4.2 Student outcomes

    +

    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

    +

    A student should be able to:

    +
      +
    1. Assert the expected size of a structure using static_assert
    2. +
    +

    8.6.4.3 Caveats

    +

    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

    +

    8.6.4.4 Points to cover

    +

    This section lists important details for each point.

    +
      +
    • X
    • +
    • In addition to what is wrong, a good error message will inform the user of how to correct it
    • +
    +

    8.6.5 Main: Contracts and static_assert

    +

    8.6.5.1 Background/Required Knowledge

    +
      +
    • All of the above.
    • +
    • General understanding of compile-time requirements
    • +
    +

    8.6.5.2 Student outcomes

    +

    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

    +

    A student should be able to:

    +
      +
    1. Utilize static_assert to verify preconditions of a meta-function
    2. +
    3. Utilize static_assert to verify the results of meta-functions for known values
    4. +
    +

    8.6.5.3 Caveats

    +

    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

    +

    8.6.5.4 Points to cover

    +

    This section lists important details for each point.

    +
      +
    • When writing a meta-function, use static_assert to test the results
    • +
    • Write static_assert calls at the scope of the code they are guarding
    • +
    + +

    8.6.6 Advanced

    +

    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

    +

    9 Examples of Course Curricula

    +

    [NOTE: Anyone have any suggestions of items to add here?] The following are examples of curricula for course on C++: …

    +

    10 License

    +

    [NOTE: This license is copied verbatim from the C++ Core Guidelines.]

    +
    Copyright (c) Standard C++ Foundation and its contributors
    +
    +Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
    +perpetual license to copy, use, modify, and create derivative works from this
    +project for your personal or internal business use only. The above copyright
    +notice and this permission notice shall be included in all copies or
    +substantial portions of the project. This license does not grant permission
    +to use the trade names, trademarks, service marks, or product names of the
    +licensor, except as required for reasonable and customary use in describing
    +the origin of the project.
    +
    +Standard C++ Foundation reserves the right to accept contributions to the
    +project at its discretion.
    +
    +By contributing material to this project, you grant Standard C++ Foundation,
    +and those who receive the material directly or indirectly from Standard C++
    +Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
    +transferrable license to reproduce, prepare derivative works of, publicly
    +display, publicly perform, and distribute your contributed material and such
    +derivative works, and to sublicense any or all of the foregoing rights to third
    +parties for commercial or non-commercial use.  You also grant Standard C++
    +Foundation, and those who receive the material directly or indirectly from
    +Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
    +irrevocable license under your patent claims that directly read on your
    +contributed material to make, have made, use, offer to sell, sell and import
    +or otherwise dispose of the material. You warrant that your material is your
    +original work, or that you have the right to grant the above licenses.
    +
    +THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    +OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
    +PROJECT.
    +
    +If you believe that anything in the project infringes your copyright, please
    +contact us at admin@isocpp.org with your contact information and a detailed
    +description of your intellectual property, including a specific URL where you
    +believe your intellectual property is being infringed.
    +
    +

    11 Contributors

    +
    Christopher Di Bella
    +Florian Sattler
    +Michael Adams
    +rwdougla
    +vulder
    +

    12 How To Contribute

    +

    Before attempting to contribute any content for consideration for inclusion in this document, please read the information below and and the referenced documents as appropriate.

    +

    All contributions to this project must be made in accordance with the license in section License. This teaching-guidelines document only offers guidance on teaching C++ as it is specified in the current version of the C++ standard. So, content should be presented relative to the most-recently ratified version of the standard. A detailed explanation of how to present the material for a topic is given in:

    +
      +
    • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.
    • +
    +

    Any potential contributors should ensure that they read this document. The following document may also be helpful in providing some general background on the modular approach to teaching followed herein:

    + +

    In order to prepare content, it is important to understand what learning outcomes are, and how to prepare good ones. Some information on learning outcomes can be found in the References section. The following document offers a concise introduction to learning outcomes:

    + +

    13 Glossary

    +

    Some possible terms to include in the glossary:

    +
      +
    • learning objective
    • +
    • learning outcome
    • +
    +

    14 References

    +

    14.1 References on Learning Outcomes

    + + +
      +
    • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — Standing Document for SG20: Guidelines for Teaching C++ to Beginners. https://wg21.link/p1389.

    • +
    • Christopher Di Bella. P1725R0 — Modular Topic Design. https://wg21.link/p1725.

    • +
    • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.

    • +
    • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study Group: C++ Education. https://wg21.link/p1231.

    • +
    • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 — Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0.

    • +
    +
    +
    + +
    + + From 6fe3b7301b0a55a0671cd3e725eabbea41f41447 Mon Sep 17 00:00:00 2001 From: vulder Date: Sun, 31 Oct 2021 19:36:33 +0000 Subject: [PATCH 07/21] deploy: c9e59f78dec4413fdc007e8ce787763cd04c5734 --- 0.0.4/guidelines.epub | Bin 0 -> 31523 bytes 0.0.4/html/images/cpp_logo.png | Bin 0 -> 23613 bytes 0.0.4/html/index.html | 1430 +++++++++++++++++ 0.0.4/html_split/Advanced.html | 60 + .../Background_002fRequired-Knowledge.html | 65 + .../Background_002frequired-knowledge.html | 54 + ...ments-and-Control_002dFlow-Constructs.html | 60 + 0.0.4/html_split/Building.html | 57 + ...002b_002b-object-model-copy-semantics.html | 69 + 0.0.4/html_split/Caveats.html | 62 + 0.0.4/html_split/Compilation-Model.html | 62 + .../Compile_002dTime-Computation.html | 57 + .../Context-and-Aim-of-This-Guide.html | 76 + .../Contributing-to-This-Document.html | 55 + 0.0.4/html_split/Contributors.html | 58 + ...ed-Information-for-Modules-and-Topics.html | 67 + 0.0.4/html_split/Disclaimer.html | 55 + 0.0.4/html_split/Error-Handling.html | 59 + .../Examples-of-Course-Curricula.html | 53 + .../External-ie-Non-Standard-Libraries.html | 56 + ...005fassert-with-a-constant-expression.html | 62 + ...dational-How-and-when-are-copies-made.html | 63 + 0.0.4/html_split/Foundational-Using-UDLs.html | 61 + ...ning-functions-with-default-arguments.html | 62 + ...onal-Writing-requires_002dexpressions.html | 60 + .../Functions-default-argument.html | 67 + .../Functions-user_002ddefined-literals.html | 66 + 0.0.4/html_split/Functions.html | 61 + .../Generic-Programming-Templates.html | 61 + 0.0.4/html_split/Glossary.html | 58 + 0.0.4/html_split/How-To-Contribute.html | 89 + .../Inheritance-and-Class-Hierarchies.html | 57 + 0.0.4/html_split/License.html | 100 ++ .../Main-Advanced-requirements.html | 60 + .../Main-Contracts-and-static_005fassert.html | 61 + ...ting-user_002ddefined-copy-operations.html | 62 + 0.0.4/html_split/Main-implementing-UDLs.html | 59 + 0.0.4/html_split/Main-implementing-_002a.html | 62 + ..._002derror-handling-static_005fassert.html | 67 + .../Module-name-Requires-Expressions.html | 59 + 0.0.4/html_split/Motivation.html | 57 + ...-Recent-Version-and-Alternate-Formats.html | 84 + .../Organization-of-This-Document.html | 101 ++ 0.0.4/html_split/Overview.html | 61 + 0.0.4/html_split/Points-to-cover.html | 69 + 0.0.4/html_split/Preprocessor.html | 58 + .../References-on-Learning-Outcomes.html | 71 + 0.0.4/html_split/References.html | 59 + 0.0.4/html_split/Software-Design.html | 56 + 0.0.4/html_split/Standard-Library.html | 57 + 0.0.4/html_split/Student-outcomes.html | 73 + .../Summary-of-Modules-and-Topics.html | 106 ++ 0.0.4/html_split/Testing-and-Debugging.html | 59 + 0.0.4/html_split/Tooling.html | 57 + 0.0.4/html_split/Topic-introduction.html | 55 + 0.0.4/html_split/Use-of-This-Document.html | 58 + .../User_002dDefined-Types-Classes.html | 69 + ...ed-to-C_002b_002b-Teaching-Guidelines.html | 69 + 0.0.4/html_split/_0023advanced.html | 40 + 0.0.4/html_split/_0023advanced_002d1.html | 40 + 0.0.4/html_split/_0023advanced_002d2.html | 40 + 0.0.4/html_split/_0023advanced_002d3.html | 40 + ..._0023backgroundrequired_002dknowledge.html | 40 + ...ackgroundrequired_002dknowledge_002d1.html | 40 + ...ackgroundrequired_002dknowledge_002d2.html | 40 + ...ackgroundrequired_002dknowledge_002d3.html | 40 + ...ackgroundrequired_002dknowledge_002d4.html | 40 + ...ackgroundrequired_002dknowledge_002d5.html | 40 + ...ackgroundrequired_002dknowledge_002d6.html | 40 + ...ackgroundrequired_002dknowledge_002d7.html | 40 + ...ackgroundrequired_002dknowledge_002d8.html | 40 + ...ackgroundrequired_002dknowledge_002d9.html | 40 + ...d_002dcontrol_002dflow_002dconstructs.html | 40 + 0.0.4/html_split/_0023building.html | 40 + ...ject_002dmodel_002dcopy_002dsemantics.html | 40 + 0.0.4/html_split/_0023caveats.html | 40 + 0.0.4/html_split/_0023caveats_002d1.html | 40 + 0.0.4/html_split/_0023caveats_002d2.html | 40 + 0.0.4/html_split/_0023caveats_002d3.html | 40 + 0.0.4/html_split/_0023caveats_002d4.html | 40 + 0.0.4/html_split/_0023caveats_002d5.html | 40 + 0.0.4/html_split/_0023caveats_002d6.html | 40 + 0.0.4/html_split/_0023caveats_002d7.html | 40 + 0.0.4/html_split/_0023caveats_002d8.html | 40 + 0.0.4/html_split/_0023caveats_002d9.html | 40 + .../_0023compilation_002dmodel.html | 40 + ..._0023compile_002dtime_002dcomputation.html | 40 + ...and_002daim_002dof_002dthis_002dguide.html | 40 + ...ributing_002dto_002dthis_002ddocument.html | 40 + 0.0.4/html_split/_0023contributors.html | 40 + ...02dfor_002dmodules_002dand_002dtopics.html | 40 + 0.0.4/html_split/_0023disclaimer.html | 40 + 0.0.4/html_split/_0023error_002dhandling.html | 40 + ...mples_002dof_002dcourse_002dcurricula.html | 40 + ...2e_002dnon_002dstandard_002dlibraries.html | 40 + ...ith_002da_002dconstant_002dexpression.html | 40 + ..._002dwhen_002dare_002dcopies_002dmade.html | 40 + ...ns_002dwith_002ddefault_002darguments.html | 40 + .../_0023foundational_002dusing_002dudls.html | 40 + ...dwriting_002drequires_002dexpressions.html | 40 + 0.0.4/html_split/_0023functions.html | 40 + ...023functions_002ddefault_002dargument.html | 40 + ...ons_002duser_002ddefined_002dliterals.html | 40 + ...generic_002dprogramming_002dtemplates.html | 40 + 0.0.4/html_split/_0023glossary.html | 40 + .../_0023how_002dto_002dcontribute.html | 40 + ...nce_002dand_002dclass_002dhierarchies.html | 40 + 0.0.4/html_split/_0023license.html | 40 + ...023main_002dadvanced_002drequirements.html | 40 + ...ntracts_002dand_002dstatic_005fassert.html | 40 + .../_0023main_002dimplementing.html | 40 + .../_0023main_002dimplementing_002dudls.html | 40 + ...r_002ddefined_002dcopy_002doperations.html | 40 + ...or_002dhandling_002dstatic_005fassert.html | 40 + ...002dname_002drequires_002dexpressions.html | 40 + 0.0.4/html_split/_0023motivation.html | 40 + 0.0.4/html_split/_0023motivation_002d1.html | 40 + 0.0.4/html_split/_0023motivation_002d2.html | 40 + 0.0.4/html_split/_0023motivation_002d3.html | 40 + 0.0.4/html_split/_0023motivation_002d4.html | 40 + ...ion_002dand_002dalternate_002dformats.html | 40 + ...nization_002dof_002dthis_002ddocument.html | 40 + 0.0.4/html_split/_0023overview.html | 40 + 0.0.4/html_split/_0023overview_002d1.html | 40 + 0.0.4/html_split/_0023overview_002d2.html | 40 + 0.0.4/html_split/_0023overview_002d3.html | 40 + 0.0.4/html_split/_0023overview_002d4.html | 40 + .../_0023points_002dto_002dcover.html | 40 + .../_0023points_002dto_002dcover_002d1.html | 40 + .../_0023points_002dto_002dcover_002d2.html | 40 + .../_0023points_002dto_002dcover_002d3.html | 40 + .../_0023points_002dto_002dcover_002d4.html | 40 + .../_0023points_002dto_002dcover_002d5.html | 40 + .../_0023points_002dto_002dcover_002d6.html | 40 + .../_0023points_002dto_002dcover_002d7.html | 40 + .../_0023points_002dto_002dcover_002d8.html | 40 + 0.0.4/html_split/_0023preprocessor.html | 40 + 0.0.4/html_split/_0023references.html | 40 + ...nces_002don_002dlearning_002doutcomes.html | 40 + .../html_split/_0023software_002ddesign.html | 40 + .../html_split/_0023standard_002dlibrary.html | 40 + .../html_split/_0023student_002doutcomes.html | 40 + .../_0023student_002doutcomes_002d1.html | 40 + .../_0023student_002doutcomes_002d2.html | 40 + .../_0023student_002doutcomes_002d3.html | 40 + .../_0023student_002doutcomes_002d4.html | 40 + .../_0023student_002doutcomes_002d5.html | 40 + .../_0023student_002doutcomes_002d6.html | 40 + .../_0023student_002doutcomes_002d7.html | 40 + .../_0023student_002doutcomes_002d8.html | 40 + .../_0023student_002doutcomes_002d9.html | 40 + ...002dof_002dmodules_002dand_002dtopics.html | 40 + .../_0023testing_002dand_002ddebugging.html | 40 + 0.0.4/html_split/_0023tooling.html | 40 + .../_0023topic_002dintroduction.html | 40 + .../_0023topic_002dintroduction_002d1.html | 40 + .../_0023topic_002dintroduction_002d2.html | 40 + .../_0023topic_002dintroduction_002d3.html | 40 + .../_0023topic_002dintroduction_002d4.html | 40 + ..._0023use_002dof_002dthis_002ddocument.html | 40 + ...ser_002ddefined_002dtypes_002dclasses.html | 40 + ...dto_002dc_002dteaching_002dguidelines.html | 40 + 0.0.4/html_split/index.html | 240 +++ 0.0.4/html_split/unknown_node.html | 763 +++++++++ latest/index.html | 8 +- 165 files changed, 10138 insertions(+), 4 deletions(-) create mode 100644 0.0.4/guidelines.epub create mode 100644 0.0.4/html/images/cpp_logo.png create mode 100644 0.0.4/html/index.html create mode 100644 0.0.4/html_split/Advanced.html create mode 100644 0.0.4/html_split/Background_002fRequired-Knowledge.html create mode 100644 0.0.4/html_split/Background_002frequired-knowledge.html create mode 100644 0.0.4/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html create mode 100644 0.0.4/html_split/Building.html create mode 100644 0.0.4/html_split/C_002b_002b-object-model-copy-semantics.html create mode 100644 0.0.4/html_split/Caveats.html create mode 100644 0.0.4/html_split/Compilation-Model.html create mode 100644 0.0.4/html_split/Compile_002dTime-Computation.html create mode 100644 0.0.4/html_split/Context-and-Aim-of-This-Guide.html create mode 100644 0.0.4/html_split/Contributing-to-This-Document.html create mode 100644 0.0.4/html_split/Contributors.html create mode 100644 0.0.4/html_split/Detailed-Information-for-Modules-and-Topics.html create mode 100644 0.0.4/html_split/Disclaimer.html create mode 100644 0.0.4/html_split/Error-Handling.html create mode 100644 0.0.4/html_split/Examples-of-Course-Curricula.html create mode 100644 0.0.4/html_split/External-ie-Non-Standard-Libraries.html create mode 100644 0.0.4/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html create mode 100644 0.0.4/html_split/Foundational-How-and-when-are-copies-made.html create mode 100644 0.0.4/html_split/Foundational-Using-UDLs.html create mode 100644 0.0.4/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html create mode 100644 0.0.4/html_split/Foundational-Writing-requires_002dexpressions.html create mode 100644 0.0.4/html_split/Functions-default-argument.html create mode 100644 0.0.4/html_split/Functions-user_002ddefined-literals.html create mode 100644 0.0.4/html_split/Functions.html create mode 100644 0.0.4/html_split/Generic-Programming-Templates.html create mode 100644 0.0.4/html_split/Glossary.html create mode 100644 0.0.4/html_split/How-To-Contribute.html create mode 100644 0.0.4/html_split/Inheritance-and-Class-Hierarchies.html create mode 100644 0.0.4/html_split/License.html create mode 100644 0.0.4/html_split/Main-Advanced-requirements.html create mode 100644 0.0.4/html_split/Main-Contracts-and-static_005fassert.html create mode 100644 0.0.4/html_split/Main-Implementing-user_002ddefined-copy-operations.html create mode 100644 0.0.4/html_split/Main-implementing-UDLs.html create mode 100644 0.0.4/html_split/Main-implementing-_002a.html create mode 100644 0.0.4/html_split/Meta_002derror-handling-static_005fassert.html create mode 100644 0.0.4/html_split/Module-name-Requires-Expressions.html create mode 100644 0.0.4/html_split/Motivation.html create mode 100644 0.0.4/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html create mode 100644 0.0.4/html_split/Organization-of-This-Document.html create mode 100644 0.0.4/html_split/Overview.html create mode 100644 0.0.4/html_split/Points-to-cover.html create mode 100644 0.0.4/html_split/Preprocessor.html create mode 100644 0.0.4/html_split/References-on-Learning-Outcomes.html create mode 100644 0.0.4/html_split/References.html create mode 100644 0.0.4/html_split/Software-Design.html create mode 100644 0.0.4/html_split/Standard-Library.html create mode 100644 0.0.4/html_split/Student-outcomes.html create mode 100644 0.0.4/html_split/Summary-of-Modules-and-Topics.html create mode 100644 0.0.4/html_split/Testing-and-Debugging.html create mode 100644 0.0.4/html_split/Tooling.html create mode 100644 0.0.4/html_split/Topic-introduction.html create mode 100644 0.0.4/html_split/Use-of-This-Document.html create mode 100644 0.0.4/html_split/User_002dDefined-Types-Classes.html create mode 100644 0.0.4/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html create mode 100644 0.0.4/html_split/_0023advanced.html create mode 100644 0.0.4/html_split/_0023advanced_002d1.html create mode 100644 0.0.4/html_split/_0023advanced_002d2.html create mode 100644 0.0.4/html_split/_0023advanced_002d3.html create mode 100644 0.0.4/html_split/_0023backgroundrequired_002dknowledge.html create mode 100644 0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d1.html create mode 100644 0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d2.html create mode 100644 0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d3.html create mode 100644 0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d4.html create mode 100644 0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d5.html create mode 100644 0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d6.html create mode 100644 0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d7.html create mode 100644 0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d8.html create mode 100644 0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d9.html create mode 100644 0.0.4/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html create mode 100644 0.0.4/html_split/_0023building.html create mode 100644 0.0.4/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html create mode 100644 0.0.4/html_split/_0023caveats.html create mode 100644 0.0.4/html_split/_0023caveats_002d1.html create mode 100644 0.0.4/html_split/_0023caveats_002d2.html create mode 100644 0.0.4/html_split/_0023caveats_002d3.html create mode 100644 0.0.4/html_split/_0023caveats_002d4.html create mode 100644 0.0.4/html_split/_0023caveats_002d5.html create mode 100644 0.0.4/html_split/_0023caveats_002d6.html create mode 100644 0.0.4/html_split/_0023caveats_002d7.html create mode 100644 0.0.4/html_split/_0023caveats_002d8.html create mode 100644 0.0.4/html_split/_0023caveats_002d9.html create mode 100644 0.0.4/html_split/_0023compilation_002dmodel.html create mode 100644 0.0.4/html_split/_0023compile_002dtime_002dcomputation.html create mode 100644 0.0.4/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html create mode 100644 0.0.4/html_split/_0023contributing_002dto_002dthis_002ddocument.html create mode 100644 0.0.4/html_split/_0023contributors.html create mode 100644 0.0.4/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html create mode 100644 0.0.4/html_split/_0023disclaimer.html create mode 100644 0.0.4/html_split/_0023error_002dhandling.html create mode 100644 0.0.4/html_split/_0023examples_002dof_002dcourse_002dcurricula.html create mode 100644 0.0.4/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html create mode 100644 0.0.4/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html create mode 100644 0.0.4/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html create mode 100644 0.0.4/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html create mode 100644 0.0.4/html_split/_0023foundational_002dusing_002dudls.html create mode 100644 0.0.4/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html create mode 100644 0.0.4/html_split/_0023functions.html create mode 100644 0.0.4/html_split/_0023functions_002ddefault_002dargument.html create mode 100644 0.0.4/html_split/_0023functions_002duser_002ddefined_002dliterals.html create mode 100644 0.0.4/html_split/_0023generic_002dprogramming_002dtemplates.html create mode 100644 0.0.4/html_split/_0023glossary.html create mode 100644 0.0.4/html_split/_0023how_002dto_002dcontribute.html create mode 100644 0.0.4/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html create mode 100644 0.0.4/html_split/_0023license.html create mode 100644 0.0.4/html_split/_0023main_002dadvanced_002drequirements.html create mode 100644 0.0.4/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html create mode 100644 0.0.4/html_split/_0023main_002dimplementing.html create mode 100644 0.0.4/html_split/_0023main_002dimplementing_002dudls.html create mode 100644 0.0.4/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html create mode 100644 0.0.4/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html create mode 100644 0.0.4/html_split/_0023module_002dname_002drequires_002dexpressions.html create mode 100644 0.0.4/html_split/_0023motivation.html create mode 100644 0.0.4/html_split/_0023motivation_002d1.html create mode 100644 0.0.4/html_split/_0023motivation_002d2.html create mode 100644 0.0.4/html_split/_0023motivation_002d3.html create mode 100644 0.0.4/html_split/_0023motivation_002d4.html create mode 100644 0.0.4/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html create mode 100644 0.0.4/html_split/_0023organization_002dof_002dthis_002ddocument.html create mode 100644 0.0.4/html_split/_0023overview.html create mode 100644 0.0.4/html_split/_0023overview_002d1.html create mode 100644 0.0.4/html_split/_0023overview_002d2.html create mode 100644 0.0.4/html_split/_0023overview_002d3.html create mode 100644 0.0.4/html_split/_0023overview_002d4.html create mode 100644 0.0.4/html_split/_0023points_002dto_002dcover.html create mode 100644 0.0.4/html_split/_0023points_002dto_002dcover_002d1.html create mode 100644 0.0.4/html_split/_0023points_002dto_002dcover_002d2.html create mode 100644 0.0.4/html_split/_0023points_002dto_002dcover_002d3.html create mode 100644 0.0.4/html_split/_0023points_002dto_002dcover_002d4.html create mode 100644 0.0.4/html_split/_0023points_002dto_002dcover_002d5.html create mode 100644 0.0.4/html_split/_0023points_002dto_002dcover_002d6.html create mode 100644 0.0.4/html_split/_0023points_002dto_002dcover_002d7.html create mode 100644 0.0.4/html_split/_0023points_002dto_002dcover_002d8.html create mode 100644 0.0.4/html_split/_0023preprocessor.html create mode 100644 0.0.4/html_split/_0023references.html create mode 100644 0.0.4/html_split/_0023references_002don_002dlearning_002doutcomes.html create mode 100644 0.0.4/html_split/_0023software_002ddesign.html create mode 100644 0.0.4/html_split/_0023standard_002dlibrary.html create mode 100644 0.0.4/html_split/_0023student_002doutcomes.html create mode 100644 0.0.4/html_split/_0023student_002doutcomes_002d1.html create mode 100644 0.0.4/html_split/_0023student_002doutcomes_002d2.html create mode 100644 0.0.4/html_split/_0023student_002doutcomes_002d3.html create mode 100644 0.0.4/html_split/_0023student_002doutcomes_002d4.html create mode 100644 0.0.4/html_split/_0023student_002doutcomes_002d5.html create mode 100644 0.0.4/html_split/_0023student_002doutcomes_002d6.html create mode 100644 0.0.4/html_split/_0023student_002doutcomes_002d7.html create mode 100644 0.0.4/html_split/_0023student_002doutcomes_002d8.html create mode 100644 0.0.4/html_split/_0023student_002doutcomes_002d9.html create mode 100644 0.0.4/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html create mode 100644 0.0.4/html_split/_0023testing_002dand_002ddebugging.html create mode 100644 0.0.4/html_split/_0023tooling.html create mode 100644 0.0.4/html_split/_0023topic_002dintroduction.html create mode 100644 0.0.4/html_split/_0023topic_002dintroduction_002d1.html create mode 100644 0.0.4/html_split/_0023topic_002dintroduction_002d2.html create mode 100644 0.0.4/html_split/_0023topic_002dintroduction_002d3.html create mode 100644 0.0.4/html_split/_0023topic_002dintroduction_002d4.html create mode 100644 0.0.4/html_split/_0023use_002dof_002dthis_002ddocument.html create mode 100644 0.0.4/html_split/_0023user_002ddefined_002dtypes_002dclasses.html create mode 100644 0.0.4/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html create mode 100644 0.0.4/html_split/index.html create mode 100644 0.0.4/html_split/unknown_node.html diff --git a/0.0.4/guidelines.epub b/0.0.4/guidelines.epub new file mode 100644 index 0000000000000000000000000000000000000000..d0b15306d38742040ee9efde1c9957cb4079eee9 GIT binary patch literal 31523 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
    t~m&bTozOR_U4fmrE<-`g4; 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 literal 0 HcmV?d00001 diff --git a/0.0.4/html/index.html b/0.0.4/html/index.html new file mode 100644 index 0000000..c237b3f --- /dev/null +++ b/0.0.4/html/index.html @@ -0,0 +1,1430 @@ + + + + + + + Guidelines for Teaching C++ + + + + + + + + + + + + + + + + + + + + + Guidelines for Teaching C++ + + + + + + + +
    + +
    + +
    + +
    + +
    +

    Guidelines for Teaching C++

    + +

    Version 0.0.4

    + +

    SG20 (ISO C++ Study Group on Education)

    +
    +
    + +
    +
    +
    + +
    +
    + +
    +

    1 Obtaining This Document: The Most Recent Version and Alternate Formats

    +

    The most recent version of this document is available as an online HTML document at: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/latest/.

    +

    The version of the document that you are currently reading is available in the following formats:

    +
      +
    1. online (HTML) format as a single large HTML document: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.4/html [later to be https://cplusplus.github.io/SG20/0.0.4/html?]

    2. +
    3. EPUB format: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.4/guidelines.epub [later to be https:/cplusplus.github.io/SG20/0.0.4/guidelines.epub?]

    4. +
    5. online (HTML) format, split across multiple HTML documents: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.4/html_split/ [later to be https://cplusplus.github.io/SG20/0.0.4/html_split/?] [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

    6. +
    +

    Older versions of this document are also available. In general version ver is available at https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/ver. For example, version v0.1.0 (assuming that this version exists) would be available at [later to be https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/v0.1.0?].

    +

    2 Disclaimer

    +

    This document is intended as a proof of concept to solicit feedback from others. This document is incomplete. This document likely has at least a few errors.

    +

    3 Context and Aim of This Guide

    +

    This document is intended to serve as a resource for instructors to assist in the preparation of courses on C++ in a variety of settings, including university, college, and industry environments. The main objectives of this document are as follows:

    +
      +
    • to provide guidelines for content to be covered by courses of various difficulty levels on C++ (e.g., topics and learning outcomes)
    • +
    • to note some common misunderstandings and problematic points that may be encountered when teaching particular topics
    • +
    • to suggest resources useful for teaching C++
    • +
    • to present examples of curriculum for specific courses
    • +
    +

    This document does not itself provide a curriculum for a single specific course, but is rather a set of guidelines that can be used to prepare curricula for a wide variety of courses that differ in focus and level of sophistication. (This said, however, some links to other documents with examples of curricula for specific courses may be included herein.) This document only intends to target the teaching of the most recently ratified version of the C++ standard. (This said, however, since older versions of this document are also available, these older versions may be of some use to those who need guidance in older versions of the standard, at least versions that do not predate C++20.)

    +

    4 Use of This Document

    +

    [NOTE: This document follows the same license model as the C++ Core Guidelines. The LICENSE document is taken verbatim from the C++ Core Guidelines.] This document is made available under a MIT-style license. In simple terms, this license permits copying, use, modification, and creation of derivative works. A copy of the license is included in the section LICENSE.

    +

    5 Contributing to This Document

    +

    Contributions to this document are welcome. If you would like to help with this project as a contributor, please read the section How to Contribute.

    +

    6 Organization of This Document

    +

    The various concepts (i.e., ideas) to potentially be covered are partitioned into modules. A module is very broad in scope and consists of numerous topics. [Note: Can I suggest that we use the term “area” or “unit” instead of “module”? I think that these other choices are better and also avoid any potential confusion over what is meant by “module” (i.e., C++ term versus plain English term).]

    +

    For each module, topics related to the module are identified. Then, for each topic, learning outcomes are specified. In order to address a wide variety of courses on C++, each topic is addressed at three proficiency levels. These proficiency levels allow each topic to be covered at more than one level of detail. This allows target audiences with different background and learning objectives to be accommodated. The three proficiency levels are as follows:

    +
      +
    • foundational. This level gives the learner the idea that a facility exists, what benefits it offers, and the basic ways of using it. [Note: Isn’t this just “novice”/“beginner”?]

    • +
    • main. This level shows mainstream uses and techniques. For abstraction and organizational mechanisms it also demonstrates how to build them. This level should also give the learner a basic (but not detailed) understanding of how a facility might be implemented so that the learner can have a first-order understanding of any costs involved. [Note: The term “main” is not very descriptive/helpful. Could I suggest using “intermediate”?]

    • +
    • advanced. This level gives information suitable for an expert. For most topics there is an expert level of knowledge that most programmers rarely need and techniques that require detailed understanding of language rules or library implementation.

    • +
    +

    The remainder of this document is organized as follows. The various topics are listed grouped by module. In cases where a topic might be classified into more than one module, the topic is listed under the module of most direct relevance. This is done in order to avoid duplication of content. (In the case that a topic is equally relevant to multiple modules, the decision of which to select is made by a proverbial coin toss.) The order in which modules and topics are presented is not meant to imply any order of coverage in a course. The order in which items are listed is essentially arbitrary.

    +

    7 Summary of Modules and Topics

    +

    In the sections that follow, the various modules and topics are presented. There is one section per module. For each module, a table listing the various topics in that module is provided. The ID for a topic is linked to the detailed coverage of that topic that comes later in the document. If a topic has any learning outcomes at a given proficiency level, this is indicated by a checkmark (“✔️”). If a topic has no learning outcomes (simply because there are not any, not because the information is missing), this is indicated by an em dash (“—”). In the case that the information for a topic is completely missing, a question mark (“?”) symbol is used.

    +

    [NOTE: These topics are taken mostly from the SG20 GitHub repository. They are not intended to be complete in any sense. In fact, by gathering together all topics in one place where they are easily viewed, it is hoped that missing and unbalanced items will be more obvious.]

    +

    7.1 Compilation Model

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Translation Units???
    [?]Headers???
    [?]Modules???
    [?]Name Mangling???
    [?]Phases of Translation???
    [?]Separate Compilation???
    [?]Linkage???
    +

    7.2 Preprocessor

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Preprocessor Metaprogramming???
    [?]Inclusion???
    [?]Macros???
    +

    7.3 Basics Types, Objects, Values, Expressions, Statements, and Control-Flow Constructs

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Constant Objects???
    [?]Declarations and Definitions???
    [?]Selection Constructs (e.g., if, ternary)???
    [?]Looping Constructs (e.g., for, while, etc.)???
    +

    7.4 Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Calling Functions???
    [?]Parameter Passing (e.g., Passing By Value and Reference)???
    [func-args]Default Arguments✔️
    [?]Returning Multiple Values???
    [?]Overloading???
    [udl]User-Defined Literals✔️✔️
    +

    7.5 User-Defined Types (Classes)

    + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Special Member Functions???
    [?]Types???
    [?]Conversions???
    [?]Constructors and Destructors???
    [?]Move/Copy Constructors and Assignment Operators???
    [?]Member Functions???
    [?]Sum Types???
    [?]User-Defined Literals???
    [?]Special Member Functions???
    [?]Guidelines for Special Member Functions (e.g., Rule of Five, Rule of Zero)???
    [copy]Copy Semantics✔️✔️
    [?]Moving and Copying???
    [?]Lambdas???
    +

    7.6 Inheritance and Class Hierarchies

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Virtual Functions???
    [?]Run-Time Type Information???
    +

    7.7 Compile-Time Computation

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Constant Expressions and Constant Evaluation???
    [static-assert]static_assert✔️✔️
    +

    7.8 Generic Programming (Templates)

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Concepts???
    [?]SFINAE???
    [?]Template Metaprogramming???
    [?]Function Templates???
    [?]Requires Clauses???
    [req-expr]Requires Expressions✔️✔️
    +

    7.9 Error Handling

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Classes of Errors???
    [?]errno???
    [?]Error Codes???
    [?]Exception Handling???
    +

    7.10 Standard Library

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Input/Output (I/O)???
    [?]Containers, Iterators, and Algorithms???
    +

    7.11 External (i.e., Non Standard) Libraries

    + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Graphical User Interfaces???
    +

    7.12 Building

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Software Build Tools???
    [?]Strategies for Handling Build Problems???
    +

    7.13 Testing and Debugging

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Source-Level Debuggers???
    [?]Code Sanitizers???
    [?]Test Frameworks???
    [?]Debugging Strategies???
    +

    7.14 Tooling

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Compiler Toolchains???
    [?]IDEs???
    +

    7.15 Software Design

    + + + + + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [?]Design by Contract???
    +

    8 Detailed Information for Modules and Topics

    +

    8.1 C++ object model: copy semantics

    +

    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

    +

    8.1.1 Overview

    +

    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

    + ++++ + + + + + + + + + + + + + + + + + + + + +
    LevelObjectives
    Foundationalunderstanding how and when are copies made
    Mainimplementing user-defined copy operations
    Advancedspecial cases: copy elision
    +

    8.1.2 Motivation

    +

    Why is this important? Why do we want to learn/teach this topic?

    +

    Copy semantics allows the user to define how objects of a class get replicated and interact on a value level.

    +

    8.1.3 Topic introduction

    +

    Very brief introduction to the topic.

    +

    Explains when and how objects are copied.

    +

    8.1.4 Foundational: How and when are copies made

    +

    8.1.4.1 Background/Required Knowledge

    +

    A student is able to: * explain what a C++ type is? [C++ object model: types] * explain what an object is? [C++ object model: objects], [C++ object model: constant objects] * define and understand class invariants?

    +

    It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain special member functions [C++ object model: special member functions]

    +

    8.1.4.2 Student outcomes

    +

    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

    +

    A student should be able to:

    +
      +
    1. explain what copy semantics accomplish
    2. +
    +
      +
    • establishing “equivalent” object state in another object
    • +
    +
      +
    1. explain difference between copying a reference and copying a value*
    2. +
    3. explain where copies are made
    4. +
    +

    * In other languages these differences are sometimes referred to as shallow and deep copy.

    +

    8.1.4.3 Caveats

    +

    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

    +
      +
    • Compiler-provided copy operations may result in ownership problems (e.g., char*). These ownership problems can generally be solved by using types whose copy operations have the appropriate semantics, e.g., std::string instead of char* to hold string values.
    • +
    +

    8.1.4.4 Points to cover

    +

    This section lists important details for each point.

    +
      +
    • Principle of copying +
        +
      • Copying of types, which follow the rule of zero
      • +
      • Copying of types, with user defined copy operations
      • +
      • Copying an object does not change the original
      • +
    • +
    • Practical applications +
        +
      • std::unique_ptr (has no copy)
      • +
      • Strings (copies the value)
      • +
    • +
    +

    8.1.5 Main: Implementing user-defined copy operations

    +

    8.1.5.1 Background/Required Knowledge

    +

    A student is able to: * identify special member functions [C++ object model: special member functions]

    +

    It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain the rule of zero [C++ object model: rule-of-zero] * explain the rule of five [C++ object model: rule-of-five]

    +

    8.1.5.2 Student outcomes

    +

    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

    +

    A student should be able to: * explain when they have to implement the copy operations for their own type * Copy constructor * Copy assignment operator * implement copy operations for their own types * Optional: explain when copying with basic and strong exception guarantees is useful

    +

    8.1.5.3 Caveats

    +

    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

    +
      +
    • Intricacies when implementing copy operations: +
        +
      • Examples of how not to write copy operations (e.g., C++03 std::auto_ptr)
      • +
    • +
    +

    8.1.5.4 Points to cover

    +

    This section lists important details for each point.

    +
      +
    • Copy constructors and copy assignment operators +
        +
      • How compiler generates default copy operations
      • +
      • =default, =delete (No copy)
      • +
      • How-to write your own copy operations
      • +
      • Rule-of-five
      • +
      • Copy assignment operators can be ref-qualified to avoid assigning into temporary objects.
      • +
    • +
    +

    8.1.6 Advanced

    +

    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

    +

    When can copies be elided and when does the standard guarantee copy elision. References: * Abseil tip of the Week #166 * cppreference - Copy elision

    +

    8.2 Functions: user-defined literals

    +

    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

    +

    8.2.1 Overview

    +

    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

    + ++++ + + + + + + + + + + + + + + + + + + + + +
    LevelObjectives
    Foundationalusing and understanding UDLs
    Mainimplementing your own UDLs
    AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
    +

    8.2.2 Motivation

    +

    Why is this important? Why do we want to learn/teach this topic?

    +
      +
    • Allows clearer expression of intent in C++.
    • +
    • std::string: "Hello, world!"s
    • +
    • std::chrono: 3h + 10min + 5s
    • +
    +

    8.2.3 Topic introduction

    +

    Very brief introduction to the topic.

    +
      +
    • Explain the existence of user defined literals. Example: 12min + 17s is terse, expressive and type safe.
    • +
    +

    8.2.4 Foundational: Using UDLs

    +

    8.2.4.1 Background/Required Knowledge

    +

    A student: * knows how to form numeric literals, e.g., 1.5f means a float of value 1.5. * is familiar with the major C++ types: * bool (Boolean type) * int (Integer type) * double (Floating-point type) * std::string (Text type) * std::vector (Collection type) * knows that namespaces exist, and namespace std. * knows what using-declarations and using-directives are. [C++ object model: declarations]

    +

    8.2.4.2 Student outcomes

    +

    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

    +

    A student should be able to:

    +
      +
    1. use using namespace std::string_literals[1].
    2. +
    3. recognise UDLs in code that they are reading.
    4. +
    5. figure out which UDL definitions for a used type exist.
    6. +
    7. identify parts of the standard library that make use of UDLs.
    8. +
    9. prevent the dangers of temporaries created with "blah"s as well as with std::string{"blah"}.
    10. +
    11. effectively selects the right set of namespaces in using-directives from the sub-namespaces std::literals.
    12. +
    +

    [1]: explain that it’s okay to use a using-directive to “activate” UDLs.

    +

    8.2.4.3 Caveats

    +

    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

    +
      +
    • A student gets confused by the similarities and differences between built-in suffixes and UDLs and between UDLs from different namespaces.
    • +
    • A student “activates” two suffixes with the same signature from different namespaces.
    • +
    +

    8.2.4.4 Points to cover

    +

    This section lists important details for each point.

    +

    8.2.5 Main: implementing UDLs

    +

    8.2.5.1 Background/Required Knowledge

    +
      +
    • All of the above.
    • +
    +

    8.2.5.2 Student outcomes

    +

    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

    +

    A student should be able to:

    +
      +
    1. write a UDL operator of their own.
    2. +
    3. separate unrelated UDLs into distinct namespaces.
    4. +
    +

    8.2.5.3 Caveats

    +

    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

    +

    No caveats at present. #### Points to cover

    +

    This section lists important details for each point.

    +

    No caveats at present. ### Advanced {#udl-advanced}

    +

    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

    +

    8.3 Functions: default argument

    +

    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

    +

    8.3.1 Overview

    +

    Functions in C++ may be overloaded with different numbers and types of parameters. It may be of value to specify default arguments for some number of parameters, to allow a caller to avoid specifying arguments that rarely change, or to enable expanding the set of parameters while maintaining backward compatibility with existing callers.

    + ++++ + + + + + + + + + + + + + + + + + + + + +
    LevelObjective
    FoundationalDefine and use functions with default arguments
    Main
    Advancedrefinement of default arguments through multiple declarations
    +

    8.3.2 Motivation

    +

    Default arguments allow the omission of arguments with obvious or common values. Also may be utilized to extend an existing function signature without forcing changes to existing calling code.

    +

    8.3.3 Topic introduction

    +

    Explain how default arguments work and how to define them.

    +

    8.3.4 Foundational: Using and defining functions with default arguments

    +

    8.3.4.1 Background/Required Knowledge

    +

    A student is able to:

    + +

    8.3.4.2 Student outcomes

    +

    A student should be able to:

    +
      +
    1. Call to a function with a default argument with or without that argument specified
    2. +
    3. Declare a function with a default argument, and omit the default in the definition’s signature
    4. +
    5. Explain when the lifetime of a default argument begins and ends
    6. +
    +

    8.3.4.3 Caveats

    +
      +
    • When no forward-declaration exists, the definition serves as the declaration
    • +
    • When multiple declarations exist, only one may specify the default for any particular parameter, but multiple declarations may specify the defaults for different parameters.
    • +
    • Additional default values may be specified for other parameters in repeat declarations
    • +
    • Calling an overloaded function with fewer arguments may be ambiguous with regard to an overload with default arguments
    • +
    +

    8.3.4.4 Points to cover

    +
      +
    • Default value may only be specified once for each parameter among all declarations
    • +
    • Default values must start from the rightmost parameter and continue leftward without gaps
    • +
    • Considerations of when to use default arguments vs overload set
    • +
    +

    8.3.5 Main: implementing *

    +

    8.3.5.1 Background/required knowledge

    +
      +
    • All of the above.
    • +
    +

    8.3.5.2 Student outcomes

    +

    A student should be able to:

    +

    8.3.5.3 Caveats

    +

    8.3.5.4 Points to cover

    +

    8.3.6 Advanced

    +

    Subsequent redeclarations of the same function may add default argument values, which are then usable by callers. Though a single parameter cannot be given a default argument twice in the same translation unit, it is legal, though ill-advised, to give the same function different default arguments in different translation units.

    +

    8.4 Module name: Requires Expressions

    +

    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

    +

    8.4.1 Overview

    + ++++ + + + + + + + + + + + + + + + + + + + + +
    LevelObjectives
    FoundationalDefine and use requires-expressions to check satisfaction of expressions by given parameters
    MainDefine and use requires-expressions to check properties of expressions
    Advanced
    +

    8.4.2 Motivation

    +

    Requires-expressions allow a developer to perform compile-time evaluation on the validity of other expressions. These are fundamental to the ability to write concepts. [Compile-time programming: concepts]

    +

    8.5 Topic introduction

    +

    Requires-expressions are compile-time predicates which evaluate to true when their specified set of expressions are all valid for a given set of inputs.

    +

    8.5.1 Foundational: Writing requires-expressions

    +

    8.5.1.1 Background/Required Knowledge

    +

    A student is able to:

    + +

    It is helpful if:

    +
      +
    • The student is aware that attempting to specialize the template with types or values which do not match otherwise unstated assumptions will cause errors within the template.
    • +
    +

    8.5.1.2 Student outcomes

    +

    A student should be able to:

    +
      +
    1. Write a simple-requirement to assert the validity of an expression
    2. +
    3. Write a type-requirement to check the existence of a type by its identifier
    4. +
    5. Write a compound-requirement to test the resulting type of an expression
    6. +
    7. Write a nested-requirement to test the constexpr value of an operation, as opposed to just the syntactic validity
    8. +
    9. Use a requires-expression within a concept, requires-clause, or if constexpr condition
    10. +
    +

    8.5.1.3 Caveats

    +

    To require that expressions, which evaluate to a boolean value like sizeof(t) == 4, evaluate to true a nested-requirement is needed (e.g., requires sizeof(t) == 4;). Omitting the requires results in a simple-requirement, which is satisfied based purely on syntactic validity, not on the result of the operation.

    +

    8.5.1.4 Points to cover

    +
      +
    • All requires-expression requirements terminate with a semicolon.
    • +
    • simple-requirements are used to check that an expression is well-formed.
    • +
    • nested-requirements are introduced with requires and primarily used to check the result of an expression computable by the compiler, including concepts or other requires-expressions.
    • +
    • type-requirements are introduced with typename and used to verify the existence of a type with a particular identifier.
    • +
    • compound-requirements are enclosed in braces and can be used to check the resulting type of an expression.
    • +
    • Checks are performed by the compiler, not at run time.
    • +
    • If covering usage of requires-expression with requires-clause, [Compile-time programming: requires clause] demonstrate requires requires and show how to ever avoid writing it by using a concept. [Compile-time programming: concepts]
    • +
    +

    8.5.2 Main: Advanced requirements

    +

    8.5.2.1 Background/required knowledge

    +
      +
    • All of the above.
    • +
    • Knowledge of noexcept
    • +
    +

    A student is able to:

    + +

    8.5.2.2 Student outcomes

    +

    A student should be able to:

    +
      +
    1. Write compound-requirements which test the noexceptness of an expression.
    2. +
    3. Use a concept as the target of a compound-requirement.
    4. +
    +

    8.5.2.3 Caveats

    +

    8.5.2.4 Points to cover

    +
      +
    • Compound-requirements allow the optional ability to test whether an expression is marked as noexcept, by using a trailing noexcept keyword.
    • +
    + +
      +
    • If the return-type-requirement of a compound-requirement is a concept, that concept is given the resulting type as the first parameter, followed by the specified parameters in the compound-requirement. { ++x } -> C<int> would substitute C<decltype((++x)), int> and check that concept C is satisfied for those parameters.
    • +
    +

    8.5.3 Advanced

    +

    8.6 Meta-error handling: static_assert

    +

    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

    +

    8.6.1 Overview

    +

    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

    + ++++ + + + + + + + + + + + + + + + + + + + + +
    LevelObjectives
    FoundationalCalling static_assert with a constant expression
    MainUsing static_assert to detect contract violations and improve error messages
    Advanced
    +

    8.6.2 Motivation

    +

    Why is this important? Why do we want to learn/teach this topic?

    +

    static_assert allows the developer to enforce that conditions which can be checked during compilation will force build errors when violated. Additionally, they are the best mechanism by which a developer can pass useful information to other developers regarding what violation occurred or what must be done, instead.

    +

    8.6.3 Topic introduction

    +

    Very brief introduction to the topic.

    +

    static_assert is a compile-time evaluated function that asserts the truth of a supplied predicate, issuing an optional user-supplied error message if the predicate is false.

    +

    8.6.4 Foundational: Calling static_assert with a constant expression

    +

    8.6.4.1 Background/Required Knowledge

    +

    A student:

    +
      +
    • Should be able to explain the difference between code evaluated at compile-time and run-time
    • +
    • Should be able to cite some examples of compile-time known information, such as sizeof(T)
    • +
    +

    8.6.4.2 Student outcomes

    +

    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

    +

    A student should be able to:

    +
      +
    1. Assert the expected size of a structure using static_assert
    2. +
    +

    8.6.4.3 Caveats

    +

    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

    +

    8.6.4.4 Points to cover

    +

    This section lists important details for each point.

    +
      +
    • X
    • +
    • In addition to what is wrong, a good error message will inform the user of how to correct it
    • +
    +

    8.6.5 Main: Contracts and static_assert

    +

    8.6.5.1 Background/Required Knowledge

    +
      +
    • All of the above.
    • +
    • General understanding of compile-time requirements
    • +
    +

    8.6.5.2 Student outcomes

    +

    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

    +

    A student should be able to:

    +
      +
    1. Utilize static_assert to verify preconditions of a meta-function
    2. +
    3. Utilize static_assert to verify the results of meta-functions for known values
    4. +
    +

    8.6.5.3 Caveats

    +

    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

    +

    8.6.5.4 Points to cover

    +

    This section lists important details for each point.

    +
      +
    • When writing a meta-function, use static_assert to test the results
    • +
    • Write static_assert calls at the scope of the code they are guarding
    • +
    + +

    8.6.6 Advanced

    +

    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

    +

    9 Examples of Course Curricula

    +

    [NOTE: Anyone have any suggestions of items to add here?] The following are examples of curricula for course on C++: …

    +

    10 License

    +

    [NOTE: This license is copied verbatim from the C++ Core Guidelines.]

    +
    Copyright (c) Standard C++ Foundation and its contributors
    +
    +Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
    +perpetual license to copy, use, modify, and create derivative works from this
    +project for your personal or internal business use only. The above copyright
    +notice and this permission notice shall be included in all copies or
    +substantial portions of the project. This license does not grant permission
    +to use the trade names, trademarks, service marks, or product names of the
    +licensor, except as required for reasonable and customary use in describing
    +the origin of the project.
    +
    +Standard C++ Foundation reserves the right to accept contributions to the
    +project at its discretion.
    +
    +By contributing material to this project, you grant Standard C++ Foundation,
    +and those who receive the material directly or indirectly from Standard C++
    +Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
    +transferrable license to reproduce, prepare derivative works of, publicly
    +display, publicly perform, and distribute your contributed material and such
    +derivative works, and to sublicense any or all of the foregoing rights to third
    +parties for commercial or non-commercial use.  You also grant Standard C++
    +Foundation, and those who receive the material directly or indirectly from
    +Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
    +irrevocable license under your patent claims that directly read on your
    +contributed material to make, have made, use, offer to sell, sell and import
    +or otherwise dispose of the material. You warrant that your material is your
    +original work, or that you have the right to grant the above licenses.
    +
    +THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    +OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
    +PROJECT.
    +
    +If you believe that anything in the project infringes your copyright, please
    +contact us at admin@isocpp.org with your contact information and a detailed
    +description of your intellectual property, including a specific URL where you
    +believe your intellectual property is being infringed.
    +
    +

    11 Contributors

    +
    Christopher Di Bella
    +Florian Sattler
    +Michael Adams
    +rwdougla
    +vulder
    +

    12 How To Contribute

    +

    Before attempting to contribute any content for consideration for inclusion in this document, please read the information below and and the referenced documents as appropriate.

    +

    All contributions to this project must be made in accordance with the license in section License. This teaching-guidelines document only offers guidance on teaching C++ as it is specified in the current version of the C++ standard. So, content should be presented relative to the most-recently ratified version of the standard. A detailed explanation of how to present the material for a topic is given in:

    +
      +
    • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.
    • +
    +

    Any potential contributors should ensure that they read this document. The following document may also be helpful in providing some general background on the modular approach to teaching followed herein:

    + +

    In order to prepare content, it is important to understand what learning outcomes are, and how to prepare good ones. Some information on learning outcomes can be found in the References section. The following document offers a concise introduction to learning outcomes:

    + +

    13 Glossary

    +

    Some possible terms to include in the glossary:

    +
      +
    • learning objective
    • +
    • learning outcome
    • +
    +

    14 References

    +

    14.1 References on Learning Outcomes

    + + +
      +
    • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — Standing Document for SG20: Guidelines for Teaching C++ to Beginners. https://wg21.link/p1389.

    • +
    • Christopher Di Bella. P1725R0 — Modular Topic Design. https://wg21.link/p1725.

    • +
    • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.

    • +
    • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study Group: C++ Education. https://wg21.link/p1231.

    • +
    • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 — Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0.

    • +
    +
    +
    + +
    + + diff --git a/0.0.4/html_split/Advanced.html b/0.0.4/html_split/Advanced.html new file mode 100644 index 0000000..c4d659a --- /dev/null +++ b/0.0.4/html_split/Advanced.html @@ -0,0 +1,60 @@ + + + + + +Advanced (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
    +

    8.1.6 Advanced

    +

    These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

    +

    When can copies be elided and when does the standard guarantee copy +elision. References: * Abseil tip of +the Week #166 * +cppreference +- Copy elision +

    + + + + + diff --git a/0.0.4/html_split/Background_002fRequired-Knowledge.html b/0.0.4/html_split/Background_002fRequired-Knowledge.html new file mode 100644 index 0000000..d3ee185 --- /dev/null +++ b/0.0.4/html_split/Background_002fRequired-Knowledge.html @@ -0,0 +1,65 @@ + + + + + +Background/Required Knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    8.1.4.1 Background/Required Knowledge

    +

    A student is able to: * explain what a C++ type is? +[C++ object model: types] +* explain what an object is? +[C++ object +model: objects], +[C++ object model: +constant objects] * define and understand class invariants? +

    +

    It helps when a student is able to: * use move semantics +[C++ object model: move +semantics] * explain special member functions +[C++ object model: +special member functions] +

    + + + + + diff --git a/0.0.4/html_split/Background_002frequired-knowledge.html b/0.0.4/html_split/Background_002frequired-knowledge.html new file mode 100644 index 0000000..79fd94d --- /dev/null +++ b/0.0.4/html_split/Background_002frequired-knowledge.html @@ -0,0 +1,54 @@ + + + + + +Background/required knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
    +

    8.3.5.1 Background/required knowledge

    +
      +
    • All of the above. +
    + + + + + + diff --git a/0.0.4/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html b/0.0.4/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html new file mode 100644 index 0000000..3e850b1 --- /dev/null +++ b/0.0.4/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html @@ -0,0 +1,60 @@ + + + + + +Basics Types Objects Values Expressions Statements and Control-Flow Constructs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    7.3 Basics Types, Objects, Values, Expressions, Statements, and

    +

    Control-Flow Constructs +

    + + + + + +
    IDUnitFoundationalMainAdvanced
    [‘?’]Constant Objects???
    [‘?’]Declarations and Definitions???
    [‘?’]Selection Constructs (e.g., if, ternary)???
    [‘?’]Looping Constructs (e.g., for, while, etc.)???
    + + + + + + diff --git a/0.0.4/html_split/Building.html b/0.0.4/html_split/Building.html new file mode 100644 index 0000000..e628fd0 --- /dev/null +++ b/0.0.4/html_split/Building.html @@ -0,0 +1,57 @@ + + + + + +Building (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    7.12 Building

    + + + + +
    IDUnitFoundationalMainAdvanced
    [‘?’]Software Build Tools???
    [‘?’]Strategies for Handling Build Problems???
    + + + + + + diff --git a/0.0.4/html_split/C_002b_002b-object-model-copy-semantics.html b/0.0.4/html_split/C_002b_002b-object-model-copy-semantics.html new file mode 100644 index 0000000..6d7350c --- /dev/null +++ b/0.0.4/html_split/C_002b_002b-object-model-copy-semantics.html @@ -0,0 +1,69 @@ + + + + + +C++ object model copy semantics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    8.1 C++ object model: copy semantics

    +

    Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

    + + + + + + + + + + + + + + diff --git a/0.0.4/html_split/Caveats.html b/0.0.4/html_split/Caveats.html new file mode 100644 index 0000000..c5303c9 --- /dev/null +++ b/0.0.4/html_split/Caveats.html @@ -0,0 +1,62 @@ + + + + + +Caveats (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    8.1.4.3 Caveats

    +

    This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

    +
      +
    • Compiler-provided copy operations may result in ownership problems +(e.g., char*). These ownership problems can generally be solved +by using types whose copy operations have the appropriate semantics, +e.g., std::string instead of char* to hold string values. +
    + + + + + + diff --git a/0.0.4/html_split/Compilation-Model.html b/0.0.4/html_split/Compilation-Model.html new file mode 100644 index 0000000..de11703 --- /dev/null +++ b/0.0.4/html_split/Compilation-Model.html @@ -0,0 +1,62 @@ + + + + + +Compilation Model (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    7.1 Compilation Model

    + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [‘?’]Translation Units???
    [‘?’]Headers???
    [‘?’]Modules???
    [‘?’]Name Mangling???
    [‘?’]Phases of Translation???
    [‘?’]Separate Compilation???
    [‘?’]Linkage???
    + + + + + + diff --git a/0.0.4/html_split/Compile_002dTime-Computation.html b/0.0.4/html_split/Compile_002dTime-Computation.html new file mode 100644 index 0000000..b9aaa0e --- /dev/null +++ b/0.0.4/html_split/Compile_002dTime-Computation.html @@ -0,0 +1,57 @@ + + + + + +Compile-Time Computation (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    7.7 Compile-Time Computation

    + + + + +
    IDUnitFoundationalMainAdvanced
    [‘?’]Constant Expressions and Constant Evaluation???
    [‘static-assert’]static_assert‘✔️’‘✔️’
    + + + + + + diff --git a/0.0.4/html_split/Context-and-Aim-of-This-Guide.html b/0.0.4/html_split/Context-and-Aim-of-This-Guide.html new file mode 100644 index 0000000..60efa61 --- /dev/null +++ b/0.0.4/html_split/Context-and-Aim-of-This-Guide.html @@ -0,0 +1,76 @@ + + + + + +Context and Aim of This Guide (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
    +

    +Next: , Previous: , Up: Top   [Contents]

    +
    +
    +

    3 Context and Aim of This Guide

    +

    This document is intended to serve as a resource for instructors to +assist in the preparation of courses on C++ in a variety of settings, +including university, college, and industry environments. The main +objectives of this document are as follows: +

    +
      +
    • to provide guidelines for content to be covered by courses of various +difficulty levels on C++ (e.g., topics and learning outcomes) +
    • to note some common misunderstandings and problematic points that may be +encountered when teaching particular topics +
    • to suggest resources useful for teaching C++ +
    • to present examples of curriculum for specific courses +
    + +

    This document does not itself provide a curriculum for a single specific +course, but is rather a set of guidelines that can be used to prepare +curricula for a wide variety of courses that differ in focus and level +of sophistication. (This said, however, some links to other documents +with examples of curricula for specific courses may be included herein.) +This document only intends to target the teaching of the most recently +ratified version of the C++ standard. (This said, however, since older +versions of this document are also available, these older versions may +be of some use to those who need guidance in older versions of the +standard, at least versions that do not predate C++20.) +

    + + + + + diff --git a/0.0.4/html_split/Contributing-to-This-Document.html b/0.0.4/html_split/Contributing-to-This-Document.html new file mode 100644 index 0000000..eac6c28 --- /dev/null +++ b/0.0.4/html_split/Contributing-to-This-Document.html @@ -0,0 +1,55 @@ + + + + + +Contributing to This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    5 Contributing to This Document

    +

    Contributions to this document are welcome. If you would like to help +with this project as a contributor, please read the section +‘How to Contribute’. +

    + + + + + diff --git a/0.0.4/html_split/Contributors.html b/0.0.4/html_split/Contributors.html new file mode 100644 index 0000000..8adb4b1 --- /dev/null +++ b/0.0.4/html_split/Contributors.html @@ -0,0 +1,58 @@ + + + + + +Contributors (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
    +

    +Next: , Previous: , Up: Top   [Contents]

    +
    +
    +

    11 Contributors

    + +
    Christopher Di Bella
    +Florian Sattler
    +Michael Adams
    +rwdougla
    +vulder
    +
    + + + + + diff --git a/0.0.4/html_split/Detailed-Information-for-Modules-and-Topics.html b/0.0.4/html_split/Detailed-Information-for-Modules-and-Topics.html new file mode 100644 index 0000000..c8c9fcd --- /dev/null +++ b/0.0.4/html_split/Detailed-Information-for-Modules-and-Topics.html @@ -0,0 +1,67 @@ + + + + + +Detailed Information for Modules and Topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    8 Detailed Information for Modules and Topics

    + + + + + + + + + + + + + + + diff --git a/0.0.4/html_split/Disclaimer.html b/0.0.4/html_split/Disclaimer.html new file mode 100644 index 0000000..a911983 --- /dev/null +++ b/0.0.4/html_split/Disclaimer.html @@ -0,0 +1,55 @@ + + + + + +Disclaimer (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    2 Disclaimer

    +

    This document is intended as a proof of concept to solicit feedback from +others. This document is incomplete. This document likely has at least a +few errors. +

    + + + + + diff --git a/0.0.4/html_split/Error-Handling.html b/0.0.4/html_split/Error-Handling.html new file mode 100644 index 0000000..1f8d3e0 --- /dev/null +++ b/0.0.4/html_split/Error-Handling.html @@ -0,0 +1,59 @@ + + + + + +Error Handling (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    7.9 Error Handling

    + + + + + + +
    IDUnitFoundationalMainAdvanced
    [‘?’]Classes of Errors???
    [‘?’]errno???
    [‘?’]Error Codes???
    [‘?’]Exception Handling???
    + + + + + + diff --git a/0.0.4/html_split/Examples-of-Course-Curricula.html b/0.0.4/html_split/Examples-of-Course-Curricula.html new file mode 100644 index 0000000..64eb64b --- /dev/null +++ b/0.0.4/html_split/Examples-of-Course-Curricula.html @@ -0,0 +1,53 @@ + + + + + +Examples of Course Curricula (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
    +

    9 Examples of Course Curricula

    +

    [NOTE: Anyone have any suggestions of items to add here?] The +following are examples of curricula for course on C++: … +

    + + + + + diff --git a/0.0.4/html_split/External-ie-Non-Standard-Libraries.html b/0.0.4/html_split/External-ie-Non-Standard-Libraries.html new file mode 100644 index 0000000..2bf081e --- /dev/null +++ b/0.0.4/html_split/External-ie-Non-Standard-Libraries.html @@ -0,0 +1,56 @@ + + + + + +External ie Non Standard Libraries (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    7.11 External (i.e., Non Standard) Libraries

    + + + +
    IDUnitFoundationalMainAdvanced
    [‘?’]Graphical User Interfaces???
    + + + + + + diff --git a/0.0.4/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html b/0.0.4/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html new file mode 100644 index 0000000..ce2c1b0 --- /dev/null +++ b/0.0.4/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html @@ -0,0 +1,62 @@ + + + + + +Foundational Calling static_assert with a constant expression (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
    +

    8.6.4 Foundational: Calling static_assert with a constant

    +

    expression +

    + + + + + + + + + + + + diff --git a/0.0.4/html_split/Foundational-How-and-when-are-copies-made.html b/0.0.4/html_split/Foundational-How-and-when-are-copies-made.html new file mode 100644 index 0000000..4cec33b --- /dev/null +++ b/0.0.4/html_split/Foundational-How-and-when-are-copies-made.html @@ -0,0 +1,63 @@ + + + + + +Foundational How and when are copies made (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    8.1.4 Foundational: How and when are copies made

    + + + + + + + + + + + + + diff --git a/0.0.4/html_split/Foundational-Using-UDLs.html b/0.0.4/html_split/Foundational-Using-UDLs.html new file mode 100644 index 0000000..adb461e --- /dev/null +++ b/0.0.4/html_split/Foundational-Using-UDLs.html @@ -0,0 +1,61 @@ + + + + + +Foundational Using UDLs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
    +

    8.2.4 Foundational: Using UDLs

    + + + + + + + + + + + + + diff --git a/0.0.4/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html b/0.0.4/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html new file mode 100644 index 0000000..e37a992 --- /dev/null +++ b/0.0.4/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html @@ -0,0 +1,62 @@ + + + + + +Foundational Using and defining functions with default arguments (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
    +

    8.3.4 Foundational: Using and defining functions with default

    +

    arguments +

    + + + + + + + + + + + + diff --git a/0.0.4/html_split/Foundational-Writing-requires_002dexpressions.html b/0.0.4/html_split/Foundational-Writing-requires_002dexpressions.html new file mode 100644 index 0000000..6846c6e --- /dev/null +++ b/0.0.4/html_split/Foundational-Writing-requires_002dexpressions.html @@ -0,0 +1,60 @@ + + + + + +Foundational Writing requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +
    +

    8.5.1 Foundational: Writing requires-expressions

    + + + + + + + + + + + + + diff --git a/0.0.4/html_split/Functions-default-argument.html b/0.0.4/html_split/Functions-default-argument.html new file mode 100644 index 0000000..2571ca9 --- /dev/null +++ b/0.0.4/html_split/Functions-default-argument.html @@ -0,0 +1,67 @@ + + + + + +Functions default argument (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
    +

    8.3 Functions: default argument

    +

    Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

    + + + + + + + + + + + + + + diff --git a/0.0.4/html_split/Functions-user_002ddefined-literals.html b/0.0.4/html_split/Functions-user_002ddefined-literals.html new file mode 100644 index 0000000..7e41de9 --- /dev/null +++ b/0.0.4/html_split/Functions-user_002ddefined-literals.html @@ -0,0 +1,66 @@ + + + + + +Functions user-defined literals (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
    +

    8.2 Functions: user-defined literals

    +

    Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

    + + + + + + + + + + + + + diff --git a/0.0.4/html_split/Functions.html b/0.0.4/html_split/Functions.html new file mode 100644 index 0000000..82175a5 --- /dev/null +++ b/0.0.4/html_split/Functions.html @@ -0,0 +1,61 @@ + + + + + +Functions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    7.4 Functions

    + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [‘?’]Calling Functions???
    [‘?’]Parameter Passing (e.g., Passing By Value and Reference)???
    [‘func-args’]Default Arguments‘✔️’
    [‘?’]Returning Multiple Values???
    [‘?’]Overloading???
    [‘udl’]User-Defined Literals‘✔️’‘✔️’
    + + + + + + diff --git a/0.0.4/html_split/Generic-Programming-Templates.html b/0.0.4/html_split/Generic-Programming-Templates.html new file mode 100644 index 0000000..1a22cd7 --- /dev/null +++ b/0.0.4/html_split/Generic-Programming-Templates.html @@ -0,0 +1,61 @@ + + + + + +Generic Programming Templates (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    7.8 Generic Programming (Templates)

    + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [‘?’]Concepts???
    [‘?’]SFINAE???
    [‘?’]Template Metaprogramming???
    [‘?’]Function Templates???
    [‘?’]Requires Clauses???
    [‘req-expr’]Requires Expressions‘✔️’‘✔️’
    + + + + + + diff --git a/0.0.4/html_split/Glossary.html b/0.0.4/html_split/Glossary.html new file mode 100644 index 0000000..2bf24f2 --- /dev/null +++ b/0.0.4/html_split/Glossary.html @@ -0,0 +1,58 @@ + + + + + +Glossary (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
    +

    +Next: , Previous: , Up: Top   [Contents]

    +
    +
    +

    13 Glossary

    +

    Some possible terms to include in the glossary: +

    +
      +
    • learning objective +
    • learning outcome +
    + + + + + + diff --git a/0.0.4/html_split/How-To-Contribute.html b/0.0.4/html_split/How-To-Contribute.html new file mode 100644 index 0000000..f1963d5 --- /dev/null +++ b/0.0.4/html_split/How-To-Contribute.html @@ -0,0 +1,89 @@ + + + + + +How To Contribute (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
    +

    +Next: , Previous: , Up: Top   [Contents]

    +
    +
    +

    12 How To Contribute

    +

    Before attempting to contribute any content for consideration for +inclusion in this document, please read the information below and and +the referenced documents as appropriate. +

    +

    All contributions to this project must be made in accordance with the +license in section License. This teaching-guidelines +document only offers guidance on teaching C++ as it is specified in the +current version of the C++ standard. So, content should be presented +relative to the most-recently ratified version of the standard. A +detailed explanation of how to present the material for a topic is given +in: +

    +
      +
    • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to +structure a teaching topic. https://wg21.link/p2193. +
    + +

    Any potential contributors should ensure that they read this document. +The following document may also be helpful in providing some general +background on the modular approach to teaching followed herein: +

    + + +

    In order to prepare content, it is important to understand what learning +outcomes are, and how to prepare good ones. Some information on learning +outcomes can be found in the References section. The +following document offers a concise introduction to learning outcomes: +

    + + + + + + + diff --git a/0.0.4/html_split/Inheritance-and-Class-Hierarchies.html b/0.0.4/html_split/Inheritance-and-Class-Hierarchies.html new file mode 100644 index 0000000..1a394b0 --- /dev/null +++ b/0.0.4/html_split/Inheritance-and-Class-Hierarchies.html @@ -0,0 +1,57 @@ + + + + + +Inheritance and Class Hierarchies (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    7.6 Inheritance and Class Hierarchies

    + + + + +
    IDUnitFoundationalMainAdvanced
    [‘?’]Virtual Functions???
    [‘?’]Run-Time Type Information???
    + + + + + + diff --git a/0.0.4/html_split/License.html b/0.0.4/html_split/License.html new file mode 100644 index 0000000..38d2d8d --- /dev/null +++ b/0.0.4/html_split/License.html @@ -0,0 +1,100 @@ + + + + + +License (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
    +

    +Next: , Previous: , Up: Top   [Contents]

    +
    +
    +

    10 License

    +

    [NOTE: This license is copied verbatim from the C++ Core +Guidelines.] +

    +
    Copyright (c) Standard C++ Foundation and its contributors
    +
    +Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
    +perpetual license to copy, use, modify, and create derivative works from this
    +project for your personal or internal business use only. The above copyright
    +notice and this permission notice shall be included in all copies or
    +substantial portions of the project. This license does not grant permission
    +to use the trade names, trademarks, service marks, or product names of the
    +licensor, except as required for reasonable and customary use in describing
    +the origin of the project.
    +
    +Standard C++ Foundation reserves the right to accept contributions to the
    +project at its discretion.
    +
    +By contributing material to this project, you grant Standard C++ Foundation,
    +and those who receive the material directly or indirectly from Standard C++
    +Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
    +transferrable license to reproduce, prepare derivative works of, publicly
    +display, publicly perform, and distribute your contributed material and such
    +derivative works, and to sublicense any or all of the foregoing rights to third
    +parties for commercial or non-commercial use.  You also grant Standard C++
    +Foundation, and those who receive the material directly or indirectly from
    +Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
    +irrevocable license under your patent claims that directly read on your
    +contributed material to make, have made, use, offer to sell, sell and import
    +or otherwise dispose of the material. You warrant that your material is your
    +original work, or that you have the right to grant the above licenses.
    +
    +THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    +OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
    +PROJECT.
    +
    +If you believe that anything in the project infringes your copyright, please
    +contact us at admin@isocpp.org with your contact information and a detailed
    +description of your intellectual property, including a specific URL where you
    +believe your intellectual property is being infringed.
    +
    +
    +
    +

    +Next: , Previous: , Up: Top   [Contents]

    +
    + + + + + diff --git a/0.0.4/html_split/Main-Advanced-requirements.html b/0.0.4/html_split/Main-Advanced-requirements.html new file mode 100644 index 0000000..6c4ac0e --- /dev/null +++ b/0.0.4/html_split/Main-Advanced-requirements.html @@ -0,0 +1,60 @@ + + + + + +Main Advanced requirements (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +
    +

    8.5.2 Main: Advanced requirements

    + + + + + + + + + + + + + diff --git a/0.0.4/html_split/Main-Contracts-and-static_005fassert.html b/0.0.4/html_split/Main-Contracts-and-static_005fassert.html new file mode 100644 index 0000000..6c0ba46 --- /dev/null +++ b/0.0.4/html_split/Main-Contracts-and-static_005fassert.html @@ -0,0 +1,61 @@ + + + + + +Main Contracts and static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
    +

    8.6.5 Main: Contracts and static_assert

    + + + + + + + + + + + + + diff --git a/0.0.4/html_split/Main-Implementing-user_002ddefined-copy-operations.html b/0.0.4/html_split/Main-Implementing-user_002ddefined-copy-operations.html new file mode 100644 index 0000000..e38dfd6 --- /dev/null +++ b/0.0.4/html_split/Main-Implementing-user_002ddefined-copy-operations.html @@ -0,0 +1,62 @@ + + + + + +Main Implementing user-defined copy operations (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
    +

    8.1.5 Main: Implementing user-defined copy operations

    + + + + + + + + + + + + + diff --git a/0.0.4/html_split/Main-implementing-UDLs.html b/0.0.4/html_split/Main-implementing-UDLs.html new file mode 100644 index 0000000..1f6f381 --- /dev/null +++ b/0.0.4/html_split/Main-implementing-UDLs.html @@ -0,0 +1,59 @@ + + + + + +Main implementing UDLs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
    +

    8.2.5 Main: implementing UDLs

    + + + + + + + + + + + + diff --git a/0.0.4/html_split/Main-implementing-_002a.html b/0.0.4/html_split/Main-implementing-_002a.html new file mode 100644 index 0000000..b661f2d --- /dev/null +++ b/0.0.4/html_split/Main-implementing-_002a.html @@ -0,0 +1,62 @@ + + + + + +Main implementing * (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
    +

    8.3.5 Main: implementing *

    + + + + + + + + + + + + + diff --git a/0.0.4/html_split/Meta_002derror-handling-static_005fassert.html b/0.0.4/html_split/Meta_002derror-handling-static_005fassert.html new file mode 100644 index 0000000..f81a34e --- /dev/null +++ b/0.0.4/html_split/Meta_002derror-handling-static_005fassert.html @@ -0,0 +1,67 @@ + + + + + +Meta-error handling static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
    +

    8.6 Meta-error handling: static_assert

    +

    Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

    + + + + + + + + + + + + + + diff --git a/0.0.4/html_split/Module-name-Requires-Expressions.html b/0.0.4/html_split/Module-name-Requires-Expressions.html new file mode 100644 index 0000000..8bab76c --- /dev/null +++ b/0.0.4/html_split/Module-name-Requires-Expressions.html @@ -0,0 +1,59 @@ + + + + + +Module name Requires Expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
    +

    8.4 Module name: Requires Expressions

    +

    Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

    + + + + + + + + + + diff --git a/0.0.4/html_split/Motivation.html b/0.0.4/html_split/Motivation.html new file mode 100644 index 0000000..40b0ec9 --- /dev/null +++ b/0.0.4/html_split/Motivation.html @@ -0,0 +1,57 @@ + + + + + +Motivation (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    8.1.2 Motivation

    +

    Why is this important? Why do we want to learn/teach this +topic? +

    +

    Copy semantics allows the user to define how objects of a class get +replicated and interact on a value level. +

    + + + + + diff --git a/0.0.4/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html b/0.0.4/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html new file mode 100644 index 0000000..2425525 --- /dev/null +++ b/0.0.4/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html @@ -0,0 +1,84 @@ + + + + + +Obtaining This Document The Most Recent Version and Alternate Formats (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
    +

    +Next: , Previous: , Up: Top   [Contents]

    +
    +
    +

    1 Obtaining This Document: The Most Recent Version and Alternate

    +

    Formats +The most recent version of this document is available as an online HTML +document at: +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/latest/. +

    +

    The version of the document that you are currently reading is available +in the following formats: +

    +
      +
    1. online (HTML) format as a single large HTML document: +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.4/html +[later to be https://cplusplus.github.io/SG20/0.0.4/html?] + +
    2. EPUB format: +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.4/guidelines.epub +[later to be +https:/cplusplus.github.io/SG20/0.0.4/guidelines.epub?] + +
    3. online (HTML) format, split across multiple HTML documents: +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.4/html_split/ +[later to be https://cplusplus.github.io/SG20/0.0.4/html_split/?] +[Note: The support for this format needs more work (in order to +beautify and fix linking issues).] + +
    + +

    Older versions of this document are also available. In general version +ver is available at +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/ver. +For example, version v0.1.0 (assuming that this version exists) would be +available at [later to be +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/v0.1.0?]. +

    + + + + + diff --git a/0.0.4/html_split/Organization-of-This-Document.html b/0.0.4/html_split/Organization-of-This-Document.html new file mode 100644 index 0000000..3e48985 --- /dev/null +++ b/0.0.4/html_split/Organization-of-This-Document.html @@ -0,0 +1,101 @@ + + + + + +Organization of This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    6 Organization of This Document

    +

    The various concepts (i.e., ideas) to potentially be covered are +partitioned into modules. A module is very broad in scope and consists +of numerous topics. [Note: Can I suggest that we use the term +“area” or “unit” instead of “module”? I think that these other +choices are better and also avoid any potential confusion over what is +meant by “module” (i.e., C++ term versus plain English term).] +

    +

    For each module, topics related to the module are identified. Then, for +each topic, learning outcomes are specified. In order to address a wide +variety of courses on C++, each topic is addressed at three proficiency +levels. These proficiency levels allow each topic to be covered at more +than one level of detail. This allows target audiences with different +background and learning objectives to be accommodated. The three +proficiency levels are as follows: +

    +
      +
    • foundational. This level gives the learner the idea that a facility +exists, what benefits it offers, and the basic ways of using it. +[Note: Isn’t this just “novice”/“beginner”?] + +
    • main. This level shows mainstream uses and techniques. For abstraction +and organizational mechanisms it also demonstrates how to build them. +This level should also give the learner a basic (but not detailed) +understanding of how a facility might be implemented so that the learner +can have a first-order understanding of any costs involved. +[Note: The term “main” is not very descriptive/helpful. Could +I suggest using “intermediate”?] + +
    • advanced. This level gives information suitable for an expert. For most +topics there is an expert level of knowledge that most programmers +rarely need and techniques that require detailed understanding of +language rules or library implementation. + +
    + +

    The remainder of this document is organized as follows. The various +topics are listed grouped by module. In cases where a topic might be +classified into more than one module, the topic is listed under the +module of most direct relevance. This is done in order to avoid +duplication of content. (In the case that a topic is equally relevant to +multiple modules, the decision of which to select is made by a +proverbial coin toss.) The order in which modules and topics are +presented is not meant to imply any order of coverage in a course. The +order in which items are listed is essentially arbitrary. +

    +
    + + + + + + diff --git a/0.0.4/html_split/Overview.html b/0.0.4/html_split/Overview.html new file mode 100644 index 0000000..be44bfa --- /dev/null +++ b/0.0.4/html_split/Overview.html @@ -0,0 +1,61 @@ + + + + + +Overview (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    8.1.1 Overview

    +

    Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

    + + + + + +
    LevelObjectives
    Foundationalunderstanding how and when are copies made
    Mainimplementing user-defined copy operations
    Advancedspecial cases: copy elision
    + + + + + + diff --git a/0.0.4/html_split/Points-to-cover.html b/0.0.4/html_split/Points-to-cover.html new file mode 100644 index 0000000..ba4b5cc --- /dev/null +++ b/0.0.4/html_split/Points-to-cover.html @@ -0,0 +1,69 @@ + + + + + +Points to cover (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    8.1.4.4 Points to cover

    +

    This section lists important details for each point. +

    +
      +
    • Principle of copying +
        +
      • Copying of types, which follow the rule of zero +
      • Copying of types, with user defined copy operations +
      • Copying an object does not change the original +
      + +
    • Practical applications +
        +
      • std::unique_ptr (has no copy) +
      • Strings (copies the value) +
      + +
    + + + + + + diff --git a/0.0.4/html_split/Preprocessor.html b/0.0.4/html_split/Preprocessor.html new file mode 100644 index 0000000..345e396 --- /dev/null +++ b/0.0.4/html_split/Preprocessor.html @@ -0,0 +1,58 @@ + + + + + +Preprocessor (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    7.2 Preprocessor

    + + + + + +
    IDUnitFoundationalMainAdvanced
    [‘?’]Preprocessor Metaprogramming???
    [‘?’]Inclusion???
    [‘?’]Macros???
    + + + + + + diff --git a/0.0.4/html_split/References-on-Learning-Outcomes.html b/0.0.4/html_split/References-on-Learning-Outcomes.html new file mode 100644 index 0000000..7b74cad --- /dev/null +++ b/0.0.4/html_split/References-on-Learning-Outcomes.html @@ -0,0 +1,71 @@ + + + + + +References on Learning Outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    14.1 References on Learning Outcomes

    + + + + + + + diff --git a/0.0.4/html_split/References.html b/0.0.4/html_split/References.html new file mode 100644 index 0000000..f595be2 --- /dev/null +++ b/0.0.4/html_split/References.html @@ -0,0 +1,59 @@ + + + + + +References (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
    +

    +Previous: , Up: Top   [Contents]

    +
    +
    +

    14 References

    + + + + + + + + + + + diff --git a/0.0.4/html_split/Software-Design.html b/0.0.4/html_split/Software-Design.html new file mode 100644 index 0000000..6b4f6c8 --- /dev/null +++ b/0.0.4/html_split/Software-Design.html @@ -0,0 +1,56 @@ + + + + + +Software Design (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    7.15 Software Design

    + + + +
    IDUnitFoundationalMainAdvanced
    [‘?’]Design by Contract???
    + + + + + + diff --git a/0.0.4/html_split/Standard-Library.html b/0.0.4/html_split/Standard-Library.html new file mode 100644 index 0000000..c80c7fc --- /dev/null +++ b/0.0.4/html_split/Standard-Library.html @@ -0,0 +1,57 @@ + + + + + +Standard Library (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    7.10 Standard Library

    + + + + +
    IDUnitFoundationalMainAdvanced
    [‘?’]Input/Output (I/O)???
    [‘?’]Containers, Iterators, and Algorithms???
    + + + + + + diff --git a/0.0.4/html_split/Student-outcomes.html b/0.0.4/html_split/Student-outcomes.html new file mode 100644 index 0000000..c604549 --- /dev/null +++ b/0.0.4/html_split/Student-outcomes.html @@ -0,0 +1,73 @@ + + + + + +Student outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    8.1.4.2 Student outcomes

    +

    A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

    +

    A student should be able to: +

    +
      +
    1. explain what copy semantics accomplish +
    + +
      +
    • establishing “equivalent” object state in another object +
    + +
      +
    1. explain difference between copying a reference and copying a value* +
    2. explain where copies are made +
    + +

    * In other languages these differences are sometimes referred to as +shallow and deep copy. +

    + + + + + diff --git a/0.0.4/html_split/Summary-of-Modules-and-Topics.html b/0.0.4/html_split/Summary-of-Modules-and-Topics.html new file mode 100644 index 0000000..26b69be --- /dev/null +++ b/0.0.4/html_split/Summary-of-Modules-and-Topics.html @@ -0,0 +1,106 @@ + + + + + +Summary of Modules and Topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    7 Summary of Modules and Topics

    +

    In the sections that follow, the various modules and topics are +presented. There is one section per module. For each module, a table +listing the various topics in that module is provided. The ID for a +topic is linked to the detailed coverage of that topic that comes later +in the document. If a topic has any learning outcomes at a given +proficiency level, this is indicated by a checkmark (“✔️”). If a topic +has no learning outcomes (simply because there are not any, not because +the information is missing), this is indicated by an em dash (“—”). +In the case that the information for a topic is completely missing, a +question mark (“?”) symbol is used. +

    +

    [NOTE: These topics are taken mostly from the SG20 GitHub +repository. They are not intended to be complete in any sense. In fact, +by gathering together all topics in one place where they are easily +viewed, it is hoped that missing and unbalanced items will be more +obvious.] +

    + + + + + + + + + + + + + + + + + + +
    + + + + + + diff --git a/0.0.4/html_split/Testing-and-Debugging.html b/0.0.4/html_split/Testing-and-Debugging.html new file mode 100644 index 0000000..da60211 --- /dev/null +++ b/0.0.4/html_split/Testing-and-Debugging.html @@ -0,0 +1,59 @@ + + + + + +Testing and Debugging (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
    +

    +Next: , Previous: , Up: Summary of Modules and Topics   [Contents]

    +
    +
    +

    7.13 Testing and Debugging

    + + + + + + +
    IDUnitFoundationalMainAdvanced
    [‘?’]Source-Level Debuggers???
    [‘?’]Code Sanitizers???
    [‘?’]Test Frameworks???
    [‘?’]Debugging Strategies???
    + + + + + + diff --git a/0.0.4/html_split/Tooling.html b/0.0.4/html_split/Tooling.html new file mode 100644 index 0000000..43c3b2f --- /dev/null +++ b/0.0.4/html_split/Tooling.html @@ -0,0 +1,57 @@ + + + + + +Tooling (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    7.14 Tooling

    + + + + +
    IDUnitFoundationalMainAdvanced
    [‘?’]Compiler Toolchains???
    [‘?’]IDEs???
    + + + + + + diff --git a/0.0.4/html_split/Topic-introduction.html b/0.0.4/html_split/Topic-introduction.html new file mode 100644 index 0000000..fff97f2 --- /dev/null +++ b/0.0.4/html_split/Topic-introduction.html @@ -0,0 +1,55 @@ + + + + + +Topic introduction (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    8.1.3 Topic introduction

    +

    Very brief introduction to the topic. +

    +

    Explains when and how objects are copied. +

    + + + + + diff --git a/0.0.4/html_split/Use-of-This-Document.html b/0.0.4/html_split/Use-of-This-Document.html new file mode 100644 index 0000000..4c820d5 --- /dev/null +++ b/0.0.4/html_split/Use-of-This-Document.html @@ -0,0 +1,58 @@ + + + + + +Use of This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    4 Use of This Document

    +

    [NOTE: This document follows the same license model as the C++ +Core Guidelines. The LICENSE document is taken verbatim from the C++ +Core Guidelines.] This document is made available under a MIT-style +license. In simple terms, this license permits copying, use, +modification, and creation of derivative works. A copy of the license is +included in the section LICENSE. +

    + + + + + diff --git a/0.0.4/html_split/User_002dDefined-Types-Classes.html b/0.0.4/html_split/User_002dDefined-Types-Classes.html new file mode 100644 index 0000000..808279a --- /dev/null +++ b/0.0.4/html_split/User_002dDefined-Types-Classes.html @@ -0,0 +1,69 @@ + + + + + +User-Defined Types Classes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
    +

    7.5 User-Defined Types (Classes)

    + + + + + + + + + + + + + + + +
    IDUnitFoundationalMainAdvanced
    [‘?’]Special Member Functions???
    [‘?’]Types???
    [‘?’]Conversions???
    [‘?’]Constructors and Destructors???
    [‘?’]Move/Copy Constructors and Assignment Operators???
    [‘?’]Member Functions???
    [‘?’]Sum Types???
    [‘?’]User-Defined Literals???
    [‘?’]Special Member Functions???
    [‘?’]Guidelines for Special Member Functions (e.g., Rule of Five, Rule +of Zero)???
    [‘copy’]Copy Semantics‘✔️’‘✔️’
    [‘?’]Moving and Copying???
    [‘?’]Lambdas???
    + + + + + + diff --git a/0.0.4/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html b/0.0.4/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html new file mode 100644 index 0000000..3f9bf2c --- /dev/null +++ b/0.0.4/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html @@ -0,0 +1,69 @@ + + + + + +Working Group Documents Related to C++ Teaching Guidelines (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
    +

    14.2 Working Group Documents Related to C++ Teaching Guidelines

    +
      +
    • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — +Standing Document for SG20: Guidelines for Teaching C++ to Beginners. +https://wg21.link/p1389. + +
    • Christopher Di Bella. P1725R0 — Modular Topic Design. +https://wg21.link/p1725. + +
    • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to +structure a teaching topic. https://wg21.link/p2193. + +
    • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study +Group: C++ Education. https://wg21.link/p1231. + +
    • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 +— Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0. + +
    + + + + + + diff --git a/0.0.4/html_split/_0023advanced.html b/0.0.4/html_split/_0023advanced.html new file mode 100644 index 0000000..d503bfc --- /dev/null +++ b/0.0.4/html_split/_0023advanced.html @@ -0,0 +1,40 @@ + + + + + + +#advanced (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #advanced.

    + diff --git a/0.0.4/html_split/_0023advanced_002d1.html b/0.0.4/html_split/_0023advanced_002d1.html new file mode 100644 index 0000000..282a7b8 --- /dev/null +++ b/0.0.4/html_split/_0023advanced_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #advanced-1.

    + diff --git a/0.0.4/html_split/_0023advanced_002d2.html b/0.0.4/html_split/_0023advanced_002d2.html new file mode 100644 index 0000000..039b3ff --- /dev/null +++ b/0.0.4/html_split/_0023advanced_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #advanced-2.

    + diff --git a/0.0.4/html_split/_0023advanced_002d3.html b/0.0.4/html_split/_0023advanced_002d3.html new file mode 100644 index 0000000..ebf5529 --- /dev/null +++ b/0.0.4/html_split/_0023advanced_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #advanced-3.

    + diff --git a/0.0.4/html_split/_0023backgroundrequired_002dknowledge.html b/0.0.4/html_split/_0023backgroundrequired_002dknowledge.html new file mode 100644 index 0000000..9959745 --- /dev/null +++ b/0.0.4/html_split/_0023backgroundrequired_002dknowledge.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #backgroundrequired-knowledge.

    + diff --git a/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d1.html b/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d1.html new file mode 100644 index 0000000..f6f6bd0 --- /dev/null +++ b/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #backgroundrequired-knowledge-1.

    + diff --git a/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d2.html b/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d2.html new file mode 100644 index 0000000..b0b297d --- /dev/null +++ b/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #backgroundrequired-knowledge-2.

    + diff --git a/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d3.html b/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d3.html new file mode 100644 index 0000000..ae34d91 --- /dev/null +++ b/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #backgroundrequired-knowledge-3.

    + diff --git a/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d4.html b/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d4.html new file mode 100644 index 0000000..7417f62 --- /dev/null +++ b/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #backgroundrequired-knowledge-4.

    + diff --git a/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d5.html b/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d5.html new file mode 100644 index 0000000..8f0570c --- /dev/null +++ b/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #backgroundrequired-knowledge-5.

    + diff --git a/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d6.html b/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d6.html new file mode 100644 index 0000000..a1cdee1 --- /dev/null +++ b/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #backgroundrequired-knowledge-6.

    + diff --git a/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d7.html b/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d7.html new file mode 100644 index 0000000..893a0ba --- /dev/null +++ b/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #backgroundrequired-knowledge-7.

    + diff --git a/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d8.html b/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d8.html new file mode 100644 index 0000000..6080498 --- /dev/null +++ b/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #backgroundrequired-knowledge-8.

    + diff --git a/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d9.html b/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d9.html new file mode 100644 index 0000000..3ea462d --- /dev/null +++ b/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #backgroundrequired-knowledge-9.

    + diff --git a/0.0.4/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html b/0.0.4/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html new file mode 100644 index 0000000..925c568 --- /dev/null +++ b/0.0.4/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html @@ -0,0 +1,40 @@ + + + + + + +#basics-types-objects-values-expressions-statements-and-control-flow-constructs (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #basics-types-objects-values-expressions-statements-and-control-flow-constructs.

    + diff --git a/0.0.4/html_split/_0023building.html b/0.0.4/html_split/_0023building.html new file mode 100644 index 0000000..8ffc9df --- /dev/null +++ b/0.0.4/html_split/_0023building.html @@ -0,0 +1,40 @@ + + + + + + +#building (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #building.

    + diff --git a/0.0.4/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html b/0.0.4/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html new file mode 100644 index 0000000..a7e6bad --- /dev/null +++ b/0.0.4/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html @@ -0,0 +1,40 @@ + + + + + + +#c-object-model-copy-semantics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #c-object-model-copy-semantics.

    + diff --git a/0.0.4/html_split/_0023caveats.html b/0.0.4/html_split/_0023caveats.html new file mode 100644 index 0000000..d4bac8b --- /dev/null +++ b/0.0.4/html_split/_0023caveats.html @@ -0,0 +1,40 @@ + + + + + + +#caveats (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #caveats.

    + diff --git a/0.0.4/html_split/_0023caveats_002d1.html b/0.0.4/html_split/_0023caveats_002d1.html new file mode 100644 index 0000000..64faefd --- /dev/null +++ b/0.0.4/html_split/_0023caveats_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #caveats-1.

    + diff --git a/0.0.4/html_split/_0023caveats_002d2.html b/0.0.4/html_split/_0023caveats_002d2.html new file mode 100644 index 0000000..6c66559 --- /dev/null +++ b/0.0.4/html_split/_0023caveats_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #caveats-2.

    + diff --git a/0.0.4/html_split/_0023caveats_002d3.html b/0.0.4/html_split/_0023caveats_002d3.html new file mode 100644 index 0000000..479063f --- /dev/null +++ b/0.0.4/html_split/_0023caveats_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #caveats-3.

    + diff --git a/0.0.4/html_split/_0023caveats_002d4.html b/0.0.4/html_split/_0023caveats_002d4.html new file mode 100644 index 0000000..9588a55 --- /dev/null +++ b/0.0.4/html_split/_0023caveats_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #caveats-4.

    + diff --git a/0.0.4/html_split/_0023caveats_002d5.html b/0.0.4/html_split/_0023caveats_002d5.html new file mode 100644 index 0000000..11edee5 --- /dev/null +++ b/0.0.4/html_split/_0023caveats_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #caveats-5.

    + diff --git a/0.0.4/html_split/_0023caveats_002d6.html b/0.0.4/html_split/_0023caveats_002d6.html new file mode 100644 index 0000000..6cea721 --- /dev/null +++ b/0.0.4/html_split/_0023caveats_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #caveats-6.

    + diff --git a/0.0.4/html_split/_0023caveats_002d7.html b/0.0.4/html_split/_0023caveats_002d7.html new file mode 100644 index 0000000..2a8f1cd --- /dev/null +++ b/0.0.4/html_split/_0023caveats_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #caveats-7.

    + diff --git a/0.0.4/html_split/_0023caveats_002d8.html b/0.0.4/html_split/_0023caveats_002d8.html new file mode 100644 index 0000000..e330642 --- /dev/null +++ b/0.0.4/html_split/_0023caveats_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #caveats-8.

    + diff --git a/0.0.4/html_split/_0023caveats_002d9.html b/0.0.4/html_split/_0023caveats_002d9.html new file mode 100644 index 0000000..004e434 --- /dev/null +++ b/0.0.4/html_split/_0023caveats_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #caveats-9.

    + diff --git a/0.0.4/html_split/_0023compilation_002dmodel.html b/0.0.4/html_split/_0023compilation_002dmodel.html new file mode 100644 index 0000000..1017867 --- /dev/null +++ b/0.0.4/html_split/_0023compilation_002dmodel.html @@ -0,0 +1,40 @@ + + + + + + +#compilation-model (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #compilation-model.

    + diff --git a/0.0.4/html_split/_0023compile_002dtime_002dcomputation.html b/0.0.4/html_split/_0023compile_002dtime_002dcomputation.html new file mode 100644 index 0000000..59b0c57 --- /dev/null +++ b/0.0.4/html_split/_0023compile_002dtime_002dcomputation.html @@ -0,0 +1,40 @@ + + + + + + +#compile-time-computation (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #compile-time-computation.

    + diff --git a/0.0.4/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html b/0.0.4/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html new file mode 100644 index 0000000..9294adf --- /dev/null +++ b/0.0.4/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html @@ -0,0 +1,40 @@ + + + + + + +#context-and-aim-of-this-guide (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #context-and-aim-of-this-guide.

    + diff --git a/0.0.4/html_split/_0023contributing_002dto_002dthis_002ddocument.html b/0.0.4/html_split/_0023contributing_002dto_002dthis_002ddocument.html new file mode 100644 index 0000000..272d848 --- /dev/null +++ b/0.0.4/html_split/_0023contributing_002dto_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#contributing-to-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #contributing-to-this-document.

    + diff --git a/0.0.4/html_split/_0023contributors.html b/0.0.4/html_split/_0023contributors.html new file mode 100644 index 0000000..a391f9d --- /dev/null +++ b/0.0.4/html_split/_0023contributors.html @@ -0,0 +1,40 @@ + + + + + + +#contributors (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #contributors.

    + diff --git a/0.0.4/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html b/0.0.4/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html new file mode 100644 index 0000000..d32c27e --- /dev/null +++ b/0.0.4/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html @@ -0,0 +1,40 @@ + + + + + + +#detailed-information-for-modules-and-topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #detailed-information-for-modules-and-topics.

    + diff --git a/0.0.4/html_split/_0023disclaimer.html b/0.0.4/html_split/_0023disclaimer.html new file mode 100644 index 0000000..e9658d6 --- /dev/null +++ b/0.0.4/html_split/_0023disclaimer.html @@ -0,0 +1,40 @@ + + + + + + +#disclaimer (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #disclaimer.

    + diff --git a/0.0.4/html_split/_0023error_002dhandling.html b/0.0.4/html_split/_0023error_002dhandling.html new file mode 100644 index 0000000..80cfb94 --- /dev/null +++ b/0.0.4/html_split/_0023error_002dhandling.html @@ -0,0 +1,40 @@ + + + + + + +#error-handling (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #error-handling.

    + diff --git a/0.0.4/html_split/_0023examples_002dof_002dcourse_002dcurricula.html b/0.0.4/html_split/_0023examples_002dof_002dcourse_002dcurricula.html new file mode 100644 index 0000000..99af091 --- /dev/null +++ b/0.0.4/html_split/_0023examples_002dof_002dcourse_002dcurricula.html @@ -0,0 +1,40 @@ + + + + + + +#examples-of-course-curricula (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #examples-of-course-curricula.

    + diff --git a/0.0.4/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html b/0.0.4/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html new file mode 100644 index 0000000..fc9b3eb --- /dev/null +++ b/0.0.4/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html @@ -0,0 +1,40 @@ + + + + + + +#external-i.e.-non-standard-libraries (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #external-i.e.-non-standard-libraries.

    + diff --git a/0.0.4/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html b/0.0.4/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html new file mode 100644 index 0000000..f915680 --- /dev/null +++ b/0.0.4/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-calling-static_assert-with-a-constant-expression (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #foundational-calling-static_assert-with-a-constant-expression.

    + diff --git a/0.0.4/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html b/0.0.4/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html new file mode 100644 index 0000000..88f62bc --- /dev/null +++ b/0.0.4/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-how-and-when-are-copies-made (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #foundational-how-and-when-are-copies-made.

    + diff --git a/0.0.4/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html b/0.0.4/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html new file mode 100644 index 0000000..95ab098 --- /dev/null +++ b/0.0.4/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-using-and-defining-functions-with-default-arguments (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #foundational-using-and-defining-functions-with-default-arguments.

    + diff --git a/0.0.4/html_split/_0023foundational_002dusing_002dudls.html b/0.0.4/html_split/_0023foundational_002dusing_002dudls.html new file mode 100644 index 0000000..2f7afdd --- /dev/null +++ b/0.0.4/html_split/_0023foundational_002dusing_002dudls.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-using-udls (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #foundational-using-udls.

    + diff --git a/0.0.4/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html b/0.0.4/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html new file mode 100644 index 0000000..708f2d3 --- /dev/null +++ b/0.0.4/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-writing-requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #foundational-writing-requires-expressions.

    + diff --git a/0.0.4/html_split/_0023functions.html b/0.0.4/html_split/_0023functions.html new file mode 100644 index 0000000..e304abe --- /dev/null +++ b/0.0.4/html_split/_0023functions.html @@ -0,0 +1,40 @@ + + + + + + +#functions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #functions.

    + diff --git a/0.0.4/html_split/_0023functions_002ddefault_002dargument.html b/0.0.4/html_split/_0023functions_002ddefault_002dargument.html new file mode 100644 index 0000000..ccfbcbb --- /dev/null +++ b/0.0.4/html_split/_0023functions_002ddefault_002dargument.html @@ -0,0 +1,40 @@ + + + + + + +#functions-default-argument (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #functions-default-argument.

    + diff --git a/0.0.4/html_split/_0023functions_002duser_002ddefined_002dliterals.html b/0.0.4/html_split/_0023functions_002duser_002ddefined_002dliterals.html new file mode 100644 index 0000000..b4f78b5 --- /dev/null +++ b/0.0.4/html_split/_0023functions_002duser_002ddefined_002dliterals.html @@ -0,0 +1,40 @@ + + + + + + +#functions-user-defined-literals (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #functions-user-defined-literals.

    + diff --git a/0.0.4/html_split/_0023generic_002dprogramming_002dtemplates.html b/0.0.4/html_split/_0023generic_002dprogramming_002dtemplates.html new file mode 100644 index 0000000..3b91080 --- /dev/null +++ b/0.0.4/html_split/_0023generic_002dprogramming_002dtemplates.html @@ -0,0 +1,40 @@ + + + + + + +#generic-programming-templates (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #generic-programming-templates.

    + diff --git a/0.0.4/html_split/_0023glossary.html b/0.0.4/html_split/_0023glossary.html new file mode 100644 index 0000000..9b46bf6 --- /dev/null +++ b/0.0.4/html_split/_0023glossary.html @@ -0,0 +1,40 @@ + + + + + + +#glossary (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #glossary.

    + diff --git a/0.0.4/html_split/_0023how_002dto_002dcontribute.html b/0.0.4/html_split/_0023how_002dto_002dcontribute.html new file mode 100644 index 0000000..d9cff4a --- /dev/null +++ b/0.0.4/html_split/_0023how_002dto_002dcontribute.html @@ -0,0 +1,40 @@ + + + + + + +#how-to-contribute (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #how-to-contribute.

    + diff --git a/0.0.4/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html b/0.0.4/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html new file mode 100644 index 0000000..def5140 --- /dev/null +++ b/0.0.4/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html @@ -0,0 +1,40 @@ + + + + + + +#inheritance-and-class-hierarchies (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #inheritance-and-class-hierarchies.

    + diff --git a/0.0.4/html_split/_0023license.html b/0.0.4/html_split/_0023license.html new file mode 100644 index 0000000..6b44dd1 --- /dev/null +++ b/0.0.4/html_split/_0023license.html @@ -0,0 +1,40 @@ + + + + + + +#license (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #license.

    + diff --git a/0.0.4/html_split/_0023main_002dadvanced_002drequirements.html b/0.0.4/html_split/_0023main_002dadvanced_002drequirements.html new file mode 100644 index 0000000..8214533 --- /dev/null +++ b/0.0.4/html_split/_0023main_002dadvanced_002drequirements.html @@ -0,0 +1,40 @@ + + + + + + +#main-advanced-requirements (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #main-advanced-requirements.

    + diff --git a/0.0.4/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html b/0.0.4/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html new file mode 100644 index 0000000..22b0484 --- /dev/null +++ b/0.0.4/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html @@ -0,0 +1,40 @@ + + + + + + +#main-contracts-and-static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #main-contracts-and-static_assert.

    + diff --git a/0.0.4/html_split/_0023main_002dimplementing.html b/0.0.4/html_split/_0023main_002dimplementing.html new file mode 100644 index 0000000..260008c --- /dev/null +++ b/0.0.4/html_split/_0023main_002dimplementing.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #main-implementing.

    + diff --git a/0.0.4/html_split/_0023main_002dimplementing_002dudls.html b/0.0.4/html_split/_0023main_002dimplementing_002dudls.html new file mode 100644 index 0000000..a41d194 --- /dev/null +++ b/0.0.4/html_split/_0023main_002dimplementing_002dudls.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing-udls (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #main-implementing-udls.

    + diff --git a/0.0.4/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html b/0.0.4/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html new file mode 100644 index 0000000..1e5a4d8 --- /dev/null +++ b/0.0.4/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing-user-defined-copy-operations (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #main-implementing-user-defined-copy-operations.

    + diff --git a/0.0.4/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html b/0.0.4/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html new file mode 100644 index 0000000..4502ed8 --- /dev/null +++ b/0.0.4/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html @@ -0,0 +1,40 @@ + + + + + + +#meta-error-handling-static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #meta-error-handling-static_assert.

    + diff --git a/0.0.4/html_split/_0023module_002dname_002drequires_002dexpressions.html b/0.0.4/html_split/_0023module_002dname_002drequires_002dexpressions.html new file mode 100644 index 0000000..56a9ebf --- /dev/null +++ b/0.0.4/html_split/_0023module_002dname_002drequires_002dexpressions.html @@ -0,0 +1,40 @@ + + + + + + +#module-name-requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #module-name-requires-expressions.

    + diff --git a/0.0.4/html_split/_0023motivation.html b/0.0.4/html_split/_0023motivation.html new file mode 100644 index 0000000..0141374 --- /dev/null +++ b/0.0.4/html_split/_0023motivation.html @@ -0,0 +1,40 @@ + + + + + + +#motivation (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #motivation.

    + diff --git a/0.0.4/html_split/_0023motivation_002d1.html b/0.0.4/html_split/_0023motivation_002d1.html new file mode 100644 index 0000000..7e4a69e --- /dev/null +++ b/0.0.4/html_split/_0023motivation_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #motivation-1.

    + diff --git a/0.0.4/html_split/_0023motivation_002d2.html b/0.0.4/html_split/_0023motivation_002d2.html new file mode 100644 index 0000000..7901fd3 --- /dev/null +++ b/0.0.4/html_split/_0023motivation_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #motivation-2.

    + diff --git a/0.0.4/html_split/_0023motivation_002d3.html b/0.0.4/html_split/_0023motivation_002d3.html new file mode 100644 index 0000000..ec720ad --- /dev/null +++ b/0.0.4/html_split/_0023motivation_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #motivation-3.

    + diff --git a/0.0.4/html_split/_0023motivation_002d4.html b/0.0.4/html_split/_0023motivation_002d4.html new file mode 100644 index 0000000..f53583a --- /dev/null +++ b/0.0.4/html_split/_0023motivation_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #motivation-4.

    + diff --git a/0.0.4/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html b/0.0.4/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html new file mode 100644 index 0000000..57e8b6e --- /dev/null +++ b/0.0.4/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html @@ -0,0 +1,40 @@ + + + + + + +#obtaining-this-document-the-most-recent-version-and-alternate-formats (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #obtaining-this-document-the-most-recent-version-and-alternate-formats.

    + diff --git a/0.0.4/html_split/_0023organization_002dof_002dthis_002ddocument.html b/0.0.4/html_split/_0023organization_002dof_002dthis_002ddocument.html new file mode 100644 index 0000000..e312b8e --- /dev/null +++ b/0.0.4/html_split/_0023organization_002dof_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#organization-of-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #organization-of-this-document.

    + diff --git a/0.0.4/html_split/_0023overview.html b/0.0.4/html_split/_0023overview.html new file mode 100644 index 0000000..b2d4bdc --- /dev/null +++ b/0.0.4/html_split/_0023overview.html @@ -0,0 +1,40 @@ + + + + + + +#overview (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #overview.

    + diff --git a/0.0.4/html_split/_0023overview_002d1.html b/0.0.4/html_split/_0023overview_002d1.html new file mode 100644 index 0000000..d551764 --- /dev/null +++ b/0.0.4/html_split/_0023overview_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#overview-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #overview-1.

    + diff --git a/0.0.4/html_split/_0023overview_002d2.html b/0.0.4/html_split/_0023overview_002d2.html new file mode 100644 index 0000000..5a34b05 --- /dev/null +++ b/0.0.4/html_split/_0023overview_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#overview-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #overview-2.

    + diff --git a/0.0.4/html_split/_0023overview_002d3.html b/0.0.4/html_split/_0023overview_002d3.html new file mode 100644 index 0000000..f230145 --- /dev/null +++ b/0.0.4/html_split/_0023overview_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#overview-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #overview-3.

    + diff --git a/0.0.4/html_split/_0023overview_002d4.html b/0.0.4/html_split/_0023overview_002d4.html new file mode 100644 index 0000000..2436b9a --- /dev/null +++ b/0.0.4/html_split/_0023overview_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#overview-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #overview-4.

    + diff --git a/0.0.4/html_split/_0023points_002dto_002dcover.html b/0.0.4/html_split/_0023points_002dto_002dcover.html new file mode 100644 index 0000000..424b02b --- /dev/null +++ b/0.0.4/html_split/_0023points_002dto_002dcover.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #points-to-cover.

    + diff --git a/0.0.4/html_split/_0023points_002dto_002dcover_002d1.html b/0.0.4/html_split/_0023points_002dto_002dcover_002d1.html new file mode 100644 index 0000000..2a554bb --- /dev/null +++ b/0.0.4/html_split/_0023points_002dto_002dcover_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #points-to-cover-1.

    + diff --git a/0.0.4/html_split/_0023points_002dto_002dcover_002d2.html b/0.0.4/html_split/_0023points_002dto_002dcover_002d2.html new file mode 100644 index 0000000..053a51a --- /dev/null +++ b/0.0.4/html_split/_0023points_002dto_002dcover_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #points-to-cover-2.

    + diff --git a/0.0.4/html_split/_0023points_002dto_002dcover_002d3.html b/0.0.4/html_split/_0023points_002dto_002dcover_002d3.html new file mode 100644 index 0000000..b0dad48 --- /dev/null +++ b/0.0.4/html_split/_0023points_002dto_002dcover_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #points-to-cover-3.

    + diff --git a/0.0.4/html_split/_0023points_002dto_002dcover_002d4.html b/0.0.4/html_split/_0023points_002dto_002dcover_002d4.html new file mode 100644 index 0000000..94de8fa --- /dev/null +++ b/0.0.4/html_split/_0023points_002dto_002dcover_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #points-to-cover-4.

    + diff --git a/0.0.4/html_split/_0023points_002dto_002dcover_002d5.html b/0.0.4/html_split/_0023points_002dto_002dcover_002d5.html new file mode 100644 index 0000000..39d1eaf --- /dev/null +++ b/0.0.4/html_split/_0023points_002dto_002dcover_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #points-to-cover-5.

    + diff --git a/0.0.4/html_split/_0023points_002dto_002dcover_002d6.html b/0.0.4/html_split/_0023points_002dto_002dcover_002d6.html new file mode 100644 index 0000000..92df88f --- /dev/null +++ b/0.0.4/html_split/_0023points_002dto_002dcover_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #points-to-cover-6.

    + diff --git a/0.0.4/html_split/_0023points_002dto_002dcover_002d7.html b/0.0.4/html_split/_0023points_002dto_002dcover_002d7.html new file mode 100644 index 0000000..6e6c895 --- /dev/null +++ b/0.0.4/html_split/_0023points_002dto_002dcover_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #points-to-cover-7.

    + diff --git a/0.0.4/html_split/_0023points_002dto_002dcover_002d8.html b/0.0.4/html_split/_0023points_002dto_002dcover_002d8.html new file mode 100644 index 0000000..b5574e1 --- /dev/null +++ b/0.0.4/html_split/_0023points_002dto_002dcover_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #points-to-cover-8.

    + diff --git a/0.0.4/html_split/_0023preprocessor.html b/0.0.4/html_split/_0023preprocessor.html new file mode 100644 index 0000000..a3bb5f6 --- /dev/null +++ b/0.0.4/html_split/_0023preprocessor.html @@ -0,0 +1,40 @@ + + + + + + +#preprocessor (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #preprocessor.

    + diff --git a/0.0.4/html_split/_0023references.html b/0.0.4/html_split/_0023references.html new file mode 100644 index 0000000..69fbd6b --- /dev/null +++ b/0.0.4/html_split/_0023references.html @@ -0,0 +1,40 @@ + + + + + + +#references (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #references.

    + diff --git a/0.0.4/html_split/_0023references_002don_002dlearning_002doutcomes.html b/0.0.4/html_split/_0023references_002don_002dlearning_002doutcomes.html new file mode 100644 index 0000000..d28fbbf --- /dev/null +++ b/0.0.4/html_split/_0023references_002don_002dlearning_002doutcomes.html @@ -0,0 +1,40 @@ + + + + + + +#references-on-learning-outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #references-on-learning-outcomes.

    + diff --git a/0.0.4/html_split/_0023software_002ddesign.html b/0.0.4/html_split/_0023software_002ddesign.html new file mode 100644 index 0000000..16f5f54 --- /dev/null +++ b/0.0.4/html_split/_0023software_002ddesign.html @@ -0,0 +1,40 @@ + + + + + + +#software-design (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #software-design.

    + diff --git a/0.0.4/html_split/_0023standard_002dlibrary.html b/0.0.4/html_split/_0023standard_002dlibrary.html new file mode 100644 index 0000000..71956d3 --- /dev/null +++ b/0.0.4/html_split/_0023standard_002dlibrary.html @@ -0,0 +1,40 @@ + + + + + + +#standard-library (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #standard-library.

    + diff --git a/0.0.4/html_split/_0023student_002doutcomes.html b/0.0.4/html_split/_0023student_002doutcomes.html new file mode 100644 index 0000000..df0035d --- /dev/null +++ b/0.0.4/html_split/_0023student_002doutcomes.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #student-outcomes.

    + diff --git a/0.0.4/html_split/_0023student_002doutcomes_002d1.html b/0.0.4/html_split/_0023student_002doutcomes_002d1.html new file mode 100644 index 0000000..e9344b7 --- /dev/null +++ b/0.0.4/html_split/_0023student_002doutcomes_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #student-outcomes-1.

    + diff --git a/0.0.4/html_split/_0023student_002doutcomes_002d2.html b/0.0.4/html_split/_0023student_002doutcomes_002d2.html new file mode 100644 index 0000000..6fa7724 --- /dev/null +++ b/0.0.4/html_split/_0023student_002doutcomes_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #student-outcomes-2.

    + diff --git a/0.0.4/html_split/_0023student_002doutcomes_002d3.html b/0.0.4/html_split/_0023student_002doutcomes_002d3.html new file mode 100644 index 0000000..195d9d2 --- /dev/null +++ b/0.0.4/html_split/_0023student_002doutcomes_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #student-outcomes-3.

    + diff --git a/0.0.4/html_split/_0023student_002doutcomes_002d4.html b/0.0.4/html_split/_0023student_002doutcomes_002d4.html new file mode 100644 index 0000000..3e30430 --- /dev/null +++ b/0.0.4/html_split/_0023student_002doutcomes_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #student-outcomes-4.

    + diff --git a/0.0.4/html_split/_0023student_002doutcomes_002d5.html b/0.0.4/html_split/_0023student_002doutcomes_002d5.html new file mode 100644 index 0000000..0a4a7da --- /dev/null +++ b/0.0.4/html_split/_0023student_002doutcomes_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #student-outcomes-5.

    + diff --git a/0.0.4/html_split/_0023student_002doutcomes_002d6.html b/0.0.4/html_split/_0023student_002doutcomes_002d6.html new file mode 100644 index 0000000..c5c4ac0 --- /dev/null +++ b/0.0.4/html_split/_0023student_002doutcomes_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #student-outcomes-6.

    + diff --git a/0.0.4/html_split/_0023student_002doutcomes_002d7.html b/0.0.4/html_split/_0023student_002doutcomes_002d7.html new file mode 100644 index 0000000..5233f94 --- /dev/null +++ b/0.0.4/html_split/_0023student_002doutcomes_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #student-outcomes-7.

    + diff --git a/0.0.4/html_split/_0023student_002doutcomes_002d8.html b/0.0.4/html_split/_0023student_002doutcomes_002d8.html new file mode 100644 index 0000000..f19fd7f --- /dev/null +++ b/0.0.4/html_split/_0023student_002doutcomes_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #student-outcomes-8.

    + diff --git a/0.0.4/html_split/_0023student_002doutcomes_002d9.html b/0.0.4/html_split/_0023student_002doutcomes_002d9.html new file mode 100644 index 0000000..735a21f --- /dev/null +++ b/0.0.4/html_split/_0023student_002doutcomes_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #student-outcomes-9.

    + diff --git a/0.0.4/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html b/0.0.4/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html new file mode 100644 index 0000000..4801178 --- /dev/null +++ b/0.0.4/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html @@ -0,0 +1,40 @@ + + + + + + +#summary-of-modules-and-topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #summary-of-modules-and-topics.

    + diff --git a/0.0.4/html_split/_0023testing_002dand_002ddebugging.html b/0.0.4/html_split/_0023testing_002dand_002ddebugging.html new file mode 100644 index 0000000..1ae096d --- /dev/null +++ b/0.0.4/html_split/_0023testing_002dand_002ddebugging.html @@ -0,0 +1,40 @@ + + + + + + +#testing-and-debugging (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #testing-and-debugging.

    + diff --git a/0.0.4/html_split/_0023tooling.html b/0.0.4/html_split/_0023tooling.html new file mode 100644 index 0000000..634a8dc --- /dev/null +++ b/0.0.4/html_split/_0023tooling.html @@ -0,0 +1,40 @@ + + + + + + +#tooling (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #tooling.

    + diff --git a/0.0.4/html_split/_0023topic_002dintroduction.html b/0.0.4/html_split/_0023topic_002dintroduction.html new file mode 100644 index 0000000..742d5d9 --- /dev/null +++ b/0.0.4/html_split/_0023topic_002dintroduction.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #topic-introduction.

    + diff --git a/0.0.4/html_split/_0023topic_002dintroduction_002d1.html b/0.0.4/html_split/_0023topic_002dintroduction_002d1.html new file mode 100644 index 0000000..a110644 --- /dev/null +++ b/0.0.4/html_split/_0023topic_002dintroduction_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #topic-introduction-1.

    + diff --git a/0.0.4/html_split/_0023topic_002dintroduction_002d2.html b/0.0.4/html_split/_0023topic_002dintroduction_002d2.html new file mode 100644 index 0000000..986bf37 --- /dev/null +++ b/0.0.4/html_split/_0023topic_002dintroduction_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #topic-introduction-2.

    + diff --git a/0.0.4/html_split/_0023topic_002dintroduction_002d3.html b/0.0.4/html_split/_0023topic_002dintroduction_002d3.html new file mode 100644 index 0000000..3d14fd9 --- /dev/null +++ b/0.0.4/html_split/_0023topic_002dintroduction_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #topic-introduction-3.

    + diff --git a/0.0.4/html_split/_0023topic_002dintroduction_002d4.html b/0.0.4/html_split/_0023topic_002dintroduction_002d4.html new file mode 100644 index 0000000..c73a236 --- /dev/null +++ b/0.0.4/html_split/_0023topic_002dintroduction_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #topic-introduction-4.

    + diff --git a/0.0.4/html_split/_0023use_002dof_002dthis_002ddocument.html b/0.0.4/html_split/_0023use_002dof_002dthis_002ddocument.html new file mode 100644 index 0000000..68d835d --- /dev/null +++ b/0.0.4/html_split/_0023use_002dof_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#use-of-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #use-of-this-document.

    + diff --git a/0.0.4/html_split/_0023user_002ddefined_002dtypes_002dclasses.html b/0.0.4/html_split/_0023user_002ddefined_002dtypes_002dclasses.html new file mode 100644 index 0000000..04771a9 --- /dev/null +++ b/0.0.4/html_split/_0023user_002ddefined_002dtypes_002dclasses.html @@ -0,0 +1,40 @@ + + + + + + +#user-defined-types-classes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #user-defined-types-classes.

    + diff --git a/0.0.4/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html b/0.0.4/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html new file mode 100644 index 0000000..f4b9435 --- /dev/null +++ b/0.0.4/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html @@ -0,0 +1,40 @@ + + + + + + +#working-group-documents-related-to-c-teaching-guidelines (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

    The node you are looking for is at #working-group-documents-related-to-c-teaching-guidelines.

    + diff --git a/0.0.4/html_split/index.html b/0.0.4/html_split/index.html new file mode 100644 index 0000000..c4e5ff0 --- /dev/null +++ b/0.0.4/html_split/index.html @@ -0,0 +1,240 @@ + + + + + +Top (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +

    Table of Contents

    + +
    + + +
    + + + +
    +

    Guidelines for Teaching C++

    + + + + + + + + + + + + + + + + + + +
    + + + + + + diff --git a/0.0.4/html_split/unknown_node.html b/0.0.4/html_split/unknown_node.html new file mode 100644 index 0000000..5a652e5 --- /dev/null +++ b/0.0.4/html_split/unknown_node.html @@ -0,0 +1,763 @@ + + + + + +Guidelines for Teaching C++ + + + + + + + + + + + + + + + + +
    +

    +   [Contents]

    +
    +
    +

    8.1.5.1 Background/Required Knowledge

    +

    A student is able to: * identify special member functions +[C++ object model: +special member functions] +

    +

    It helps when a student is able to: * use move semantics +[C++ object model: move +semantics] * explain the rule of zero +[C++ object model: rule-of-zero] +* explain the rule of five [C++ +object model: rule-of-five] +

    +
    +

    +   [Contents]

    +
    +

    8.1.5.2 Student outcomes

    +

    A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

    +

    A student should be able to: * explain when they have to implement the +copy operations for their own type * Copy constructor * Copy assignment +operator * implement copy operations for their own types * +Optional: explain when copying with basic and strong exception +guarantees is useful +

    +
    +

    +   [Contents]

    +
    +

    8.1.5.3 Caveats

    +

    This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

    +
      +
    • Intricacies when implementing copy operations: +
        +
      • Examples of how not to write copy operations (e.g., C++03 +std::auto_ptr) +
      + +
    + +
    +

    +   [Contents]

    +
    +

    8.1.5.4 Points to cover

    +

    This section lists important details for each point. +

    +
      +
    • Copy constructors and copy assignment operators +
        +
      • How compiler generates default copy operations +
      • =default, =delete (No copy) +
      • How-to write your own copy operations +
      • Rule-of-five +
      • Copy assignment operators can be ref-qualified to avoid assigning into +temporary objects. +
      + +
    + +
    +

    +   [Contents]

    +
    +

    8.2.1 Overview

    +

    Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

    + + + + + +
    LevelObjectives
    Foundationalusing and understanding UDLs
    Mainimplementing your own UDLs
    AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
    + +
    +

    +   [Contents]

    +
    +

    8.2.2 Motivation

    +

    Why is this important? Why do we want to learn/teach this +topic? +

    +
      +
    • Allows clearer expression of intent in C++. +
    • std::string: "Hello, world!"s +
    • std::chrono: 3h + 10min + 5s +
    + +
    +

    +   [Contents]

    +
    +

    8.2.3 Topic introduction

    +

    Very brief introduction to the topic. +

    +
      +
    • Explain the existence of user defined literals. Example: +12min + 17s is terse, expressive and type safe. +
    + +
    +

    +   [Contents]

    +
    +

    8.2.4.1 Background/Required Knowledge

    +

    A student: * knows how to form numeric literals, e.g., 1.5f means +a float of value 1.5. * is familiar with the major C++ +types: * bool (Boolean type) * int (Integer type) * +double (Floating-point type) * std::string (Text type) * +std::vector (Collection type) * knows that namespaces exist, and +namespace std. * knows what using-declarations and +using-directives are. +[C++ object +model: declarations] +

    +
    +

    +   [Contents]

    +
    +

    8.2.4.2 Student outcomes

    +

    A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

    +

    A student should be able to: +

    +
      +
    1. use using namespace std::string_literals[1]. +
    2. recognise UDLs in code that they are reading. +
    3. figure out which UDL definitions for a used type exist. +
    4. identify parts of the standard library that make use of UDLs. +
    5. prevent the dangers of temporaries created with "blah"s as well +as with std::string{"blah"}. +
    6. effectively selects the right set of namespaces in using-directives from +the sub-namespaces std::literals. +
    + +

    [1]: explain that it’s okay to use a using-directive to “activate” +UDLs. +

    +
    +

    +   [Contents]

    +
    +

    8.2.4.3 Caveats

    +

    This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

    +
      +
    • A student gets confused by the similarities and differences between +built-in suffixes and UDLs and between UDLs from different namespaces. +
    • A student “activates” two suffixes with the same signature from +different namespaces. +
    + +
    +

    +   [Contents]

    +
    +

    8.2.4.4 Points to cover

    +

    This section lists important details for each point. +

    +
    +

    +   [Contents]

    +
    +

    8.2.5.1 Background/Required Knowledge

    +
      +
    • All of the above. +
    + +
    +

    +   [Contents]

    +
    +

    8.2.5.2 Student outcomes

    +

    A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

    +

    A student should be able to: +

    +
      +
    1. write a UDL operator of their own. +
    2. separate unrelated UDLs into distinct namespaces. +
    + +
    +

    +   [Contents]

    +
    +

    8.2.5.3 Caveats

    +

    This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

    +

    No caveats at present. #### Points to cover +

    +

    This section lists important details for each point. +

    +

    No caveats at present. ### Advanced {#udl-advanced} +

    +

    These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

    +
    +

    +   [Contents]

    +
    +

    8.3.1 Overview

    +

    Functions in C++ may be overloaded with different numbers and types of +parameters. It may be of value to specify default arguments for some +number of parameters, to allow a caller to avoid specifying arguments +that rarely change, or to enable expanding the set of parameters while +maintaining backward compatibility with existing callers. +

    + + + + + +
    LevelObjective
    FoundationalDefine and use functions with default arguments
    Main
    Advancedrefinement of default arguments through multiple declarations
    + +
    +

    +   [Contents]

    +
    +

    8.3.2 Motivation

    +

    Default arguments allow the omission of arguments with obvious or common +values. Also may be utilized to extend an existing function signature +without forcing changes to existing calling code. +

    +
    +

    +   [Contents]

    +
    +

    8.3.3 Topic introduction

    +

    Explain how default arguments work and how to define them. +

    +
    +

    +   [Contents]

    +
    +

    8.3.4.1 Background/Required Knowledge

    +

    A student is able to: +

    + + +
    +

    +   [Contents]

    +
    +

    8.3.4.2 Student outcomes

    +

    A student should be able to: +

    +
      +
    1. Call to a function with a default argument with or without that argument +specified +
    2. Declare a function with a default argument, and omit the default in the +definition’s signature +
    3. Explain when the lifetime of a default argument begins and ends +
    + +
    +

    +   [Contents]

    +
    +

    8.3.4.3 Caveats

    +
      +
    • When no forward-declaration exists, the definition serves as the +declaration +
    • When multiple declarations exist, only one may specify the default for +any particular parameter, but multiple declarations may specify the +defaults for different parameters. +
    • Additional default values may be specified for other parameters in +repeat declarations +
    • Calling an overloaded function with fewer arguments may be ambiguous +with regard to an overload with default arguments +
    + +
    +

    +   [Contents]

    +
    +

    8.3.4.4 Points to cover

    +
      +
    • Default value may only be specified once for each parameter among all +declarations +
    • Default values must start from the rightmost parameter and continue +leftward without gaps +
    • Considerations of when to use default arguments vs overload set +
    + +
    +

    +   [Contents]

    +
    +

    8.3.5.2 Student outcomes

    +

    A student should be able to: +

    +
    +

    +   [Contents]

    +
    +

    8.3.5.3 Caveats

    + +
    +

    +   [Contents]

    +
    +

    8.3.5.4 Points to cover

    + +
    +

    +   [Contents]

    +
    +

    8.3.6 Advanced

    +

    Subsequent redeclarations of the same function may add default argument +values, which are then usable by callers. Though a single parameter +cannot be given a default argument twice in the same translation unit, +it is legal, though ill-advised, to give the same function different +default arguments in different translation units. +

    +
    +

    +   [Contents]

    +
    +

    8.4.1 Overview

    + + + + + +
    LevelObjectives
    FoundationalDefine and use requires-expressions to check satisfaction of +expressions by given parameters
    MainDefine and use requires-expressions to check properties of +expressions
    Advanced
    + +
    +

    +   [Contents]

    +
    +

    8.4.2 Motivation

    +

    Requires-expressions allow a developer to perform compile-time +evaluation on the validity of other expressions. These are fundamental +to the ability to write concepts. +[Compile-time programming: +concepts] +

    +
    +

    +   [Contents]

    +
    +

    8.5 Topic introduction

    +

    Requires-expressions are compile-time predicates which evaluate to true +when their specified set of expressions are all valid for a given set of +inputs. +

    + + + + + + +
    +

    +   [Contents]

    +
    +

    8.5.1.1 Background/Required Knowledge

    +

    A student is able to: +

    + + +

    It is helpful if: +

    +
      +
    • The student is aware that attempting to specialize the template with +types or values which do not match otherwise unstated assumptions will +cause errors within the template. +
    + +
    +

    +   [Contents]

    +
    +

    8.5.1.2 Student outcomes

    +

    A student should be able to: +

    +
      +
    1. Write a simple-requirement to assert the validity of an expression +
    2. Write a type-requirement to check the existence of a type by its +identifier +
    3. Write a compound-requirement to test the resulting type of an expression +
    4. Write a nested-requirement to test the constexpr value of an operation, +as opposed to just the syntactic validity +
    5. Use a requires-expression within a concept, requires-clause, or +if constexpr condition +
    + +
    +

    +   [Contents]

    +
    +

    8.5.1.3 Caveats

    +

    To require that expressions, which evaluate to a boolean value like +sizeof(t) == 4, evaluate to true a nested-requirement is +needed (e.g., requires sizeof(t) == 4;). Omitting the +requires results in a simple-requirement, which is satisfied +based purely on syntactic validity, not on the result of the operation. +

    +
    +

    +   [Contents]

    +
    +

    8.5.1.4 Points to cover

    +
      +
    • All requires-expression requirements terminate with a semicolon. +
    • simple-requirements are used to check that an expression is well-formed. +
    • nested-requirements are introduced with requires and primarily +used to check the result of an expression computable by the compiler, +including concepts or other requires-expressions. +
    • type-requirements are introduced with typename and used to verify +the existence of a type with a particular identifier. +
    • compound-requirements are enclosed in braces and can be used to check +the resulting type of an expression. +
    • Checks are performed by the compiler, not at run time. +
    • If covering usage of requires-expression with requires-clause, +[Compile-time +programming: requires clause] demonstrate requires requires and +show how to ever avoid writing it by using a concept. +[Compile-time programming: +concepts] +
    + +
    +

    +   [Contents]

    +
    +

    8.5.2.1 Background/required knowledge

    +
      +
    • All of the above. +
    • Knowledge of noexcept +
    + +

    A student is able to: +

    + + +
    +

    +   [Contents]

    +
    +

    8.5.2.2 Student outcomes

    +

    A student should be able to: +

    +
      +
    1. Write compound-requirements which test the noexceptness of an +expression. +
    2. Use a concept as the target of a compound-requirement. +
    + +
    +

    +   [Contents]

    +
    +

    8.5.2.3 Caveats

    + +
    +

    +   [Contents]

    +
    +

    8.5.2.4 Points to cover

    +
      +
    • Compound-requirements allow the optional ability to test whether an +expression is marked as noexcept, by using a trailing +noexcept keyword. +
    + +
    struct S
    +{
    +    void foo() noexcept {}
    +    void bar() {}
    +};
    +
    +static_assert(requires(S s) { { s.foo() } noexcept; } ); // Succeeds. s.foo() is noexcept
    +static_assert(requires(S s) { { s.bar() } noexcept; } ); // Fails. s.bar() is not noexcept
    +
    +
      +
    • If the return-type-requirement of a compound-requirement is a concept, +that concept is given the resulting type as the first parameter, +followed by the specified parameters in the compound-requirement. +{ ++x } -> C<int> would substitute +C<decltype((++x)), int> and check that concept C is satisfied for +those parameters. +
    + +
    +

    +   [Contents]

    +
    +

    8.5.3 Advanced

    + +
    +

    +   [Contents]

    +
    +

    8.6.1 Overview

    +

    Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

    + + + + + +
    LevelObjectives
    FoundationalCalling static_assert with a constant expression
    MainUsing static_assert to detect contract violations and +improve error messages
    Advanced
    + +
    +

    +   [Contents]

    +
    +

    8.6.2 Motivation

    +

    Why is this important? Why do we want to learn/teach this +topic? +

    +

    static_assert allows the developer to enforce that conditions +which can be checked during compilation will force build errors when +violated. Additionally, they are the best mechanism by which a developer +can pass useful information to other developers regarding what violation +occurred or what must be done, instead. +

    +
    +

    +   [Contents]

    +
    +

    8.6.3 Topic introduction

    +

    Very brief introduction to the topic. +

    +

    static_assert is a compile-time evaluated function that asserts +the truth of a supplied predicate, issuing an optional user-supplied +error message if the predicate is false. +

    +
    +

    +   [Contents]

    +
    +

    8.6.4.1 Background/Required Knowledge

    +

    A student: +

    +
      +
    • Should be able to explain the difference between code evaluated at +compile-time and run-time +
    • Should be able to cite some examples of compile-time known information, +such as sizeof(T) +
    + +
    +

    +   [Contents]

    +
    +

    8.6.4.2 Student outcomes

    +

    A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

    +

    A student should be able to: +

    +
      +
    1. Assert the expected size of a structure using static_assert +
    + +
    +

    +   [Contents]

    +
    +

    8.6.4.3 Caveats

    +

    This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

    +
    +

    +   [Contents]

    +
    +

    8.6.4.4 Points to cover

    +

    This section lists important details for each point. +

    +
      +
    • X +
    • In addition to what is wrong, a good error message will inform the user +of how to correct it +
    + +
    +

    +   [Contents]

    +
    +

    8.6.5.1 Background/Required Knowledge

    +
      +
    • All of the above. +
    • General understanding of compile-time requirements +
    + +
    +

    +   [Contents]

    +
    +

    8.6.5.2 Student outcomes

    +

    A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

    +

    A student should be able to: +

    +
      +
    1. Utilize static_assert to verify preconditions of a meta-function +
    2. Utilize static_assert to verify the results of meta-functions for +known values +
    + +
    +

    +   [Contents]

    +
    +

    8.6.5.3 Caveats

    +

    This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

    +
    +

    +   [Contents]

    +
    +

    8.6.5.4 Points to cover

    +

    This section lists important details for each point. +

    +
      +
    • When writing a meta-function, use static_assert to test the +results +
    • Write static_assert calls at the scope of the code they are +guarding +
    + +
    template<typename T>
    +struct container {
    +    std::map<int, T> vals;
    +
    +    // Test location #1
    +    static_assert(
    +        std::is_default_constructible_v<T>,
    +        "container type T must be default constructible");i
    +
    +    void add(int key, T const& t) {
    +        // Test location #2
    +        static_assert(
    +            std::is_default_constructible_v<T>,
    +            "container type T must be default constructible");
    +        // std::map::operator[] requires default constructible type for 
    +        // the value. This will cause a build failure deep in the 
    +        // implementation of std::map, when T is not default constructible
    +        vals[key] = t;
    +    }
    +};
    +
    +struct NoDefCtor {
    +    NoDefCtor() = delete;
    +    NoDefCtor(double d) {}
    +};
    +
    +container<NoDefCtor> c; // If Test #1 was omitted, this would succeed
    +// This is ill-formed. Test #2 would catch this and provide a better 
    +// error message for the user
    +c.add(42, NoDefCtor(1.0)); 
    +
    +
    +

    +   [Contents]

    +
    +

    8.6.6 Advanced

    +

    These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

    + + + + + diff --git a/latest/index.html b/latest/index.html index 6659bd3..c237b3f 100644 --- a/latest/index.html +++ b/latest/index.html @@ -106,7 +106,7 @@

    Guidelines for Teaching C++

    -

    Version 0.0.3

    +

    Version 0.0.4

    SG20 (ISO C++ Study Group on Education)

    @@ -203,9 +203,9 @@

    <

    The most recent version of this document is available as an online HTML document at: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/latest/.

    The version of the document that you are currently reading is available in the following formats:

      -
    1. online (HTML) format as a single large HTML document: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.3/html [later to be https://cplusplus.github.io/SG20/0.0.3/html?]

    2. -
    3. EPUB format: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.3/guidelines.epub [later to be https:/cplusplus.github.io/SG20/0.0.3/guidelines.epub?]

    4. -
    5. online (HTML) format, split across multiple HTML documents: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.3/html_split/ [later to be https://cplusplus.github.io/SG20/0.0.3/html_split/?] [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

    6. +
    7. online (HTML) format as a single large HTML document: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.4/html [later to be https://cplusplus.github.io/SG20/0.0.4/html?]

    8. +
    9. EPUB format: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.4/guidelines.epub [later to be https:/cplusplus.github.io/SG20/0.0.4/guidelines.epub?]

    10. +
    11. online (HTML) format, split across multiple HTML documents: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.4/html_split/ [later to be https://cplusplus.github.io/SG20/0.0.4/html_split/?] [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

    Older versions of this document are also available. In general version ver is available at https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/ver. For example, version v0.1.0 (assuming that this version exists) would be available at [later to be https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/v0.1.0?].

    2 Disclaimer

    From fc136b0d84acfb73b17b3dfaf29eb56602ad0c2e Mon Sep 17 00:00:00 2001 From: vulder Date: Sun, 31 Oct 2021 19:40:03 +0000 Subject: [PATCH 08/21] deploy: aa94531ad0ce1c49433cf2a7e051b7b67ecf3360 --- 0.0.1/guidelines.epub | Bin 31519 -> 0 bytes 0.0.1/html/index.html | 1429 ---------------- 0.0.1/html_split/Contributors.html | 57 - ...-Recent-Version-and-Alternate-Formats.html | 84 - 0.0.2/guidelines.epub | Bin 31523 -> 0 bytes 0.0.2/html/images/cpp_logo.png | Bin 23613 -> 0 bytes 0.0.2/html_split/Advanced.html | 60 - .../Background_002fRequired-Knowledge.html | 65 - .../Background_002frequired-knowledge.html | 54 - ...ments-and-Control_002dFlow-Constructs.html | 60 - 0.0.2/html_split/Building.html | 57 - ...002b_002b-object-model-copy-semantics.html | 69 - 0.0.2/html_split/Caveats.html | 62 - 0.0.2/html_split/Compilation-Model.html | 62 - .../Compile_002dTime-Computation.html | 57 - .../Context-and-Aim-of-This-Guide.html | 76 - .../Contributing-to-This-Document.html | 55 - ...ed-Information-for-Modules-and-Topics.html | 67 - 0.0.2/html_split/Disclaimer.html | 55 - 0.0.2/html_split/Error-Handling.html | 59 - .../Examples-of-Course-Curricula.html | 53 - .../External-ie-Non-Standard-Libraries.html | 56 - ...005fassert-with-a-constant-expression.html | 62 - ...dational-How-and-when-are-copies-made.html | 63 - 0.0.2/html_split/Foundational-Using-UDLs.html | 61 - ...ning-functions-with-default-arguments.html | 62 - ...onal-Writing-requires_002dexpressions.html | 60 - .../Functions-default-argument.html | 67 - .../Functions-user_002ddefined-literals.html | 66 - 0.0.2/html_split/Functions.html | 61 - .../Generic-Programming-Templates.html | 61 - 0.0.2/html_split/Glossary.html | 58 - 0.0.2/html_split/How-To-Contribute.html | 89 - .../Inheritance-and-Class-Hierarchies.html | 57 - 0.0.2/html_split/License.html | 100 -- .../Main-Advanced-requirements.html | 60 - .../Main-Contracts-and-static_005fassert.html | 61 - ...ting-user_002ddefined-copy-operations.html | 62 - 0.0.2/html_split/Main-implementing-UDLs.html | 59 - 0.0.2/html_split/Main-implementing-_002a.html | 62 - ..._002derror-handling-static_005fassert.html | 67 - .../Module-name-Requires-Expressions.html | 59 - 0.0.2/html_split/Motivation.html | 57 - ...-Recent-Version-and-Alternate-Formats.html | 84 - .../Organization-of-This-Document.html | 101 -- 0.0.2/html_split/Overview.html | 61 - 0.0.2/html_split/Points-to-cover.html | 69 - 0.0.2/html_split/Preprocessor.html | 58 - .../References-on-Learning-Outcomes.html | 71 - 0.0.2/html_split/References.html | 59 - 0.0.2/html_split/Software-Design.html | 56 - 0.0.2/html_split/Standard-Library.html | 57 - 0.0.2/html_split/Student-outcomes.html | 73 - .../Summary-of-Modules-and-Topics.html | 106 -- 0.0.2/html_split/Testing-and-Debugging.html | 59 - 0.0.2/html_split/Tooling.html | 57 - 0.0.2/html_split/Topic-introduction.html | 55 - 0.0.2/html_split/Use-of-This-Document.html | 58 - .../User_002dDefined-Types-Classes.html | 69 - ...ed-to-C_002b_002b-Teaching-Guidelines.html | 69 - 0.0.2/html_split/_0023advanced.html | 40 - 0.0.2/html_split/_0023advanced_002d1.html | 40 - 0.0.2/html_split/_0023advanced_002d2.html | 40 - 0.0.2/html_split/_0023advanced_002d3.html | 40 - ..._0023backgroundrequired_002dknowledge.html | 40 - ...ackgroundrequired_002dknowledge_002d1.html | 40 - ...ackgroundrequired_002dknowledge_002d2.html | 40 - ...ackgroundrequired_002dknowledge_002d3.html | 40 - ...ackgroundrequired_002dknowledge_002d4.html | 40 - ...ackgroundrequired_002dknowledge_002d5.html | 40 - ...ackgroundrequired_002dknowledge_002d6.html | 40 - ...ackgroundrequired_002dknowledge_002d7.html | 40 - ...ackgroundrequired_002dknowledge_002d8.html | 40 - ...ackgroundrequired_002dknowledge_002d9.html | 40 - ...d_002dcontrol_002dflow_002dconstructs.html | 40 - 0.0.2/html_split/_0023building.html | 40 - ...ject_002dmodel_002dcopy_002dsemantics.html | 40 - 0.0.2/html_split/_0023caveats.html | 40 - 0.0.2/html_split/_0023caveats_002d1.html | 40 - 0.0.2/html_split/_0023caveats_002d2.html | 40 - 0.0.2/html_split/_0023caveats_002d3.html | 40 - 0.0.2/html_split/_0023caveats_002d4.html | 40 - 0.0.2/html_split/_0023caveats_002d5.html | 40 - 0.0.2/html_split/_0023caveats_002d6.html | 40 - 0.0.2/html_split/_0023caveats_002d7.html | 40 - 0.0.2/html_split/_0023caveats_002d8.html | 40 - 0.0.2/html_split/_0023caveats_002d9.html | 40 - .../_0023compilation_002dmodel.html | 40 - ..._0023compile_002dtime_002dcomputation.html | 40 - ...and_002daim_002dof_002dthis_002dguide.html | 40 - ...ributing_002dto_002dthis_002ddocument.html | 40 - 0.0.2/html_split/_0023contributors.html | 40 - ...02dfor_002dmodules_002dand_002dtopics.html | 40 - 0.0.2/html_split/_0023disclaimer.html | 40 - 0.0.2/html_split/_0023error_002dhandling.html | 40 - ...mples_002dof_002dcourse_002dcurricula.html | 40 - ...2e_002dnon_002dstandard_002dlibraries.html | 40 - ...ith_002da_002dconstant_002dexpression.html | 40 - ..._002dwhen_002dare_002dcopies_002dmade.html | 40 - ...ns_002dwith_002ddefault_002darguments.html | 40 - .../_0023foundational_002dusing_002dudls.html | 40 - ...dwriting_002drequires_002dexpressions.html | 40 - 0.0.2/html_split/_0023functions.html | 40 - ...023functions_002ddefault_002dargument.html | 40 - ...ons_002duser_002ddefined_002dliterals.html | 40 - ...generic_002dprogramming_002dtemplates.html | 40 - 0.0.2/html_split/_0023glossary.html | 40 - .../_0023how_002dto_002dcontribute.html | 40 - ...nce_002dand_002dclass_002dhierarchies.html | 40 - 0.0.2/html_split/_0023license.html | 40 - ...023main_002dadvanced_002drequirements.html | 40 - ...ntracts_002dand_002dstatic_005fassert.html | 40 - .../_0023main_002dimplementing.html | 40 - .../_0023main_002dimplementing_002dudls.html | 40 - ...r_002ddefined_002dcopy_002doperations.html | 40 - ...or_002dhandling_002dstatic_005fassert.html | 40 - ...002dname_002drequires_002dexpressions.html | 40 - 0.0.2/html_split/_0023motivation.html | 40 - 0.0.2/html_split/_0023motivation_002d1.html | 40 - 0.0.2/html_split/_0023motivation_002d2.html | 40 - 0.0.2/html_split/_0023motivation_002d3.html | 40 - 0.0.2/html_split/_0023motivation_002d4.html | 40 - ...ion_002dand_002dalternate_002dformats.html | 40 - ...nization_002dof_002dthis_002ddocument.html | 40 - 0.0.2/html_split/_0023overview.html | 40 - 0.0.2/html_split/_0023overview_002d1.html | 40 - 0.0.2/html_split/_0023overview_002d2.html | 40 - 0.0.2/html_split/_0023overview_002d3.html | 40 - 0.0.2/html_split/_0023overview_002d4.html | 40 - .../_0023points_002dto_002dcover.html | 40 - .../_0023points_002dto_002dcover_002d1.html | 40 - .../_0023points_002dto_002dcover_002d2.html | 40 - .../_0023points_002dto_002dcover_002d3.html | 40 - .../_0023points_002dto_002dcover_002d4.html | 40 - .../_0023points_002dto_002dcover_002d5.html | 40 - .../_0023points_002dto_002dcover_002d6.html | 40 - .../_0023points_002dto_002dcover_002d7.html | 40 - .../_0023points_002dto_002dcover_002d8.html | 40 - 0.0.2/html_split/_0023preprocessor.html | 40 - 0.0.2/html_split/_0023references.html | 40 - ...nces_002don_002dlearning_002doutcomes.html | 40 - .../html_split/_0023software_002ddesign.html | 40 - .../html_split/_0023standard_002dlibrary.html | 40 - .../html_split/_0023student_002doutcomes.html | 40 - .../_0023student_002doutcomes_002d1.html | 40 - .../_0023student_002doutcomes_002d2.html | 40 - .../_0023student_002doutcomes_002d3.html | 40 - .../_0023student_002doutcomes_002d4.html | 40 - .../_0023student_002doutcomes_002d5.html | 40 - .../_0023student_002doutcomes_002d6.html | 40 - .../_0023student_002doutcomes_002d7.html | 40 - .../_0023student_002doutcomes_002d8.html | 40 - .../_0023student_002doutcomes_002d9.html | 40 - ...002dof_002dmodules_002dand_002dtopics.html | 40 - .../_0023testing_002dand_002ddebugging.html | 40 - 0.0.2/html_split/_0023tooling.html | 40 - .../_0023topic_002dintroduction.html | 40 - .../_0023topic_002dintroduction_002d1.html | 40 - .../_0023topic_002dintroduction_002d2.html | 40 - .../_0023topic_002dintroduction_002d3.html | 40 - .../_0023topic_002dintroduction_002d4.html | 40 - ..._0023use_002dof_002dthis_002ddocument.html | 40 - ...ser_002ddefined_002dtypes_002dclasses.html | 40 - ...dto_002dc_002dteaching_002dguidelines.html | 40 - 0.0.2/html_split/index.html | 240 --- 0.0.2/html_split/unknown_node.html | 763 --------- 0.0.3/html/images/cpp_logo.png | Bin 23613 -> 0 bytes 0.0.3/html/index.html | 1430 ----------------- 0.0.3/html_split/Advanced.html | 60 - .../Background_002fRequired-Knowledge.html | 65 - .../Background_002frequired-knowledge.html | 54 - ...ments-and-Control_002dFlow-Constructs.html | 60 - 0.0.3/html_split/Building.html | 57 - ...002b_002b-object-model-copy-semantics.html | 69 - 0.0.3/html_split/Caveats.html | 62 - 0.0.3/html_split/Compilation-Model.html | 62 - .../Compile_002dTime-Computation.html | 57 - .../Context-and-Aim-of-This-Guide.html | 76 - .../Contributing-to-This-Document.html | 55 - 0.0.3/html_split/Contributors.html | 58 - ...ed-Information-for-Modules-and-Topics.html | 67 - 0.0.3/html_split/Disclaimer.html | 55 - 0.0.3/html_split/Error-Handling.html | 59 - .../Examples-of-Course-Curricula.html | 53 - .../External-ie-Non-Standard-Libraries.html | 56 - ...005fassert-with-a-constant-expression.html | 62 - ...dational-How-and-when-are-copies-made.html | 63 - 0.0.3/html_split/Foundational-Using-UDLs.html | 61 - ...ning-functions-with-default-arguments.html | 62 - ...onal-Writing-requires_002dexpressions.html | 60 - .../Functions-default-argument.html | 67 - .../Functions-user_002ddefined-literals.html | 66 - 0.0.3/html_split/Functions.html | 61 - .../Generic-Programming-Templates.html | 61 - 0.0.3/html_split/Glossary.html | 58 - 0.0.3/html_split/How-To-Contribute.html | 89 - .../Inheritance-and-Class-Hierarchies.html | 57 - 0.0.3/html_split/License.html | 100 -- .../Main-Advanced-requirements.html | 60 - .../Main-Contracts-and-static_005fassert.html | 61 - ...ting-user_002ddefined-copy-operations.html | 62 - 0.0.3/html_split/Main-implementing-UDLs.html | 59 - 0.0.3/html_split/Main-implementing-_002a.html | 62 - ..._002derror-handling-static_005fassert.html | 67 - .../Module-name-Requires-Expressions.html | 59 - 0.0.3/html_split/Motivation.html | 57 - .../Organization-of-This-Document.html | 101 -- 0.0.3/html_split/Overview.html | 61 - 0.0.3/html_split/Points-to-cover.html | 69 - 0.0.3/html_split/Preprocessor.html | 58 - .../References-on-Learning-Outcomes.html | 71 - 0.0.3/html_split/References.html | 59 - 0.0.3/html_split/Software-Design.html | 56 - 0.0.3/html_split/Standard-Library.html | 57 - 0.0.3/html_split/Student-outcomes.html | 73 - .../Summary-of-Modules-and-Topics.html | 106 -- 0.0.3/html_split/Testing-and-Debugging.html | 59 - 0.0.3/html_split/Tooling.html | 57 - 0.0.3/html_split/Topic-introduction.html | 55 - 0.0.3/html_split/Use-of-This-Document.html | 58 - .../User_002dDefined-Types-Classes.html | 69 - ...ed-to-C_002b_002b-Teaching-Guidelines.html | 69 - 0.0.3/html_split/_0023advanced.html | 40 - 0.0.3/html_split/_0023advanced_002d1.html | 40 - 0.0.3/html_split/_0023advanced_002d2.html | 40 - 0.0.3/html_split/_0023advanced_002d3.html | 40 - ..._0023backgroundrequired_002dknowledge.html | 40 - ...ackgroundrequired_002dknowledge_002d1.html | 40 - ...ackgroundrequired_002dknowledge_002d2.html | 40 - ...ackgroundrequired_002dknowledge_002d3.html | 40 - ...ackgroundrequired_002dknowledge_002d4.html | 40 - ...ackgroundrequired_002dknowledge_002d5.html | 40 - ...ackgroundrequired_002dknowledge_002d6.html | 40 - ...ackgroundrequired_002dknowledge_002d7.html | 40 - ...ackgroundrequired_002dknowledge_002d8.html | 40 - ...ackgroundrequired_002dknowledge_002d9.html | 40 - ...d_002dcontrol_002dflow_002dconstructs.html | 40 - 0.0.3/html_split/_0023building.html | 40 - ...ject_002dmodel_002dcopy_002dsemantics.html | 40 - 0.0.3/html_split/_0023caveats.html | 40 - 0.0.3/html_split/_0023caveats_002d1.html | 40 - 0.0.3/html_split/_0023caveats_002d2.html | 40 - 0.0.3/html_split/_0023caveats_002d3.html | 40 - 0.0.3/html_split/_0023caveats_002d4.html | 40 - 0.0.3/html_split/_0023caveats_002d5.html | 40 - 0.0.3/html_split/_0023caveats_002d6.html | 40 - 0.0.3/html_split/_0023caveats_002d7.html | 40 - 0.0.3/html_split/_0023caveats_002d8.html | 40 - 0.0.3/html_split/_0023caveats_002d9.html | 40 - .../_0023compilation_002dmodel.html | 40 - ..._0023compile_002dtime_002dcomputation.html | 40 - ...and_002daim_002dof_002dthis_002dguide.html | 40 - ...ributing_002dto_002dthis_002ddocument.html | 40 - 0.0.3/html_split/_0023contributors.html | 40 - ...02dfor_002dmodules_002dand_002dtopics.html | 40 - 0.0.3/html_split/_0023disclaimer.html | 40 - 0.0.3/html_split/_0023error_002dhandling.html | 40 - ...mples_002dof_002dcourse_002dcurricula.html | 40 - ...2e_002dnon_002dstandard_002dlibraries.html | 40 - ...ith_002da_002dconstant_002dexpression.html | 40 - ..._002dwhen_002dare_002dcopies_002dmade.html | 40 - ...ns_002dwith_002ddefault_002darguments.html | 40 - .../_0023foundational_002dusing_002dudls.html | 40 - ...dwriting_002drequires_002dexpressions.html | 40 - 0.0.3/html_split/_0023functions.html | 40 - ...023functions_002ddefault_002dargument.html | 40 - ...ons_002duser_002ddefined_002dliterals.html | 40 - ...generic_002dprogramming_002dtemplates.html | 40 - 0.0.3/html_split/_0023glossary.html | 40 - .../_0023how_002dto_002dcontribute.html | 40 - ...nce_002dand_002dclass_002dhierarchies.html | 40 - 0.0.3/html_split/_0023license.html | 40 - ...023main_002dadvanced_002drequirements.html | 40 - ...ntracts_002dand_002dstatic_005fassert.html | 40 - .../_0023main_002dimplementing.html | 40 - .../_0023main_002dimplementing_002dudls.html | 40 - ...r_002ddefined_002dcopy_002doperations.html | 40 - ...or_002dhandling_002dstatic_005fassert.html | 40 - ...002dname_002drequires_002dexpressions.html | 40 - 0.0.3/html_split/_0023motivation.html | 40 - 0.0.3/html_split/_0023motivation_002d1.html | 40 - 0.0.3/html_split/_0023motivation_002d2.html | 40 - 0.0.3/html_split/_0023motivation_002d3.html | 40 - 0.0.3/html_split/_0023motivation_002d4.html | 40 - ...ion_002dand_002dalternate_002dformats.html | 40 - ...nization_002dof_002dthis_002ddocument.html | 40 - 0.0.3/html_split/_0023overview.html | 40 - 0.0.3/html_split/_0023overview_002d1.html | 40 - 0.0.3/html_split/_0023overview_002d2.html | 40 - 0.0.3/html_split/_0023overview_002d3.html | 40 - 0.0.3/html_split/_0023overview_002d4.html | 40 - .../_0023points_002dto_002dcover.html | 40 - .../_0023points_002dto_002dcover_002d1.html | 40 - .../_0023points_002dto_002dcover_002d2.html | 40 - .../_0023points_002dto_002dcover_002d3.html | 40 - .../_0023points_002dto_002dcover_002d4.html | 40 - .../_0023points_002dto_002dcover_002d5.html | 40 - .../_0023points_002dto_002dcover_002d6.html | 40 - .../_0023points_002dto_002dcover_002d7.html | 40 - .../_0023points_002dto_002dcover_002d8.html | 40 - 0.0.3/html_split/_0023preprocessor.html | 40 - 0.0.3/html_split/_0023references.html | 40 - ...nces_002don_002dlearning_002doutcomes.html | 40 - .../html_split/_0023software_002ddesign.html | 40 - .../html_split/_0023standard_002dlibrary.html | 40 - .../html_split/_0023student_002doutcomes.html | 40 - .../_0023student_002doutcomes_002d1.html | 40 - .../_0023student_002doutcomes_002d2.html | 40 - .../_0023student_002doutcomes_002d3.html | 40 - .../_0023student_002doutcomes_002d4.html | 40 - .../_0023student_002doutcomes_002d5.html | 40 - .../_0023student_002doutcomes_002d6.html | 40 - .../_0023student_002doutcomes_002d7.html | 40 - .../_0023student_002doutcomes_002d8.html | 40 - .../_0023student_002doutcomes_002d9.html | 40 - ...002dof_002dmodules_002dand_002dtopics.html | 40 - .../_0023testing_002dand_002ddebugging.html | 40 - 0.0.3/html_split/_0023tooling.html | 40 - .../_0023topic_002dintroduction.html | 40 - .../_0023topic_002dintroduction_002d1.html | 40 - .../_0023topic_002dintroduction_002d2.html | 40 - .../_0023topic_002dintroduction_002d3.html | 40 - .../_0023topic_002dintroduction_002d4.html | 40 - ..._0023use_002dof_002dthis_002ddocument.html | 40 - ...ser_002ddefined_002dtypes_002dclasses.html | 40 - ...dto_002dc_002dteaching_002dguidelines.html | 40 - 0.0.3/html_split/index.html | 240 --- 0.0.3/html_split/unknown_node.html | 763 --------- 0.0.4/guidelines.epub | Bin 31523 -> 0 bytes 0.0.4/html/images/cpp_logo.png | Bin 23613 -> 0 bytes 0.0.4/html/index.html | 1430 ----------------- 0.0.4/html_split/Advanced.html | 60 - .../Background_002fRequired-Knowledge.html | 65 - .../Background_002frequired-knowledge.html | 54 - ...ments-and-Control_002dFlow-Constructs.html | 60 - 0.0.4/html_split/Building.html | 57 - ...002b_002b-object-model-copy-semantics.html | 69 - 0.0.4/html_split/Caveats.html | 62 - 0.0.4/html_split/Compilation-Model.html | 62 - .../Compile_002dTime-Computation.html | 57 - .../Context-and-Aim-of-This-Guide.html | 76 - .../Contributing-to-This-Document.html | 55 - 0.0.4/html_split/Contributors.html | 58 - ...ed-Information-for-Modules-and-Topics.html | 67 - 0.0.4/html_split/Disclaimer.html | 55 - 0.0.4/html_split/Error-Handling.html | 59 - .../Examples-of-Course-Curricula.html | 53 - .../External-ie-Non-Standard-Libraries.html | 56 - ...005fassert-with-a-constant-expression.html | 62 - ...dational-How-and-when-are-copies-made.html | 63 - 0.0.4/html_split/Foundational-Using-UDLs.html | 61 - ...ning-functions-with-default-arguments.html | 62 - ...onal-Writing-requires_002dexpressions.html | 60 - .../Functions-default-argument.html | 67 - .../Functions-user_002ddefined-literals.html | 66 - 0.0.4/html_split/Functions.html | 61 - .../Generic-Programming-Templates.html | 61 - 0.0.4/html_split/Glossary.html | 58 - 0.0.4/html_split/How-To-Contribute.html | 89 - .../Inheritance-and-Class-Hierarchies.html | 57 - 0.0.4/html_split/License.html | 100 -- .../Main-Advanced-requirements.html | 60 - .../Main-Contracts-and-static_005fassert.html | 61 - ...ting-user_002ddefined-copy-operations.html | 62 - 0.0.4/html_split/Main-implementing-UDLs.html | 59 - 0.0.4/html_split/Main-implementing-_002a.html | 62 - ..._002derror-handling-static_005fassert.html | 67 - .../Module-name-Requires-Expressions.html | 59 - 0.0.4/html_split/Motivation.html | 57 - ...-Recent-Version-and-Alternate-Formats.html | 84 - .../Organization-of-This-Document.html | 101 -- 0.0.4/html_split/Overview.html | 61 - 0.0.4/html_split/Points-to-cover.html | 69 - 0.0.4/html_split/Preprocessor.html | 58 - .../References-on-Learning-Outcomes.html | 71 - 0.0.4/html_split/References.html | 59 - 0.0.4/html_split/Software-Design.html | 56 - 0.0.4/html_split/Standard-Library.html | 57 - 0.0.4/html_split/Student-outcomes.html | 73 - .../Summary-of-Modules-and-Topics.html | 106 -- 0.0.4/html_split/Testing-and-Debugging.html | 59 - 0.0.4/html_split/Tooling.html | 57 - 0.0.4/html_split/Topic-introduction.html | 55 - 0.0.4/html_split/Use-of-This-Document.html | 58 - .../User_002dDefined-Types-Classes.html | 69 - ...ed-to-C_002b_002b-Teaching-Guidelines.html | 69 - 0.0.4/html_split/_0023advanced.html | 40 - 0.0.4/html_split/_0023advanced_002d1.html | 40 - 0.0.4/html_split/_0023advanced_002d2.html | 40 - 0.0.4/html_split/_0023advanced_002d3.html | 40 - ..._0023backgroundrequired_002dknowledge.html | 40 - ...ackgroundrequired_002dknowledge_002d1.html | 40 - ...ackgroundrequired_002dknowledge_002d2.html | 40 - ...ackgroundrequired_002dknowledge_002d3.html | 40 - ...ackgroundrequired_002dknowledge_002d4.html | 40 - ...ackgroundrequired_002dknowledge_002d5.html | 40 - ...ackgroundrequired_002dknowledge_002d6.html | 40 - ...ackgroundrequired_002dknowledge_002d7.html | 40 - ...ackgroundrequired_002dknowledge_002d8.html | 40 - ...ackgroundrequired_002dknowledge_002d9.html | 40 - ...d_002dcontrol_002dflow_002dconstructs.html | 40 - 0.0.4/html_split/_0023building.html | 40 - ...ject_002dmodel_002dcopy_002dsemantics.html | 40 - 0.0.4/html_split/_0023caveats.html | 40 - 0.0.4/html_split/_0023caveats_002d1.html | 40 - 0.0.4/html_split/_0023caveats_002d2.html | 40 - 0.0.4/html_split/_0023caveats_002d3.html | 40 - 0.0.4/html_split/_0023caveats_002d4.html | 40 - 0.0.4/html_split/_0023caveats_002d5.html | 40 - 0.0.4/html_split/_0023caveats_002d6.html | 40 - 0.0.4/html_split/_0023caveats_002d7.html | 40 - 0.0.4/html_split/_0023caveats_002d8.html | 40 - 0.0.4/html_split/_0023caveats_002d9.html | 40 - .../_0023compilation_002dmodel.html | 40 - ..._0023compile_002dtime_002dcomputation.html | 40 - ...and_002daim_002dof_002dthis_002dguide.html | 40 - ...ributing_002dto_002dthis_002ddocument.html | 40 - 0.0.4/html_split/_0023contributors.html | 40 - ...02dfor_002dmodules_002dand_002dtopics.html | 40 - 0.0.4/html_split/_0023disclaimer.html | 40 - 0.0.4/html_split/_0023error_002dhandling.html | 40 - ...mples_002dof_002dcourse_002dcurricula.html | 40 - ...2e_002dnon_002dstandard_002dlibraries.html | 40 - ...ith_002da_002dconstant_002dexpression.html | 40 - ..._002dwhen_002dare_002dcopies_002dmade.html | 40 - ...ns_002dwith_002ddefault_002darguments.html | 40 - .../_0023foundational_002dusing_002dudls.html | 40 - ...dwriting_002drequires_002dexpressions.html | 40 - 0.0.4/html_split/_0023functions.html | 40 - ...023functions_002ddefault_002dargument.html | 40 - ...ons_002duser_002ddefined_002dliterals.html | 40 - ...generic_002dprogramming_002dtemplates.html | 40 - 0.0.4/html_split/_0023glossary.html | 40 - .../_0023how_002dto_002dcontribute.html | 40 - ...nce_002dand_002dclass_002dhierarchies.html | 40 - 0.0.4/html_split/_0023license.html | 40 - ...023main_002dadvanced_002drequirements.html | 40 - ...ntracts_002dand_002dstatic_005fassert.html | 40 - .../_0023main_002dimplementing.html | 40 - .../_0023main_002dimplementing_002dudls.html | 40 - ...r_002ddefined_002dcopy_002doperations.html | 40 - ...or_002dhandling_002dstatic_005fassert.html | 40 - ...002dname_002drequires_002dexpressions.html | 40 - 0.0.4/html_split/_0023motivation.html | 40 - 0.0.4/html_split/_0023motivation_002d1.html | 40 - 0.0.4/html_split/_0023motivation_002d2.html | 40 - 0.0.4/html_split/_0023motivation_002d3.html | 40 - 0.0.4/html_split/_0023motivation_002d4.html | 40 - ...ion_002dand_002dalternate_002dformats.html | 40 - ...nization_002dof_002dthis_002ddocument.html | 40 - 0.0.4/html_split/_0023overview.html | 40 - 0.0.4/html_split/_0023overview_002d1.html | 40 - 0.0.4/html_split/_0023overview_002d2.html | 40 - 0.0.4/html_split/_0023overview_002d3.html | 40 - 0.0.4/html_split/_0023overview_002d4.html | 40 - .../_0023points_002dto_002dcover.html | 40 - .../_0023points_002dto_002dcover_002d1.html | 40 - .../_0023points_002dto_002dcover_002d2.html | 40 - .../_0023points_002dto_002dcover_002d3.html | 40 - .../_0023points_002dto_002dcover_002d4.html | 40 - .../_0023points_002dto_002dcover_002d5.html | 40 - .../_0023points_002dto_002dcover_002d6.html | 40 - .../_0023points_002dto_002dcover_002d7.html | 40 - .../_0023points_002dto_002dcover_002d8.html | 40 - 0.0.4/html_split/_0023preprocessor.html | 40 - 0.0.4/html_split/_0023references.html | 40 - ...nces_002don_002dlearning_002doutcomes.html | 40 - .../html_split/_0023software_002ddesign.html | 40 - .../html_split/_0023standard_002dlibrary.html | 40 - .../html_split/_0023student_002doutcomes.html | 40 - .../_0023student_002doutcomes_002d1.html | 40 - .../_0023student_002doutcomes_002d2.html | 40 - .../_0023student_002doutcomes_002d3.html | 40 - .../_0023student_002doutcomes_002d4.html | 40 - .../_0023student_002doutcomes_002d5.html | 40 - .../_0023student_002doutcomes_002d6.html | 40 - .../_0023student_002doutcomes_002d7.html | 40 - .../_0023student_002doutcomes_002d8.html | 40 - .../_0023student_002doutcomes_002d9.html | 40 - ...002dof_002dmodules_002dand_002dtopics.html | 40 - .../_0023testing_002dand_002ddebugging.html | 40 - 0.0.4/html_split/_0023tooling.html | 40 - .../_0023topic_002dintroduction.html | 40 - .../_0023topic_002dintroduction_002d1.html | 40 - .../_0023topic_002dintroduction_002d2.html | 40 - .../_0023topic_002dintroduction_002d3.html | 40 - .../_0023topic_002dintroduction_002d4.html | 40 - ..._0023use_002dof_002dthis_002ddocument.html | 40 - ...ser_002ddefined_002dtypes_002dclasses.html | 40 - ...dto_002dc_002dteaching_002dguidelines.html | 40 - 0.0.4/html_split/index.html | 240 --- 0.0.4/html_split/unknown_node.html | 763 --------- {0.0.3 => 0.0.5}/guidelines.epub | Bin 31524 -> 31522 bytes {0.0.1 => 0.0.5}/html/images/cpp_logo.png | Bin {0.0.2 => 0.0.5}/html/index.html | 8 +- {0.0.1 => 0.0.5}/html_split/Advanced.html | 0 .../Background_002fRequired-Knowledge.html | 0 .../Background_002frequired-knowledge.html | 0 ...ments-and-Control_002dFlow-Constructs.html | 0 {0.0.1 => 0.0.5}/html_split/Building.html | 0 ...002b_002b-object-model-copy-semantics.html | 0 {0.0.1 => 0.0.5}/html_split/Caveats.html | 0 .../html_split/Compilation-Model.html | 0 .../Compile_002dTime-Computation.html | 0 .../Context-and-Aim-of-This-Guide.html | 0 .../Contributing-to-This-Document.html | 0 {0.0.2 => 0.0.5}/html_split/Contributors.html | 0 ...ed-Information-for-Modules-and-Topics.html | 0 {0.0.1 => 0.0.5}/html_split/Disclaimer.html | 0 .../html_split/Error-Handling.html | 0 .../Examples-of-Course-Curricula.html | 0 .../External-ie-Non-Standard-Libraries.html | 0 ...005fassert-with-a-constant-expression.html | 0 ...dational-How-and-when-are-copies-made.html | 0 .../html_split/Foundational-Using-UDLs.html | 0 ...ning-functions-with-default-arguments.html | 0 ...onal-Writing-requires_002dexpressions.html | 0 .../Functions-default-argument.html | 0 .../Functions-user_002ddefined-literals.html | 0 {0.0.1 => 0.0.5}/html_split/Functions.html | 0 .../Generic-Programming-Templates.html | 0 {0.0.1 => 0.0.5}/html_split/Glossary.html | 0 .../html_split/How-To-Contribute.html | 0 .../Inheritance-and-Class-Hierarchies.html | 0 {0.0.1 => 0.0.5}/html_split/License.html | 0 .../Main-Advanced-requirements.html | 0 .../Main-Contracts-and-static_005fassert.html | 0 ...ting-user_002ddefined-copy-operations.html | 0 .../html_split/Main-implementing-UDLs.html | 0 .../html_split/Main-implementing-_002a.html | 0 ..._002derror-handling-static_005fassert.html | 0 .../Module-name-Requires-Expressions.html | 0 {0.0.1 => 0.0.5}/html_split/Motivation.html | 0 ...-Recent-Version-and-Alternate-Formats.html | 12 +- .../Organization-of-This-Document.html | 0 {0.0.1 => 0.0.5}/html_split/Overview.html | 0 .../html_split/Points-to-cover.html | 0 {0.0.1 => 0.0.5}/html_split/Preprocessor.html | 0 .../References-on-Learning-Outcomes.html | 0 {0.0.1 => 0.0.5}/html_split/References.html | 0 .../html_split/Software-Design.html | 0 .../html_split/Standard-Library.html | 0 .../html_split/Student-outcomes.html | 0 .../Summary-of-Modules-and-Topics.html | 0 .../html_split/Testing-and-Debugging.html | 0 {0.0.1 => 0.0.5}/html_split/Tooling.html | 0 .../html_split/Topic-introduction.html | 0 .../html_split/Use-of-This-Document.html | 0 .../User_002dDefined-Types-Classes.html | 0 ...ed-to-C_002b_002b-Teaching-Guidelines.html | 0 .../html_split/_0023advanced.html | 0 .../html_split/_0023advanced_002d1.html | 0 .../html_split/_0023advanced_002d2.html | 0 .../html_split/_0023advanced_002d3.html | 0 ..._0023backgroundrequired_002dknowledge.html | 0 ...ackgroundrequired_002dknowledge_002d1.html | 0 ...ackgroundrequired_002dknowledge_002d2.html | 0 ...ackgroundrequired_002dknowledge_002d3.html | 0 ...ackgroundrequired_002dknowledge_002d4.html | 0 ...ackgroundrequired_002dknowledge_002d5.html | 0 ...ackgroundrequired_002dknowledge_002d6.html | 0 ...ackgroundrequired_002dknowledge_002d7.html | 0 ...ackgroundrequired_002dknowledge_002d8.html | 0 ...ackgroundrequired_002dknowledge_002d9.html | 0 ...d_002dcontrol_002dflow_002dconstructs.html | 0 .../html_split/_0023building.html | 0 ...ject_002dmodel_002dcopy_002dsemantics.html | 0 {0.0.1 => 0.0.5}/html_split/_0023caveats.html | 0 .../html_split/_0023caveats_002d1.html | 0 .../html_split/_0023caveats_002d2.html | 0 .../html_split/_0023caveats_002d3.html | 0 .../html_split/_0023caveats_002d4.html | 0 .../html_split/_0023caveats_002d5.html | 0 .../html_split/_0023caveats_002d6.html | 0 .../html_split/_0023caveats_002d7.html | 0 .../html_split/_0023caveats_002d8.html | 0 .../html_split/_0023caveats_002d9.html | 0 .../_0023compilation_002dmodel.html | 0 ..._0023compile_002dtime_002dcomputation.html | 0 ...and_002daim_002dof_002dthis_002dguide.html | 0 ...ributing_002dto_002dthis_002ddocument.html | 0 .../html_split/_0023contributors.html | 0 ...02dfor_002dmodules_002dand_002dtopics.html | 0 .../html_split/_0023disclaimer.html | 0 .../html_split/_0023error_002dhandling.html | 0 ...mples_002dof_002dcourse_002dcurricula.html | 0 ...2e_002dnon_002dstandard_002dlibraries.html | 0 ...ith_002da_002dconstant_002dexpression.html | 0 ..._002dwhen_002dare_002dcopies_002dmade.html | 0 ...ns_002dwith_002ddefault_002darguments.html | 0 .../_0023foundational_002dusing_002dudls.html | 0 ...dwriting_002drequires_002dexpressions.html | 0 .../html_split/_0023functions.html | 0 ...023functions_002ddefault_002dargument.html | 0 ...ons_002duser_002ddefined_002dliterals.html | 0 ...generic_002dprogramming_002dtemplates.html | 0 .../html_split/_0023glossary.html | 0 .../_0023how_002dto_002dcontribute.html | 0 ...nce_002dand_002dclass_002dhierarchies.html | 0 {0.0.1 => 0.0.5}/html_split/_0023license.html | 0 ...023main_002dadvanced_002drequirements.html | 0 ...ntracts_002dand_002dstatic_005fassert.html | 0 .../_0023main_002dimplementing.html | 0 .../_0023main_002dimplementing_002dudls.html | 0 ...r_002ddefined_002dcopy_002doperations.html | 0 ...or_002dhandling_002dstatic_005fassert.html | 0 ...002dname_002drequires_002dexpressions.html | 0 .../html_split/_0023motivation.html | 0 .../html_split/_0023motivation_002d1.html | 0 .../html_split/_0023motivation_002d2.html | 0 .../html_split/_0023motivation_002d3.html | 0 .../html_split/_0023motivation_002d4.html | 0 ...ion_002dand_002dalternate_002dformats.html | 0 ...nization_002dof_002dthis_002ddocument.html | 0 .../html_split/_0023overview.html | 0 .../html_split/_0023overview_002d1.html | 0 .../html_split/_0023overview_002d2.html | 0 .../html_split/_0023overview_002d3.html | 0 .../html_split/_0023overview_002d4.html | 0 .../_0023points_002dto_002dcover.html | 0 .../_0023points_002dto_002dcover_002d1.html | 0 .../_0023points_002dto_002dcover_002d2.html | 0 .../_0023points_002dto_002dcover_002d3.html | 0 .../_0023points_002dto_002dcover_002d4.html | 0 .../_0023points_002dto_002dcover_002d5.html | 0 .../_0023points_002dto_002dcover_002d6.html | 0 .../_0023points_002dto_002dcover_002d7.html | 0 .../_0023points_002dto_002dcover_002d8.html | 0 .../html_split/_0023preprocessor.html | 0 .../html_split/_0023references.html | 0 ...nces_002don_002dlearning_002doutcomes.html | 0 .../html_split/_0023software_002ddesign.html | 0 .../html_split/_0023standard_002dlibrary.html | 0 .../html_split/_0023student_002doutcomes.html | 0 .../_0023student_002doutcomes_002d1.html | 0 .../_0023student_002doutcomes_002d2.html | 0 .../_0023student_002doutcomes_002d3.html | 0 .../_0023student_002doutcomes_002d4.html | 0 .../_0023student_002doutcomes_002d5.html | 0 .../_0023student_002doutcomes_002d6.html | 0 .../_0023student_002doutcomes_002d7.html | 0 .../_0023student_002doutcomes_002d8.html | 0 .../_0023student_002doutcomes_002d9.html | 0 ...002dof_002dmodules_002dand_002dtopics.html | 0 .../_0023testing_002dand_002ddebugging.html | 0 {0.0.1 => 0.0.5}/html_split/_0023tooling.html | 0 .../_0023topic_002dintroduction.html | 0 .../_0023topic_002dintroduction_002d1.html | 0 .../_0023topic_002dintroduction_002d2.html | 0 .../_0023topic_002dintroduction_002d3.html | 0 .../_0023topic_002dintroduction_002d4.html | 0 ..._0023use_002dof_002dthis_002ddocument.html | 0 ...ser_002ddefined_002dtypes_002dclasses.html | 0 ...dto_002dc_002dteaching_002dguidelines.html | 0 {0.0.1 => 0.0.5}/html_split/index.html | 0 {0.0.1 => 0.0.5}/html_split/unknown_node.html | 0 latest/guidelines.epub | Bin 31523 -> 0 bytes latest/html/images/cpp_logo.png | Bin 23613 -> 0 bytes latest/html/index.html | 1430 ----------------- latest/html_split/Advanced.html | 60 - .../Background_002fRequired-Knowledge.html | 65 - .../Background_002frequired-knowledge.html | 54 - ...ments-and-Control_002dFlow-Constructs.html | 60 - latest/html_split/Building.html | 57 - ...002b_002b-object-model-copy-semantics.html | 69 - latest/html_split/Caveats.html | 62 - latest/html_split/Compilation-Model.html | 62 - .../Compile_002dTime-Computation.html | 57 - .../Context-and-Aim-of-This-Guide.html | 76 - .../Contributing-to-This-Document.html | 55 - latest/html_split/Contributors.html | 58 - ...ed-Information-for-Modules-and-Topics.html | 67 - latest/html_split/Disclaimer.html | 55 - latest/html_split/Error-Handling.html | 59 - .../Examples-of-Course-Curricula.html | 53 - .../External-ie-Non-Standard-Libraries.html | 56 - ...005fassert-with-a-constant-expression.html | 62 - ...dational-How-and-when-are-copies-made.html | 63 - .../html_split/Foundational-Using-UDLs.html | 61 - ...ning-functions-with-default-arguments.html | 62 - ...onal-Writing-requires_002dexpressions.html | 60 - .../Functions-default-argument.html | 67 - .../Functions-user_002ddefined-literals.html | 66 - latest/html_split/Functions.html | 61 - .../Generic-Programming-Templates.html | 61 - latest/html_split/Glossary.html | 58 - latest/html_split/How-To-Contribute.html | 89 - .../Inheritance-and-Class-Hierarchies.html | 57 - latest/html_split/License.html | 100 -- .../Main-Advanced-requirements.html | 60 - .../Main-Contracts-and-static_005fassert.html | 61 - ...ting-user_002ddefined-copy-operations.html | 62 - latest/html_split/Main-implementing-UDLs.html | 59 - .../html_split/Main-implementing-_002a.html | 62 - ..._002derror-handling-static_005fassert.html | 67 - .../Module-name-Requires-Expressions.html | 59 - latest/html_split/Motivation.html | 57 - ...-Recent-Version-and-Alternate-Formats.html | 84 - .../Organization-of-This-Document.html | 101 -- latest/html_split/Overview.html | 61 - latest/html_split/Points-to-cover.html | 69 - latest/html_split/Preprocessor.html | 58 - .../References-on-Learning-Outcomes.html | 71 - latest/html_split/References.html | 59 - latest/html_split/Software-Design.html | 56 - latest/html_split/Standard-Library.html | 57 - latest/html_split/Student-outcomes.html | 73 - .../Summary-of-Modules-and-Topics.html | 106 -- latest/html_split/Testing-and-Debugging.html | 59 - latest/html_split/Tooling.html | 57 - latest/html_split/Topic-introduction.html | 55 - latest/html_split/Use-of-This-Document.html | 58 - .../User_002dDefined-Types-Classes.html | 69 - ...ed-to-C_002b_002b-Teaching-Guidelines.html | 69 - latest/html_split/_0023advanced.html | 40 - latest/html_split/_0023advanced_002d1.html | 40 - latest/html_split/_0023advanced_002d2.html | 40 - latest/html_split/_0023advanced_002d3.html | 40 - ..._0023backgroundrequired_002dknowledge.html | 40 - ...ackgroundrequired_002dknowledge_002d1.html | 40 - ...ackgroundrequired_002dknowledge_002d2.html | 40 - ...ackgroundrequired_002dknowledge_002d3.html | 40 - ...ackgroundrequired_002dknowledge_002d4.html | 40 - ...ackgroundrequired_002dknowledge_002d5.html | 40 - ...ackgroundrequired_002dknowledge_002d6.html | 40 - ...ackgroundrequired_002dknowledge_002d7.html | 40 - ...ackgroundrequired_002dknowledge_002d8.html | 40 - ...ackgroundrequired_002dknowledge_002d9.html | 40 - ...d_002dcontrol_002dflow_002dconstructs.html | 40 - latest/html_split/_0023building.html | 40 - ...ject_002dmodel_002dcopy_002dsemantics.html | 40 - latest/html_split/_0023caveats.html | 40 - latest/html_split/_0023caveats_002d1.html | 40 - latest/html_split/_0023caveats_002d2.html | 40 - latest/html_split/_0023caveats_002d3.html | 40 - latest/html_split/_0023caveats_002d4.html | 40 - latest/html_split/_0023caveats_002d5.html | 40 - latest/html_split/_0023caveats_002d6.html | 40 - latest/html_split/_0023caveats_002d7.html | 40 - latest/html_split/_0023caveats_002d8.html | 40 - latest/html_split/_0023caveats_002d9.html | 40 - .../_0023compilation_002dmodel.html | 40 - ..._0023compile_002dtime_002dcomputation.html | 40 - ...and_002daim_002dof_002dthis_002dguide.html | 40 - ...ributing_002dto_002dthis_002ddocument.html | 40 - latest/html_split/_0023contributors.html | 40 - ...02dfor_002dmodules_002dand_002dtopics.html | 40 - latest/html_split/_0023disclaimer.html | 40 - .../html_split/_0023error_002dhandling.html | 40 - ...mples_002dof_002dcourse_002dcurricula.html | 40 - ...2e_002dnon_002dstandard_002dlibraries.html | 40 - ...ith_002da_002dconstant_002dexpression.html | 40 - ..._002dwhen_002dare_002dcopies_002dmade.html | 40 - ...ns_002dwith_002ddefault_002darguments.html | 40 - .../_0023foundational_002dusing_002dudls.html | 40 - ...dwriting_002drequires_002dexpressions.html | 40 - latest/html_split/_0023functions.html | 40 - ...023functions_002ddefault_002dargument.html | 40 - ...ons_002duser_002ddefined_002dliterals.html | 40 - ...generic_002dprogramming_002dtemplates.html | 40 - latest/html_split/_0023glossary.html | 40 - .../_0023how_002dto_002dcontribute.html | 40 - ...nce_002dand_002dclass_002dhierarchies.html | 40 - latest/html_split/_0023license.html | 40 - ...023main_002dadvanced_002drequirements.html | 40 - ...ntracts_002dand_002dstatic_005fassert.html | 40 - .../_0023main_002dimplementing.html | 40 - .../_0023main_002dimplementing_002dudls.html | 40 - ...r_002ddefined_002dcopy_002doperations.html | 40 - ...or_002dhandling_002dstatic_005fassert.html | 40 - ...002dname_002drequires_002dexpressions.html | 40 - latest/html_split/_0023motivation.html | 40 - latest/html_split/_0023motivation_002d1.html | 40 - latest/html_split/_0023motivation_002d2.html | 40 - latest/html_split/_0023motivation_002d3.html | 40 - latest/html_split/_0023motivation_002d4.html | 40 - ...ion_002dand_002dalternate_002dformats.html | 40 - ...nization_002dof_002dthis_002ddocument.html | 40 - latest/html_split/_0023overview.html | 40 - latest/html_split/_0023overview_002d1.html | 40 - latest/html_split/_0023overview_002d2.html | 40 - latest/html_split/_0023overview_002d3.html | 40 - latest/html_split/_0023overview_002d4.html | 40 - .../_0023points_002dto_002dcover.html | 40 - .../_0023points_002dto_002dcover_002d1.html | 40 - .../_0023points_002dto_002dcover_002d2.html | 40 - .../_0023points_002dto_002dcover_002d3.html | 40 - .../_0023points_002dto_002dcover_002d4.html | 40 - .../_0023points_002dto_002dcover_002d5.html | 40 - .../_0023points_002dto_002dcover_002d6.html | 40 - .../_0023points_002dto_002dcover_002d7.html | 40 - .../_0023points_002dto_002dcover_002d8.html | 40 - latest/html_split/_0023preprocessor.html | 40 - latest/html_split/_0023references.html | 40 - ...nces_002don_002dlearning_002doutcomes.html | 40 - .../html_split/_0023software_002ddesign.html | 40 - .../html_split/_0023standard_002dlibrary.html | 40 - .../html_split/_0023student_002doutcomes.html | 40 - .../_0023student_002doutcomes_002d1.html | 40 - .../_0023student_002doutcomes_002d2.html | 40 - .../_0023student_002doutcomes_002d3.html | 40 - .../_0023student_002doutcomes_002d4.html | 40 - .../_0023student_002doutcomes_002d5.html | 40 - .../_0023student_002doutcomes_002d6.html | 40 - .../_0023student_002doutcomes_002d7.html | 40 - .../_0023student_002doutcomes_002d8.html | 40 - .../_0023student_002doutcomes_002d9.html | 40 - ...002dof_002dmodules_002dand_002dtopics.html | 40 - .../_0023testing_002dand_002ddebugging.html | 40 - latest/html_split/_0023tooling.html | 40 - .../_0023topic_002dintroduction.html | 40 - .../_0023topic_002dintroduction_002d1.html | 40 - .../_0023topic_002dintroduction_002d2.html | 40 - .../_0023topic_002dintroduction_002d3.html | 40 - .../_0023topic_002dintroduction_002d4.html | 40 - ..._0023use_002dof_002dthis_002ddocument.html | 40 - ...ser_002ddefined_002dtypes_002dclasses.html | 40 - ...dto_002dc_002dteaching_002dguidelines.html | 40 - latest/html_split/index.html | 240 --- latest/html_split/unknown_node.html | 763 --------- latest/index.html | 8 +- 821 files changed, 14 insertions(+), 40548 deletions(-) delete mode 100644 0.0.1/guidelines.epub delete mode 100644 0.0.1/html/index.html delete mode 100644 0.0.1/html_split/Contributors.html delete mode 100644 0.0.1/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html delete mode 100644 0.0.2/guidelines.epub delete mode 100644 0.0.2/html/images/cpp_logo.png delete mode 100644 0.0.2/html_split/Advanced.html delete mode 100644 0.0.2/html_split/Background_002fRequired-Knowledge.html delete mode 100644 0.0.2/html_split/Background_002frequired-knowledge.html delete mode 100644 0.0.2/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html delete mode 100644 0.0.2/html_split/Building.html delete mode 100644 0.0.2/html_split/C_002b_002b-object-model-copy-semantics.html delete mode 100644 0.0.2/html_split/Caveats.html delete mode 100644 0.0.2/html_split/Compilation-Model.html delete mode 100644 0.0.2/html_split/Compile_002dTime-Computation.html delete mode 100644 0.0.2/html_split/Context-and-Aim-of-This-Guide.html delete mode 100644 0.0.2/html_split/Contributing-to-This-Document.html delete mode 100644 0.0.2/html_split/Detailed-Information-for-Modules-and-Topics.html delete mode 100644 0.0.2/html_split/Disclaimer.html delete mode 100644 0.0.2/html_split/Error-Handling.html delete mode 100644 0.0.2/html_split/Examples-of-Course-Curricula.html delete mode 100644 0.0.2/html_split/External-ie-Non-Standard-Libraries.html delete mode 100644 0.0.2/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html delete mode 100644 0.0.2/html_split/Foundational-How-and-when-are-copies-made.html delete mode 100644 0.0.2/html_split/Foundational-Using-UDLs.html delete mode 100644 0.0.2/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html delete mode 100644 0.0.2/html_split/Foundational-Writing-requires_002dexpressions.html delete mode 100644 0.0.2/html_split/Functions-default-argument.html delete mode 100644 0.0.2/html_split/Functions-user_002ddefined-literals.html delete mode 100644 0.0.2/html_split/Functions.html delete mode 100644 0.0.2/html_split/Generic-Programming-Templates.html delete mode 100644 0.0.2/html_split/Glossary.html delete mode 100644 0.0.2/html_split/How-To-Contribute.html delete mode 100644 0.0.2/html_split/Inheritance-and-Class-Hierarchies.html delete mode 100644 0.0.2/html_split/License.html delete mode 100644 0.0.2/html_split/Main-Advanced-requirements.html delete mode 100644 0.0.2/html_split/Main-Contracts-and-static_005fassert.html delete mode 100644 0.0.2/html_split/Main-Implementing-user_002ddefined-copy-operations.html delete mode 100644 0.0.2/html_split/Main-implementing-UDLs.html delete mode 100644 0.0.2/html_split/Main-implementing-_002a.html delete mode 100644 0.0.2/html_split/Meta_002derror-handling-static_005fassert.html delete mode 100644 0.0.2/html_split/Module-name-Requires-Expressions.html delete mode 100644 0.0.2/html_split/Motivation.html delete mode 100644 0.0.2/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html delete mode 100644 0.0.2/html_split/Organization-of-This-Document.html delete mode 100644 0.0.2/html_split/Overview.html delete mode 100644 0.0.2/html_split/Points-to-cover.html delete mode 100644 0.0.2/html_split/Preprocessor.html delete mode 100644 0.0.2/html_split/References-on-Learning-Outcomes.html delete mode 100644 0.0.2/html_split/References.html delete mode 100644 0.0.2/html_split/Software-Design.html delete mode 100644 0.0.2/html_split/Standard-Library.html delete mode 100644 0.0.2/html_split/Student-outcomes.html delete mode 100644 0.0.2/html_split/Summary-of-Modules-and-Topics.html delete mode 100644 0.0.2/html_split/Testing-and-Debugging.html delete mode 100644 0.0.2/html_split/Tooling.html delete mode 100644 0.0.2/html_split/Topic-introduction.html delete mode 100644 0.0.2/html_split/Use-of-This-Document.html delete mode 100644 0.0.2/html_split/User_002dDefined-Types-Classes.html delete mode 100644 0.0.2/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html delete mode 100644 0.0.2/html_split/_0023advanced.html delete mode 100644 0.0.2/html_split/_0023advanced_002d1.html delete mode 100644 0.0.2/html_split/_0023advanced_002d2.html delete mode 100644 0.0.2/html_split/_0023advanced_002d3.html delete mode 100644 0.0.2/html_split/_0023backgroundrequired_002dknowledge.html delete mode 100644 0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d1.html delete mode 100644 0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d2.html delete mode 100644 0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d3.html delete mode 100644 0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d4.html delete mode 100644 0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d5.html delete mode 100644 0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d6.html delete mode 100644 0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d7.html delete mode 100644 0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d8.html delete mode 100644 0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d9.html delete mode 100644 0.0.2/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html delete mode 100644 0.0.2/html_split/_0023building.html delete mode 100644 0.0.2/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html delete mode 100644 0.0.2/html_split/_0023caveats.html delete mode 100644 0.0.2/html_split/_0023caveats_002d1.html delete mode 100644 0.0.2/html_split/_0023caveats_002d2.html delete mode 100644 0.0.2/html_split/_0023caveats_002d3.html delete mode 100644 0.0.2/html_split/_0023caveats_002d4.html delete mode 100644 0.0.2/html_split/_0023caveats_002d5.html delete mode 100644 0.0.2/html_split/_0023caveats_002d6.html delete mode 100644 0.0.2/html_split/_0023caveats_002d7.html delete mode 100644 0.0.2/html_split/_0023caveats_002d8.html delete mode 100644 0.0.2/html_split/_0023caveats_002d9.html delete mode 100644 0.0.2/html_split/_0023compilation_002dmodel.html delete mode 100644 0.0.2/html_split/_0023compile_002dtime_002dcomputation.html delete mode 100644 0.0.2/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html delete mode 100644 0.0.2/html_split/_0023contributing_002dto_002dthis_002ddocument.html delete mode 100644 0.0.2/html_split/_0023contributors.html delete mode 100644 0.0.2/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html delete mode 100644 0.0.2/html_split/_0023disclaimer.html delete mode 100644 0.0.2/html_split/_0023error_002dhandling.html delete mode 100644 0.0.2/html_split/_0023examples_002dof_002dcourse_002dcurricula.html delete mode 100644 0.0.2/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html delete mode 100644 0.0.2/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html delete mode 100644 0.0.2/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html delete mode 100644 0.0.2/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html delete mode 100644 0.0.2/html_split/_0023foundational_002dusing_002dudls.html delete mode 100644 0.0.2/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html delete mode 100644 0.0.2/html_split/_0023functions.html delete mode 100644 0.0.2/html_split/_0023functions_002ddefault_002dargument.html delete mode 100644 0.0.2/html_split/_0023functions_002duser_002ddefined_002dliterals.html delete mode 100644 0.0.2/html_split/_0023generic_002dprogramming_002dtemplates.html delete mode 100644 0.0.2/html_split/_0023glossary.html delete mode 100644 0.0.2/html_split/_0023how_002dto_002dcontribute.html delete mode 100644 0.0.2/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html delete mode 100644 0.0.2/html_split/_0023license.html delete mode 100644 0.0.2/html_split/_0023main_002dadvanced_002drequirements.html delete mode 100644 0.0.2/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html delete mode 100644 0.0.2/html_split/_0023main_002dimplementing.html delete mode 100644 0.0.2/html_split/_0023main_002dimplementing_002dudls.html delete mode 100644 0.0.2/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html delete mode 100644 0.0.2/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html delete mode 100644 0.0.2/html_split/_0023module_002dname_002drequires_002dexpressions.html delete mode 100644 0.0.2/html_split/_0023motivation.html delete mode 100644 0.0.2/html_split/_0023motivation_002d1.html delete mode 100644 0.0.2/html_split/_0023motivation_002d2.html delete mode 100644 0.0.2/html_split/_0023motivation_002d3.html delete mode 100644 0.0.2/html_split/_0023motivation_002d4.html delete mode 100644 0.0.2/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html delete mode 100644 0.0.2/html_split/_0023organization_002dof_002dthis_002ddocument.html delete mode 100644 0.0.2/html_split/_0023overview.html delete mode 100644 0.0.2/html_split/_0023overview_002d1.html delete mode 100644 0.0.2/html_split/_0023overview_002d2.html delete mode 100644 0.0.2/html_split/_0023overview_002d3.html delete mode 100644 0.0.2/html_split/_0023overview_002d4.html delete mode 100644 0.0.2/html_split/_0023points_002dto_002dcover.html delete mode 100644 0.0.2/html_split/_0023points_002dto_002dcover_002d1.html delete mode 100644 0.0.2/html_split/_0023points_002dto_002dcover_002d2.html delete mode 100644 0.0.2/html_split/_0023points_002dto_002dcover_002d3.html delete mode 100644 0.0.2/html_split/_0023points_002dto_002dcover_002d4.html delete mode 100644 0.0.2/html_split/_0023points_002dto_002dcover_002d5.html delete mode 100644 0.0.2/html_split/_0023points_002dto_002dcover_002d6.html delete mode 100644 0.0.2/html_split/_0023points_002dto_002dcover_002d7.html delete mode 100644 0.0.2/html_split/_0023points_002dto_002dcover_002d8.html delete mode 100644 0.0.2/html_split/_0023preprocessor.html delete mode 100644 0.0.2/html_split/_0023references.html delete mode 100644 0.0.2/html_split/_0023references_002don_002dlearning_002doutcomes.html delete mode 100644 0.0.2/html_split/_0023software_002ddesign.html delete mode 100644 0.0.2/html_split/_0023standard_002dlibrary.html delete mode 100644 0.0.2/html_split/_0023student_002doutcomes.html delete mode 100644 0.0.2/html_split/_0023student_002doutcomes_002d1.html delete mode 100644 0.0.2/html_split/_0023student_002doutcomes_002d2.html delete mode 100644 0.0.2/html_split/_0023student_002doutcomes_002d3.html delete mode 100644 0.0.2/html_split/_0023student_002doutcomes_002d4.html delete mode 100644 0.0.2/html_split/_0023student_002doutcomes_002d5.html delete mode 100644 0.0.2/html_split/_0023student_002doutcomes_002d6.html delete mode 100644 0.0.2/html_split/_0023student_002doutcomes_002d7.html delete mode 100644 0.0.2/html_split/_0023student_002doutcomes_002d8.html delete mode 100644 0.0.2/html_split/_0023student_002doutcomes_002d9.html delete mode 100644 0.0.2/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html delete mode 100644 0.0.2/html_split/_0023testing_002dand_002ddebugging.html delete mode 100644 0.0.2/html_split/_0023tooling.html delete mode 100644 0.0.2/html_split/_0023topic_002dintroduction.html delete mode 100644 0.0.2/html_split/_0023topic_002dintroduction_002d1.html delete mode 100644 0.0.2/html_split/_0023topic_002dintroduction_002d2.html delete mode 100644 0.0.2/html_split/_0023topic_002dintroduction_002d3.html delete mode 100644 0.0.2/html_split/_0023topic_002dintroduction_002d4.html delete mode 100644 0.0.2/html_split/_0023use_002dof_002dthis_002ddocument.html delete mode 100644 0.0.2/html_split/_0023user_002ddefined_002dtypes_002dclasses.html delete mode 100644 0.0.2/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html delete mode 100644 0.0.2/html_split/index.html delete mode 100644 0.0.2/html_split/unknown_node.html delete mode 100644 0.0.3/html/images/cpp_logo.png delete mode 100644 0.0.3/html/index.html delete mode 100644 0.0.3/html_split/Advanced.html delete mode 100644 0.0.3/html_split/Background_002fRequired-Knowledge.html delete mode 100644 0.0.3/html_split/Background_002frequired-knowledge.html delete mode 100644 0.0.3/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html delete mode 100644 0.0.3/html_split/Building.html delete mode 100644 0.0.3/html_split/C_002b_002b-object-model-copy-semantics.html delete mode 100644 0.0.3/html_split/Caveats.html delete mode 100644 0.0.3/html_split/Compilation-Model.html delete mode 100644 0.0.3/html_split/Compile_002dTime-Computation.html delete mode 100644 0.0.3/html_split/Context-and-Aim-of-This-Guide.html delete mode 100644 0.0.3/html_split/Contributing-to-This-Document.html delete mode 100644 0.0.3/html_split/Contributors.html delete mode 100644 0.0.3/html_split/Detailed-Information-for-Modules-and-Topics.html delete mode 100644 0.0.3/html_split/Disclaimer.html delete mode 100644 0.0.3/html_split/Error-Handling.html delete mode 100644 0.0.3/html_split/Examples-of-Course-Curricula.html delete mode 100644 0.0.3/html_split/External-ie-Non-Standard-Libraries.html delete mode 100644 0.0.3/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html delete mode 100644 0.0.3/html_split/Foundational-How-and-when-are-copies-made.html delete mode 100644 0.0.3/html_split/Foundational-Using-UDLs.html delete mode 100644 0.0.3/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html delete mode 100644 0.0.3/html_split/Foundational-Writing-requires_002dexpressions.html delete mode 100644 0.0.3/html_split/Functions-default-argument.html delete mode 100644 0.0.3/html_split/Functions-user_002ddefined-literals.html delete mode 100644 0.0.3/html_split/Functions.html delete mode 100644 0.0.3/html_split/Generic-Programming-Templates.html delete mode 100644 0.0.3/html_split/Glossary.html delete mode 100644 0.0.3/html_split/How-To-Contribute.html delete mode 100644 0.0.3/html_split/Inheritance-and-Class-Hierarchies.html delete mode 100644 0.0.3/html_split/License.html delete mode 100644 0.0.3/html_split/Main-Advanced-requirements.html delete mode 100644 0.0.3/html_split/Main-Contracts-and-static_005fassert.html delete mode 100644 0.0.3/html_split/Main-Implementing-user_002ddefined-copy-operations.html delete mode 100644 0.0.3/html_split/Main-implementing-UDLs.html delete mode 100644 0.0.3/html_split/Main-implementing-_002a.html delete mode 100644 0.0.3/html_split/Meta_002derror-handling-static_005fassert.html delete mode 100644 0.0.3/html_split/Module-name-Requires-Expressions.html delete mode 100644 0.0.3/html_split/Motivation.html delete mode 100644 0.0.3/html_split/Organization-of-This-Document.html delete mode 100644 0.0.3/html_split/Overview.html delete mode 100644 0.0.3/html_split/Points-to-cover.html delete mode 100644 0.0.3/html_split/Preprocessor.html delete mode 100644 0.0.3/html_split/References-on-Learning-Outcomes.html delete mode 100644 0.0.3/html_split/References.html delete mode 100644 0.0.3/html_split/Software-Design.html delete mode 100644 0.0.3/html_split/Standard-Library.html delete mode 100644 0.0.3/html_split/Student-outcomes.html delete mode 100644 0.0.3/html_split/Summary-of-Modules-and-Topics.html delete mode 100644 0.0.3/html_split/Testing-and-Debugging.html delete mode 100644 0.0.3/html_split/Tooling.html delete mode 100644 0.0.3/html_split/Topic-introduction.html delete mode 100644 0.0.3/html_split/Use-of-This-Document.html delete mode 100644 0.0.3/html_split/User_002dDefined-Types-Classes.html delete mode 100644 0.0.3/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html delete mode 100644 0.0.3/html_split/_0023advanced.html delete mode 100644 0.0.3/html_split/_0023advanced_002d1.html delete mode 100644 0.0.3/html_split/_0023advanced_002d2.html delete mode 100644 0.0.3/html_split/_0023advanced_002d3.html delete mode 100644 0.0.3/html_split/_0023backgroundrequired_002dknowledge.html delete mode 100644 0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d1.html delete mode 100644 0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d2.html delete mode 100644 0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d3.html delete mode 100644 0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d4.html delete mode 100644 0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d5.html delete mode 100644 0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d6.html delete mode 100644 0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d7.html delete mode 100644 0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d8.html delete mode 100644 0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d9.html delete mode 100644 0.0.3/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html delete mode 100644 0.0.3/html_split/_0023building.html delete mode 100644 0.0.3/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html delete mode 100644 0.0.3/html_split/_0023caveats.html delete mode 100644 0.0.3/html_split/_0023caveats_002d1.html delete mode 100644 0.0.3/html_split/_0023caveats_002d2.html delete mode 100644 0.0.3/html_split/_0023caveats_002d3.html delete mode 100644 0.0.3/html_split/_0023caveats_002d4.html delete mode 100644 0.0.3/html_split/_0023caveats_002d5.html delete mode 100644 0.0.3/html_split/_0023caveats_002d6.html delete mode 100644 0.0.3/html_split/_0023caveats_002d7.html delete mode 100644 0.0.3/html_split/_0023caveats_002d8.html delete mode 100644 0.0.3/html_split/_0023caveats_002d9.html delete mode 100644 0.0.3/html_split/_0023compilation_002dmodel.html delete mode 100644 0.0.3/html_split/_0023compile_002dtime_002dcomputation.html delete mode 100644 0.0.3/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html delete mode 100644 0.0.3/html_split/_0023contributing_002dto_002dthis_002ddocument.html delete mode 100644 0.0.3/html_split/_0023contributors.html delete mode 100644 0.0.3/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html delete mode 100644 0.0.3/html_split/_0023disclaimer.html delete mode 100644 0.0.3/html_split/_0023error_002dhandling.html delete mode 100644 0.0.3/html_split/_0023examples_002dof_002dcourse_002dcurricula.html delete mode 100644 0.0.3/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html delete mode 100644 0.0.3/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html delete mode 100644 0.0.3/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html delete mode 100644 0.0.3/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html delete mode 100644 0.0.3/html_split/_0023foundational_002dusing_002dudls.html delete mode 100644 0.0.3/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html delete mode 100644 0.0.3/html_split/_0023functions.html delete mode 100644 0.0.3/html_split/_0023functions_002ddefault_002dargument.html delete mode 100644 0.0.3/html_split/_0023functions_002duser_002ddefined_002dliterals.html delete mode 100644 0.0.3/html_split/_0023generic_002dprogramming_002dtemplates.html delete mode 100644 0.0.3/html_split/_0023glossary.html delete mode 100644 0.0.3/html_split/_0023how_002dto_002dcontribute.html delete mode 100644 0.0.3/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html delete mode 100644 0.0.3/html_split/_0023license.html delete mode 100644 0.0.3/html_split/_0023main_002dadvanced_002drequirements.html delete mode 100644 0.0.3/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html delete mode 100644 0.0.3/html_split/_0023main_002dimplementing.html delete mode 100644 0.0.3/html_split/_0023main_002dimplementing_002dudls.html delete mode 100644 0.0.3/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html delete mode 100644 0.0.3/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html delete mode 100644 0.0.3/html_split/_0023module_002dname_002drequires_002dexpressions.html delete mode 100644 0.0.3/html_split/_0023motivation.html delete mode 100644 0.0.3/html_split/_0023motivation_002d1.html delete mode 100644 0.0.3/html_split/_0023motivation_002d2.html delete mode 100644 0.0.3/html_split/_0023motivation_002d3.html delete mode 100644 0.0.3/html_split/_0023motivation_002d4.html delete mode 100644 0.0.3/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html delete mode 100644 0.0.3/html_split/_0023organization_002dof_002dthis_002ddocument.html delete mode 100644 0.0.3/html_split/_0023overview.html delete mode 100644 0.0.3/html_split/_0023overview_002d1.html delete mode 100644 0.0.3/html_split/_0023overview_002d2.html delete mode 100644 0.0.3/html_split/_0023overview_002d3.html delete mode 100644 0.0.3/html_split/_0023overview_002d4.html delete mode 100644 0.0.3/html_split/_0023points_002dto_002dcover.html delete mode 100644 0.0.3/html_split/_0023points_002dto_002dcover_002d1.html delete mode 100644 0.0.3/html_split/_0023points_002dto_002dcover_002d2.html delete mode 100644 0.0.3/html_split/_0023points_002dto_002dcover_002d3.html delete mode 100644 0.0.3/html_split/_0023points_002dto_002dcover_002d4.html delete mode 100644 0.0.3/html_split/_0023points_002dto_002dcover_002d5.html delete mode 100644 0.0.3/html_split/_0023points_002dto_002dcover_002d6.html delete mode 100644 0.0.3/html_split/_0023points_002dto_002dcover_002d7.html delete mode 100644 0.0.3/html_split/_0023points_002dto_002dcover_002d8.html delete mode 100644 0.0.3/html_split/_0023preprocessor.html delete mode 100644 0.0.3/html_split/_0023references.html delete mode 100644 0.0.3/html_split/_0023references_002don_002dlearning_002doutcomes.html delete mode 100644 0.0.3/html_split/_0023software_002ddesign.html delete mode 100644 0.0.3/html_split/_0023standard_002dlibrary.html delete mode 100644 0.0.3/html_split/_0023student_002doutcomes.html delete mode 100644 0.0.3/html_split/_0023student_002doutcomes_002d1.html delete mode 100644 0.0.3/html_split/_0023student_002doutcomes_002d2.html delete mode 100644 0.0.3/html_split/_0023student_002doutcomes_002d3.html delete mode 100644 0.0.3/html_split/_0023student_002doutcomes_002d4.html delete mode 100644 0.0.3/html_split/_0023student_002doutcomes_002d5.html delete mode 100644 0.0.3/html_split/_0023student_002doutcomes_002d6.html delete mode 100644 0.0.3/html_split/_0023student_002doutcomes_002d7.html delete mode 100644 0.0.3/html_split/_0023student_002doutcomes_002d8.html delete mode 100644 0.0.3/html_split/_0023student_002doutcomes_002d9.html delete mode 100644 0.0.3/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html delete mode 100644 0.0.3/html_split/_0023testing_002dand_002ddebugging.html delete mode 100644 0.0.3/html_split/_0023tooling.html delete mode 100644 0.0.3/html_split/_0023topic_002dintroduction.html delete mode 100644 0.0.3/html_split/_0023topic_002dintroduction_002d1.html delete mode 100644 0.0.3/html_split/_0023topic_002dintroduction_002d2.html delete mode 100644 0.0.3/html_split/_0023topic_002dintroduction_002d3.html delete mode 100644 0.0.3/html_split/_0023topic_002dintroduction_002d4.html delete mode 100644 0.0.3/html_split/_0023use_002dof_002dthis_002ddocument.html delete mode 100644 0.0.3/html_split/_0023user_002ddefined_002dtypes_002dclasses.html delete mode 100644 0.0.3/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html delete mode 100644 0.0.3/html_split/index.html delete mode 100644 0.0.3/html_split/unknown_node.html delete mode 100644 0.0.4/guidelines.epub delete mode 100644 0.0.4/html/images/cpp_logo.png delete mode 100644 0.0.4/html/index.html delete mode 100644 0.0.4/html_split/Advanced.html delete mode 100644 0.0.4/html_split/Background_002fRequired-Knowledge.html delete mode 100644 0.0.4/html_split/Background_002frequired-knowledge.html delete mode 100644 0.0.4/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html delete mode 100644 0.0.4/html_split/Building.html delete mode 100644 0.0.4/html_split/C_002b_002b-object-model-copy-semantics.html delete mode 100644 0.0.4/html_split/Caveats.html delete mode 100644 0.0.4/html_split/Compilation-Model.html delete mode 100644 0.0.4/html_split/Compile_002dTime-Computation.html delete mode 100644 0.0.4/html_split/Context-and-Aim-of-This-Guide.html delete mode 100644 0.0.4/html_split/Contributing-to-This-Document.html delete mode 100644 0.0.4/html_split/Contributors.html delete mode 100644 0.0.4/html_split/Detailed-Information-for-Modules-and-Topics.html delete mode 100644 0.0.4/html_split/Disclaimer.html delete mode 100644 0.0.4/html_split/Error-Handling.html delete mode 100644 0.0.4/html_split/Examples-of-Course-Curricula.html delete mode 100644 0.0.4/html_split/External-ie-Non-Standard-Libraries.html delete mode 100644 0.0.4/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html delete mode 100644 0.0.4/html_split/Foundational-How-and-when-are-copies-made.html delete mode 100644 0.0.4/html_split/Foundational-Using-UDLs.html delete mode 100644 0.0.4/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html delete mode 100644 0.0.4/html_split/Foundational-Writing-requires_002dexpressions.html delete mode 100644 0.0.4/html_split/Functions-default-argument.html delete mode 100644 0.0.4/html_split/Functions-user_002ddefined-literals.html delete mode 100644 0.0.4/html_split/Functions.html delete mode 100644 0.0.4/html_split/Generic-Programming-Templates.html delete mode 100644 0.0.4/html_split/Glossary.html delete mode 100644 0.0.4/html_split/How-To-Contribute.html delete mode 100644 0.0.4/html_split/Inheritance-and-Class-Hierarchies.html delete mode 100644 0.0.4/html_split/License.html delete mode 100644 0.0.4/html_split/Main-Advanced-requirements.html delete mode 100644 0.0.4/html_split/Main-Contracts-and-static_005fassert.html delete mode 100644 0.0.4/html_split/Main-Implementing-user_002ddefined-copy-operations.html delete mode 100644 0.0.4/html_split/Main-implementing-UDLs.html delete mode 100644 0.0.4/html_split/Main-implementing-_002a.html delete mode 100644 0.0.4/html_split/Meta_002derror-handling-static_005fassert.html delete mode 100644 0.0.4/html_split/Module-name-Requires-Expressions.html delete mode 100644 0.0.4/html_split/Motivation.html delete mode 100644 0.0.4/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html delete mode 100644 0.0.4/html_split/Organization-of-This-Document.html delete mode 100644 0.0.4/html_split/Overview.html delete mode 100644 0.0.4/html_split/Points-to-cover.html delete mode 100644 0.0.4/html_split/Preprocessor.html delete mode 100644 0.0.4/html_split/References-on-Learning-Outcomes.html delete mode 100644 0.0.4/html_split/References.html delete mode 100644 0.0.4/html_split/Software-Design.html delete mode 100644 0.0.4/html_split/Standard-Library.html delete mode 100644 0.0.4/html_split/Student-outcomes.html delete mode 100644 0.0.4/html_split/Summary-of-Modules-and-Topics.html delete mode 100644 0.0.4/html_split/Testing-and-Debugging.html delete mode 100644 0.0.4/html_split/Tooling.html delete mode 100644 0.0.4/html_split/Topic-introduction.html delete mode 100644 0.0.4/html_split/Use-of-This-Document.html delete mode 100644 0.0.4/html_split/User_002dDefined-Types-Classes.html delete mode 100644 0.0.4/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html delete mode 100644 0.0.4/html_split/_0023advanced.html delete mode 100644 0.0.4/html_split/_0023advanced_002d1.html delete mode 100644 0.0.4/html_split/_0023advanced_002d2.html delete mode 100644 0.0.4/html_split/_0023advanced_002d3.html delete mode 100644 0.0.4/html_split/_0023backgroundrequired_002dknowledge.html delete mode 100644 0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d1.html delete mode 100644 0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d2.html delete mode 100644 0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d3.html delete mode 100644 0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d4.html delete mode 100644 0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d5.html delete mode 100644 0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d6.html delete mode 100644 0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d7.html delete mode 100644 0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d8.html delete mode 100644 0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d9.html delete mode 100644 0.0.4/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html delete mode 100644 0.0.4/html_split/_0023building.html delete mode 100644 0.0.4/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html delete mode 100644 0.0.4/html_split/_0023caveats.html delete mode 100644 0.0.4/html_split/_0023caveats_002d1.html delete mode 100644 0.0.4/html_split/_0023caveats_002d2.html delete mode 100644 0.0.4/html_split/_0023caveats_002d3.html delete mode 100644 0.0.4/html_split/_0023caveats_002d4.html delete mode 100644 0.0.4/html_split/_0023caveats_002d5.html delete mode 100644 0.0.4/html_split/_0023caveats_002d6.html delete mode 100644 0.0.4/html_split/_0023caveats_002d7.html delete mode 100644 0.0.4/html_split/_0023caveats_002d8.html delete mode 100644 0.0.4/html_split/_0023caveats_002d9.html delete mode 100644 0.0.4/html_split/_0023compilation_002dmodel.html delete mode 100644 0.0.4/html_split/_0023compile_002dtime_002dcomputation.html delete mode 100644 0.0.4/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html delete mode 100644 0.0.4/html_split/_0023contributing_002dto_002dthis_002ddocument.html delete mode 100644 0.0.4/html_split/_0023contributors.html delete mode 100644 0.0.4/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html delete mode 100644 0.0.4/html_split/_0023disclaimer.html delete mode 100644 0.0.4/html_split/_0023error_002dhandling.html delete mode 100644 0.0.4/html_split/_0023examples_002dof_002dcourse_002dcurricula.html delete mode 100644 0.0.4/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html delete mode 100644 0.0.4/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html delete mode 100644 0.0.4/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html delete mode 100644 0.0.4/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html delete mode 100644 0.0.4/html_split/_0023foundational_002dusing_002dudls.html delete mode 100644 0.0.4/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html delete mode 100644 0.0.4/html_split/_0023functions.html delete mode 100644 0.0.4/html_split/_0023functions_002ddefault_002dargument.html delete mode 100644 0.0.4/html_split/_0023functions_002duser_002ddefined_002dliterals.html delete mode 100644 0.0.4/html_split/_0023generic_002dprogramming_002dtemplates.html delete mode 100644 0.0.4/html_split/_0023glossary.html delete mode 100644 0.0.4/html_split/_0023how_002dto_002dcontribute.html delete mode 100644 0.0.4/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html delete mode 100644 0.0.4/html_split/_0023license.html delete mode 100644 0.0.4/html_split/_0023main_002dadvanced_002drequirements.html delete mode 100644 0.0.4/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html delete mode 100644 0.0.4/html_split/_0023main_002dimplementing.html delete mode 100644 0.0.4/html_split/_0023main_002dimplementing_002dudls.html delete mode 100644 0.0.4/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html delete mode 100644 0.0.4/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html delete mode 100644 0.0.4/html_split/_0023module_002dname_002drequires_002dexpressions.html delete mode 100644 0.0.4/html_split/_0023motivation.html delete mode 100644 0.0.4/html_split/_0023motivation_002d1.html delete mode 100644 0.0.4/html_split/_0023motivation_002d2.html delete mode 100644 0.0.4/html_split/_0023motivation_002d3.html delete mode 100644 0.0.4/html_split/_0023motivation_002d4.html delete mode 100644 0.0.4/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html delete mode 100644 0.0.4/html_split/_0023organization_002dof_002dthis_002ddocument.html delete mode 100644 0.0.4/html_split/_0023overview.html delete mode 100644 0.0.4/html_split/_0023overview_002d1.html delete mode 100644 0.0.4/html_split/_0023overview_002d2.html delete mode 100644 0.0.4/html_split/_0023overview_002d3.html delete mode 100644 0.0.4/html_split/_0023overview_002d4.html delete mode 100644 0.0.4/html_split/_0023points_002dto_002dcover.html delete mode 100644 0.0.4/html_split/_0023points_002dto_002dcover_002d1.html delete mode 100644 0.0.4/html_split/_0023points_002dto_002dcover_002d2.html delete mode 100644 0.0.4/html_split/_0023points_002dto_002dcover_002d3.html delete mode 100644 0.0.4/html_split/_0023points_002dto_002dcover_002d4.html delete mode 100644 0.0.4/html_split/_0023points_002dto_002dcover_002d5.html delete mode 100644 0.0.4/html_split/_0023points_002dto_002dcover_002d6.html delete mode 100644 0.0.4/html_split/_0023points_002dto_002dcover_002d7.html delete mode 100644 0.0.4/html_split/_0023points_002dto_002dcover_002d8.html delete mode 100644 0.0.4/html_split/_0023preprocessor.html delete mode 100644 0.0.4/html_split/_0023references.html delete mode 100644 0.0.4/html_split/_0023references_002don_002dlearning_002doutcomes.html delete mode 100644 0.0.4/html_split/_0023software_002ddesign.html delete mode 100644 0.0.4/html_split/_0023standard_002dlibrary.html delete mode 100644 0.0.4/html_split/_0023student_002doutcomes.html delete mode 100644 0.0.4/html_split/_0023student_002doutcomes_002d1.html delete mode 100644 0.0.4/html_split/_0023student_002doutcomes_002d2.html delete mode 100644 0.0.4/html_split/_0023student_002doutcomes_002d3.html delete mode 100644 0.0.4/html_split/_0023student_002doutcomes_002d4.html delete mode 100644 0.0.4/html_split/_0023student_002doutcomes_002d5.html delete mode 100644 0.0.4/html_split/_0023student_002doutcomes_002d6.html delete mode 100644 0.0.4/html_split/_0023student_002doutcomes_002d7.html delete mode 100644 0.0.4/html_split/_0023student_002doutcomes_002d8.html delete mode 100644 0.0.4/html_split/_0023student_002doutcomes_002d9.html delete mode 100644 0.0.4/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html delete mode 100644 0.0.4/html_split/_0023testing_002dand_002ddebugging.html delete mode 100644 0.0.4/html_split/_0023tooling.html delete mode 100644 0.0.4/html_split/_0023topic_002dintroduction.html delete mode 100644 0.0.4/html_split/_0023topic_002dintroduction_002d1.html delete mode 100644 0.0.4/html_split/_0023topic_002dintroduction_002d2.html delete mode 100644 0.0.4/html_split/_0023topic_002dintroduction_002d3.html delete mode 100644 0.0.4/html_split/_0023topic_002dintroduction_002d4.html delete mode 100644 0.0.4/html_split/_0023use_002dof_002dthis_002ddocument.html delete mode 100644 0.0.4/html_split/_0023user_002ddefined_002dtypes_002dclasses.html delete mode 100644 0.0.4/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html delete mode 100644 0.0.4/html_split/index.html delete mode 100644 0.0.4/html_split/unknown_node.html rename {0.0.3 => 0.0.5}/guidelines.epub (80%) rename {0.0.1 => 0.0.5}/html/images/cpp_logo.png (100%) rename {0.0.2 => 0.0.5}/html/index.html (99%) rename {0.0.1 => 0.0.5}/html_split/Advanced.html (100%) rename {0.0.1 => 0.0.5}/html_split/Background_002fRequired-Knowledge.html (100%) rename {0.0.1 => 0.0.5}/html_split/Background_002frequired-knowledge.html (100%) rename {0.0.1 => 0.0.5}/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html (100%) rename {0.0.1 => 0.0.5}/html_split/Building.html (100%) rename {0.0.1 => 0.0.5}/html_split/C_002b_002b-object-model-copy-semantics.html (100%) rename {0.0.1 => 0.0.5}/html_split/Caveats.html (100%) rename {0.0.1 => 0.0.5}/html_split/Compilation-Model.html (100%) rename {0.0.1 => 0.0.5}/html_split/Compile_002dTime-Computation.html (100%) rename {0.0.1 => 0.0.5}/html_split/Context-and-Aim-of-This-Guide.html (100%) rename {0.0.1 => 0.0.5}/html_split/Contributing-to-This-Document.html (100%) rename {0.0.2 => 0.0.5}/html_split/Contributors.html (100%) rename {0.0.1 => 0.0.5}/html_split/Detailed-Information-for-Modules-and-Topics.html (100%) rename {0.0.1 => 0.0.5}/html_split/Disclaimer.html (100%) rename {0.0.1 => 0.0.5}/html_split/Error-Handling.html (100%) rename {0.0.1 => 0.0.5}/html_split/Examples-of-Course-Curricula.html (100%) rename {0.0.1 => 0.0.5}/html_split/External-ie-Non-Standard-Libraries.html (100%) rename {0.0.1 => 0.0.5}/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html (100%) rename {0.0.1 => 0.0.5}/html_split/Foundational-How-and-when-are-copies-made.html (100%) rename {0.0.1 => 0.0.5}/html_split/Foundational-Using-UDLs.html (100%) rename {0.0.1 => 0.0.5}/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html (100%) rename {0.0.1 => 0.0.5}/html_split/Foundational-Writing-requires_002dexpressions.html (100%) rename {0.0.1 => 0.0.5}/html_split/Functions-default-argument.html (100%) rename {0.0.1 => 0.0.5}/html_split/Functions-user_002ddefined-literals.html (100%) rename {0.0.1 => 0.0.5}/html_split/Functions.html (100%) rename {0.0.1 => 0.0.5}/html_split/Generic-Programming-Templates.html (100%) rename {0.0.1 => 0.0.5}/html_split/Glossary.html (100%) rename {0.0.1 => 0.0.5}/html_split/How-To-Contribute.html (100%) rename {0.0.1 => 0.0.5}/html_split/Inheritance-and-Class-Hierarchies.html (100%) rename {0.0.1 => 0.0.5}/html_split/License.html (100%) rename {0.0.1 => 0.0.5}/html_split/Main-Advanced-requirements.html (100%) rename {0.0.1 => 0.0.5}/html_split/Main-Contracts-and-static_005fassert.html (100%) rename {0.0.1 => 0.0.5}/html_split/Main-Implementing-user_002ddefined-copy-operations.html (100%) rename {0.0.1 => 0.0.5}/html_split/Main-implementing-UDLs.html (100%) rename {0.0.1 => 0.0.5}/html_split/Main-implementing-_002a.html (100%) rename {0.0.1 => 0.0.5}/html_split/Meta_002derror-handling-static_005fassert.html (100%) rename {0.0.1 => 0.0.5}/html_split/Module-name-Requires-Expressions.html (100%) rename {0.0.1 => 0.0.5}/html_split/Motivation.html (100%) rename {0.0.3 => 0.0.5}/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html (84%) rename {0.0.1 => 0.0.5}/html_split/Organization-of-This-Document.html (100%) rename {0.0.1 => 0.0.5}/html_split/Overview.html (100%) rename {0.0.1 => 0.0.5}/html_split/Points-to-cover.html (100%) rename {0.0.1 => 0.0.5}/html_split/Preprocessor.html (100%) rename {0.0.1 => 0.0.5}/html_split/References-on-Learning-Outcomes.html (100%) rename {0.0.1 => 0.0.5}/html_split/References.html (100%) rename {0.0.1 => 0.0.5}/html_split/Software-Design.html (100%) rename {0.0.1 => 0.0.5}/html_split/Standard-Library.html (100%) rename {0.0.1 => 0.0.5}/html_split/Student-outcomes.html (100%) rename {0.0.1 => 0.0.5}/html_split/Summary-of-Modules-and-Topics.html (100%) rename {0.0.1 => 0.0.5}/html_split/Testing-and-Debugging.html (100%) rename {0.0.1 => 0.0.5}/html_split/Tooling.html (100%) rename {0.0.1 => 0.0.5}/html_split/Topic-introduction.html (100%) rename {0.0.1 => 0.0.5}/html_split/Use-of-This-Document.html (100%) rename {0.0.1 => 0.0.5}/html_split/User_002dDefined-Types-Classes.html (100%) rename {0.0.1 => 0.0.5}/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023advanced.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023advanced_002d1.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023advanced_002d2.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023advanced_002d3.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023backgroundrequired_002dknowledge.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023backgroundrequired_002dknowledge_002d1.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023backgroundrequired_002dknowledge_002d2.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023backgroundrequired_002dknowledge_002d3.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023backgroundrequired_002dknowledge_002d4.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023backgroundrequired_002dknowledge_002d5.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023backgroundrequired_002dknowledge_002d6.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023backgroundrequired_002dknowledge_002d7.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023backgroundrequired_002dknowledge_002d8.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023backgroundrequired_002dknowledge_002d9.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023building.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023caveats.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023caveats_002d1.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023caveats_002d2.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023caveats_002d3.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023caveats_002d4.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023caveats_002d5.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023caveats_002d6.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023caveats_002d7.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023caveats_002d8.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023caveats_002d9.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023compilation_002dmodel.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023compile_002dtime_002dcomputation.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023contributing_002dto_002dthis_002ddocument.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023contributors.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023disclaimer.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023error_002dhandling.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023examples_002dof_002dcourse_002dcurricula.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023foundational_002dusing_002dudls.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023functions.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023functions_002ddefault_002dargument.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023functions_002duser_002ddefined_002dliterals.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023generic_002dprogramming_002dtemplates.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023glossary.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023how_002dto_002dcontribute.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023license.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023main_002dadvanced_002drequirements.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023main_002dimplementing.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023main_002dimplementing_002dudls.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023module_002dname_002drequires_002dexpressions.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023motivation.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023motivation_002d1.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023motivation_002d2.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023motivation_002d3.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023motivation_002d4.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023organization_002dof_002dthis_002ddocument.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023overview.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023overview_002d1.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023overview_002d2.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023overview_002d3.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023overview_002d4.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023points_002dto_002dcover.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023points_002dto_002dcover_002d1.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023points_002dto_002dcover_002d2.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023points_002dto_002dcover_002d3.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023points_002dto_002dcover_002d4.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023points_002dto_002dcover_002d5.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023points_002dto_002dcover_002d6.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023points_002dto_002dcover_002d7.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023points_002dto_002dcover_002d8.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023preprocessor.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023references.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023references_002don_002dlearning_002doutcomes.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023software_002ddesign.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023standard_002dlibrary.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023student_002doutcomes.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023student_002doutcomes_002d1.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023student_002doutcomes_002d2.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023student_002doutcomes_002d3.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023student_002doutcomes_002d4.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023student_002doutcomes_002d5.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023student_002doutcomes_002d6.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023student_002doutcomes_002d7.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023student_002doutcomes_002d8.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023student_002doutcomes_002d9.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023testing_002dand_002ddebugging.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023tooling.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023topic_002dintroduction.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023topic_002dintroduction_002d1.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023topic_002dintroduction_002d2.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023topic_002dintroduction_002d3.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023topic_002dintroduction_002d4.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023use_002dof_002dthis_002ddocument.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023user_002ddefined_002dtypes_002dclasses.html (100%) rename {0.0.1 => 0.0.5}/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html (100%) rename {0.0.1 => 0.0.5}/html_split/index.html (100%) rename {0.0.1 => 0.0.5}/html_split/unknown_node.html (100%) delete mode 100644 latest/guidelines.epub delete mode 100644 latest/html/images/cpp_logo.png delete mode 100644 latest/html/index.html delete mode 100644 latest/html_split/Advanced.html delete mode 100644 latest/html_split/Background_002fRequired-Knowledge.html delete mode 100644 latest/html_split/Background_002frequired-knowledge.html delete mode 100644 latest/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html delete mode 100644 latest/html_split/Building.html delete mode 100644 latest/html_split/C_002b_002b-object-model-copy-semantics.html delete mode 100644 latest/html_split/Caveats.html delete mode 100644 latest/html_split/Compilation-Model.html delete mode 100644 latest/html_split/Compile_002dTime-Computation.html delete mode 100644 latest/html_split/Context-and-Aim-of-This-Guide.html delete mode 100644 latest/html_split/Contributing-to-This-Document.html delete mode 100644 latest/html_split/Contributors.html delete mode 100644 latest/html_split/Detailed-Information-for-Modules-and-Topics.html delete mode 100644 latest/html_split/Disclaimer.html delete mode 100644 latest/html_split/Error-Handling.html delete mode 100644 latest/html_split/Examples-of-Course-Curricula.html delete mode 100644 latest/html_split/External-ie-Non-Standard-Libraries.html delete mode 100644 latest/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html delete mode 100644 latest/html_split/Foundational-How-and-when-are-copies-made.html delete mode 100644 latest/html_split/Foundational-Using-UDLs.html delete mode 100644 latest/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html delete mode 100644 latest/html_split/Foundational-Writing-requires_002dexpressions.html delete mode 100644 latest/html_split/Functions-default-argument.html delete mode 100644 latest/html_split/Functions-user_002ddefined-literals.html delete mode 100644 latest/html_split/Functions.html delete mode 100644 latest/html_split/Generic-Programming-Templates.html delete mode 100644 latest/html_split/Glossary.html delete mode 100644 latest/html_split/How-To-Contribute.html delete mode 100644 latest/html_split/Inheritance-and-Class-Hierarchies.html delete mode 100644 latest/html_split/License.html delete mode 100644 latest/html_split/Main-Advanced-requirements.html delete mode 100644 latest/html_split/Main-Contracts-and-static_005fassert.html delete mode 100644 latest/html_split/Main-Implementing-user_002ddefined-copy-operations.html delete mode 100644 latest/html_split/Main-implementing-UDLs.html delete mode 100644 latest/html_split/Main-implementing-_002a.html delete mode 100644 latest/html_split/Meta_002derror-handling-static_005fassert.html delete mode 100644 latest/html_split/Module-name-Requires-Expressions.html delete mode 100644 latest/html_split/Motivation.html delete mode 100644 latest/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html delete mode 100644 latest/html_split/Organization-of-This-Document.html delete mode 100644 latest/html_split/Overview.html delete mode 100644 latest/html_split/Points-to-cover.html delete mode 100644 latest/html_split/Preprocessor.html delete mode 100644 latest/html_split/References-on-Learning-Outcomes.html delete mode 100644 latest/html_split/References.html delete mode 100644 latest/html_split/Software-Design.html delete mode 100644 latest/html_split/Standard-Library.html delete mode 100644 latest/html_split/Student-outcomes.html delete mode 100644 latest/html_split/Summary-of-Modules-and-Topics.html delete mode 100644 latest/html_split/Testing-and-Debugging.html delete mode 100644 latest/html_split/Tooling.html delete mode 100644 latest/html_split/Topic-introduction.html delete mode 100644 latest/html_split/Use-of-This-Document.html delete mode 100644 latest/html_split/User_002dDefined-Types-Classes.html delete mode 100644 latest/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html delete mode 100644 latest/html_split/_0023advanced.html delete mode 100644 latest/html_split/_0023advanced_002d1.html delete mode 100644 latest/html_split/_0023advanced_002d2.html delete mode 100644 latest/html_split/_0023advanced_002d3.html delete mode 100644 latest/html_split/_0023backgroundrequired_002dknowledge.html delete mode 100644 latest/html_split/_0023backgroundrequired_002dknowledge_002d1.html delete mode 100644 latest/html_split/_0023backgroundrequired_002dknowledge_002d2.html delete mode 100644 latest/html_split/_0023backgroundrequired_002dknowledge_002d3.html delete mode 100644 latest/html_split/_0023backgroundrequired_002dknowledge_002d4.html delete mode 100644 latest/html_split/_0023backgroundrequired_002dknowledge_002d5.html delete mode 100644 latest/html_split/_0023backgroundrequired_002dknowledge_002d6.html delete mode 100644 latest/html_split/_0023backgroundrequired_002dknowledge_002d7.html delete mode 100644 latest/html_split/_0023backgroundrequired_002dknowledge_002d8.html delete mode 100644 latest/html_split/_0023backgroundrequired_002dknowledge_002d9.html delete mode 100644 latest/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html delete mode 100644 latest/html_split/_0023building.html delete mode 100644 latest/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html delete mode 100644 latest/html_split/_0023caveats.html delete mode 100644 latest/html_split/_0023caveats_002d1.html delete mode 100644 latest/html_split/_0023caveats_002d2.html delete mode 100644 latest/html_split/_0023caveats_002d3.html delete mode 100644 latest/html_split/_0023caveats_002d4.html delete mode 100644 latest/html_split/_0023caveats_002d5.html delete mode 100644 latest/html_split/_0023caveats_002d6.html delete mode 100644 latest/html_split/_0023caveats_002d7.html delete mode 100644 latest/html_split/_0023caveats_002d8.html delete mode 100644 latest/html_split/_0023caveats_002d9.html delete mode 100644 latest/html_split/_0023compilation_002dmodel.html delete mode 100644 latest/html_split/_0023compile_002dtime_002dcomputation.html delete mode 100644 latest/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html delete mode 100644 latest/html_split/_0023contributing_002dto_002dthis_002ddocument.html delete mode 100644 latest/html_split/_0023contributors.html delete mode 100644 latest/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html delete mode 100644 latest/html_split/_0023disclaimer.html delete mode 100644 latest/html_split/_0023error_002dhandling.html delete mode 100644 latest/html_split/_0023examples_002dof_002dcourse_002dcurricula.html delete mode 100644 latest/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html delete mode 100644 latest/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html delete mode 100644 latest/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html delete mode 100644 latest/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html delete mode 100644 latest/html_split/_0023foundational_002dusing_002dudls.html delete mode 100644 latest/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html delete mode 100644 latest/html_split/_0023functions.html delete mode 100644 latest/html_split/_0023functions_002ddefault_002dargument.html delete mode 100644 latest/html_split/_0023functions_002duser_002ddefined_002dliterals.html delete mode 100644 latest/html_split/_0023generic_002dprogramming_002dtemplates.html delete mode 100644 latest/html_split/_0023glossary.html delete mode 100644 latest/html_split/_0023how_002dto_002dcontribute.html delete mode 100644 latest/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html delete mode 100644 latest/html_split/_0023license.html delete mode 100644 latest/html_split/_0023main_002dadvanced_002drequirements.html delete mode 100644 latest/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html delete mode 100644 latest/html_split/_0023main_002dimplementing.html delete mode 100644 latest/html_split/_0023main_002dimplementing_002dudls.html delete mode 100644 latest/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html delete mode 100644 latest/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html delete mode 100644 latest/html_split/_0023module_002dname_002drequires_002dexpressions.html delete mode 100644 latest/html_split/_0023motivation.html delete mode 100644 latest/html_split/_0023motivation_002d1.html delete mode 100644 latest/html_split/_0023motivation_002d2.html delete mode 100644 latest/html_split/_0023motivation_002d3.html delete mode 100644 latest/html_split/_0023motivation_002d4.html delete mode 100644 latest/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html delete mode 100644 latest/html_split/_0023organization_002dof_002dthis_002ddocument.html delete mode 100644 latest/html_split/_0023overview.html delete mode 100644 latest/html_split/_0023overview_002d1.html delete mode 100644 latest/html_split/_0023overview_002d2.html delete mode 100644 latest/html_split/_0023overview_002d3.html delete mode 100644 latest/html_split/_0023overview_002d4.html delete mode 100644 latest/html_split/_0023points_002dto_002dcover.html delete mode 100644 latest/html_split/_0023points_002dto_002dcover_002d1.html delete mode 100644 latest/html_split/_0023points_002dto_002dcover_002d2.html delete mode 100644 latest/html_split/_0023points_002dto_002dcover_002d3.html delete mode 100644 latest/html_split/_0023points_002dto_002dcover_002d4.html delete mode 100644 latest/html_split/_0023points_002dto_002dcover_002d5.html delete mode 100644 latest/html_split/_0023points_002dto_002dcover_002d6.html delete mode 100644 latest/html_split/_0023points_002dto_002dcover_002d7.html delete mode 100644 latest/html_split/_0023points_002dto_002dcover_002d8.html delete mode 100644 latest/html_split/_0023preprocessor.html delete mode 100644 latest/html_split/_0023references.html delete mode 100644 latest/html_split/_0023references_002don_002dlearning_002doutcomes.html delete mode 100644 latest/html_split/_0023software_002ddesign.html delete mode 100644 latest/html_split/_0023standard_002dlibrary.html delete mode 100644 latest/html_split/_0023student_002doutcomes.html delete mode 100644 latest/html_split/_0023student_002doutcomes_002d1.html delete mode 100644 latest/html_split/_0023student_002doutcomes_002d2.html delete mode 100644 latest/html_split/_0023student_002doutcomes_002d3.html delete mode 100644 latest/html_split/_0023student_002doutcomes_002d4.html delete mode 100644 latest/html_split/_0023student_002doutcomes_002d5.html delete mode 100644 latest/html_split/_0023student_002doutcomes_002d6.html delete mode 100644 latest/html_split/_0023student_002doutcomes_002d7.html delete mode 100644 latest/html_split/_0023student_002doutcomes_002d8.html delete mode 100644 latest/html_split/_0023student_002doutcomes_002d9.html delete mode 100644 latest/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html delete mode 100644 latest/html_split/_0023testing_002dand_002ddebugging.html delete mode 100644 latest/html_split/_0023tooling.html delete mode 100644 latest/html_split/_0023topic_002dintroduction.html delete mode 100644 latest/html_split/_0023topic_002dintroduction_002d1.html delete mode 100644 latest/html_split/_0023topic_002dintroduction_002d2.html delete mode 100644 latest/html_split/_0023topic_002dintroduction_002d3.html delete mode 100644 latest/html_split/_0023topic_002dintroduction_002d4.html delete mode 100644 latest/html_split/_0023use_002dof_002dthis_002ddocument.html delete mode 100644 latest/html_split/_0023user_002ddefined_002dtypes_002dclasses.html delete mode 100644 latest/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html delete mode 100644 latest/html_split/index.html delete mode 100644 latest/html_split/unknown_node.html diff --git a/0.0.1/guidelines.epub b/0.0.1/guidelines.epub deleted file mode 100644 index cc39e0168181ce45a8ef09c2ef4a125eb8bf0fb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31519 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 I{GY4;595qa%K!iX diff --git a/0.0.1/html/index.html b/0.0.1/html/index.html deleted file mode 100644 index 1f598e8..0000000 --- a/0.0.1/html/index.html +++ /dev/null @@ -1,1429 +0,0 @@ - - - - - - - Guidelines for Teaching C++ - - - - - - - - - - - - - - - - - - - - - Guidelines for Teaching C++ - - - - - - - -
    - -
    - -
    - -
    - -
    -

    Guidelines for Teaching C++

    - -

    Version 0.0.1

    - -

    SG20 (ISO C++ Study Group on Education)

    -
    -
    - -
    -
    -
    - -
    -
    - -
    -

    1 Obtaining This Document: The Most Recent Version and Alternate Formats

    -

    The most recent version of this document is available as an online HTML document at: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/latest/.

    -

    The version of the document that you are currently reading is available in the following formats:

    -
      -
    1. online (HTML) format as a single large HTML document: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.1/html [later to be https://cplusplus.github.io/SG20/0.0.1/html?]

    2. -
    3. EPUB format: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.1/guidelines.epub [later to be https:/cplusplus.github.io/SG20/0.0.1/guidelines.epub?]

    4. -
    5. online (HTML) format, split across multiple HTML documents: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.1/html_split/ [later to be https://cplusplus.github.io/SG20/0.0.1/html_split/?] [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

    6. -
    -

    Older versions of this document are also available. In general version ver is available at https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/ver. For example, version v0.1.0 (assuming that this version exists) would be available at [later to be https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/v0.1.0?].

    -

    2 Disclaimer

    -

    This document is intended as a proof of concept to solicit feedback from others. This document is incomplete. This document likely has at least a few errors.

    -

    3 Context and Aim of This Guide

    -

    This document is intended to serve as a resource for instructors to assist in the preparation of courses on C++ in a variety of settings, including university, college, and industry environments. The main objectives of this document are as follows:

    -
      -
    • to provide guidelines for content to be covered by courses of various difficulty levels on C++ (e.g., topics and learning outcomes)
    • -
    • to note some common misunderstandings and problematic points that may be encountered when teaching particular topics
    • -
    • to suggest resources useful for teaching C++
    • -
    • to present examples of curriculum for specific courses
    • -
    -

    This document does not itself provide a curriculum for a single specific course, but is rather a set of guidelines that can be used to prepare curricula for a wide variety of courses that differ in focus and level of sophistication. (This said, however, some links to other documents with examples of curricula for specific courses may be included herein.) This document only intends to target the teaching of the most recently ratified version of the C++ standard. (This said, however, since older versions of this document are also available, these older versions may be of some use to those who need guidance in older versions of the standard, at least versions that do not predate C++20.)

    -

    4 Use of This Document

    -

    [NOTE: This document follows the same license model as the C++ Core Guidelines. The LICENSE document is taken verbatim from the C++ Core Guidelines.] This document is made available under a MIT-style license. In simple terms, this license permits copying, use, modification, and creation of derivative works. A copy of the license is included in the section LICENSE.

    -

    5 Contributing to This Document

    -

    Contributions to this document are welcome. If you would like to help with this project as a contributor, please read the section How to Contribute.

    -

    6 Organization of This Document

    -

    The various concepts (i.e., ideas) to potentially be covered are partitioned into modules. A module is very broad in scope and consists of numerous topics. [Note: Can I suggest that we use the term “area” or “unit” instead of “module”? I think that these other choices are better and also avoid any potential confusion over what is meant by “module” (i.e., C++ term versus plain English term).]

    -

    For each module, topics related to the module are identified. Then, for each topic, learning outcomes are specified. In order to address a wide variety of courses on C++, each topic is addressed at three proficiency levels. These proficiency levels allow each topic to be covered at more than one level of detail. This allows target audiences with different background and learning objectives to be accommodated. The three proficiency levels are as follows:

    -
      -
    • foundational. This level gives the learner the idea that a facility exists, what benefits it offers, and the basic ways of using it. [Note: Isn’t this just “novice”/“beginner”?]

    • -
    • main. This level shows mainstream uses and techniques. For abstraction and organizational mechanisms it also demonstrates how to build them. This level should also give the learner a basic (but not detailed) understanding of how a facility might be implemented so that the learner can have a first-order understanding of any costs involved. [Note: The term “main” is not very descriptive/helpful. Could I suggest using “intermediate”?]

    • -
    • advanced. This level gives information suitable for an expert. For most topics there is an expert level of knowledge that most programmers rarely need and techniques that require detailed understanding of language rules or library implementation.

    • -
    -

    The remainder of this document is organized as follows. The various topics are listed grouped by module. In cases where a topic might be classified into more than one module, the topic is listed under the module of most direct relevance. This is done in order to avoid duplication of content. (In the case that a topic is equally relevant to multiple modules, the decision of which to select is made by a proverbial coin toss.) The order in which modules and topics are presented is not meant to imply any order of coverage in a course. The order in which items are listed is essentially arbitrary.

    -

    7 Summary of Modules and Topics

    -

    In the sections that follow, the various modules and topics are presented. There is one section per module. For each module, a table listing the various topics in that module is provided. The ID for a topic is linked to the detailed coverage of that topic that comes later in the document. If a topic has any learning outcomes at a given proficiency level, this is indicated by a checkmark (“✔️”). If a topic has no learning outcomes (simply because there are not any, not because the information is missing), this is indicated by an em dash (“—”). In the case that the information for a topic is completely missing, a question mark (“?”) symbol is used.

    -

    [NOTE: These topics are taken mostly from the SG20 GitHub repository. They are not intended to be complete in any sense. In fact, by gathering together all topics in one place where they are easily viewed, it is hoped that missing and unbalanced items will be more obvious.]

    -

    7.1 Compilation Model

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Translation Units???
    [?]Headers???
    [?]Modules???
    [?]Name Mangling???
    [?]Phases of Translation???
    [?]Separate Compilation???
    [?]Linkage???
    -

    7.2 Preprocessor

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Preprocessor Metaprogramming???
    [?]Inclusion???
    [?]Macros???
    -

    7.3 Basics Types, Objects, Values, Expressions, Statements, and Control-Flow Constructs

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Constant Objects???
    [?]Declarations and Definitions???
    [?]Selection Constructs (e.g., if, ternary)???
    [?]Looping Constructs (e.g., for, while, etc.)???
    -

    7.4 Functions

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Calling Functions???
    [?]Parameter Passing (e.g., Passing By Value and Reference)???
    [func-args]Default Arguments✔️
    [?]Returning Multiple Values???
    [?]Overloading???
    [udl]User-Defined Literals✔️✔️
    -

    7.5 User-Defined Types (Classes)

    - ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Special Member Functions???
    [?]Types???
    [?]Conversions???
    [?]Constructors and Destructors???
    [?]Move/Copy Constructors and Assignment Operators???
    [?]Member Functions???
    [?]Sum Types???
    [?]User-Defined Literals???
    [?]Special Member Functions???
    [?]Guidelines for Special Member Functions (e.g., Rule of Five, Rule of Zero)???
    [copy]Copy Semantics✔️✔️
    [?]Moving and Copying???
    [?]Lambdas???
    -

    7.6 Inheritance and Class Hierarchies

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Virtual Functions???
    [?]Run-Time Type Information???
    -

    7.7 Compile-Time Computation

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Constant Expressions and Constant Evaluation???
    [static-assert]static_assert✔️✔️
    -

    7.8 Generic Programming (Templates)

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Concepts???
    [?]SFINAE???
    [?]Template Metaprogramming???
    [?]Function Templates???
    [?]Requires Clauses???
    [req-expr]Requires Expressions✔️✔️
    -

    7.9 Error Handling

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Classes of Errors???
    [?]errno???
    [?]Error Codes???
    [?]Exception Handling???
    -

    7.10 Standard Library

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Input/Output (I/O)???
    [?]Containers, Iterators, and Algorithms???
    -

    7.11 External (i.e., Non Standard) Libraries

    - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Graphical User Interfaces???
    -

    7.12 Building

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Software Build Tools???
    [?]Strategies for Handling Build Problems???
    -

    7.13 Testing and Debugging

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Source-Level Debuggers???
    [?]Code Sanitizers???
    [?]Test Frameworks???
    [?]Debugging Strategies???
    -

    7.14 Tooling

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Compiler Toolchains???
    [?]IDEs???
    -

    7.15 Software Design

    - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Design by Contract???
    -

    8 Detailed Information for Modules and Topics

    -

    8.1 C++ object model: copy semantics

    -

    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

    -

    8.1.1 Overview

    -

    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

    - ---- - - - - - - - - - - - - - - - - - - - - -
    LevelObjectives
    Foundationalunderstanding how and when are copies made
    Mainimplementing user-defined copy operations
    Advancedspecial cases: copy elision
    -

    8.1.2 Motivation

    -

    Why is this important? Why do we want to learn/teach this topic?

    -

    Copy semantics allows the user to define how objects of a class get replicated and interact on a value level.

    -

    8.1.3 Topic introduction

    -

    Very brief introduction to the topic.

    -

    Explains when and how objects are copied.

    -

    8.1.4 Foundational: How and when are copies made

    -

    8.1.4.1 Background/Required Knowledge

    -

    A student is able to: * explain what a C++ type is? [C++ object model: types] * explain what an object is? [C++ object model: objects], [C++ object model: constant objects] * define and understand class invariants?

    -

    It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain special member functions [C++ object model: special member functions]

    -

    8.1.4.2 Student outcomes

    -

    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

    -

    A student should be able to:

    -
      -
    1. explain what copy semantics accomplish
    2. -
    -
      -
    • establishing “equivalent” object state in another object
    • -
    -
      -
    1. explain difference between copying a reference and copying a value*
    2. -
    3. explain where copies are made
    4. -
    -

    * In other languages these differences are sometimes referred to as shallow and deep copy.

    -

    8.1.4.3 Caveats

    -

    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

    -
      -
    • Compiler-provided copy operations may result in ownership problems (e.g., char*). These ownership problems can generally be solved by using types whose copy operations have the appropriate semantics, e.g., std::string instead of char* to hold string values.
    • -
    -

    8.1.4.4 Points to cover

    -

    This section lists important details for each point.

    -
      -
    • Principle of copying -
        -
      • Copying of types, which follow the rule of zero
      • -
      • Copying of types, with user defined copy operations
      • -
      • Copying an object does not change the original
      • -
    • -
    • Practical applications -
        -
      • std::unique_ptr (has no copy)
      • -
      • Strings (copies the value)
      • -
    • -
    -

    8.1.5 Main: Implementing user-defined copy operations

    -

    8.1.5.1 Background/Required Knowledge

    -

    A student is able to: * identify special member functions [C++ object model: special member functions]

    -

    It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain the rule of zero [C++ object model: rule-of-zero] * explain the rule of five [C++ object model: rule-of-five]

    -

    8.1.5.2 Student outcomes

    -

    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

    -

    A student should be able to: * explain when they have to implement the copy operations for their own type * Copy constructor * Copy assignment operator * implement copy operations for their own types * Optional: explain when copying with basic and strong exception guarantees is useful

    -

    8.1.5.3 Caveats

    -

    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

    -
      -
    • Intricacies when implementing copy operations: -
        -
      • Examples of how not to write copy operations (e.g., C++03 std::auto_ptr)
      • -
    • -
    -

    8.1.5.4 Points to cover

    -

    This section lists important details for each point.

    -
      -
    • Copy constructors and copy assignment operators -
        -
      • How compiler generates default copy operations
      • -
      • =default, =delete (No copy)
      • -
      • How-to write your own copy operations
      • -
      • Rule-of-five
      • -
      • Copy assignment operators can be ref-qualified to avoid assigning into temporary objects.
      • -
    • -
    -

    8.1.6 Advanced

    -

    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

    -

    When can copies be elided and when does the standard guarantee copy elision. References: * Abseil tip of the Week #166 * cppreference - Copy elision

    -

    8.2 Functions: user-defined literals

    -

    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

    -

    8.2.1 Overview

    -

    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

    - ---- - - - - - - - - - - - - - - - - - - - - -
    LevelObjectives
    Foundationalusing and understanding UDLs
    Mainimplementing your own UDLs
    AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
    -

    8.2.2 Motivation

    -

    Why is this important? Why do we want to learn/teach this topic?

    -
      -
    • Allows clearer expression of intent in C++.
    • -
    • std::string: "Hello, world!"s
    • -
    • std::chrono: 3h + 10min + 5s
    • -
    -

    8.2.3 Topic introduction

    -

    Very brief introduction to the topic.

    -
      -
    • Explain the existence of user defined literals. Example: 12min + 17s is terse, expressive and type safe.
    • -
    -

    8.2.4 Foundational: Using UDLs

    -

    8.2.4.1 Background/Required Knowledge

    -

    A student: * knows how to form numeric literals, e.g., 1.5f means a float of value 1.5. * is familiar with the major C++ types: * bool (Boolean type) * int (Integer type) * double (Floating-point type) * std::string (Text type) * std::vector (Collection type) * knows that namespaces exist, and namespace std. * knows what using-declarations and using-directives are. [C++ object model: declarations]

    -

    8.2.4.2 Student outcomes

    -

    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

    -

    A student should be able to:

    -
      -
    1. use using namespace std::string_literals[1].
    2. -
    3. recognise UDLs in code that they are reading.
    4. -
    5. figure out which UDL definitions for a used type exist.
    6. -
    7. identify parts of the standard library that make use of UDLs.
    8. -
    9. prevent the dangers of temporaries created with "blah"s as well as with std::string{"blah"}.
    10. -
    11. effectively selects the right set of namespaces in using-directives from the sub-namespaces std::literals.
    12. -
    -

    [1]: explain that it’s okay to use a using-directive to “activate” UDLs.

    -

    8.2.4.3 Caveats

    -

    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

    -
      -
    • A student gets confused by the similarities and differences between built-in suffixes and UDLs and between UDLs from different namespaces.
    • -
    • A student “activates” two suffixes with the same signature from different namespaces.
    • -
    -

    8.2.4.4 Points to cover

    -

    This section lists important details for each point.

    -

    8.2.5 Main: implementing UDLs

    -

    8.2.5.1 Background/Required Knowledge

    -
      -
    • All of the above.
    • -
    -

    8.2.5.2 Student outcomes

    -

    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

    -

    A student should be able to:

    -
      -
    1. write a UDL operator of their own.
    2. -
    3. separate unrelated UDLs into distinct namespaces.
    4. -
    -

    8.2.5.3 Caveats

    -

    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

    -

    No caveats at present. #### Points to cover

    -

    This section lists important details for each point.

    -

    No caveats at present. ### Advanced {#udl-advanced}

    -

    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

    -

    8.3 Functions: default argument

    -

    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

    -

    8.3.1 Overview

    -

    Functions in C++ may be overloaded with different numbers and types of parameters. It may be of value to specify default arguments for some number of parameters, to allow a caller to avoid specifying arguments that rarely change, or to enable expanding the set of parameters while maintaining backward compatibility with existing callers.

    - ---- - - - - - - - - - - - - - - - - - - - - -
    LevelObjective
    FoundationalDefine and use functions with default arguments
    Main
    Advancedrefinement of default arguments through multiple declarations
    -

    8.3.2 Motivation

    -

    Default arguments allow the omission of arguments with obvious or common values. Also may be utilized to extend an existing function signature without forcing changes to existing calling code.

    -

    8.3.3 Topic introduction

    -

    Explain how default arguments work and how to define them.

    -

    8.3.4 Foundational: Using and defining functions with default arguments

    -

    8.3.4.1 Background/Required Knowledge

    -

    A student is able to:

    - -

    8.3.4.2 Student outcomes

    -

    A student should be able to:

    -
      -
    1. Call to a function with a default argument with or without that argument specified
    2. -
    3. Declare a function with a default argument, and omit the default in the definition’s signature
    4. -
    5. Explain when the lifetime of a default argument begins and ends
    6. -
    -

    8.3.4.3 Caveats

    -
      -
    • When no forward-declaration exists, the definition serves as the declaration
    • -
    • When multiple declarations exist, only one may specify the default for any particular parameter, but multiple declarations may specify the defaults for different parameters.
    • -
    • Additional default values may be specified for other parameters in repeat declarations
    • -
    • Calling an overloaded function with fewer arguments may be ambiguous with regard to an overload with default arguments
    • -
    -

    8.3.4.4 Points to cover

    -
      -
    • Default value may only be specified once for each parameter among all declarations
    • -
    • Default values must start from the rightmost parameter and continue leftward without gaps
    • -
    • Considerations of when to use default arguments vs overload set
    • -
    -

    8.3.5 Main: implementing *

    -

    8.3.5.1 Background/required knowledge

    -
      -
    • All of the above.
    • -
    -

    8.3.5.2 Student outcomes

    -

    A student should be able to:

    -

    8.3.5.3 Caveats

    -

    8.3.5.4 Points to cover

    -

    8.3.6 Advanced

    -

    Subsequent redeclarations of the same function may add default argument values, which are then usable by callers. Though a single parameter cannot be given a default argument twice in the same translation unit, it is legal, though ill-advised, to give the same function different default arguments in different translation units.

    -

    8.4 Module name: Requires Expressions

    -

    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

    -

    8.4.1 Overview

    - ---- - - - - - - - - - - - - - - - - - - - - -
    LevelObjectives
    FoundationalDefine and use requires-expressions to check satisfaction of expressions by given parameters
    MainDefine and use requires-expressions to check properties of expressions
    Advanced
    -

    8.4.2 Motivation

    -

    Requires-expressions allow a developer to perform compile-time evaluation on the validity of other expressions. These are fundamental to the ability to write concepts. [Compile-time programming: concepts]

    -

    8.5 Topic introduction

    -

    Requires-expressions are compile-time predicates which evaluate to true when their specified set of expressions are all valid for a given set of inputs.

    -

    8.5.1 Foundational: Writing requires-expressions

    -

    8.5.1.1 Background/Required Knowledge

    -

    A student is able to:

    - -

    It is helpful if:

    -
      -
    • The student is aware that attempting to specialize the template with types or values which do not match otherwise unstated assumptions will cause errors within the template.
    • -
    -

    8.5.1.2 Student outcomes

    -

    A student should be able to:

    -
      -
    1. Write a simple-requirement to assert the validity of an expression
    2. -
    3. Write a type-requirement to check the existence of a type by its identifier
    4. -
    5. Write a compound-requirement to test the resulting type of an expression
    6. -
    7. Write a nested-requirement to test the constexpr value of an operation, as opposed to just the syntactic validity
    8. -
    9. Use a requires-expression within a concept, requires-clause, or if constexpr condition
    10. -
    -

    8.5.1.3 Caveats

    -

    To require that expressions, which evaluate to a boolean value like sizeof(t) == 4, evaluate to true a nested-requirement is needed (e.g., requires sizeof(t) == 4;). Omitting the requires results in a simple-requirement, which is satisfied based purely on syntactic validity, not on the result of the operation.

    -

    8.5.1.4 Points to cover

    -
      -
    • All requires-expression requirements terminate with a semicolon.
    • -
    • simple-requirements are used to check that an expression is well-formed.
    • -
    • nested-requirements are introduced with requires and primarily used to check the result of an expression computable by the compiler, including concepts or other requires-expressions.
    • -
    • type-requirements are introduced with typename and used to verify the existence of a type with a particular identifier.
    • -
    • compound-requirements are enclosed in braces and can be used to check the resulting type of an expression.
    • -
    • Checks are performed by the compiler, not at run time.
    • -
    • If covering usage of requires-expression with requires-clause, [Compile-time programming: requires clause] demonstrate requires requires and show how to ever avoid writing it by using a concept. [Compile-time programming: concepts]
    • -
    -

    8.5.2 Main: Advanced requirements

    -

    8.5.2.1 Background/required knowledge

    -
      -
    • All of the above.
    • -
    • Knowledge of noexcept
    • -
    -

    A student is able to:

    - -

    8.5.2.2 Student outcomes

    -

    A student should be able to:

    -
      -
    1. Write compound-requirements which test the noexceptness of an expression.
    2. -
    3. Use a concept as the target of a compound-requirement.
    4. -
    -

    8.5.2.3 Caveats

    -

    8.5.2.4 Points to cover

    -
      -
    • Compound-requirements allow the optional ability to test whether an expression is marked as noexcept, by using a trailing noexcept keyword.
    • -
    - -
      -
    • If the return-type-requirement of a compound-requirement is a concept, that concept is given the resulting type as the first parameter, followed by the specified parameters in the compound-requirement. { ++x } -> C<int> would substitute C<decltype((++x)), int> and check that concept C is satisfied for those parameters.
    • -
    -

    8.5.3 Advanced

    -

    8.6 Meta-error handling: static_assert

    -

    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

    -

    8.6.1 Overview

    -

    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

    - ---- - - - - - - - - - - - - - - - - - - - - -
    LevelObjectives
    FoundationalCalling static_assert with a constant expression
    MainUsing static_assert to detect contract violations and improve error messages
    Advanced
    -

    8.6.2 Motivation

    -

    Why is this important? Why do we want to learn/teach this topic?

    -

    static_assert allows the developer to enforce that conditions which can be checked during compilation will force build errors when violated. Additionally, they are the best mechanism by which a developer can pass useful information to other developers regarding what violation occurred or what must be done, instead.

    -

    8.6.3 Topic introduction

    -

    Very brief introduction to the topic.

    -

    static_assert is a compile-time evaluated function that asserts the truth of a supplied predicate, issuing an optional user-supplied error message if the predicate is false.

    -

    8.6.4 Foundational: Calling static_assert with a constant expression

    -

    8.6.4.1 Background/Required Knowledge

    -

    A student:

    -
      -
    • Should be able to explain the difference between code evaluated at compile-time and run-time
    • -
    • Should be able to cite some examples of compile-time known information, such as sizeof(T)
    • -
    -

    8.6.4.2 Student outcomes

    -

    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

    -

    A student should be able to:

    -
      -
    1. Assert the expected size of a structure using static_assert
    2. -
    -

    8.6.4.3 Caveats

    -

    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

    -

    8.6.4.4 Points to cover

    -

    This section lists important details for each point.

    -
      -
    • X
    • -
    • In addition to what is wrong, a good error message will inform the user of how to correct it
    • -
    -

    8.6.5 Main: Contracts and static_assert

    -

    8.6.5.1 Background/Required Knowledge

    -
      -
    • All of the above.
    • -
    • General understanding of compile-time requirements
    • -
    -

    8.6.5.2 Student outcomes

    -

    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

    -

    A student should be able to:

    -
      -
    1. Utilize static_assert to verify preconditions of a meta-function
    2. -
    3. Utilize static_assert to verify the results of meta-functions for known values
    4. -
    -

    8.6.5.3 Caveats

    -

    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

    -

    8.6.5.4 Points to cover

    -

    This section lists important details for each point.

    -
      -
    • When writing a meta-function, use static_assert to test the results
    • -
    • Write static_assert calls at the scope of the code they are guarding
    • -
    - -

    8.6.6 Advanced

    -

    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

    -

    9 Examples of Course Curricula

    -

    [NOTE: Anyone have any suggestions of items to add here?] The following are examples of curricula for course on C++: …

    -

    10 License

    -

    [NOTE: This license is copied verbatim from the C++ Core Guidelines.]

    -
    Copyright (c) Standard C++ Foundation and its contributors
    -
    -Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
    -perpetual license to copy, use, modify, and create derivative works from this
    -project for your personal or internal business use only. The above copyright
    -notice and this permission notice shall be included in all copies or
    -substantial portions of the project. This license does not grant permission
    -to use the trade names, trademarks, service marks, or product names of the
    -licensor, except as required for reasonable and customary use in describing
    -the origin of the project.
    -
    -Standard C++ Foundation reserves the right to accept contributions to the
    -project at its discretion.
    -
    -By contributing material to this project, you grant Standard C++ Foundation,
    -and those who receive the material directly or indirectly from Standard C++
    -Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
    -transferrable license to reproduce, prepare derivative works of, publicly
    -display, publicly perform, and distribute your contributed material and such
    -derivative works, and to sublicense any or all of the foregoing rights to third
    -parties for commercial or non-commercial use.  You also grant Standard C++
    -Foundation, and those who receive the material directly or indirectly from
    -Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
    -irrevocable license under your patent claims that directly read on your
    -contributed material to make, have made, use, offer to sell, sell and import
    -or otherwise dispose of the material. You warrant that your material is your
    -original work, or that you have the right to grant the above licenses.
    -
    -THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    -OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
    -PROJECT.
    -
    -If you believe that anything in the project infringes your copyright, please
    -contact us at admin@isocpp.org with your contact information and a detailed
    -description of your intellectual property, including a specific URL where you
    -believe your intellectual property is being infringed.
    -
    -

    11 Contributors

    -
    Christopher Di Bella
    -Florian Sattler
    -Michael Adams
    -rwdougla
    -

    12 How To Contribute

    -

    Before attempting to contribute any content for consideration for inclusion in this document, please read the information below and and the referenced documents as appropriate.

    -

    All contributions to this project must be made in accordance with the license in section License. This teaching-guidelines document only offers guidance on teaching C++ as it is specified in the current version of the C++ standard. So, content should be presented relative to the most-recently ratified version of the standard. A detailed explanation of how to present the material for a topic is given in:

    -
      -
    • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.
    • -
    -

    Any potential contributors should ensure that they read this document. The following document may also be helpful in providing some general background on the modular approach to teaching followed herein:

    - -

    In order to prepare content, it is important to understand what learning outcomes are, and how to prepare good ones. Some information on learning outcomes can be found in the References section. The following document offers a concise introduction to learning outcomes:

    - -

    13 Glossary

    -

    Some possible terms to include in the glossary:

    -
      -
    • learning objective
    • -
    • learning outcome
    • -
    -

    14 References

    -

    14.1 References on Learning Outcomes

    - - -
      -
    • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — Standing Document for SG20: Guidelines for Teaching C++ to Beginners. https://wg21.link/p1389.

    • -
    • Christopher Di Bella. P1725R0 — Modular Topic Design. https://wg21.link/p1725.

    • -
    • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.

    • -
    • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study Group: C++ Education. https://wg21.link/p1231.

    • -
    • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 — Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0.

    • -
    -
    -
    - -
    - - diff --git a/0.0.1/html_split/Contributors.html b/0.0.1/html_split/Contributors.html deleted file mode 100644 index 53ba0ef..0000000 --- a/0.0.1/html_split/Contributors.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - -Contributors (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    -Next: , Previous: , Up: Top   [Contents]

    -
    -
    -

    11 Contributors

    - -
    Christopher Di Bella
    -Florian Sattler
    -Michael Adams
    -rwdougla
    -
    - - - - - diff --git a/0.0.1/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html b/0.0.1/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html deleted file mode 100644 index 0a9cb9b..0000000 --- a/0.0.1/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - -Obtaining This Document The Most Recent Version and Alternate Formats (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    -Next: , Previous: , Up: Top   [Contents]

    -
    -
    -

    1 Obtaining This Document: The Most Recent Version and Alternate

    -

    Formats -The most recent version of this document is available as an online HTML -document at: -https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/latest/. -

    -

    The version of the document that you are currently reading is available -in the following formats: -

    -
      -
    1. online (HTML) format as a single large HTML document: -https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.1/html -[later to be https://cplusplus.github.io/SG20/0.0.1/html?] - -
    2. EPUB format: -https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.1/guidelines.epub -[later to be -https:/cplusplus.github.io/SG20/0.0.1/guidelines.epub?] - -
    3. online (HTML) format, split across multiple HTML documents: -https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.1/html_split/ -[later to be https://cplusplus.github.io/SG20/0.0.1/html_split/?] -[Note: The support for this format needs more work (in order to -beautify and fix linking issues).] - -
    - -

    Older versions of this document are also available. In general version -ver is available at -https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/ver. -For example, version v0.1.0 (assuming that this version exists) would be -available at [later to be -https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/v0.1.0?]. -

    - - - - - diff --git a/0.0.2/guidelines.epub b/0.0.2/guidelines.epub deleted file mode 100644 index 37560632ffe0c6bd4b4c73e8834650fcf6940713..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31523 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/L@>!>mExV2h2aS$8i=!~g?sLp6*Z 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 diff --git a/0.0.2/html_split/Advanced.html b/0.0.2/html_split/Advanced.html deleted file mode 100644 index c4d659a..0000000 --- a/0.0.2/html_split/Advanced.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - -Advanced (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - -

    -
    -

    8.1.6 Advanced

    -

    These are important topics that are not expected to be covered but -provide guidance where one can continue to investigate this topic in -more depth. -

    -

    When can copies be elided and when does the standard guarantee copy -elision. References: * Abseil tip of -the Week #166 * -cppreference -- Copy elision -

    - - - - - diff --git a/0.0.2/html_split/Background_002fRequired-Knowledge.html b/0.0.2/html_split/Background_002fRequired-Knowledge.html deleted file mode 100644 index d3ee185..0000000 --- a/0.0.2/html_split/Background_002fRequired-Knowledge.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - -Background/Required Knowledge (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    8.1.4.1 Background/Required Knowledge

    -

    A student is able to: * explain what a C++ type is? -[C++ object model: types] -* explain what an object is? -[C++ object -model: objects], -[C++ object model: -constant objects] * define and understand class invariants? -

    -

    It helps when a student is able to: * use move semantics -[C++ object model: move -semantics] * explain special member functions -[C++ object model: -special member functions] -

    - - - - - diff --git a/0.0.2/html_split/Background_002frequired-knowledge.html b/0.0.2/html_split/Background_002frequired-knowledge.html deleted file mode 100644 index 79fd94d..0000000 --- a/0.0.2/html_split/Background_002frequired-knowledge.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - -Background/required knowledge (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    8.3.5.1 Background/required knowledge

    -
      -
    • All of the above. -
    - - - - - - diff --git a/0.0.2/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html b/0.0.2/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html deleted file mode 100644 index 3e850b1..0000000 --- a/0.0.2/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - -Basics Types Objects Values Expressions Statements and Control-Flow Constructs (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.3 Basics Types, Objects, Values, Expressions, Statements, and

    -

    Control-Flow Constructs -

    - - - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Constant Objects???
    [‘?’]Declarations and Definitions???
    [‘?’]Selection Constructs (e.g., if, ternary)???
    [‘?’]Looping Constructs (e.g., for, while, etc.)???
    - - - - - - diff --git a/0.0.2/html_split/Building.html b/0.0.2/html_split/Building.html deleted file mode 100644 index e628fd0..0000000 --- a/0.0.2/html_split/Building.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - -Building (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.12 Building

    - - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Software Build Tools???
    [‘?’]Strategies for Handling Build Problems???
    - - - - - - diff --git a/0.0.2/html_split/C_002b_002b-object-model-copy-semantics.html b/0.0.2/html_split/C_002b_002b-object-model-copy-semantics.html deleted file mode 100644 index 6d7350c..0000000 --- a/0.0.2/html_split/C_002b_002b-object-model-copy-semantics.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - -C++ object model copy semantics (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    8.1 C++ object model: copy semantics

    -

    Skeleton descriptions are typeset in italic text, so please -don’t remove these descriptions when editing the topic. -

    - - - - - - - - - - - - - - diff --git a/0.0.2/html_split/Caveats.html b/0.0.2/html_split/Caveats.html deleted file mode 100644 index c5303c9..0000000 --- a/0.0.2/html_split/Caveats.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - -Caveats (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    8.1.4.3 Caveats

    -

    This section mentions subtle points to understand, like anything -resulting in implementation-defined, unspecified, or undefined -behavior. -

    -
      -
    • Compiler-provided copy operations may result in ownership problems -(e.g., char*). These ownership problems can generally be solved -by using types whose copy operations have the appropriate semantics, -e.g., std::string instead of char* to hold string values. -
    - - - - - - diff --git a/0.0.2/html_split/Compilation-Model.html b/0.0.2/html_split/Compilation-Model.html deleted file mode 100644 index de11703..0000000 --- a/0.0.2/html_split/Compilation-Model.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - -Compilation Model (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.1 Compilation Model

    - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Translation Units???
    [‘?’]Headers???
    [‘?’]Modules???
    [‘?’]Name Mangling???
    [‘?’]Phases of Translation???
    [‘?’]Separate Compilation???
    [‘?’]Linkage???
    - - - - - - diff --git a/0.0.2/html_split/Compile_002dTime-Computation.html b/0.0.2/html_split/Compile_002dTime-Computation.html deleted file mode 100644 index b9aaa0e..0000000 --- a/0.0.2/html_split/Compile_002dTime-Computation.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - -Compile-Time Computation (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.7 Compile-Time Computation

    - - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Constant Expressions and Constant Evaluation???
    [‘static-assert’]static_assert‘✔️’‘✔️’
    - - - - - - diff --git a/0.0.2/html_split/Context-and-Aim-of-This-Guide.html b/0.0.2/html_split/Context-and-Aim-of-This-Guide.html deleted file mode 100644 index 60efa61..0000000 --- a/0.0.2/html_split/Context-and-Aim-of-This-Guide.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - -Context and Aim of This Guide (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    -Next: , Previous: , Up: Top   [Contents]

    -
    -
    -

    3 Context and Aim of This Guide

    -

    This document is intended to serve as a resource for instructors to -assist in the preparation of courses on C++ in a variety of settings, -including university, college, and industry environments. The main -objectives of this document are as follows: -

    -
      -
    • to provide guidelines for content to be covered by courses of various -difficulty levels on C++ (e.g., topics and learning outcomes) -
    • to note some common misunderstandings and problematic points that may be -encountered when teaching particular topics -
    • to suggest resources useful for teaching C++ -
    • to present examples of curriculum for specific courses -
    - -

    This document does not itself provide a curriculum for a single specific -course, but is rather a set of guidelines that can be used to prepare -curricula for a wide variety of courses that differ in focus and level -of sophistication. (This said, however, some links to other documents -with examples of curricula for specific courses may be included herein.) -This document only intends to target the teaching of the most recently -ratified version of the C++ standard. (This said, however, since older -versions of this document are also available, these older versions may -be of some use to those who need guidance in older versions of the -standard, at least versions that do not predate C++20.) -

    - - - - - diff --git a/0.0.2/html_split/Contributing-to-This-Document.html b/0.0.2/html_split/Contributing-to-This-Document.html deleted file mode 100644 index eac6c28..0000000 --- a/0.0.2/html_split/Contributing-to-This-Document.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - -Contributing to This Document (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    5 Contributing to This Document

    -

    Contributions to this document are welcome. If you would like to help -with this project as a contributor, please read the section -‘How to Contribute’. -

    - - - - - diff --git a/0.0.2/html_split/Detailed-Information-for-Modules-and-Topics.html b/0.0.2/html_split/Detailed-Information-for-Modules-and-Topics.html deleted file mode 100644 index c8c9fcd..0000000 --- a/0.0.2/html_split/Detailed-Information-for-Modules-and-Topics.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -Detailed Information for Modules and Topics (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    8 Detailed Information for Modules and Topics

    - - - - - - - - - - - - - - - diff --git a/0.0.2/html_split/Disclaimer.html b/0.0.2/html_split/Disclaimer.html deleted file mode 100644 index a911983..0000000 --- a/0.0.2/html_split/Disclaimer.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - -Disclaimer (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    2 Disclaimer

    -

    This document is intended as a proof of concept to solicit feedback from -others. This document is incomplete. This document likely has at least a -few errors. -

    - - - - - diff --git a/0.0.2/html_split/Error-Handling.html b/0.0.2/html_split/Error-Handling.html deleted file mode 100644 index 1f8d3e0..0000000 --- a/0.0.2/html_split/Error-Handling.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - -Error Handling (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.9 Error Handling

    - - - - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Classes of Errors???
    [‘?’]errno???
    [‘?’]Error Codes???
    [‘?’]Exception Handling???
    - - - - - - diff --git a/0.0.2/html_split/Examples-of-Course-Curricula.html b/0.0.2/html_split/Examples-of-Course-Curricula.html deleted file mode 100644 index 64eb64b..0000000 --- a/0.0.2/html_split/Examples-of-Course-Curricula.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - -Examples of Course Curricula (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    9 Examples of Course Curricula

    -

    [NOTE: Anyone have any suggestions of items to add here?] The -following are examples of curricula for course on C++: … -

    - - - - - diff --git a/0.0.2/html_split/External-ie-Non-Standard-Libraries.html b/0.0.2/html_split/External-ie-Non-Standard-Libraries.html deleted file mode 100644 index 2bf081e..0000000 --- a/0.0.2/html_split/External-ie-Non-Standard-Libraries.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - -External ie Non Standard Libraries (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.11 External (i.e., Non Standard) Libraries

    - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Graphical User Interfaces???
    - - - - - - diff --git a/0.0.2/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html b/0.0.2/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html deleted file mode 100644 index ce2c1b0..0000000 --- a/0.0.2/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - -Foundational Calling static_assert with a constant expression (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - -
    -

    8.6.4 Foundational: Calling static_assert with a constant

    -

    expression -

    - - - - - - - - - - - - diff --git a/0.0.2/html_split/Foundational-How-and-when-are-copies-made.html b/0.0.2/html_split/Foundational-How-and-when-are-copies-made.html deleted file mode 100644 index 4cec33b..0000000 --- a/0.0.2/html_split/Foundational-How-and-when-are-copies-made.html +++ /dev/null @@ -1,63 +0,0 @@ - - - - - -Foundational How and when are copies made (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    8.1.4 Foundational: How and when are copies made

    - - - - - - - - - - - - - diff --git a/0.0.2/html_split/Foundational-Using-UDLs.html b/0.0.2/html_split/Foundational-Using-UDLs.html deleted file mode 100644 index adb461e..0000000 --- a/0.0.2/html_split/Foundational-Using-UDLs.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - -Foundational Using UDLs (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - -
    -

    8.2.4 Foundational: Using UDLs

    - - - - - - - - - - - - - diff --git a/0.0.2/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html b/0.0.2/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html deleted file mode 100644 index e37a992..0000000 --- a/0.0.2/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - -Foundational Using and defining functions with default arguments (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - -
    -

    8.3.4 Foundational: Using and defining functions with default

    -

    arguments -

    - - - - - - - - - - - - diff --git a/0.0.2/html_split/Foundational-Writing-requires_002dexpressions.html b/0.0.2/html_split/Foundational-Writing-requires_002dexpressions.html deleted file mode 100644 index 6846c6e..0000000 --- a/0.0.2/html_split/Foundational-Writing-requires_002dexpressions.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - -Foundational Writing requires-expressions (Guidelines for Teaching C++) - - - - - - - - - - - - - - - -
    -

    8.5.1 Foundational: Writing requires-expressions

    - - - - - - - - - - - - - diff --git a/0.0.2/html_split/Functions-default-argument.html b/0.0.2/html_split/Functions-default-argument.html deleted file mode 100644 index 2571ca9..0000000 --- a/0.0.2/html_split/Functions-default-argument.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -Functions default argument (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - -
    -

    8.3 Functions: default argument

    -

    Skeleton descriptions are typeset in italic text, so please -don’t remove these descriptions when editing the topic. -

    - - - - - - - - - - - - - - diff --git a/0.0.2/html_split/Functions-user_002ddefined-literals.html b/0.0.2/html_split/Functions-user_002ddefined-literals.html deleted file mode 100644 index 7e41de9..0000000 --- a/0.0.2/html_split/Functions-user_002ddefined-literals.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - - -Functions user-defined literals (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    8.2 Functions: user-defined literals

    -

    Skeleton descriptions are typeset in italic text, so please -don’t remove these descriptions when editing the topic. -

    - - - - - - - - - - - - - diff --git a/0.0.2/html_split/Functions.html b/0.0.2/html_split/Functions.html deleted file mode 100644 index 82175a5..0000000 --- a/0.0.2/html_split/Functions.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - -Functions (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.4 Functions

    - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Calling Functions???
    [‘?’]Parameter Passing (e.g., Passing By Value and Reference)???
    [‘func-args’]Default Arguments‘✔️’
    [‘?’]Returning Multiple Values???
    [‘?’]Overloading???
    [‘udl’]User-Defined Literals‘✔️’‘✔️’
    - - - - - - diff --git a/0.0.2/html_split/Generic-Programming-Templates.html b/0.0.2/html_split/Generic-Programming-Templates.html deleted file mode 100644 index 1a22cd7..0000000 --- a/0.0.2/html_split/Generic-Programming-Templates.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - -Generic Programming Templates (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.8 Generic Programming (Templates)

    - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Concepts???
    [‘?’]SFINAE???
    [‘?’]Template Metaprogramming???
    [‘?’]Function Templates???
    [‘?’]Requires Clauses???
    [‘req-expr’]Requires Expressions‘✔️’‘✔️’
    - - - - - - diff --git a/0.0.2/html_split/Glossary.html b/0.0.2/html_split/Glossary.html deleted file mode 100644 index 2bf24f2..0000000 --- a/0.0.2/html_split/Glossary.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - -Glossary (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    -Next: , Previous: , Up: Top   [Contents]

    -
    -
    -

    13 Glossary

    -

    Some possible terms to include in the glossary: -

    -
      -
    • learning objective -
    • learning outcome -
    - - - - - - diff --git a/0.0.2/html_split/How-To-Contribute.html b/0.0.2/html_split/How-To-Contribute.html deleted file mode 100644 index f1963d5..0000000 --- a/0.0.2/html_split/How-To-Contribute.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - -How To Contribute (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    -Next: , Previous: , Up: Top   [Contents]

    -
    -
    -

    12 How To Contribute

    -

    Before attempting to contribute any content for consideration for -inclusion in this document, please read the information below and and -the referenced documents as appropriate. -

    -

    All contributions to this project must be made in accordance with the -license in section License. This teaching-guidelines -document only offers guidance on teaching C++ as it is specified in the -current version of the C++ standard. So, content should be presented -relative to the most-recently ratified version of the standard. A -detailed explanation of how to present the material for a topic is given -in: -

    -
      -
    • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to -structure a teaching topic. https://wg21.link/p2193. -
    - -

    Any potential contributors should ensure that they read this document. -The following document may also be helpful in providing some general -background on the modular approach to teaching followed herein: -

    - - -

    In order to prepare content, it is important to understand what learning -outcomes are, and how to prepare good ones. Some information on learning -outcomes can be found in the References section. The -following document offers a concise introduction to learning outcomes: -

    - - - - - - - diff --git a/0.0.2/html_split/Inheritance-and-Class-Hierarchies.html b/0.0.2/html_split/Inheritance-and-Class-Hierarchies.html deleted file mode 100644 index 1a394b0..0000000 --- a/0.0.2/html_split/Inheritance-and-Class-Hierarchies.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - -Inheritance and Class Hierarchies (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.6 Inheritance and Class Hierarchies

    - - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Virtual Functions???
    [‘?’]Run-Time Type Information???
    - - - - - - diff --git a/0.0.2/html_split/License.html b/0.0.2/html_split/License.html deleted file mode 100644 index 38d2d8d..0000000 --- a/0.0.2/html_split/License.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - -License (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    -Next: , Previous: , Up: Top   [Contents]

    -
    -
    -

    10 License

    -

    [NOTE: This license is copied verbatim from the C++ Core -Guidelines.] -

    -
    Copyright (c) Standard C++ Foundation and its contributors
    -
    -Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
    -perpetual license to copy, use, modify, and create derivative works from this
    -project for your personal or internal business use only. The above copyright
    -notice and this permission notice shall be included in all copies or
    -substantial portions of the project. This license does not grant permission
    -to use the trade names, trademarks, service marks, or product names of the
    -licensor, except as required for reasonable and customary use in describing
    -the origin of the project.
    -
    -Standard C++ Foundation reserves the right to accept contributions to the
    -project at its discretion.
    -
    -By contributing material to this project, you grant Standard C++ Foundation,
    -and those who receive the material directly or indirectly from Standard C++
    -Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
    -transferrable license to reproduce, prepare derivative works of, publicly
    -display, publicly perform, and distribute your contributed material and such
    -derivative works, and to sublicense any or all of the foregoing rights to third
    -parties for commercial or non-commercial use.  You also grant Standard C++
    -Foundation, and those who receive the material directly or indirectly from
    -Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
    -irrevocable license under your patent claims that directly read on your
    -contributed material to make, have made, use, offer to sell, sell and import
    -or otherwise dispose of the material. You warrant that your material is your
    -original work, or that you have the right to grant the above licenses.
    -
    -THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    -OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
    -PROJECT.
    -
    -If you believe that anything in the project infringes your copyright, please
    -contact us at admin@isocpp.org with your contact information and a detailed
    -description of your intellectual property, including a specific URL where you
    -believe your intellectual property is being infringed.
    -
    -
    -
    -

    -Next: , Previous: , Up: Top   [Contents]

    -
    - - - - - diff --git a/0.0.2/html_split/Main-Advanced-requirements.html b/0.0.2/html_split/Main-Advanced-requirements.html deleted file mode 100644 index 6c4ac0e..0000000 --- a/0.0.2/html_split/Main-Advanced-requirements.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - -Main Advanced requirements (Guidelines for Teaching C++) - - - - - - - - - - - - - - - -
    -

    8.5.2 Main: Advanced requirements

    - - - - - - - - - - - - - diff --git a/0.0.2/html_split/Main-Contracts-and-static_005fassert.html b/0.0.2/html_split/Main-Contracts-and-static_005fassert.html deleted file mode 100644 index 6c0ba46..0000000 --- a/0.0.2/html_split/Main-Contracts-and-static_005fassert.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - -Main Contracts and static_assert (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - -
    -

    8.6.5 Main: Contracts and static_assert

    - - - - - - - - - - - - - diff --git a/0.0.2/html_split/Main-Implementing-user_002ddefined-copy-operations.html b/0.0.2/html_split/Main-Implementing-user_002ddefined-copy-operations.html deleted file mode 100644 index e38dfd6..0000000 --- a/0.0.2/html_split/Main-Implementing-user_002ddefined-copy-operations.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - -Main Implementing user-defined copy operations (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    8.1.5 Main: Implementing user-defined copy operations

    - - - - - - - - - - - - - diff --git a/0.0.2/html_split/Main-implementing-UDLs.html b/0.0.2/html_split/Main-implementing-UDLs.html deleted file mode 100644 index 1f6f381..0000000 --- a/0.0.2/html_split/Main-implementing-UDLs.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - -Main implementing UDLs (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - -
    -

    8.2.5 Main: implementing UDLs

    - - - - - - - - - - - - diff --git a/0.0.2/html_split/Main-implementing-_002a.html b/0.0.2/html_split/Main-implementing-_002a.html deleted file mode 100644 index b661f2d..0000000 --- a/0.0.2/html_split/Main-implementing-_002a.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - -Main implementing * (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    8.3.5 Main: implementing *

    - - - - - - - - - - - - - diff --git a/0.0.2/html_split/Meta_002derror-handling-static_005fassert.html b/0.0.2/html_split/Meta_002derror-handling-static_005fassert.html deleted file mode 100644 index f81a34e..0000000 --- a/0.0.2/html_split/Meta_002derror-handling-static_005fassert.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -Meta-error handling static_assert (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - -
    -

    8.6 Meta-error handling: static_assert

    -

    Skeleton descriptions are typeset in italic text, so please -don’t remove these descriptions when editing the topic. -

    - - - - - - - - - - - - - - diff --git a/0.0.2/html_split/Module-name-Requires-Expressions.html b/0.0.2/html_split/Module-name-Requires-Expressions.html deleted file mode 100644 index 8bab76c..0000000 --- a/0.0.2/html_split/Module-name-Requires-Expressions.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - -Module name Requires Expressions (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - -
    -

    8.4 Module name: Requires Expressions

    -

    Skeleton descriptions are typeset in italic text, so please -don’t remove these descriptions when editing the topic. -

    - - - - - - - - - - diff --git a/0.0.2/html_split/Motivation.html b/0.0.2/html_split/Motivation.html deleted file mode 100644 index 40b0ec9..0000000 --- a/0.0.2/html_split/Motivation.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - -Motivation (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    8.1.2 Motivation

    -

    Why is this important? Why do we want to learn/teach this -topic? -

    -

    Copy semantics allows the user to define how objects of a class get -replicated and interact on a value level. -

    - - - - - diff --git a/0.0.2/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html b/0.0.2/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html deleted file mode 100644 index a235793..0000000 --- a/0.0.2/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - -Obtaining This Document The Most Recent Version and Alternate Formats (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    -Next: , Previous: , Up: Top   [Contents]

    -
    -
    -

    1 Obtaining This Document: The Most Recent Version and Alternate

    -

    Formats -The most recent version of this document is available as an online HTML -document at: -https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/latest/. -

    -

    The version of the document that you are currently reading is available -in the following formats: -

    -
      -
    1. online (HTML) format as a single large HTML document: -https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.2/html -[later to be https://cplusplus.github.io/SG20/0.0.2/html?] - -
    2. EPUB format: -https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.2/guidelines.epub -[later to be -https:/cplusplus.github.io/SG20/0.0.2/guidelines.epub?] - -
    3. online (HTML) format, split across multiple HTML documents: -https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.2/html_split/ -[later to be https://cplusplus.github.io/SG20/0.0.2/html_split/?] -[Note: The support for this format needs more work (in order to -beautify and fix linking issues).] - -
    - -

    Older versions of this document are also available. In general version -ver is available at -https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/ver. -For example, version v0.1.0 (assuming that this version exists) would be -available at [later to be -https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/v0.1.0?]. -

    - - - - - diff --git a/0.0.2/html_split/Organization-of-This-Document.html b/0.0.2/html_split/Organization-of-This-Document.html deleted file mode 100644 index 3e48985..0000000 --- a/0.0.2/html_split/Organization-of-This-Document.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - -Organization of This Document (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    6 Organization of This Document

    -

    The various concepts (i.e., ideas) to potentially be covered are -partitioned into modules. A module is very broad in scope and consists -of numerous topics. [Note: Can I suggest that we use the term -“area” or “unit” instead of “module”? I think that these other -choices are better and also avoid any potential confusion over what is -meant by “module” (i.e., C++ term versus plain English term).] -

    -

    For each module, topics related to the module are identified. Then, for -each topic, learning outcomes are specified. In order to address a wide -variety of courses on C++, each topic is addressed at three proficiency -levels. These proficiency levels allow each topic to be covered at more -than one level of detail. This allows target audiences with different -background and learning objectives to be accommodated. The three -proficiency levels are as follows: -

    -
      -
    • foundational. This level gives the learner the idea that a facility -exists, what benefits it offers, and the basic ways of using it. -[Note: Isn’t this just “novice”/“beginner”?] - -
    • main. This level shows mainstream uses and techniques. For abstraction -and organizational mechanisms it also demonstrates how to build them. -This level should also give the learner a basic (but not detailed) -understanding of how a facility might be implemented so that the learner -can have a first-order understanding of any costs involved. -[Note: The term “main” is not very descriptive/helpful. Could -I suggest using “intermediate”?] - -
    • advanced. This level gives information suitable for an expert. For most -topics there is an expert level of knowledge that most programmers -rarely need and techniques that require detailed understanding of -language rules or library implementation. - -
    - -

    The remainder of this document is organized as follows. The various -topics are listed grouped by module. In cases where a topic might be -classified into more than one module, the topic is listed under the -module of most direct relevance. This is done in order to avoid -duplication of content. (In the case that a topic is equally relevant to -multiple modules, the decision of which to select is made by a -proverbial coin toss.) The order in which modules and topics are -presented is not meant to imply any order of coverage in a course. The -order in which items are listed is essentially arbitrary. -

    -
    - - - - - - diff --git a/0.0.2/html_split/Overview.html b/0.0.2/html_split/Overview.html deleted file mode 100644 index be44bfa..0000000 --- a/0.0.2/html_split/Overview.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - -Overview (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    8.1.1 Overview

    -

    Provides a short natural language abstract of the module’s -contents. Specifies the different levels of teaching. -

    - - - - - -
    LevelObjectives
    Foundationalunderstanding how and when are copies made
    Mainimplementing user-defined copy operations
    Advancedspecial cases: copy elision
    - - - - - - diff --git a/0.0.2/html_split/Points-to-cover.html b/0.0.2/html_split/Points-to-cover.html deleted file mode 100644 index ba4b5cc..0000000 --- a/0.0.2/html_split/Points-to-cover.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - -Points to cover (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    8.1.4.4 Points to cover

    -

    This section lists important details for each point. -

    -
      -
    • Principle of copying -
        -
      • Copying of types, which follow the rule of zero -
      • Copying of types, with user defined copy operations -
      • Copying an object does not change the original -
      - -
    • Practical applications -
        -
      • std::unique_ptr (has no copy) -
      • Strings (copies the value) -
      - -
    - - - - - - diff --git a/0.0.2/html_split/Preprocessor.html b/0.0.2/html_split/Preprocessor.html deleted file mode 100644 index 345e396..0000000 --- a/0.0.2/html_split/Preprocessor.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - -Preprocessor (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.2 Preprocessor

    - - - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Preprocessor Metaprogramming???
    [‘?’]Inclusion???
    [‘?’]Macros???
    - - - - - - diff --git a/0.0.2/html_split/References-on-Learning-Outcomes.html b/0.0.2/html_split/References-on-Learning-Outcomes.html deleted file mode 100644 index 7b74cad..0000000 --- a/0.0.2/html_split/References-on-Learning-Outcomes.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - - -References on Learning Outcomes (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    14.1 References on Learning Outcomes

    - - - - - - - diff --git a/0.0.2/html_split/References.html b/0.0.2/html_split/References.html deleted file mode 100644 index f595be2..0000000 --- a/0.0.2/html_split/References.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - -References (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    -Previous: , Up: Top   [Contents]

    -
    -
    -

    14 References

    - - - - - - - - - - - diff --git a/0.0.2/html_split/Software-Design.html b/0.0.2/html_split/Software-Design.html deleted file mode 100644 index 6b4f6c8..0000000 --- a/0.0.2/html_split/Software-Design.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - -Software Design (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.15 Software Design

    - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Design by Contract???
    - - - - - - diff --git a/0.0.2/html_split/Standard-Library.html b/0.0.2/html_split/Standard-Library.html deleted file mode 100644 index c80c7fc..0000000 --- a/0.0.2/html_split/Standard-Library.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - -Standard Library (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.10 Standard Library

    - - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Input/Output (I/O)???
    [‘?’]Containers, Iterators, and Algorithms???
    - - - - - - diff --git a/0.0.2/html_split/Student-outcomes.html b/0.0.2/html_split/Student-outcomes.html deleted file mode 100644 index c604549..0000000 --- a/0.0.2/html_split/Student-outcomes.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - - -Student outcomes (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    8.1.4.2 Student outcomes

    -

    A list of things “a student should be able to” after the -curriculum. The next word should be an action word and testable -in an exam. Max 5 items. -

    -

    A student should be able to: -

    -
      -
    1. explain what copy semantics accomplish -
    - -
      -
    • establishing “equivalent” object state in another object -
    - -
      -
    1. explain difference between copying a reference and copying a value* -
    2. explain where copies are made -
    - -

    * In other languages these differences are sometimes referred to as -shallow and deep copy. -

    - - - - - diff --git a/0.0.2/html_split/Summary-of-Modules-and-Topics.html b/0.0.2/html_split/Summary-of-Modules-and-Topics.html deleted file mode 100644 index 26b69be..0000000 --- a/0.0.2/html_split/Summary-of-Modules-and-Topics.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - -Summary of Modules and Topics (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7 Summary of Modules and Topics

    -

    In the sections that follow, the various modules and topics are -presented. There is one section per module. For each module, a table -listing the various topics in that module is provided. The ID for a -topic is linked to the detailed coverage of that topic that comes later -in the document. If a topic has any learning outcomes at a given -proficiency level, this is indicated by a checkmark (“✔️”). If a topic -has no learning outcomes (simply because there are not any, not because -the information is missing), this is indicated by an em dash (“—”). -In the case that the information for a topic is completely missing, a -question mark (“?”) symbol is used. -

    -

    [NOTE: These topics are taken mostly from the SG20 GitHub -repository. They are not intended to be complete in any sense. In fact, -by gathering together all topics in one place where they are easily -viewed, it is hoped that missing and unbalanced items will be more -obvious.] -

    - - - - - - - - - - - - - - - - - - -
    - - - - - - diff --git a/0.0.2/html_split/Testing-and-Debugging.html b/0.0.2/html_split/Testing-and-Debugging.html deleted file mode 100644 index da60211..0000000 --- a/0.0.2/html_split/Testing-and-Debugging.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - -Testing and Debugging (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    -Next: , Previous: , Up: Summary of Modules and Topics   [Contents]

    -
    -
    -

    7.13 Testing and Debugging

    - - - - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Source-Level Debuggers???
    [‘?’]Code Sanitizers???
    [‘?’]Test Frameworks???
    [‘?’]Debugging Strategies???
    - - - - - - diff --git a/0.0.2/html_split/Tooling.html b/0.0.2/html_split/Tooling.html deleted file mode 100644 index 43c3b2f..0000000 --- a/0.0.2/html_split/Tooling.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - -Tooling (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.14 Tooling

    - - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Compiler Toolchains???
    [‘?’]IDEs???
    - - - - - - diff --git a/0.0.2/html_split/Topic-introduction.html b/0.0.2/html_split/Topic-introduction.html deleted file mode 100644 index fff97f2..0000000 --- a/0.0.2/html_split/Topic-introduction.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - -Topic introduction (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    8.1.3 Topic introduction

    -

    Very brief introduction to the topic. -

    -

    Explains when and how objects are copied. -

    - - - - - diff --git a/0.0.2/html_split/Use-of-This-Document.html b/0.0.2/html_split/Use-of-This-Document.html deleted file mode 100644 index 4c820d5..0000000 --- a/0.0.2/html_split/Use-of-This-Document.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - -Use of This Document (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    4 Use of This Document

    -

    [NOTE: This document follows the same license model as the C++ -Core Guidelines. The LICENSE document is taken verbatim from the C++ -Core Guidelines.] This document is made available under a MIT-style -license. In simple terms, this license permits copying, use, -modification, and creation of derivative works. A copy of the license is -included in the section LICENSE. -

    - - - - - diff --git a/0.0.2/html_split/User_002dDefined-Types-Classes.html b/0.0.2/html_split/User_002dDefined-Types-Classes.html deleted file mode 100644 index 808279a..0000000 --- a/0.0.2/html_split/User_002dDefined-Types-Classes.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - -User-Defined Types Classes (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.5 User-Defined Types (Classes)

    - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Special Member Functions???
    [‘?’]Types???
    [‘?’]Conversions???
    [‘?’]Constructors and Destructors???
    [‘?’]Move/Copy Constructors and Assignment Operators???
    [‘?’]Member Functions???
    [‘?’]Sum Types???
    [‘?’]User-Defined Literals???
    [‘?’]Special Member Functions???
    [‘?’]Guidelines for Special Member Functions (e.g., Rule of Five, Rule -of Zero)???
    [‘copy’]Copy Semantics‘✔️’‘✔️’
    [‘?’]Moving and Copying???
    [‘?’]Lambdas???
    - - - - - - diff --git a/0.0.2/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html b/0.0.2/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html deleted file mode 100644 index 3f9bf2c..0000000 --- a/0.0.2/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - -Working Group Documents Related to C++ Teaching Guidelines (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    14.2 Working Group Documents Related to C++ Teaching Guidelines

    -
      -
    • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — -Standing Document for SG20: Guidelines for Teaching C++ to Beginners. -https://wg21.link/p1389. - -
    • Christopher Di Bella. P1725R0 — Modular Topic Design. -https://wg21.link/p1725. - -
    • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to -structure a teaching topic. https://wg21.link/p2193. - -
    • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study -Group: C++ Education. https://wg21.link/p1231. - -
    • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 -— Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0. - -
    - - - - - - diff --git a/0.0.2/html_split/_0023advanced.html b/0.0.2/html_split/_0023advanced.html deleted file mode 100644 index d503bfc..0000000 --- a/0.0.2/html_split/_0023advanced.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#advanced (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #advanced.

    - diff --git a/0.0.2/html_split/_0023advanced_002d1.html b/0.0.2/html_split/_0023advanced_002d1.html deleted file mode 100644 index 282a7b8..0000000 --- a/0.0.2/html_split/_0023advanced_002d1.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#advanced-1 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #advanced-1.

    - diff --git a/0.0.2/html_split/_0023advanced_002d2.html b/0.0.2/html_split/_0023advanced_002d2.html deleted file mode 100644 index 039b3ff..0000000 --- a/0.0.2/html_split/_0023advanced_002d2.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#advanced-2 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #advanced-2.

    - diff --git a/0.0.2/html_split/_0023advanced_002d3.html b/0.0.2/html_split/_0023advanced_002d3.html deleted file mode 100644 index ebf5529..0000000 --- a/0.0.2/html_split/_0023advanced_002d3.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#advanced-3 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #advanced-3.

    - diff --git a/0.0.2/html_split/_0023backgroundrequired_002dknowledge.html b/0.0.2/html_split/_0023backgroundrequired_002dknowledge.html deleted file mode 100644 index 9959745..0000000 --- a/0.0.2/html_split/_0023backgroundrequired_002dknowledge.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#backgroundrequired-knowledge (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #backgroundrequired-knowledge.

    - diff --git a/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d1.html b/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d1.html deleted file mode 100644 index f6f6bd0..0000000 --- a/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d1.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#backgroundrequired-knowledge-1 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #backgroundrequired-knowledge-1.

    - diff --git a/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d2.html b/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d2.html deleted file mode 100644 index b0b297d..0000000 --- a/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d2.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#backgroundrequired-knowledge-2 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #backgroundrequired-knowledge-2.

    - diff --git a/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d3.html b/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d3.html deleted file mode 100644 index ae34d91..0000000 --- a/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d3.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#backgroundrequired-knowledge-3 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #backgroundrequired-knowledge-3.

    - diff --git a/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d4.html b/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d4.html deleted file mode 100644 index 7417f62..0000000 --- a/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d4.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#backgroundrequired-knowledge-4 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #backgroundrequired-knowledge-4.

    - diff --git a/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d5.html b/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d5.html deleted file mode 100644 index 8f0570c..0000000 --- a/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d5.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#backgroundrequired-knowledge-5 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #backgroundrequired-knowledge-5.

    - diff --git a/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d6.html b/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d6.html deleted file mode 100644 index a1cdee1..0000000 --- a/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d6.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#backgroundrequired-knowledge-6 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #backgroundrequired-knowledge-6.

    - diff --git a/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d7.html b/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d7.html deleted file mode 100644 index 893a0ba..0000000 --- a/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d7.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#backgroundrequired-knowledge-7 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #backgroundrequired-knowledge-7.

    - diff --git a/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d8.html b/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d8.html deleted file mode 100644 index 6080498..0000000 --- a/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d8.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#backgroundrequired-knowledge-8 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #backgroundrequired-knowledge-8.

    - diff --git a/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d9.html b/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d9.html deleted file mode 100644 index 3ea462d..0000000 --- a/0.0.2/html_split/_0023backgroundrequired_002dknowledge_002d9.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#backgroundrequired-knowledge-9 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #backgroundrequired-knowledge-9.

    - diff --git a/0.0.2/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html b/0.0.2/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html deleted file mode 100644 index 925c568..0000000 --- a/0.0.2/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#basics-types-objects-values-expressions-statements-and-control-flow-constructs (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #basics-types-objects-values-expressions-statements-and-control-flow-constructs.

    - diff --git a/0.0.2/html_split/_0023building.html b/0.0.2/html_split/_0023building.html deleted file mode 100644 index 8ffc9df..0000000 --- a/0.0.2/html_split/_0023building.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#building (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #building.

    - diff --git a/0.0.2/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html b/0.0.2/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html deleted file mode 100644 index a7e6bad..0000000 --- a/0.0.2/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#c-object-model-copy-semantics (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #c-object-model-copy-semantics.

    - diff --git a/0.0.2/html_split/_0023caveats.html b/0.0.2/html_split/_0023caveats.html deleted file mode 100644 index d4bac8b..0000000 --- a/0.0.2/html_split/_0023caveats.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#caveats (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #caveats.

    - diff --git a/0.0.2/html_split/_0023caveats_002d1.html b/0.0.2/html_split/_0023caveats_002d1.html deleted file mode 100644 index 64faefd..0000000 --- a/0.0.2/html_split/_0023caveats_002d1.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#caveats-1 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #caveats-1.

    - diff --git a/0.0.2/html_split/_0023caveats_002d2.html b/0.0.2/html_split/_0023caveats_002d2.html deleted file mode 100644 index 6c66559..0000000 --- a/0.0.2/html_split/_0023caveats_002d2.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#caveats-2 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #caveats-2.

    - diff --git a/0.0.2/html_split/_0023caveats_002d3.html b/0.0.2/html_split/_0023caveats_002d3.html deleted file mode 100644 index 479063f..0000000 --- a/0.0.2/html_split/_0023caveats_002d3.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#caveats-3 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #caveats-3.

    - diff --git a/0.0.2/html_split/_0023caveats_002d4.html b/0.0.2/html_split/_0023caveats_002d4.html deleted file mode 100644 index 9588a55..0000000 --- a/0.0.2/html_split/_0023caveats_002d4.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#caveats-4 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #caveats-4.

    - diff --git a/0.0.2/html_split/_0023caveats_002d5.html b/0.0.2/html_split/_0023caveats_002d5.html deleted file mode 100644 index 11edee5..0000000 --- a/0.0.2/html_split/_0023caveats_002d5.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#caveats-5 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #caveats-5.

    - diff --git a/0.0.2/html_split/_0023caveats_002d6.html b/0.0.2/html_split/_0023caveats_002d6.html deleted file mode 100644 index 6cea721..0000000 --- a/0.0.2/html_split/_0023caveats_002d6.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#caveats-6 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #caveats-6.

    - diff --git a/0.0.2/html_split/_0023caveats_002d7.html b/0.0.2/html_split/_0023caveats_002d7.html deleted file mode 100644 index 2a8f1cd..0000000 --- a/0.0.2/html_split/_0023caveats_002d7.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#caveats-7 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #caveats-7.

    - diff --git a/0.0.2/html_split/_0023caveats_002d8.html b/0.0.2/html_split/_0023caveats_002d8.html deleted file mode 100644 index e330642..0000000 --- a/0.0.2/html_split/_0023caveats_002d8.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#caveats-8 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #caveats-8.

    - diff --git a/0.0.2/html_split/_0023caveats_002d9.html b/0.0.2/html_split/_0023caveats_002d9.html deleted file mode 100644 index 004e434..0000000 --- a/0.0.2/html_split/_0023caveats_002d9.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#caveats-9 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #caveats-9.

    - diff --git a/0.0.2/html_split/_0023compilation_002dmodel.html b/0.0.2/html_split/_0023compilation_002dmodel.html deleted file mode 100644 index 1017867..0000000 --- a/0.0.2/html_split/_0023compilation_002dmodel.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#compilation-model (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #compilation-model.

    - diff --git a/0.0.2/html_split/_0023compile_002dtime_002dcomputation.html b/0.0.2/html_split/_0023compile_002dtime_002dcomputation.html deleted file mode 100644 index 59b0c57..0000000 --- a/0.0.2/html_split/_0023compile_002dtime_002dcomputation.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#compile-time-computation (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #compile-time-computation.

    - diff --git a/0.0.2/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html b/0.0.2/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html deleted file mode 100644 index 9294adf..0000000 --- a/0.0.2/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#context-and-aim-of-this-guide (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #context-and-aim-of-this-guide.

    - diff --git a/0.0.2/html_split/_0023contributing_002dto_002dthis_002ddocument.html b/0.0.2/html_split/_0023contributing_002dto_002dthis_002ddocument.html deleted file mode 100644 index 272d848..0000000 --- a/0.0.2/html_split/_0023contributing_002dto_002dthis_002ddocument.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#contributing-to-this-document (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #contributing-to-this-document.

    - diff --git a/0.0.2/html_split/_0023contributors.html b/0.0.2/html_split/_0023contributors.html deleted file mode 100644 index a391f9d..0000000 --- a/0.0.2/html_split/_0023contributors.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#contributors (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #contributors.

    - diff --git a/0.0.2/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html b/0.0.2/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html deleted file mode 100644 index d32c27e..0000000 --- a/0.0.2/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#detailed-information-for-modules-and-topics (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #detailed-information-for-modules-and-topics.

    - diff --git a/0.0.2/html_split/_0023disclaimer.html b/0.0.2/html_split/_0023disclaimer.html deleted file mode 100644 index e9658d6..0000000 --- a/0.0.2/html_split/_0023disclaimer.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#disclaimer (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #disclaimer.

    - diff --git a/0.0.2/html_split/_0023error_002dhandling.html b/0.0.2/html_split/_0023error_002dhandling.html deleted file mode 100644 index 80cfb94..0000000 --- a/0.0.2/html_split/_0023error_002dhandling.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#error-handling (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #error-handling.

    - diff --git a/0.0.2/html_split/_0023examples_002dof_002dcourse_002dcurricula.html b/0.0.2/html_split/_0023examples_002dof_002dcourse_002dcurricula.html deleted file mode 100644 index 99af091..0000000 --- a/0.0.2/html_split/_0023examples_002dof_002dcourse_002dcurricula.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#examples-of-course-curricula (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #examples-of-course-curricula.

    - diff --git a/0.0.2/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html b/0.0.2/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html deleted file mode 100644 index fc9b3eb..0000000 --- a/0.0.2/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#external-i.e.-non-standard-libraries (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #external-i.e.-non-standard-libraries.

    - diff --git a/0.0.2/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html b/0.0.2/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html deleted file mode 100644 index f915680..0000000 --- a/0.0.2/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#foundational-calling-static_assert-with-a-constant-expression (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #foundational-calling-static_assert-with-a-constant-expression.

    - diff --git a/0.0.2/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html b/0.0.2/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html deleted file mode 100644 index 88f62bc..0000000 --- a/0.0.2/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#foundational-how-and-when-are-copies-made (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #foundational-how-and-when-are-copies-made.

    - diff --git a/0.0.2/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html b/0.0.2/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html deleted file mode 100644 index 95ab098..0000000 --- a/0.0.2/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#foundational-using-and-defining-functions-with-default-arguments (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #foundational-using-and-defining-functions-with-default-arguments.

    - diff --git a/0.0.2/html_split/_0023foundational_002dusing_002dudls.html b/0.0.2/html_split/_0023foundational_002dusing_002dudls.html deleted file mode 100644 index 2f7afdd..0000000 --- a/0.0.2/html_split/_0023foundational_002dusing_002dudls.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#foundational-using-udls (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #foundational-using-udls.

    - diff --git a/0.0.2/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html b/0.0.2/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html deleted file mode 100644 index 708f2d3..0000000 --- a/0.0.2/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#foundational-writing-requires-expressions (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #foundational-writing-requires-expressions.

    - diff --git a/0.0.2/html_split/_0023functions.html b/0.0.2/html_split/_0023functions.html deleted file mode 100644 index e304abe..0000000 --- a/0.0.2/html_split/_0023functions.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#functions (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #functions.

    - diff --git a/0.0.2/html_split/_0023functions_002ddefault_002dargument.html b/0.0.2/html_split/_0023functions_002ddefault_002dargument.html deleted file mode 100644 index ccfbcbb..0000000 --- a/0.0.2/html_split/_0023functions_002ddefault_002dargument.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#functions-default-argument (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #functions-default-argument.

    - diff --git a/0.0.2/html_split/_0023functions_002duser_002ddefined_002dliterals.html b/0.0.2/html_split/_0023functions_002duser_002ddefined_002dliterals.html deleted file mode 100644 index b4f78b5..0000000 --- a/0.0.2/html_split/_0023functions_002duser_002ddefined_002dliterals.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#functions-user-defined-literals (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #functions-user-defined-literals.

    - diff --git a/0.0.2/html_split/_0023generic_002dprogramming_002dtemplates.html b/0.0.2/html_split/_0023generic_002dprogramming_002dtemplates.html deleted file mode 100644 index 3b91080..0000000 --- a/0.0.2/html_split/_0023generic_002dprogramming_002dtemplates.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#generic-programming-templates (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #generic-programming-templates.

    - diff --git a/0.0.2/html_split/_0023glossary.html b/0.0.2/html_split/_0023glossary.html deleted file mode 100644 index 9b46bf6..0000000 --- a/0.0.2/html_split/_0023glossary.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#glossary (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #glossary.

    - diff --git a/0.0.2/html_split/_0023how_002dto_002dcontribute.html b/0.0.2/html_split/_0023how_002dto_002dcontribute.html deleted file mode 100644 index d9cff4a..0000000 --- a/0.0.2/html_split/_0023how_002dto_002dcontribute.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#how-to-contribute (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #how-to-contribute.

    - diff --git a/0.0.2/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html b/0.0.2/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html deleted file mode 100644 index def5140..0000000 --- a/0.0.2/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#inheritance-and-class-hierarchies (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #inheritance-and-class-hierarchies.

    - diff --git a/0.0.2/html_split/_0023license.html b/0.0.2/html_split/_0023license.html deleted file mode 100644 index 6b44dd1..0000000 --- a/0.0.2/html_split/_0023license.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#license (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #license.

    - diff --git a/0.0.2/html_split/_0023main_002dadvanced_002drequirements.html b/0.0.2/html_split/_0023main_002dadvanced_002drequirements.html deleted file mode 100644 index 8214533..0000000 --- a/0.0.2/html_split/_0023main_002dadvanced_002drequirements.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#main-advanced-requirements (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #main-advanced-requirements.

    - diff --git a/0.0.2/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html b/0.0.2/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html deleted file mode 100644 index 22b0484..0000000 --- a/0.0.2/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#main-contracts-and-static_assert (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #main-contracts-and-static_assert.

    - diff --git a/0.0.2/html_split/_0023main_002dimplementing.html b/0.0.2/html_split/_0023main_002dimplementing.html deleted file mode 100644 index 260008c..0000000 --- a/0.0.2/html_split/_0023main_002dimplementing.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#main-implementing (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #main-implementing.

    - diff --git a/0.0.2/html_split/_0023main_002dimplementing_002dudls.html b/0.0.2/html_split/_0023main_002dimplementing_002dudls.html deleted file mode 100644 index a41d194..0000000 --- a/0.0.2/html_split/_0023main_002dimplementing_002dudls.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#main-implementing-udls (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #main-implementing-udls.

    - diff --git a/0.0.2/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html b/0.0.2/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html deleted file mode 100644 index 1e5a4d8..0000000 --- a/0.0.2/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#main-implementing-user-defined-copy-operations (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #main-implementing-user-defined-copy-operations.

    - diff --git a/0.0.2/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html b/0.0.2/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html deleted file mode 100644 index 4502ed8..0000000 --- a/0.0.2/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#meta-error-handling-static_assert (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #meta-error-handling-static_assert.

    - diff --git a/0.0.2/html_split/_0023module_002dname_002drequires_002dexpressions.html b/0.0.2/html_split/_0023module_002dname_002drequires_002dexpressions.html deleted file mode 100644 index 56a9ebf..0000000 --- a/0.0.2/html_split/_0023module_002dname_002drequires_002dexpressions.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#module-name-requires-expressions (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #module-name-requires-expressions.

    - diff --git a/0.0.2/html_split/_0023motivation.html b/0.0.2/html_split/_0023motivation.html deleted file mode 100644 index 0141374..0000000 --- a/0.0.2/html_split/_0023motivation.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#motivation (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #motivation.

    - diff --git a/0.0.2/html_split/_0023motivation_002d1.html b/0.0.2/html_split/_0023motivation_002d1.html deleted file mode 100644 index 7e4a69e..0000000 --- a/0.0.2/html_split/_0023motivation_002d1.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#motivation-1 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #motivation-1.

    - diff --git a/0.0.2/html_split/_0023motivation_002d2.html b/0.0.2/html_split/_0023motivation_002d2.html deleted file mode 100644 index 7901fd3..0000000 --- a/0.0.2/html_split/_0023motivation_002d2.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#motivation-2 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #motivation-2.

    - diff --git a/0.0.2/html_split/_0023motivation_002d3.html b/0.0.2/html_split/_0023motivation_002d3.html deleted file mode 100644 index ec720ad..0000000 --- a/0.0.2/html_split/_0023motivation_002d3.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#motivation-3 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #motivation-3.

    - diff --git a/0.0.2/html_split/_0023motivation_002d4.html b/0.0.2/html_split/_0023motivation_002d4.html deleted file mode 100644 index f53583a..0000000 --- a/0.0.2/html_split/_0023motivation_002d4.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#motivation-4 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #motivation-4.

    - diff --git a/0.0.2/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html b/0.0.2/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html deleted file mode 100644 index 57e8b6e..0000000 --- a/0.0.2/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#obtaining-this-document-the-most-recent-version-and-alternate-formats (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #obtaining-this-document-the-most-recent-version-and-alternate-formats.

    - diff --git a/0.0.2/html_split/_0023organization_002dof_002dthis_002ddocument.html b/0.0.2/html_split/_0023organization_002dof_002dthis_002ddocument.html deleted file mode 100644 index e312b8e..0000000 --- a/0.0.2/html_split/_0023organization_002dof_002dthis_002ddocument.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#organization-of-this-document (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #organization-of-this-document.

    - diff --git a/0.0.2/html_split/_0023overview.html b/0.0.2/html_split/_0023overview.html deleted file mode 100644 index b2d4bdc..0000000 --- a/0.0.2/html_split/_0023overview.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#overview (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #overview.

    - diff --git a/0.0.2/html_split/_0023overview_002d1.html b/0.0.2/html_split/_0023overview_002d1.html deleted file mode 100644 index d551764..0000000 --- a/0.0.2/html_split/_0023overview_002d1.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#overview-1 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #overview-1.

    - diff --git a/0.0.2/html_split/_0023overview_002d2.html b/0.0.2/html_split/_0023overview_002d2.html deleted file mode 100644 index 5a34b05..0000000 --- a/0.0.2/html_split/_0023overview_002d2.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#overview-2 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #overview-2.

    - diff --git a/0.0.2/html_split/_0023overview_002d3.html b/0.0.2/html_split/_0023overview_002d3.html deleted file mode 100644 index f230145..0000000 --- a/0.0.2/html_split/_0023overview_002d3.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#overview-3 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #overview-3.

    - diff --git a/0.0.2/html_split/_0023overview_002d4.html b/0.0.2/html_split/_0023overview_002d4.html deleted file mode 100644 index 2436b9a..0000000 --- a/0.0.2/html_split/_0023overview_002d4.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#overview-4 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #overview-4.

    - diff --git a/0.0.2/html_split/_0023points_002dto_002dcover.html b/0.0.2/html_split/_0023points_002dto_002dcover.html deleted file mode 100644 index 424b02b..0000000 --- a/0.0.2/html_split/_0023points_002dto_002dcover.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#points-to-cover (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #points-to-cover.

    - diff --git a/0.0.2/html_split/_0023points_002dto_002dcover_002d1.html b/0.0.2/html_split/_0023points_002dto_002dcover_002d1.html deleted file mode 100644 index 2a554bb..0000000 --- a/0.0.2/html_split/_0023points_002dto_002dcover_002d1.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#points-to-cover-1 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #points-to-cover-1.

    - diff --git a/0.0.2/html_split/_0023points_002dto_002dcover_002d2.html b/0.0.2/html_split/_0023points_002dto_002dcover_002d2.html deleted file mode 100644 index 053a51a..0000000 --- a/0.0.2/html_split/_0023points_002dto_002dcover_002d2.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#points-to-cover-2 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #points-to-cover-2.

    - diff --git a/0.0.2/html_split/_0023points_002dto_002dcover_002d3.html b/0.0.2/html_split/_0023points_002dto_002dcover_002d3.html deleted file mode 100644 index b0dad48..0000000 --- a/0.0.2/html_split/_0023points_002dto_002dcover_002d3.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#points-to-cover-3 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #points-to-cover-3.

    - diff --git a/0.0.2/html_split/_0023points_002dto_002dcover_002d4.html b/0.0.2/html_split/_0023points_002dto_002dcover_002d4.html deleted file mode 100644 index 94de8fa..0000000 --- a/0.0.2/html_split/_0023points_002dto_002dcover_002d4.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#points-to-cover-4 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #points-to-cover-4.

    - diff --git a/0.0.2/html_split/_0023points_002dto_002dcover_002d5.html b/0.0.2/html_split/_0023points_002dto_002dcover_002d5.html deleted file mode 100644 index 39d1eaf..0000000 --- a/0.0.2/html_split/_0023points_002dto_002dcover_002d5.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#points-to-cover-5 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #points-to-cover-5.

    - diff --git a/0.0.2/html_split/_0023points_002dto_002dcover_002d6.html b/0.0.2/html_split/_0023points_002dto_002dcover_002d6.html deleted file mode 100644 index 92df88f..0000000 --- a/0.0.2/html_split/_0023points_002dto_002dcover_002d6.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#points-to-cover-6 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #points-to-cover-6.

    - diff --git a/0.0.2/html_split/_0023points_002dto_002dcover_002d7.html b/0.0.2/html_split/_0023points_002dto_002dcover_002d7.html deleted file mode 100644 index 6e6c895..0000000 --- a/0.0.2/html_split/_0023points_002dto_002dcover_002d7.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#points-to-cover-7 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #points-to-cover-7.

    - diff --git a/0.0.2/html_split/_0023points_002dto_002dcover_002d8.html b/0.0.2/html_split/_0023points_002dto_002dcover_002d8.html deleted file mode 100644 index b5574e1..0000000 --- a/0.0.2/html_split/_0023points_002dto_002dcover_002d8.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#points-to-cover-8 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #points-to-cover-8.

    - diff --git a/0.0.2/html_split/_0023preprocessor.html b/0.0.2/html_split/_0023preprocessor.html deleted file mode 100644 index a3bb5f6..0000000 --- a/0.0.2/html_split/_0023preprocessor.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#preprocessor (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #preprocessor.

    - diff --git a/0.0.2/html_split/_0023references.html b/0.0.2/html_split/_0023references.html deleted file mode 100644 index 69fbd6b..0000000 --- a/0.0.2/html_split/_0023references.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#references (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #references.

    - diff --git a/0.0.2/html_split/_0023references_002don_002dlearning_002doutcomes.html b/0.0.2/html_split/_0023references_002don_002dlearning_002doutcomes.html deleted file mode 100644 index d28fbbf..0000000 --- a/0.0.2/html_split/_0023references_002don_002dlearning_002doutcomes.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#references-on-learning-outcomes (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #references-on-learning-outcomes.

    - diff --git a/0.0.2/html_split/_0023software_002ddesign.html b/0.0.2/html_split/_0023software_002ddesign.html deleted file mode 100644 index 16f5f54..0000000 --- a/0.0.2/html_split/_0023software_002ddesign.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#software-design (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #software-design.

    - diff --git a/0.0.2/html_split/_0023standard_002dlibrary.html b/0.0.2/html_split/_0023standard_002dlibrary.html deleted file mode 100644 index 71956d3..0000000 --- a/0.0.2/html_split/_0023standard_002dlibrary.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#standard-library (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #standard-library.

    - diff --git a/0.0.2/html_split/_0023student_002doutcomes.html b/0.0.2/html_split/_0023student_002doutcomes.html deleted file mode 100644 index df0035d..0000000 --- a/0.0.2/html_split/_0023student_002doutcomes.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#student-outcomes (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #student-outcomes.

    - diff --git a/0.0.2/html_split/_0023student_002doutcomes_002d1.html b/0.0.2/html_split/_0023student_002doutcomes_002d1.html deleted file mode 100644 index e9344b7..0000000 --- a/0.0.2/html_split/_0023student_002doutcomes_002d1.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#student-outcomes-1 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #student-outcomes-1.

    - diff --git a/0.0.2/html_split/_0023student_002doutcomes_002d2.html b/0.0.2/html_split/_0023student_002doutcomes_002d2.html deleted file mode 100644 index 6fa7724..0000000 --- a/0.0.2/html_split/_0023student_002doutcomes_002d2.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#student-outcomes-2 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #student-outcomes-2.

    - diff --git a/0.0.2/html_split/_0023student_002doutcomes_002d3.html b/0.0.2/html_split/_0023student_002doutcomes_002d3.html deleted file mode 100644 index 195d9d2..0000000 --- a/0.0.2/html_split/_0023student_002doutcomes_002d3.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#student-outcomes-3 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #student-outcomes-3.

    - diff --git a/0.0.2/html_split/_0023student_002doutcomes_002d4.html b/0.0.2/html_split/_0023student_002doutcomes_002d4.html deleted file mode 100644 index 3e30430..0000000 --- a/0.0.2/html_split/_0023student_002doutcomes_002d4.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#student-outcomes-4 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #student-outcomes-4.

    - diff --git a/0.0.2/html_split/_0023student_002doutcomes_002d5.html b/0.0.2/html_split/_0023student_002doutcomes_002d5.html deleted file mode 100644 index 0a4a7da..0000000 --- a/0.0.2/html_split/_0023student_002doutcomes_002d5.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#student-outcomes-5 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #student-outcomes-5.

    - diff --git a/0.0.2/html_split/_0023student_002doutcomes_002d6.html b/0.0.2/html_split/_0023student_002doutcomes_002d6.html deleted file mode 100644 index c5c4ac0..0000000 --- a/0.0.2/html_split/_0023student_002doutcomes_002d6.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#student-outcomes-6 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #student-outcomes-6.

    - diff --git a/0.0.2/html_split/_0023student_002doutcomes_002d7.html b/0.0.2/html_split/_0023student_002doutcomes_002d7.html deleted file mode 100644 index 5233f94..0000000 --- a/0.0.2/html_split/_0023student_002doutcomes_002d7.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#student-outcomes-7 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #student-outcomes-7.

    - diff --git a/0.0.2/html_split/_0023student_002doutcomes_002d8.html b/0.0.2/html_split/_0023student_002doutcomes_002d8.html deleted file mode 100644 index f19fd7f..0000000 --- a/0.0.2/html_split/_0023student_002doutcomes_002d8.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#student-outcomes-8 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #student-outcomes-8.

    - diff --git a/0.0.2/html_split/_0023student_002doutcomes_002d9.html b/0.0.2/html_split/_0023student_002doutcomes_002d9.html deleted file mode 100644 index 735a21f..0000000 --- a/0.0.2/html_split/_0023student_002doutcomes_002d9.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#student-outcomes-9 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #student-outcomes-9.

    - diff --git a/0.0.2/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html b/0.0.2/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html deleted file mode 100644 index 4801178..0000000 --- a/0.0.2/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#summary-of-modules-and-topics (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #summary-of-modules-and-topics.

    - diff --git a/0.0.2/html_split/_0023testing_002dand_002ddebugging.html b/0.0.2/html_split/_0023testing_002dand_002ddebugging.html deleted file mode 100644 index 1ae096d..0000000 --- a/0.0.2/html_split/_0023testing_002dand_002ddebugging.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#testing-and-debugging (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #testing-and-debugging.

    - diff --git a/0.0.2/html_split/_0023tooling.html b/0.0.2/html_split/_0023tooling.html deleted file mode 100644 index 634a8dc..0000000 --- a/0.0.2/html_split/_0023tooling.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#tooling (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #tooling.

    - diff --git a/0.0.2/html_split/_0023topic_002dintroduction.html b/0.0.2/html_split/_0023topic_002dintroduction.html deleted file mode 100644 index 742d5d9..0000000 --- a/0.0.2/html_split/_0023topic_002dintroduction.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#topic-introduction (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #topic-introduction.

    - diff --git a/0.0.2/html_split/_0023topic_002dintroduction_002d1.html b/0.0.2/html_split/_0023topic_002dintroduction_002d1.html deleted file mode 100644 index a110644..0000000 --- a/0.0.2/html_split/_0023topic_002dintroduction_002d1.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#topic-introduction-1 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #topic-introduction-1.

    - diff --git a/0.0.2/html_split/_0023topic_002dintroduction_002d2.html b/0.0.2/html_split/_0023topic_002dintroduction_002d2.html deleted file mode 100644 index 986bf37..0000000 --- a/0.0.2/html_split/_0023topic_002dintroduction_002d2.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#topic-introduction-2 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #topic-introduction-2.

    - diff --git a/0.0.2/html_split/_0023topic_002dintroduction_002d3.html b/0.0.2/html_split/_0023topic_002dintroduction_002d3.html deleted file mode 100644 index 3d14fd9..0000000 --- a/0.0.2/html_split/_0023topic_002dintroduction_002d3.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#topic-introduction-3 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #topic-introduction-3.

    - diff --git a/0.0.2/html_split/_0023topic_002dintroduction_002d4.html b/0.0.2/html_split/_0023topic_002dintroduction_002d4.html deleted file mode 100644 index c73a236..0000000 --- a/0.0.2/html_split/_0023topic_002dintroduction_002d4.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#topic-introduction-4 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #topic-introduction-4.

    - diff --git a/0.0.2/html_split/_0023use_002dof_002dthis_002ddocument.html b/0.0.2/html_split/_0023use_002dof_002dthis_002ddocument.html deleted file mode 100644 index 68d835d..0000000 --- a/0.0.2/html_split/_0023use_002dof_002dthis_002ddocument.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#use-of-this-document (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #use-of-this-document.

    - diff --git a/0.0.2/html_split/_0023user_002ddefined_002dtypes_002dclasses.html b/0.0.2/html_split/_0023user_002ddefined_002dtypes_002dclasses.html deleted file mode 100644 index 04771a9..0000000 --- a/0.0.2/html_split/_0023user_002ddefined_002dtypes_002dclasses.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#user-defined-types-classes (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #user-defined-types-classes.

    - diff --git a/0.0.2/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html b/0.0.2/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html deleted file mode 100644 index f4b9435..0000000 --- a/0.0.2/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#working-group-documents-related-to-c-teaching-guidelines (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #working-group-documents-related-to-c-teaching-guidelines.

    - diff --git a/0.0.2/html_split/index.html b/0.0.2/html_split/index.html deleted file mode 100644 index c4e5ff0..0000000 --- a/0.0.2/html_split/index.html +++ /dev/null @@ -1,240 +0,0 @@ - - - - - -Top (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -

    Table of Contents

    - -
    - - -
    - - - -
    -

    Guidelines for Teaching C++

    - - - - - - - - - - - - - - - - - - -
    - - - - - - diff --git a/0.0.2/html_split/unknown_node.html b/0.0.2/html_split/unknown_node.html deleted file mode 100644 index 5a652e5..0000000 --- a/0.0.2/html_split/unknown_node.html +++ /dev/null @@ -1,763 +0,0 @@ - - - - - -Guidelines for Teaching C++ - - - - - - - - - - - - - - - - -
    -

    -   [Contents]

    -
    -
    -

    8.1.5.1 Background/Required Knowledge

    -

    A student is able to: * identify special member functions -[C++ object model: -special member functions] -

    -

    It helps when a student is able to: * use move semantics -[C++ object model: move -semantics] * explain the rule of zero -[C++ object model: rule-of-zero] -* explain the rule of five [C++ -object model: rule-of-five] -

    -
    -

    -   [Contents]

    -
    -

    8.1.5.2 Student outcomes

    -

    A list of things “a student should be able to” after the -curriculum. The next word should be an action word and testable -in an exam. Max 5 items. -

    -

    A student should be able to: * explain when they have to implement the -copy operations for their own type * Copy constructor * Copy assignment -operator * implement copy operations for their own types * -Optional: explain when copying with basic and strong exception -guarantees is useful -

    -
    -

    -   [Contents]

    -
    -

    8.1.5.3 Caveats

    -

    This section mentions subtle points to understand, like anything -resulting in implementation-defined, unspecified, or undefined -behavior. -

    -
      -
    • Intricacies when implementing copy operations: -
        -
      • Examples of how not to write copy operations (e.g., C++03 -std::auto_ptr) -
      - -
    - -
    -

    -   [Contents]

    -
    -

    8.1.5.4 Points to cover

    -

    This section lists important details for each point. -

    -
      -
    • Copy constructors and copy assignment operators -
        -
      • How compiler generates default copy operations -
      • =default, =delete (No copy) -
      • How-to write your own copy operations -
      • Rule-of-five -
      • Copy assignment operators can be ref-qualified to avoid assigning into -temporary objects. -
      - -
    - -
    -

    -   [Contents]

    -
    -

    8.2.1 Overview

    -

    Provides a short natural language abstract of the module’s -contents. Specifies the different levels of teaching. -

    - - - - - -
    LevelObjectives
    Foundationalusing and understanding UDLs
    Mainimplementing your own UDLs
    AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
    - -
    -

    -   [Contents]

    -
    -

    8.2.2 Motivation

    -

    Why is this important? Why do we want to learn/teach this -topic? -

    -
      -
    • Allows clearer expression of intent in C++. -
    • std::string: "Hello, world!"s -
    • std::chrono: 3h + 10min + 5s -
    - -
    -

    -   [Contents]

    -
    -

    8.2.3 Topic introduction

    -

    Very brief introduction to the topic. -

    -
      -
    • Explain the existence of user defined literals. Example: -12min + 17s is terse, expressive and type safe. -
    - -
    -

    -   [Contents]

    -
    -

    8.2.4.1 Background/Required Knowledge

    -

    A student: * knows how to form numeric literals, e.g., 1.5f means -a float of value 1.5. * is familiar with the major C++ -types: * bool (Boolean type) * int (Integer type) * -double (Floating-point type) * std::string (Text type) * -std::vector (Collection type) * knows that namespaces exist, and -namespace std. * knows what using-declarations and -using-directives are. -[C++ object -model: declarations] -

    -
    -

    -   [Contents]

    -
    -

    8.2.4.2 Student outcomes

    -

    A list of things “a student should be able to” after the -curriculum. The next word should be an action word and testable -in an exam. Max 5 items. -

    -

    A student should be able to: -

    -
      -
    1. use using namespace std::string_literals[1]. -
    2. recognise UDLs in code that they are reading. -
    3. figure out which UDL definitions for a used type exist. -
    4. identify parts of the standard library that make use of UDLs. -
    5. prevent the dangers of temporaries created with "blah"s as well -as with std::string{"blah"}. -
    6. effectively selects the right set of namespaces in using-directives from -the sub-namespaces std::literals. -
    - -

    [1]: explain that it’s okay to use a using-directive to “activate” -UDLs. -

    -
    -

    -   [Contents]

    -
    -

    8.2.4.3 Caveats

    -

    This section mentions subtle points to understand, like anything -resulting in implementation-defined, unspecified, or undefined -behavior. -

    -
      -
    • A student gets confused by the similarities and differences between -built-in suffixes and UDLs and between UDLs from different namespaces. -
    • A student “activates” two suffixes with the same signature from -different namespaces. -
    - -
    -

    -   [Contents]

    -
    -

    8.2.4.4 Points to cover

    -

    This section lists important details for each point. -

    -
    -

    -   [Contents]

    -
    -

    8.2.5.1 Background/Required Knowledge

    -
      -
    • All of the above. -
    - -
    -

    -   [Contents]

    -
    -

    8.2.5.2 Student outcomes

    -

    A list of things “a student should be able to” after the -curriculum. The next word should be an action word and testable -in an exam. Max 5 items. -

    -

    A student should be able to: -

    -
      -
    1. write a UDL operator of their own. -
    2. separate unrelated UDLs into distinct namespaces. -
    - -
    -

    -   [Contents]

    -
    -

    8.2.5.3 Caveats

    -

    This section mentions subtle points to understand, like anything -resulting in implementation-defined, unspecified, or undefined -behavior. -

    -

    No caveats at present. #### Points to cover -

    -

    This section lists important details for each point. -

    -

    No caveats at present. ### Advanced {#udl-advanced} -

    -

    These are important topics that are not expected to be covered but -provide guidance where one can continue to investigate this topic in -more depth. -

    -
    -

    -   [Contents]

    -
    -

    8.3.1 Overview

    -

    Functions in C++ may be overloaded with different numbers and types of -parameters. It may be of value to specify default arguments for some -number of parameters, to allow a caller to avoid specifying arguments -that rarely change, or to enable expanding the set of parameters while -maintaining backward compatibility with existing callers. -

    - - - - - -
    LevelObjective
    FoundationalDefine and use functions with default arguments
    Main
    Advancedrefinement of default arguments through multiple declarations
    - -
    -

    -   [Contents]

    -
    -

    8.3.2 Motivation

    -

    Default arguments allow the omission of arguments with obvious or common -values. Also may be utilized to extend an existing function signature -without forcing changes to existing calling code. -

    -
    -

    -   [Contents]

    -
    -

    8.3.3 Topic introduction

    -

    Explain how default arguments work and how to define them. -

    -
    -

    -   [Contents]

    -
    -

    8.3.4.1 Background/Required Knowledge

    -

    A student is able to: -

    - - -
    -

    -   [Contents]

    -
    -

    8.3.4.2 Student outcomes

    -

    A student should be able to: -

    -
      -
    1. Call to a function with a default argument with or without that argument -specified -
    2. Declare a function with a default argument, and omit the default in the -definition’s signature -
    3. Explain when the lifetime of a default argument begins and ends -
    - -
    -

    -   [Contents]

    -
    -

    8.3.4.3 Caveats

    -
      -
    • When no forward-declaration exists, the definition serves as the -declaration -
    • When multiple declarations exist, only one may specify the default for -any particular parameter, but multiple declarations may specify the -defaults for different parameters. -
    • Additional default values may be specified for other parameters in -repeat declarations -
    • Calling an overloaded function with fewer arguments may be ambiguous -with regard to an overload with default arguments -
    - -
    -

    -   [Contents]

    -
    -

    8.3.4.4 Points to cover

    -
      -
    • Default value may only be specified once for each parameter among all -declarations -
    • Default values must start from the rightmost parameter and continue -leftward without gaps -
    • Considerations of when to use default arguments vs overload set -
    - -
    -

    -   [Contents]

    -
    -

    8.3.5.2 Student outcomes

    -

    A student should be able to: -

    -
    -

    -   [Contents]

    -
    -

    8.3.5.3 Caveats

    - -
    -

    -   [Contents]

    -
    -

    8.3.5.4 Points to cover

    - -
    -

    -   [Contents]

    -
    -

    8.3.6 Advanced

    -

    Subsequent redeclarations of the same function may add default argument -values, which are then usable by callers. Though a single parameter -cannot be given a default argument twice in the same translation unit, -it is legal, though ill-advised, to give the same function different -default arguments in different translation units. -

    -
    -

    -   [Contents]

    -
    -

    8.4.1 Overview

    - - - - - -
    LevelObjectives
    FoundationalDefine and use requires-expressions to check satisfaction of -expressions by given parameters
    MainDefine and use requires-expressions to check properties of -expressions
    Advanced
    - -
    -

    -   [Contents]

    -
    -

    8.4.2 Motivation

    -

    Requires-expressions allow a developer to perform compile-time -evaluation on the validity of other expressions. These are fundamental -to the ability to write concepts. -[Compile-time programming: -concepts] -

    -
    -

    -   [Contents]

    -
    -

    8.5 Topic introduction

    -

    Requires-expressions are compile-time predicates which evaluate to true -when their specified set of expressions are all valid for a given set of -inputs. -

    - - - - - - -
    -

    -   [Contents]

    -
    -

    8.5.1.1 Background/Required Knowledge

    -

    A student is able to: -

    - - -

    It is helpful if: -

    -
      -
    • The student is aware that attempting to specialize the template with -types or values which do not match otherwise unstated assumptions will -cause errors within the template. -
    - -
    -

    -   [Contents]

    -
    -

    8.5.1.2 Student outcomes

    -

    A student should be able to: -

    -
      -
    1. Write a simple-requirement to assert the validity of an expression -
    2. Write a type-requirement to check the existence of a type by its -identifier -
    3. Write a compound-requirement to test the resulting type of an expression -
    4. Write a nested-requirement to test the constexpr value of an operation, -as opposed to just the syntactic validity -
    5. Use a requires-expression within a concept, requires-clause, or -if constexpr condition -
    - -
    -

    -   [Contents]

    -
    -

    8.5.1.3 Caveats

    -

    To require that expressions, which evaluate to a boolean value like -sizeof(t) == 4, evaluate to true a nested-requirement is -needed (e.g., requires sizeof(t) == 4;). Omitting the -requires results in a simple-requirement, which is satisfied -based purely on syntactic validity, not on the result of the operation. -

    -
    -

    -   [Contents]

    -
    -

    8.5.1.4 Points to cover

    -
      -
    • All requires-expression requirements terminate with a semicolon. -
    • simple-requirements are used to check that an expression is well-formed. -
    • nested-requirements are introduced with requires and primarily -used to check the result of an expression computable by the compiler, -including concepts or other requires-expressions. -
    • type-requirements are introduced with typename and used to verify -the existence of a type with a particular identifier. -
    • compound-requirements are enclosed in braces and can be used to check -the resulting type of an expression. -
    • Checks are performed by the compiler, not at run time. -
    • If covering usage of requires-expression with requires-clause, -[Compile-time -programming: requires clause] demonstrate requires requires and -show how to ever avoid writing it by using a concept. -[Compile-time programming: -concepts] -
    - -
    -

    -   [Contents]

    -
    -

    8.5.2.1 Background/required knowledge

    -
      -
    • All of the above. -
    • Knowledge of noexcept -
    - -

    A student is able to: -

    - - -
    -

    -   [Contents]

    -
    -

    8.5.2.2 Student outcomes

    -

    A student should be able to: -

    -
      -
    1. Write compound-requirements which test the noexceptness of an -expression. -
    2. Use a concept as the target of a compound-requirement. -
    - -
    -

    -   [Contents]

    -
    -

    8.5.2.3 Caveats

    - -
    -

    -   [Contents]

    -
    -

    8.5.2.4 Points to cover

    -
      -
    • Compound-requirements allow the optional ability to test whether an -expression is marked as noexcept, by using a trailing -noexcept keyword. -
    - -
    struct S
    -{
    -    void foo() noexcept {}
    -    void bar() {}
    -};
    -
    -static_assert(requires(S s) { { s.foo() } noexcept; } ); // Succeeds. s.foo() is noexcept
    -static_assert(requires(S s) { { s.bar() } noexcept; } ); // Fails. s.bar() is not noexcept
    -
    -
      -
    • If the return-type-requirement of a compound-requirement is a concept, -that concept is given the resulting type as the first parameter, -followed by the specified parameters in the compound-requirement. -{ ++x } -> C<int> would substitute -C<decltype((++x)), int> and check that concept C is satisfied for -those parameters. -
    - -
    -

    -   [Contents]

    -
    -

    8.5.3 Advanced

    - -
    -

    -   [Contents]

    -
    -

    8.6.1 Overview

    -

    Provides a short natural language abstract of the module’s -contents. Specifies the different levels of teaching. -

    - - - - - -
    LevelObjectives
    FoundationalCalling static_assert with a constant expression
    MainUsing static_assert to detect contract violations and -improve error messages
    Advanced
    - -
    -

    -   [Contents]

    -
    -

    8.6.2 Motivation

    -

    Why is this important? Why do we want to learn/teach this -topic? -

    -

    static_assert allows the developer to enforce that conditions -which can be checked during compilation will force build errors when -violated. Additionally, they are the best mechanism by which a developer -can pass useful information to other developers regarding what violation -occurred or what must be done, instead. -

    -
    -

    -   [Contents]

    -
    -

    8.6.3 Topic introduction

    -

    Very brief introduction to the topic. -

    -

    static_assert is a compile-time evaluated function that asserts -the truth of a supplied predicate, issuing an optional user-supplied -error message if the predicate is false. -

    -
    -

    -   [Contents]

    -
    -

    8.6.4.1 Background/Required Knowledge

    -

    A student: -

    -
      -
    • Should be able to explain the difference between code evaluated at -compile-time and run-time -
    • Should be able to cite some examples of compile-time known information, -such as sizeof(T) -
    - -
    -

    -   [Contents]

    -
    -

    8.6.4.2 Student outcomes

    -

    A list of things “a student should be able to” after the -curriculum. The next word should be an action word and testable -in an exam. Max 5 items. -

    -

    A student should be able to: -

    -
      -
    1. Assert the expected size of a structure using static_assert -
    - -
    -

    -   [Contents]

    -
    -

    8.6.4.3 Caveats

    -

    This section mentions subtle points to understand, like anything -resulting in implementation-defined, unspecified, or undefined -behavior. -

    -
    -

    -   [Contents]

    -
    -

    8.6.4.4 Points to cover

    -

    This section lists important details for each point. -

    -
      -
    • X -
    • In addition to what is wrong, a good error message will inform the user -of how to correct it -
    - -
    -

    -   [Contents]

    -
    -

    8.6.5.1 Background/Required Knowledge

    -
      -
    • All of the above. -
    • General understanding of compile-time requirements -
    - -
    -

    -   [Contents]

    -
    -

    8.6.5.2 Student outcomes

    -

    A list of things “a student should be able to” after the -curriculum. The next word should be an action word and testable -in an exam. Max 5 items. -

    -

    A student should be able to: -

    -
      -
    1. Utilize static_assert to verify preconditions of a meta-function -
    2. Utilize static_assert to verify the results of meta-functions for -known values -
    - -
    -

    -   [Contents]

    -
    -

    8.6.5.3 Caveats

    -

    This section mentions subtle points to understand, like anything -resulting in implementation-defined, unspecified, or undefined -behavior. -

    -
    -

    -   [Contents]

    -
    -

    8.6.5.4 Points to cover

    -

    This section lists important details for each point. -

    -
      -
    • When writing a meta-function, use static_assert to test the -results -
    • Write static_assert calls at the scope of the code they are -guarding -
    - -
    template<typename T>
    -struct container {
    -    std::map<int, T> vals;
    -
    -    // Test location #1
    -    static_assert(
    -        std::is_default_constructible_v<T>,
    -        "container type T must be default constructible");i
    -
    -    void add(int key, T const& t) {
    -        // Test location #2
    -        static_assert(
    -            std::is_default_constructible_v<T>,
    -            "container type T must be default constructible");
    -        // std::map::operator[] requires default constructible type for 
    -        // the value. This will cause a build failure deep in the 
    -        // implementation of std::map, when T is not default constructible
    -        vals[key] = t;
    -    }
    -};
    -
    -struct NoDefCtor {
    -    NoDefCtor() = delete;
    -    NoDefCtor(double d) {}
    -};
    -
    -container<NoDefCtor> c; // If Test #1 was omitted, this would succeed
    -// This is ill-formed. Test #2 would catch this and provide a better 
    -// error message for the user
    -c.add(42, NoDefCtor(1.0)); 
    -
    -
    -

    -   [Contents]

    -
    -

    8.6.6 Advanced

    -

    These are important topics that are not expected to be covered but -provide guidance where one can continue to investigate this topic in -more depth. -

    - - - - - diff --git a/0.0.3/html/images/cpp_logo.png b/0.0.3/html/images/cpp_logo.png deleted file mode 100644 index 780e8a32bdd384c1dbd0fc999b9ef9ed2e1bdad6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23613 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 diff --git a/0.0.3/html/index.html b/0.0.3/html/index.html deleted file mode 100644 index 6659bd3..0000000 --- a/0.0.3/html/index.html +++ /dev/null @@ -1,1430 +0,0 @@ - - - - - - - Guidelines for Teaching C++ - - - - - - - - - - - - - - - - - - - - - Guidelines for Teaching C++ - - - - - - - -
    - -
    - -
    - -
    - -
    -

    Guidelines for Teaching C++

    - -

    Version 0.0.3

    - -

    SG20 (ISO C++ Study Group on Education)

    -
    -
    - -
    -
    -
    - -
    -
    - -
    -

    1 Obtaining This Document: The Most Recent Version and Alternate Formats

    -

    The most recent version of this document is available as an online HTML document at: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/latest/.

    -

    The version of the document that you are currently reading is available in the following formats:

    -
      -
    1. online (HTML) format as a single large HTML document: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.3/html [later to be https://cplusplus.github.io/SG20/0.0.3/html?]

    2. -
    3. EPUB format: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.3/guidelines.epub [later to be https:/cplusplus.github.io/SG20/0.0.3/guidelines.epub?]

    4. -
    5. online (HTML) format, split across multiple HTML documents: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.3/html_split/ [later to be https://cplusplus.github.io/SG20/0.0.3/html_split/?] [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

    6. -
    -

    Older versions of this document are also available. In general version ver is available at https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/ver. For example, version v0.1.0 (assuming that this version exists) would be available at [later to be https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/v0.1.0?].

    -

    2 Disclaimer

    -

    This document is intended as a proof of concept to solicit feedback from others. This document is incomplete. This document likely has at least a few errors.

    -

    3 Context and Aim of This Guide

    -

    This document is intended to serve as a resource for instructors to assist in the preparation of courses on C++ in a variety of settings, including university, college, and industry environments. The main objectives of this document are as follows:

    -
      -
    • to provide guidelines for content to be covered by courses of various difficulty levels on C++ (e.g., topics and learning outcomes)
    • -
    • to note some common misunderstandings and problematic points that may be encountered when teaching particular topics
    • -
    • to suggest resources useful for teaching C++
    • -
    • to present examples of curriculum for specific courses
    • -
    -

    This document does not itself provide a curriculum for a single specific course, but is rather a set of guidelines that can be used to prepare curricula for a wide variety of courses that differ in focus and level of sophistication. (This said, however, some links to other documents with examples of curricula for specific courses may be included herein.) This document only intends to target the teaching of the most recently ratified version of the C++ standard. (This said, however, since older versions of this document are also available, these older versions may be of some use to those who need guidance in older versions of the standard, at least versions that do not predate C++20.)

    -

    4 Use of This Document

    -

    [NOTE: This document follows the same license model as the C++ Core Guidelines. The LICENSE document is taken verbatim from the C++ Core Guidelines.] This document is made available under a MIT-style license. In simple terms, this license permits copying, use, modification, and creation of derivative works. A copy of the license is included in the section LICENSE.

    -

    5 Contributing to This Document

    -

    Contributions to this document are welcome. If you would like to help with this project as a contributor, please read the section How to Contribute.

    -

    6 Organization of This Document

    -

    The various concepts (i.e., ideas) to potentially be covered are partitioned into modules. A module is very broad in scope and consists of numerous topics. [Note: Can I suggest that we use the term “area” or “unit” instead of “module”? I think that these other choices are better and also avoid any potential confusion over what is meant by “module” (i.e., C++ term versus plain English term).]

    -

    For each module, topics related to the module are identified. Then, for each topic, learning outcomes are specified. In order to address a wide variety of courses on C++, each topic is addressed at three proficiency levels. These proficiency levels allow each topic to be covered at more than one level of detail. This allows target audiences with different background and learning objectives to be accommodated. The three proficiency levels are as follows:

    -
      -
    • foundational. This level gives the learner the idea that a facility exists, what benefits it offers, and the basic ways of using it. [Note: Isn’t this just “novice”/“beginner”?]

    • -
    • main. This level shows mainstream uses and techniques. For abstraction and organizational mechanisms it also demonstrates how to build them. This level should also give the learner a basic (but not detailed) understanding of how a facility might be implemented so that the learner can have a first-order understanding of any costs involved. [Note: The term “main” is not very descriptive/helpful. Could I suggest using “intermediate”?]

    • -
    • advanced. This level gives information suitable for an expert. For most topics there is an expert level of knowledge that most programmers rarely need and techniques that require detailed understanding of language rules or library implementation.

    • -
    -

    The remainder of this document is organized as follows. The various topics are listed grouped by module. In cases where a topic might be classified into more than one module, the topic is listed under the module of most direct relevance. This is done in order to avoid duplication of content. (In the case that a topic is equally relevant to multiple modules, the decision of which to select is made by a proverbial coin toss.) The order in which modules and topics are presented is not meant to imply any order of coverage in a course. The order in which items are listed is essentially arbitrary.

    -

    7 Summary of Modules and Topics

    -

    In the sections that follow, the various modules and topics are presented. There is one section per module. For each module, a table listing the various topics in that module is provided. The ID for a topic is linked to the detailed coverage of that topic that comes later in the document. If a topic has any learning outcomes at a given proficiency level, this is indicated by a checkmark (“✔️”). If a topic has no learning outcomes (simply because there are not any, not because the information is missing), this is indicated by an em dash (“—”). In the case that the information for a topic is completely missing, a question mark (“?”) symbol is used.

    -

    [NOTE: These topics are taken mostly from the SG20 GitHub repository. They are not intended to be complete in any sense. In fact, by gathering together all topics in one place where they are easily viewed, it is hoped that missing and unbalanced items will be more obvious.]

    -

    7.1 Compilation Model

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Translation Units???
    [?]Headers???
    [?]Modules???
    [?]Name Mangling???
    [?]Phases of Translation???
    [?]Separate Compilation???
    [?]Linkage???
    -

    7.2 Preprocessor

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Preprocessor Metaprogramming???
    [?]Inclusion???
    [?]Macros???
    -

    7.3 Basics Types, Objects, Values, Expressions, Statements, and Control-Flow Constructs

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Constant Objects???
    [?]Declarations and Definitions???
    [?]Selection Constructs (e.g., if, ternary)???
    [?]Looping Constructs (e.g., for, while, etc.)???
    -

    7.4 Functions

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Calling Functions???
    [?]Parameter Passing (e.g., Passing By Value and Reference)???
    [func-args]Default Arguments✔️
    [?]Returning Multiple Values???
    [?]Overloading???
    [udl]User-Defined Literals✔️✔️
    -

    7.5 User-Defined Types (Classes)

    - ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Special Member Functions???
    [?]Types???
    [?]Conversions???
    [?]Constructors and Destructors???
    [?]Move/Copy Constructors and Assignment Operators???
    [?]Member Functions???
    [?]Sum Types???
    [?]User-Defined Literals???
    [?]Special Member Functions???
    [?]Guidelines for Special Member Functions (e.g., Rule of Five, Rule of Zero)???
    [copy]Copy Semantics✔️✔️
    [?]Moving and Copying???
    [?]Lambdas???
    -

    7.6 Inheritance and Class Hierarchies

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Virtual Functions???
    [?]Run-Time Type Information???
    -

    7.7 Compile-Time Computation

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Constant Expressions and Constant Evaluation???
    [static-assert]static_assert✔️✔️
    -

    7.8 Generic Programming (Templates)

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Concepts???
    [?]SFINAE???
    [?]Template Metaprogramming???
    [?]Function Templates???
    [?]Requires Clauses???
    [req-expr]Requires Expressions✔️✔️
    -

    7.9 Error Handling

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Classes of Errors???
    [?]errno???
    [?]Error Codes???
    [?]Exception Handling???
    -

    7.10 Standard Library

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Input/Output (I/O)???
    [?]Containers, Iterators, and Algorithms???
    -

    7.11 External (i.e., Non Standard) Libraries

    - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Graphical User Interfaces???
    -

    7.12 Building

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Software Build Tools???
    [?]Strategies for Handling Build Problems???
    -

    7.13 Testing and Debugging

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Source-Level Debuggers???
    [?]Code Sanitizers???
    [?]Test Frameworks???
    [?]Debugging Strategies???
    -

    7.14 Tooling

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Compiler Toolchains???
    [?]IDEs???
    -

    7.15 Software Design

    - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Design by Contract???
    -

    8 Detailed Information for Modules and Topics

    -

    8.1 C++ object model: copy semantics

    -

    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

    -

    8.1.1 Overview

    -

    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

    - ---- - - - - - - - - - - - - - - - - - - - - -
    LevelObjectives
    Foundationalunderstanding how and when are copies made
    Mainimplementing user-defined copy operations
    Advancedspecial cases: copy elision
    -

    8.1.2 Motivation

    -

    Why is this important? Why do we want to learn/teach this topic?

    -

    Copy semantics allows the user to define how objects of a class get replicated and interact on a value level.

    -

    8.1.3 Topic introduction

    -

    Very brief introduction to the topic.

    -

    Explains when and how objects are copied.

    -

    8.1.4 Foundational: How and when are copies made

    -

    8.1.4.1 Background/Required Knowledge

    -

    A student is able to: * explain what a C++ type is? [C++ object model: types] * explain what an object is? [C++ object model: objects], [C++ object model: constant objects] * define and understand class invariants?

    -

    It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain special member functions [C++ object model: special member functions]

    -

    8.1.4.2 Student outcomes

    -

    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

    -

    A student should be able to:

    -
      -
    1. explain what copy semantics accomplish
    2. -
    -
      -
    • establishing “equivalent” object state in another object
    • -
    -
      -
    1. explain difference between copying a reference and copying a value*
    2. -
    3. explain where copies are made
    4. -
    -

    * In other languages these differences are sometimes referred to as shallow and deep copy.

    -

    8.1.4.3 Caveats

    -

    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

    -
      -
    • Compiler-provided copy operations may result in ownership problems (e.g., char*). These ownership problems can generally be solved by using types whose copy operations have the appropriate semantics, e.g., std::string instead of char* to hold string values.
    • -
    -

    8.1.4.4 Points to cover

    -

    This section lists important details for each point.

    -
      -
    • Principle of copying -
        -
      • Copying of types, which follow the rule of zero
      • -
      • Copying of types, with user defined copy operations
      • -
      • Copying an object does not change the original
      • -
    • -
    • Practical applications -
        -
      • std::unique_ptr (has no copy)
      • -
      • Strings (copies the value)
      • -
    • -
    -

    8.1.5 Main: Implementing user-defined copy operations

    -

    8.1.5.1 Background/Required Knowledge

    -

    A student is able to: * identify special member functions [C++ object model: special member functions]

    -

    It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain the rule of zero [C++ object model: rule-of-zero] * explain the rule of five [C++ object model: rule-of-five]

    -

    8.1.5.2 Student outcomes

    -

    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

    -

    A student should be able to: * explain when they have to implement the copy operations for their own type * Copy constructor * Copy assignment operator * implement copy operations for their own types * Optional: explain when copying with basic and strong exception guarantees is useful

    -

    8.1.5.3 Caveats

    -

    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

    -
      -
    • Intricacies when implementing copy operations: -
        -
      • Examples of how not to write copy operations (e.g., C++03 std::auto_ptr)
      • -
    • -
    -

    8.1.5.4 Points to cover

    -

    This section lists important details for each point.

    -
      -
    • Copy constructors and copy assignment operators -
        -
      • How compiler generates default copy operations
      • -
      • =default, =delete (No copy)
      • -
      • How-to write your own copy operations
      • -
      • Rule-of-five
      • -
      • Copy assignment operators can be ref-qualified to avoid assigning into temporary objects.
      • -
    • -
    -

    8.1.6 Advanced

    -

    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

    -

    When can copies be elided and when does the standard guarantee copy elision. References: * Abseil tip of the Week #166 * cppreference - Copy elision

    -

    8.2 Functions: user-defined literals

    -

    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

    -

    8.2.1 Overview

    -

    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

    - ---- - - - - - - - - - - - - - - - - - - - - -
    LevelObjectives
    Foundationalusing and understanding UDLs
    Mainimplementing your own UDLs
    AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
    -

    8.2.2 Motivation

    -

    Why is this important? Why do we want to learn/teach this topic?

    -
      -
    • Allows clearer expression of intent in C++.
    • -
    • std::string: "Hello, world!"s
    • -
    • std::chrono: 3h + 10min + 5s
    • -
    -

    8.2.3 Topic introduction

    -

    Very brief introduction to the topic.

    -
      -
    • Explain the existence of user defined literals. Example: 12min + 17s is terse, expressive and type safe.
    • -
    -

    8.2.4 Foundational: Using UDLs

    -

    8.2.4.1 Background/Required Knowledge

    -

    A student: * knows how to form numeric literals, e.g., 1.5f means a float of value 1.5. * is familiar with the major C++ types: * bool (Boolean type) * int (Integer type) * double (Floating-point type) * std::string (Text type) * std::vector (Collection type) * knows that namespaces exist, and namespace std. * knows what using-declarations and using-directives are. [C++ object model: declarations]

    -

    8.2.4.2 Student outcomes

    -

    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

    -

    A student should be able to:

    -
      -
    1. use using namespace std::string_literals[1].
    2. -
    3. recognise UDLs in code that they are reading.
    4. -
    5. figure out which UDL definitions for a used type exist.
    6. -
    7. identify parts of the standard library that make use of UDLs.
    8. -
    9. prevent the dangers of temporaries created with "blah"s as well as with std::string{"blah"}.
    10. -
    11. effectively selects the right set of namespaces in using-directives from the sub-namespaces std::literals.
    12. -
    -

    [1]: explain that it’s okay to use a using-directive to “activate” UDLs.

    -

    8.2.4.3 Caveats

    -

    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

    -
      -
    • A student gets confused by the similarities and differences between built-in suffixes and UDLs and between UDLs from different namespaces.
    • -
    • A student “activates” two suffixes with the same signature from different namespaces.
    • -
    -

    8.2.4.4 Points to cover

    -

    This section lists important details for each point.

    -

    8.2.5 Main: implementing UDLs

    -

    8.2.5.1 Background/Required Knowledge

    -
      -
    • All of the above.
    • -
    -

    8.2.5.2 Student outcomes

    -

    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

    -

    A student should be able to:

    -
      -
    1. write a UDL operator of their own.
    2. -
    3. separate unrelated UDLs into distinct namespaces.
    4. -
    -

    8.2.5.3 Caveats

    -

    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

    -

    No caveats at present. #### Points to cover

    -

    This section lists important details for each point.

    -

    No caveats at present. ### Advanced {#udl-advanced}

    -

    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

    -

    8.3 Functions: default argument

    -

    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

    -

    8.3.1 Overview

    -

    Functions in C++ may be overloaded with different numbers and types of parameters. It may be of value to specify default arguments for some number of parameters, to allow a caller to avoid specifying arguments that rarely change, or to enable expanding the set of parameters while maintaining backward compatibility with existing callers.

    - ---- - - - - - - - - - - - - - - - - - - - - -
    LevelObjective
    FoundationalDefine and use functions with default arguments
    Main
    Advancedrefinement of default arguments through multiple declarations
    -

    8.3.2 Motivation

    -

    Default arguments allow the omission of arguments with obvious or common values. Also may be utilized to extend an existing function signature without forcing changes to existing calling code.

    -

    8.3.3 Topic introduction

    -

    Explain how default arguments work and how to define them.

    -

    8.3.4 Foundational: Using and defining functions with default arguments

    -

    8.3.4.1 Background/Required Knowledge

    -

    A student is able to:

    - -

    8.3.4.2 Student outcomes

    -

    A student should be able to:

    -
      -
    1. Call to a function with a default argument with or without that argument specified
    2. -
    3. Declare a function with a default argument, and omit the default in the definition’s signature
    4. -
    5. Explain when the lifetime of a default argument begins and ends
    6. -
    -

    8.3.4.3 Caveats

    -
      -
    • When no forward-declaration exists, the definition serves as the declaration
    • -
    • When multiple declarations exist, only one may specify the default for any particular parameter, but multiple declarations may specify the defaults for different parameters.
    • -
    • Additional default values may be specified for other parameters in repeat declarations
    • -
    • Calling an overloaded function with fewer arguments may be ambiguous with regard to an overload with default arguments
    • -
    -

    8.3.4.4 Points to cover

    -
      -
    • Default value may only be specified once for each parameter among all declarations
    • -
    • Default values must start from the rightmost parameter and continue leftward without gaps
    • -
    • Considerations of when to use default arguments vs overload set
    • -
    -

    8.3.5 Main: implementing *

    -

    8.3.5.1 Background/required knowledge

    -
      -
    • All of the above.
    • -
    -

    8.3.5.2 Student outcomes

    -

    A student should be able to:

    -

    8.3.5.3 Caveats

    -

    8.3.5.4 Points to cover

    -

    8.3.6 Advanced

    -

    Subsequent redeclarations of the same function may add default argument values, which are then usable by callers. Though a single parameter cannot be given a default argument twice in the same translation unit, it is legal, though ill-advised, to give the same function different default arguments in different translation units.

    -

    8.4 Module name: Requires Expressions

    -

    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

    -

    8.4.1 Overview

    - ---- - - - - - - - - - - - - - - - - - - - - -
    LevelObjectives
    FoundationalDefine and use requires-expressions to check satisfaction of expressions by given parameters
    MainDefine and use requires-expressions to check properties of expressions
    Advanced
    -

    8.4.2 Motivation

    -

    Requires-expressions allow a developer to perform compile-time evaluation on the validity of other expressions. These are fundamental to the ability to write concepts. [Compile-time programming: concepts]

    -

    8.5 Topic introduction

    -

    Requires-expressions are compile-time predicates which evaluate to true when their specified set of expressions are all valid for a given set of inputs.

    -

    8.5.1 Foundational: Writing requires-expressions

    -

    8.5.1.1 Background/Required Knowledge

    -

    A student is able to:

    - -

    It is helpful if:

    -
      -
    • The student is aware that attempting to specialize the template with types or values which do not match otherwise unstated assumptions will cause errors within the template.
    • -
    -

    8.5.1.2 Student outcomes

    -

    A student should be able to:

    -
      -
    1. Write a simple-requirement to assert the validity of an expression
    2. -
    3. Write a type-requirement to check the existence of a type by its identifier
    4. -
    5. Write a compound-requirement to test the resulting type of an expression
    6. -
    7. Write a nested-requirement to test the constexpr value of an operation, as opposed to just the syntactic validity
    8. -
    9. Use a requires-expression within a concept, requires-clause, or if constexpr condition
    10. -
    -

    8.5.1.3 Caveats

    -

    To require that expressions, which evaluate to a boolean value like sizeof(t) == 4, evaluate to true a nested-requirement is needed (e.g., requires sizeof(t) == 4;). Omitting the requires results in a simple-requirement, which is satisfied based purely on syntactic validity, not on the result of the operation.

    -

    8.5.1.4 Points to cover

    -
      -
    • All requires-expression requirements terminate with a semicolon.
    • -
    • simple-requirements are used to check that an expression is well-formed.
    • -
    • nested-requirements are introduced with requires and primarily used to check the result of an expression computable by the compiler, including concepts or other requires-expressions.
    • -
    • type-requirements are introduced with typename and used to verify the existence of a type with a particular identifier.
    • -
    • compound-requirements are enclosed in braces and can be used to check the resulting type of an expression.
    • -
    • Checks are performed by the compiler, not at run time.
    • -
    • If covering usage of requires-expression with requires-clause, [Compile-time programming: requires clause] demonstrate requires requires and show how to ever avoid writing it by using a concept. [Compile-time programming: concepts]
    • -
    -

    8.5.2 Main: Advanced requirements

    -

    8.5.2.1 Background/required knowledge

    -
      -
    • All of the above.
    • -
    • Knowledge of noexcept
    • -
    -

    A student is able to:

    - -

    8.5.2.2 Student outcomes

    -

    A student should be able to:

    -
      -
    1. Write compound-requirements which test the noexceptness of an expression.
    2. -
    3. Use a concept as the target of a compound-requirement.
    4. -
    -

    8.5.2.3 Caveats

    -

    8.5.2.4 Points to cover

    -
      -
    • Compound-requirements allow the optional ability to test whether an expression is marked as noexcept, by using a trailing noexcept keyword.
    • -
    - -
      -
    • If the return-type-requirement of a compound-requirement is a concept, that concept is given the resulting type as the first parameter, followed by the specified parameters in the compound-requirement. { ++x } -> C<int> would substitute C<decltype((++x)), int> and check that concept C is satisfied for those parameters.
    • -
    -

    8.5.3 Advanced

    -

    8.6 Meta-error handling: static_assert

    -

    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

    -

    8.6.1 Overview

    -

    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

    - ---- - - - - - - - - - - - - - - - - - - - - -
    LevelObjectives
    FoundationalCalling static_assert with a constant expression
    MainUsing static_assert to detect contract violations and improve error messages
    Advanced
    -

    8.6.2 Motivation

    -

    Why is this important? Why do we want to learn/teach this topic?

    -

    static_assert allows the developer to enforce that conditions which can be checked during compilation will force build errors when violated. Additionally, they are the best mechanism by which a developer can pass useful information to other developers regarding what violation occurred or what must be done, instead.

    -

    8.6.3 Topic introduction

    -

    Very brief introduction to the topic.

    -

    static_assert is a compile-time evaluated function that asserts the truth of a supplied predicate, issuing an optional user-supplied error message if the predicate is false.

    -

    8.6.4 Foundational: Calling static_assert with a constant expression

    -

    8.6.4.1 Background/Required Knowledge

    -

    A student:

    -
      -
    • Should be able to explain the difference between code evaluated at compile-time and run-time
    • -
    • Should be able to cite some examples of compile-time known information, such as sizeof(T)
    • -
    -

    8.6.4.2 Student outcomes

    -

    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

    -

    A student should be able to:

    -
      -
    1. Assert the expected size of a structure using static_assert
    2. -
    -

    8.6.4.3 Caveats

    -

    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

    -

    8.6.4.4 Points to cover

    -

    This section lists important details for each point.

    -
      -
    • X
    • -
    • In addition to what is wrong, a good error message will inform the user of how to correct it
    • -
    -

    8.6.5 Main: Contracts and static_assert

    -

    8.6.5.1 Background/Required Knowledge

    -
      -
    • All of the above.
    • -
    • General understanding of compile-time requirements
    • -
    -

    8.6.5.2 Student outcomes

    -

    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

    -

    A student should be able to:

    -
      -
    1. Utilize static_assert to verify preconditions of a meta-function
    2. -
    3. Utilize static_assert to verify the results of meta-functions for known values
    4. -
    -

    8.6.5.3 Caveats

    -

    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

    -

    8.6.5.4 Points to cover

    -

    This section lists important details for each point.

    -
      -
    • When writing a meta-function, use static_assert to test the results
    • -
    • Write static_assert calls at the scope of the code they are guarding
    • -
    - -

    8.6.6 Advanced

    -

    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

    -

    9 Examples of Course Curricula

    -

    [NOTE: Anyone have any suggestions of items to add here?] The following are examples of curricula for course on C++: …

    -

    10 License

    -

    [NOTE: This license is copied verbatim from the C++ Core Guidelines.]

    -
    Copyright (c) Standard C++ Foundation and its contributors
    -
    -Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
    -perpetual license to copy, use, modify, and create derivative works from this
    -project for your personal or internal business use only. The above copyright
    -notice and this permission notice shall be included in all copies or
    -substantial portions of the project. This license does not grant permission
    -to use the trade names, trademarks, service marks, or product names of the
    -licensor, except as required for reasonable and customary use in describing
    -the origin of the project.
    -
    -Standard C++ Foundation reserves the right to accept contributions to the
    -project at its discretion.
    -
    -By contributing material to this project, you grant Standard C++ Foundation,
    -and those who receive the material directly or indirectly from Standard C++
    -Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
    -transferrable license to reproduce, prepare derivative works of, publicly
    -display, publicly perform, and distribute your contributed material and such
    -derivative works, and to sublicense any or all of the foregoing rights to third
    -parties for commercial or non-commercial use.  You also grant Standard C++
    -Foundation, and those who receive the material directly or indirectly from
    -Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
    -irrevocable license under your patent claims that directly read on your
    -contributed material to make, have made, use, offer to sell, sell and import
    -or otherwise dispose of the material. You warrant that your material is your
    -original work, or that you have the right to grant the above licenses.
    -
    -THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    -OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
    -PROJECT.
    -
    -If you believe that anything in the project infringes your copyright, please
    -contact us at admin@isocpp.org with your contact information and a detailed
    -description of your intellectual property, including a specific URL where you
    -believe your intellectual property is being infringed.
    -
    -

    11 Contributors

    -
    Christopher Di Bella
    -Florian Sattler
    -Michael Adams
    -rwdougla
    -vulder
    -

    12 How To Contribute

    -

    Before attempting to contribute any content for consideration for inclusion in this document, please read the information below and and the referenced documents as appropriate.

    -

    All contributions to this project must be made in accordance with the license in section License. This teaching-guidelines document only offers guidance on teaching C++ as it is specified in the current version of the C++ standard. So, content should be presented relative to the most-recently ratified version of the standard. A detailed explanation of how to present the material for a topic is given in:

    -
      -
    • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.
    • -
    -

    Any potential contributors should ensure that they read this document. The following document may also be helpful in providing some general background on the modular approach to teaching followed herein:

    - -

    In order to prepare content, it is important to understand what learning outcomes are, and how to prepare good ones. Some information on learning outcomes can be found in the References section. The following document offers a concise introduction to learning outcomes:

    - -

    13 Glossary

    -

    Some possible terms to include in the glossary:

    -
      -
    • learning objective
    • -
    • learning outcome
    • -
    -

    14 References

    -

    14.1 References on Learning Outcomes

    - - -
      -
    • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — Standing Document for SG20: Guidelines for Teaching C++ to Beginners. https://wg21.link/p1389.

    • -
    • Christopher Di Bella. P1725R0 — Modular Topic Design. https://wg21.link/p1725.

    • -
    • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.

    • -
    • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study Group: C++ Education. https://wg21.link/p1231.

    • -
    • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 — Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0.

    • -
    -
    -
    - -
    - - diff --git a/0.0.3/html_split/Advanced.html b/0.0.3/html_split/Advanced.html deleted file mode 100644 index c4d659a..0000000 --- a/0.0.3/html_split/Advanced.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - -Advanced (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    8.1.6 Advanced

    -

    These are important topics that are not expected to be covered but -provide guidance where one can continue to investigate this topic in -more depth. -

    -

    When can copies be elided and when does the standard guarantee copy -elision. References: * Abseil tip of -the Week #166 * -cppreference -- Copy elision -

    - - - - - diff --git a/0.0.3/html_split/Background_002fRequired-Knowledge.html b/0.0.3/html_split/Background_002fRequired-Knowledge.html deleted file mode 100644 index d3ee185..0000000 --- a/0.0.3/html_split/Background_002fRequired-Knowledge.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - -Background/Required Knowledge (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    8.1.4.1 Background/Required Knowledge

    -

    A student is able to: * explain what a C++ type is? -[C++ object model: types] -* explain what an object is? -[C++ object -model: objects], -[C++ object model: -constant objects] * define and understand class invariants? -

    -

    It helps when a student is able to: * use move semantics -[C++ object model: move -semantics] * explain special member functions -[C++ object model: -special member functions] -

    - - - - - diff --git a/0.0.3/html_split/Background_002frequired-knowledge.html b/0.0.3/html_split/Background_002frequired-knowledge.html deleted file mode 100644 index 79fd94d..0000000 --- a/0.0.3/html_split/Background_002frequired-knowledge.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - -Background/required knowledge (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    8.3.5.1 Background/required knowledge

    -
      -
    • All of the above. -
    - - - - - - diff --git a/0.0.3/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html b/0.0.3/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html deleted file mode 100644 index 3e850b1..0000000 --- a/0.0.3/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - -Basics Types Objects Values Expressions Statements and Control-Flow Constructs (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.3 Basics Types, Objects, Values, Expressions, Statements, and

    -

    Control-Flow Constructs -

    - - - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Constant Objects???
    [‘?’]Declarations and Definitions???
    [‘?’]Selection Constructs (e.g., if, ternary)???
    [‘?’]Looping Constructs (e.g., for, while, etc.)???
    - - - - - - diff --git a/0.0.3/html_split/Building.html b/0.0.3/html_split/Building.html deleted file mode 100644 index e628fd0..0000000 --- a/0.0.3/html_split/Building.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - -Building (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.12 Building

    - - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Software Build Tools???
    [‘?’]Strategies for Handling Build Problems???
    - - - - - - diff --git a/0.0.3/html_split/C_002b_002b-object-model-copy-semantics.html b/0.0.3/html_split/C_002b_002b-object-model-copy-semantics.html deleted file mode 100644 index 6d7350c..0000000 --- a/0.0.3/html_split/C_002b_002b-object-model-copy-semantics.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - -C++ object model copy semantics (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    8.1 C++ object model: copy semantics

    -

    Skeleton descriptions are typeset in italic text, so please -don’t remove these descriptions when editing the topic. -

    - - - - - - - - - - - - - - diff --git a/0.0.3/html_split/Caveats.html b/0.0.3/html_split/Caveats.html deleted file mode 100644 index c5303c9..0000000 --- a/0.0.3/html_split/Caveats.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - -Caveats (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    8.1.4.3 Caveats

    -

    This section mentions subtle points to understand, like anything -resulting in implementation-defined, unspecified, or undefined -behavior. -

    -
      -
    • Compiler-provided copy operations may result in ownership problems -(e.g., char*). These ownership problems can generally be solved -by using types whose copy operations have the appropriate semantics, -e.g., std::string instead of char* to hold string values. -
    - - - - - - diff --git a/0.0.3/html_split/Compilation-Model.html b/0.0.3/html_split/Compilation-Model.html deleted file mode 100644 index de11703..0000000 --- a/0.0.3/html_split/Compilation-Model.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - -Compilation Model (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.1 Compilation Model

    - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Translation Units???
    [‘?’]Headers???
    [‘?’]Modules???
    [‘?’]Name Mangling???
    [‘?’]Phases of Translation???
    [‘?’]Separate Compilation???
    [‘?’]Linkage???
    - - - - - - diff --git a/0.0.3/html_split/Compile_002dTime-Computation.html b/0.0.3/html_split/Compile_002dTime-Computation.html deleted file mode 100644 index b9aaa0e..0000000 --- a/0.0.3/html_split/Compile_002dTime-Computation.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - -Compile-Time Computation (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.7 Compile-Time Computation

    - - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Constant Expressions and Constant Evaluation???
    [‘static-assert’]static_assert‘✔️’‘✔️’
    - - - - - - diff --git a/0.0.3/html_split/Context-and-Aim-of-This-Guide.html b/0.0.3/html_split/Context-and-Aim-of-This-Guide.html deleted file mode 100644 index 60efa61..0000000 --- a/0.0.3/html_split/Context-and-Aim-of-This-Guide.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - -Context and Aim of This Guide (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    -Next: , Previous: , Up: Top   [Contents]

    -
    -
    -

    3 Context and Aim of This Guide

    -

    This document is intended to serve as a resource for instructors to -assist in the preparation of courses on C++ in a variety of settings, -including university, college, and industry environments. The main -objectives of this document are as follows: -

    -
      -
    • to provide guidelines for content to be covered by courses of various -difficulty levels on C++ (e.g., topics and learning outcomes) -
    • to note some common misunderstandings and problematic points that may be -encountered when teaching particular topics -
    • to suggest resources useful for teaching C++ -
    • to present examples of curriculum for specific courses -
    - -

    This document does not itself provide a curriculum for a single specific -course, but is rather a set of guidelines that can be used to prepare -curricula for a wide variety of courses that differ in focus and level -of sophistication. (This said, however, some links to other documents -with examples of curricula for specific courses may be included herein.) -This document only intends to target the teaching of the most recently -ratified version of the C++ standard. (This said, however, since older -versions of this document are also available, these older versions may -be of some use to those who need guidance in older versions of the -standard, at least versions that do not predate C++20.) -

    - - - - - diff --git a/0.0.3/html_split/Contributing-to-This-Document.html b/0.0.3/html_split/Contributing-to-This-Document.html deleted file mode 100644 index eac6c28..0000000 --- a/0.0.3/html_split/Contributing-to-This-Document.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - -Contributing to This Document (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    5 Contributing to This Document

    -

    Contributions to this document are welcome. If you would like to help -with this project as a contributor, please read the section -‘How to Contribute’. -

    - - - - - diff --git a/0.0.3/html_split/Contributors.html b/0.0.3/html_split/Contributors.html deleted file mode 100644 index 8adb4b1..0000000 --- a/0.0.3/html_split/Contributors.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - -Contributors (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    -Next: , Previous: , Up: Top   [Contents]

    -
    -
    -

    11 Contributors

    - -
    Christopher Di Bella
    -Florian Sattler
    -Michael Adams
    -rwdougla
    -vulder
    -
    - - - - - diff --git a/0.0.3/html_split/Detailed-Information-for-Modules-and-Topics.html b/0.0.3/html_split/Detailed-Information-for-Modules-and-Topics.html deleted file mode 100644 index c8c9fcd..0000000 --- a/0.0.3/html_split/Detailed-Information-for-Modules-and-Topics.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -Detailed Information for Modules and Topics (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    8 Detailed Information for Modules and Topics

    - - - - - - - - - - - - - - - diff --git a/0.0.3/html_split/Disclaimer.html b/0.0.3/html_split/Disclaimer.html deleted file mode 100644 index a911983..0000000 --- a/0.0.3/html_split/Disclaimer.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - -Disclaimer (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    2 Disclaimer

    -

    This document is intended as a proof of concept to solicit feedback from -others. This document is incomplete. This document likely has at least a -few errors. -

    - - - - - diff --git a/0.0.3/html_split/Error-Handling.html b/0.0.3/html_split/Error-Handling.html deleted file mode 100644 index 1f8d3e0..0000000 --- a/0.0.3/html_split/Error-Handling.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - -Error Handling (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.9 Error Handling

    - - - - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Classes of Errors???
    [‘?’]errno???
    [‘?’]Error Codes???
    [‘?’]Exception Handling???
    - - - - - - diff --git a/0.0.3/html_split/Examples-of-Course-Curricula.html b/0.0.3/html_split/Examples-of-Course-Curricula.html deleted file mode 100644 index 64eb64b..0000000 --- a/0.0.3/html_split/Examples-of-Course-Curricula.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - -Examples of Course Curricula (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    9 Examples of Course Curricula

    -

    [NOTE: Anyone have any suggestions of items to add here?] The -following are examples of curricula for course on C++: … -

    - - - - - diff --git a/0.0.3/html_split/External-ie-Non-Standard-Libraries.html b/0.0.3/html_split/External-ie-Non-Standard-Libraries.html deleted file mode 100644 index 2bf081e..0000000 --- a/0.0.3/html_split/External-ie-Non-Standard-Libraries.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - -External ie Non Standard Libraries (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.11 External (i.e., Non Standard) Libraries

    - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Graphical User Interfaces???
    - - - - - - diff --git a/0.0.3/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html b/0.0.3/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html deleted file mode 100644 index ce2c1b0..0000000 --- a/0.0.3/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - -Foundational Calling static_assert with a constant expression (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - -
    -

    8.6.4 Foundational: Calling static_assert with a constant

    -

    expression -

    - - - - - - - - - - - - diff --git a/0.0.3/html_split/Foundational-How-and-when-are-copies-made.html b/0.0.3/html_split/Foundational-How-and-when-are-copies-made.html deleted file mode 100644 index 4cec33b..0000000 --- a/0.0.3/html_split/Foundational-How-and-when-are-copies-made.html +++ /dev/null @@ -1,63 +0,0 @@ - - - - - -Foundational How and when are copies made (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    8.1.4 Foundational: How and when are copies made

    - - - - - - - - - - - - - diff --git a/0.0.3/html_split/Foundational-Using-UDLs.html b/0.0.3/html_split/Foundational-Using-UDLs.html deleted file mode 100644 index adb461e..0000000 --- a/0.0.3/html_split/Foundational-Using-UDLs.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - -Foundational Using UDLs (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - -
    -

    8.2.4 Foundational: Using UDLs

    - - - - - - - - - - - - - diff --git a/0.0.3/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html b/0.0.3/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html deleted file mode 100644 index e37a992..0000000 --- a/0.0.3/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - -Foundational Using and defining functions with default arguments (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - -
    -

    8.3.4 Foundational: Using and defining functions with default

    -

    arguments -

    - - - - - - - - - - - - diff --git a/0.0.3/html_split/Foundational-Writing-requires_002dexpressions.html b/0.0.3/html_split/Foundational-Writing-requires_002dexpressions.html deleted file mode 100644 index 6846c6e..0000000 --- a/0.0.3/html_split/Foundational-Writing-requires_002dexpressions.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - -Foundational Writing requires-expressions (Guidelines for Teaching C++) - - - - - - - - - - - - - - - -
    -

    8.5.1 Foundational: Writing requires-expressions

    - - - - - - - - - - - - - diff --git a/0.0.3/html_split/Functions-default-argument.html b/0.0.3/html_split/Functions-default-argument.html deleted file mode 100644 index 2571ca9..0000000 --- a/0.0.3/html_split/Functions-default-argument.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -Functions default argument (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - -
    -

    8.3 Functions: default argument

    -

    Skeleton descriptions are typeset in italic text, so please -don’t remove these descriptions when editing the topic. -

    - - - - - - - - - - - - - - diff --git a/0.0.3/html_split/Functions-user_002ddefined-literals.html b/0.0.3/html_split/Functions-user_002ddefined-literals.html deleted file mode 100644 index 7e41de9..0000000 --- a/0.0.3/html_split/Functions-user_002ddefined-literals.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - - -Functions user-defined literals (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    8.2 Functions: user-defined literals

    -

    Skeleton descriptions are typeset in italic text, so please -don’t remove these descriptions when editing the topic. -

    - - - - - - - - - - - - - diff --git a/0.0.3/html_split/Functions.html b/0.0.3/html_split/Functions.html deleted file mode 100644 index 82175a5..0000000 --- a/0.0.3/html_split/Functions.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - -Functions (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.4 Functions

    - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Calling Functions???
    [‘?’]Parameter Passing (e.g., Passing By Value and Reference)???
    [‘func-args’]Default Arguments‘✔️’
    [‘?’]Returning Multiple Values???
    [‘?’]Overloading???
    [‘udl’]User-Defined Literals‘✔️’‘✔️’
    - - - - - - diff --git a/0.0.3/html_split/Generic-Programming-Templates.html b/0.0.3/html_split/Generic-Programming-Templates.html deleted file mode 100644 index 1a22cd7..0000000 --- a/0.0.3/html_split/Generic-Programming-Templates.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - -Generic Programming Templates (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.8 Generic Programming (Templates)

    - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Concepts???
    [‘?’]SFINAE???
    [‘?’]Template Metaprogramming???
    [‘?’]Function Templates???
    [‘?’]Requires Clauses???
    [‘req-expr’]Requires Expressions‘✔️’‘✔️’
    - - - - - - diff --git a/0.0.3/html_split/Glossary.html b/0.0.3/html_split/Glossary.html deleted file mode 100644 index 2bf24f2..0000000 --- a/0.0.3/html_split/Glossary.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - -Glossary (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    -Next: , Previous: , Up: Top   [Contents]

    -
    -
    -

    13 Glossary

    -

    Some possible terms to include in the glossary: -

    -
      -
    • learning objective -
    • learning outcome -
    - - - - - - diff --git a/0.0.3/html_split/How-To-Contribute.html b/0.0.3/html_split/How-To-Contribute.html deleted file mode 100644 index f1963d5..0000000 --- a/0.0.3/html_split/How-To-Contribute.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - -How To Contribute (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    -Next: , Previous: , Up: Top   [Contents]

    -
    -
    -

    12 How To Contribute

    -

    Before attempting to contribute any content for consideration for -inclusion in this document, please read the information below and and -the referenced documents as appropriate. -

    -

    All contributions to this project must be made in accordance with the -license in section License. This teaching-guidelines -document only offers guidance on teaching C++ as it is specified in the -current version of the C++ standard. So, content should be presented -relative to the most-recently ratified version of the standard. A -detailed explanation of how to present the material for a topic is given -in: -

    -
      -
    • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to -structure a teaching topic. https://wg21.link/p2193. -
    - -

    Any potential contributors should ensure that they read this document. -The following document may also be helpful in providing some general -background on the modular approach to teaching followed herein: -

    - - -

    In order to prepare content, it is important to understand what learning -outcomes are, and how to prepare good ones. Some information on learning -outcomes can be found in the References section. The -following document offers a concise introduction to learning outcomes: -

    - - - - - - - diff --git a/0.0.3/html_split/Inheritance-and-Class-Hierarchies.html b/0.0.3/html_split/Inheritance-and-Class-Hierarchies.html deleted file mode 100644 index 1a394b0..0000000 --- a/0.0.3/html_split/Inheritance-and-Class-Hierarchies.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - -Inheritance and Class Hierarchies (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.6 Inheritance and Class Hierarchies

    - - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Virtual Functions???
    [‘?’]Run-Time Type Information???
    - - - - - - diff --git a/0.0.3/html_split/License.html b/0.0.3/html_split/License.html deleted file mode 100644 index 38d2d8d..0000000 --- a/0.0.3/html_split/License.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - -License (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    -Next: , Previous: , Up: Top   [Contents]

    -
    -
    -

    10 License

    -

    [NOTE: This license is copied verbatim from the C++ Core -Guidelines.] -

    -
    Copyright (c) Standard C++ Foundation and its contributors
    -
    -Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
    -perpetual license to copy, use, modify, and create derivative works from this
    -project for your personal or internal business use only. The above copyright
    -notice and this permission notice shall be included in all copies or
    -substantial portions of the project. This license does not grant permission
    -to use the trade names, trademarks, service marks, or product names of the
    -licensor, except as required for reasonable and customary use in describing
    -the origin of the project.
    -
    -Standard C++ Foundation reserves the right to accept contributions to the
    -project at its discretion.
    -
    -By contributing material to this project, you grant Standard C++ Foundation,
    -and those who receive the material directly or indirectly from Standard C++
    -Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
    -transferrable license to reproduce, prepare derivative works of, publicly
    -display, publicly perform, and distribute your contributed material and such
    -derivative works, and to sublicense any or all of the foregoing rights to third
    -parties for commercial or non-commercial use.  You also grant Standard C++
    -Foundation, and those who receive the material directly or indirectly from
    -Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
    -irrevocable license under your patent claims that directly read on your
    -contributed material to make, have made, use, offer to sell, sell and import
    -or otherwise dispose of the material. You warrant that your material is your
    -original work, or that you have the right to grant the above licenses.
    -
    -THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    -OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
    -PROJECT.
    -
    -If you believe that anything in the project infringes your copyright, please
    -contact us at admin@isocpp.org with your contact information and a detailed
    -description of your intellectual property, including a specific URL where you
    -believe your intellectual property is being infringed.
    -
    -
    -
    -

    -Next: , Previous: , Up: Top   [Contents]

    -
    - - - - - diff --git a/0.0.3/html_split/Main-Advanced-requirements.html b/0.0.3/html_split/Main-Advanced-requirements.html deleted file mode 100644 index 6c4ac0e..0000000 --- a/0.0.3/html_split/Main-Advanced-requirements.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - -Main Advanced requirements (Guidelines for Teaching C++) - - - - - - - - - - - - - - - -
    -

    8.5.2 Main: Advanced requirements

    - - - - - - - - - - - - - diff --git a/0.0.3/html_split/Main-Contracts-and-static_005fassert.html b/0.0.3/html_split/Main-Contracts-and-static_005fassert.html deleted file mode 100644 index 6c0ba46..0000000 --- a/0.0.3/html_split/Main-Contracts-and-static_005fassert.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - -Main Contracts and static_assert (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - -
    -

    8.6.5 Main: Contracts and static_assert

    - - - - - - - - - - - - - diff --git a/0.0.3/html_split/Main-Implementing-user_002ddefined-copy-operations.html b/0.0.3/html_split/Main-Implementing-user_002ddefined-copy-operations.html deleted file mode 100644 index e38dfd6..0000000 --- a/0.0.3/html_split/Main-Implementing-user_002ddefined-copy-operations.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - -Main Implementing user-defined copy operations (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    8.1.5 Main: Implementing user-defined copy operations

    - - - - - - - - - - - - - diff --git a/0.0.3/html_split/Main-implementing-UDLs.html b/0.0.3/html_split/Main-implementing-UDLs.html deleted file mode 100644 index 1f6f381..0000000 --- a/0.0.3/html_split/Main-implementing-UDLs.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - -Main implementing UDLs (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - -
    -

    8.2.5 Main: implementing UDLs

    - - - - - - - - - - - - diff --git a/0.0.3/html_split/Main-implementing-_002a.html b/0.0.3/html_split/Main-implementing-_002a.html deleted file mode 100644 index b661f2d..0000000 --- a/0.0.3/html_split/Main-implementing-_002a.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - -Main implementing * (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    8.3.5 Main: implementing *

    - - - - - - - - - - - - - diff --git a/0.0.3/html_split/Meta_002derror-handling-static_005fassert.html b/0.0.3/html_split/Meta_002derror-handling-static_005fassert.html deleted file mode 100644 index f81a34e..0000000 --- a/0.0.3/html_split/Meta_002derror-handling-static_005fassert.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -Meta-error handling static_assert (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - -
    -

    8.6 Meta-error handling: static_assert

    -

    Skeleton descriptions are typeset in italic text, so please -don’t remove these descriptions when editing the topic. -

    - - - - - - - - - - - - - - diff --git a/0.0.3/html_split/Module-name-Requires-Expressions.html b/0.0.3/html_split/Module-name-Requires-Expressions.html deleted file mode 100644 index 8bab76c..0000000 --- a/0.0.3/html_split/Module-name-Requires-Expressions.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - -Module name Requires Expressions (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - -
    -

    8.4 Module name: Requires Expressions

    -

    Skeleton descriptions are typeset in italic text, so please -don’t remove these descriptions when editing the topic. -

    - - - - - - - - - - diff --git a/0.0.3/html_split/Motivation.html b/0.0.3/html_split/Motivation.html deleted file mode 100644 index 40b0ec9..0000000 --- a/0.0.3/html_split/Motivation.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - -Motivation (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    8.1.2 Motivation

    -

    Why is this important? Why do we want to learn/teach this -topic? -

    -

    Copy semantics allows the user to define how objects of a class get -replicated and interact on a value level. -

    - - - - - diff --git a/0.0.3/html_split/Organization-of-This-Document.html b/0.0.3/html_split/Organization-of-This-Document.html deleted file mode 100644 index 3e48985..0000000 --- a/0.0.3/html_split/Organization-of-This-Document.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - -Organization of This Document (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    6 Organization of This Document

    -

    The various concepts (i.e., ideas) to potentially be covered are -partitioned into modules. A module is very broad in scope and consists -of numerous topics. [Note: Can I suggest that we use the term -“area” or “unit” instead of “module”? I think that these other -choices are better and also avoid any potential confusion over what is -meant by “module” (i.e., C++ term versus plain English term).] -

    -

    For each module, topics related to the module are identified. Then, for -each topic, learning outcomes are specified. In order to address a wide -variety of courses on C++, each topic is addressed at three proficiency -levels. These proficiency levels allow each topic to be covered at more -than one level of detail. This allows target audiences with different -background and learning objectives to be accommodated. The three -proficiency levels are as follows: -

    -
      -
    • foundational. This level gives the learner the idea that a facility -exists, what benefits it offers, and the basic ways of using it. -[Note: Isn’t this just “novice”/“beginner”?] - -
    • main. This level shows mainstream uses and techniques. For abstraction -and organizational mechanisms it also demonstrates how to build them. -This level should also give the learner a basic (but not detailed) -understanding of how a facility might be implemented so that the learner -can have a first-order understanding of any costs involved. -[Note: The term “main” is not very descriptive/helpful. Could -I suggest using “intermediate”?] - -
    • advanced. This level gives information suitable for an expert. For most -topics there is an expert level of knowledge that most programmers -rarely need and techniques that require detailed understanding of -language rules or library implementation. - -
    - -

    The remainder of this document is organized as follows. The various -topics are listed grouped by module. In cases where a topic might be -classified into more than one module, the topic is listed under the -module of most direct relevance. This is done in order to avoid -duplication of content. (In the case that a topic is equally relevant to -multiple modules, the decision of which to select is made by a -proverbial coin toss.) The order in which modules and topics are -presented is not meant to imply any order of coverage in a course. The -order in which items are listed is essentially arbitrary. -

    -
    - - - - - - diff --git a/0.0.3/html_split/Overview.html b/0.0.3/html_split/Overview.html deleted file mode 100644 index be44bfa..0000000 --- a/0.0.3/html_split/Overview.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - -Overview (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    8.1.1 Overview

    -

    Provides a short natural language abstract of the module’s -contents. Specifies the different levels of teaching. -

    - - - - - -
    LevelObjectives
    Foundationalunderstanding how and when are copies made
    Mainimplementing user-defined copy operations
    Advancedspecial cases: copy elision
    - - - - - - diff --git a/0.0.3/html_split/Points-to-cover.html b/0.0.3/html_split/Points-to-cover.html deleted file mode 100644 index ba4b5cc..0000000 --- a/0.0.3/html_split/Points-to-cover.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - -Points to cover (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    8.1.4.4 Points to cover

    -

    This section lists important details for each point. -

    -
      -
    • Principle of copying -
        -
      • Copying of types, which follow the rule of zero -
      • Copying of types, with user defined copy operations -
      • Copying an object does not change the original -
      - -
    • Practical applications -
        -
      • std::unique_ptr (has no copy) -
      • Strings (copies the value) -
      - -
    - - - - - - diff --git a/0.0.3/html_split/Preprocessor.html b/0.0.3/html_split/Preprocessor.html deleted file mode 100644 index 345e396..0000000 --- a/0.0.3/html_split/Preprocessor.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - -Preprocessor (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.2 Preprocessor

    - - - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Preprocessor Metaprogramming???
    [‘?’]Inclusion???
    [‘?’]Macros???
    - - - - - - diff --git a/0.0.3/html_split/References-on-Learning-Outcomes.html b/0.0.3/html_split/References-on-Learning-Outcomes.html deleted file mode 100644 index 7b74cad..0000000 --- a/0.0.3/html_split/References-on-Learning-Outcomes.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - - -References on Learning Outcomes (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    14.1 References on Learning Outcomes

    - - - - - - - diff --git a/0.0.3/html_split/References.html b/0.0.3/html_split/References.html deleted file mode 100644 index f595be2..0000000 --- a/0.0.3/html_split/References.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - -References (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    -Previous: , Up: Top   [Contents]

    -
    -
    -

    14 References

    - - - - - - - - - - - diff --git a/0.0.3/html_split/Software-Design.html b/0.0.3/html_split/Software-Design.html deleted file mode 100644 index 6b4f6c8..0000000 --- a/0.0.3/html_split/Software-Design.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - -Software Design (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.15 Software Design

    - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Design by Contract???
    - - - - - - diff --git a/0.0.3/html_split/Standard-Library.html b/0.0.3/html_split/Standard-Library.html deleted file mode 100644 index c80c7fc..0000000 --- a/0.0.3/html_split/Standard-Library.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - -Standard Library (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.10 Standard Library

    - - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Input/Output (I/O)???
    [‘?’]Containers, Iterators, and Algorithms???
    - - - - - - diff --git a/0.0.3/html_split/Student-outcomes.html b/0.0.3/html_split/Student-outcomes.html deleted file mode 100644 index c604549..0000000 --- a/0.0.3/html_split/Student-outcomes.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - - -Student outcomes (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    8.1.4.2 Student outcomes

    -

    A list of things “a student should be able to” after the -curriculum. The next word should be an action word and testable -in an exam. Max 5 items. -

    -

    A student should be able to: -

    -
      -
    1. explain what copy semantics accomplish -
    - -
      -
    • establishing “equivalent” object state in another object -
    - -
      -
    1. explain difference between copying a reference and copying a value* -
    2. explain where copies are made -
    - -

    * In other languages these differences are sometimes referred to as -shallow and deep copy. -

    - - - - - diff --git a/0.0.3/html_split/Summary-of-Modules-and-Topics.html b/0.0.3/html_split/Summary-of-Modules-and-Topics.html deleted file mode 100644 index 26b69be..0000000 --- a/0.0.3/html_split/Summary-of-Modules-and-Topics.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - -Summary of Modules and Topics (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7 Summary of Modules and Topics

    -

    In the sections that follow, the various modules and topics are -presented. There is one section per module. For each module, a table -listing the various topics in that module is provided. The ID for a -topic is linked to the detailed coverage of that topic that comes later -in the document. If a topic has any learning outcomes at a given -proficiency level, this is indicated by a checkmark (“✔️”). If a topic -has no learning outcomes (simply because there are not any, not because -the information is missing), this is indicated by an em dash (“—”). -In the case that the information for a topic is completely missing, a -question mark (“?”) symbol is used. -

    -

    [NOTE: These topics are taken mostly from the SG20 GitHub -repository. They are not intended to be complete in any sense. In fact, -by gathering together all topics in one place where they are easily -viewed, it is hoped that missing and unbalanced items will be more -obvious.] -

    - - - - - - - - - - - - - - - - - - -
    - - - - - - diff --git a/0.0.3/html_split/Testing-and-Debugging.html b/0.0.3/html_split/Testing-and-Debugging.html deleted file mode 100644 index da60211..0000000 --- a/0.0.3/html_split/Testing-and-Debugging.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - -Testing and Debugging (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    -Next: , Previous: , Up: Summary of Modules and Topics   [Contents]

    -
    -
    -

    7.13 Testing and Debugging

    - - - - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Source-Level Debuggers???
    [‘?’]Code Sanitizers???
    [‘?’]Test Frameworks???
    [‘?’]Debugging Strategies???
    - - - - - - diff --git a/0.0.3/html_split/Tooling.html b/0.0.3/html_split/Tooling.html deleted file mode 100644 index 43c3b2f..0000000 --- a/0.0.3/html_split/Tooling.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - -Tooling (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.14 Tooling

    - - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Compiler Toolchains???
    [‘?’]IDEs???
    - - - - - - diff --git a/0.0.3/html_split/Topic-introduction.html b/0.0.3/html_split/Topic-introduction.html deleted file mode 100644 index fff97f2..0000000 --- a/0.0.3/html_split/Topic-introduction.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - -Topic introduction (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    8.1.3 Topic introduction

    -

    Very brief introduction to the topic. -

    -

    Explains when and how objects are copied. -

    - - - - - diff --git a/0.0.3/html_split/Use-of-This-Document.html b/0.0.3/html_split/Use-of-This-Document.html deleted file mode 100644 index 4c820d5..0000000 --- a/0.0.3/html_split/Use-of-This-Document.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - -Use of This Document (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    4 Use of This Document

    -

    [NOTE: This document follows the same license model as the C++ -Core Guidelines. The LICENSE document is taken verbatim from the C++ -Core Guidelines.] This document is made available under a MIT-style -license. In simple terms, this license permits copying, use, -modification, and creation of derivative works. A copy of the license is -included in the section LICENSE. -

    - - - - - diff --git a/0.0.3/html_split/User_002dDefined-Types-Classes.html b/0.0.3/html_split/User_002dDefined-Types-Classes.html deleted file mode 100644 index 808279a..0000000 --- a/0.0.3/html_split/User_002dDefined-Types-Classes.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - -User-Defined Types Classes (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.5 User-Defined Types (Classes)

    - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Special Member Functions???
    [‘?’]Types???
    [‘?’]Conversions???
    [‘?’]Constructors and Destructors???
    [‘?’]Move/Copy Constructors and Assignment Operators???
    [‘?’]Member Functions???
    [‘?’]Sum Types???
    [‘?’]User-Defined Literals???
    [‘?’]Special Member Functions???
    [‘?’]Guidelines for Special Member Functions (e.g., Rule of Five, Rule -of Zero)???
    [‘copy’]Copy Semantics‘✔️’‘✔️’
    [‘?’]Moving and Copying???
    [‘?’]Lambdas???
    - - - - - - diff --git a/0.0.3/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html b/0.0.3/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html deleted file mode 100644 index 3f9bf2c..0000000 --- a/0.0.3/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - -Working Group Documents Related to C++ Teaching Guidelines (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    14.2 Working Group Documents Related to C++ Teaching Guidelines

    -
      -
    • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — -Standing Document for SG20: Guidelines for Teaching C++ to Beginners. -https://wg21.link/p1389. - -
    • Christopher Di Bella. P1725R0 — Modular Topic Design. -https://wg21.link/p1725. - -
    • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to -structure a teaching topic. https://wg21.link/p2193. - -
    • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study -Group: C++ Education. https://wg21.link/p1231. - -
    • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 -— Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0. - -
    - - - - - - diff --git a/0.0.3/html_split/_0023advanced.html b/0.0.3/html_split/_0023advanced.html deleted file mode 100644 index d503bfc..0000000 --- a/0.0.3/html_split/_0023advanced.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#advanced (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #advanced.

    - diff --git a/0.0.3/html_split/_0023advanced_002d1.html b/0.0.3/html_split/_0023advanced_002d1.html deleted file mode 100644 index 282a7b8..0000000 --- a/0.0.3/html_split/_0023advanced_002d1.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#advanced-1 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #advanced-1.

    - diff --git a/0.0.3/html_split/_0023advanced_002d2.html b/0.0.3/html_split/_0023advanced_002d2.html deleted file mode 100644 index 039b3ff..0000000 --- a/0.0.3/html_split/_0023advanced_002d2.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#advanced-2 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #advanced-2.

    - diff --git a/0.0.3/html_split/_0023advanced_002d3.html b/0.0.3/html_split/_0023advanced_002d3.html deleted file mode 100644 index ebf5529..0000000 --- a/0.0.3/html_split/_0023advanced_002d3.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#advanced-3 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #advanced-3.

    - diff --git a/0.0.3/html_split/_0023backgroundrequired_002dknowledge.html b/0.0.3/html_split/_0023backgroundrequired_002dknowledge.html deleted file mode 100644 index 9959745..0000000 --- a/0.0.3/html_split/_0023backgroundrequired_002dknowledge.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#backgroundrequired-knowledge (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #backgroundrequired-knowledge.

    - diff --git a/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d1.html b/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d1.html deleted file mode 100644 index f6f6bd0..0000000 --- a/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d1.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#backgroundrequired-knowledge-1 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #backgroundrequired-knowledge-1.

    - diff --git a/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d2.html b/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d2.html deleted file mode 100644 index b0b297d..0000000 --- a/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d2.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#backgroundrequired-knowledge-2 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #backgroundrequired-knowledge-2.

    - diff --git a/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d3.html b/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d3.html deleted file mode 100644 index ae34d91..0000000 --- a/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d3.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#backgroundrequired-knowledge-3 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #backgroundrequired-knowledge-3.

    - diff --git a/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d4.html b/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d4.html deleted file mode 100644 index 7417f62..0000000 --- a/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d4.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#backgroundrequired-knowledge-4 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #backgroundrequired-knowledge-4.

    - diff --git a/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d5.html b/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d5.html deleted file mode 100644 index 8f0570c..0000000 --- a/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d5.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#backgroundrequired-knowledge-5 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #backgroundrequired-knowledge-5.

    - diff --git a/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d6.html b/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d6.html deleted file mode 100644 index a1cdee1..0000000 --- a/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d6.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#backgroundrequired-knowledge-6 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #backgroundrequired-knowledge-6.

    - diff --git a/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d7.html b/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d7.html deleted file mode 100644 index 893a0ba..0000000 --- a/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d7.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#backgroundrequired-knowledge-7 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #backgroundrequired-knowledge-7.

    - diff --git a/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d8.html b/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d8.html deleted file mode 100644 index 6080498..0000000 --- a/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d8.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#backgroundrequired-knowledge-8 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #backgroundrequired-knowledge-8.

    - diff --git a/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d9.html b/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d9.html deleted file mode 100644 index 3ea462d..0000000 --- a/0.0.3/html_split/_0023backgroundrequired_002dknowledge_002d9.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#backgroundrequired-knowledge-9 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #backgroundrequired-knowledge-9.

    - diff --git a/0.0.3/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html b/0.0.3/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html deleted file mode 100644 index 925c568..0000000 --- a/0.0.3/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#basics-types-objects-values-expressions-statements-and-control-flow-constructs (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #basics-types-objects-values-expressions-statements-and-control-flow-constructs.

    - diff --git a/0.0.3/html_split/_0023building.html b/0.0.3/html_split/_0023building.html deleted file mode 100644 index 8ffc9df..0000000 --- a/0.0.3/html_split/_0023building.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#building (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #building.

    - diff --git a/0.0.3/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html b/0.0.3/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html deleted file mode 100644 index a7e6bad..0000000 --- a/0.0.3/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#c-object-model-copy-semantics (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #c-object-model-copy-semantics.

    - diff --git a/0.0.3/html_split/_0023caveats.html b/0.0.3/html_split/_0023caveats.html deleted file mode 100644 index d4bac8b..0000000 --- a/0.0.3/html_split/_0023caveats.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#caveats (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #caveats.

    - diff --git a/0.0.3/html_split/_0023caveats_002d1.html b/0.0.3/html_split/_0023caveats_002d1.html deleted file mode 100644 index 64faefd..0000000 --- a/0.0.3/html_split/_0023caveats_002d1.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#caveats-1 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #caveats-1.

    - diff --git a/0.0.3/html_split/_0023caveats_002d2.html b/0.0.3/html_split/_0023caveats_002d2.html deleted file mode 100644 index 6c66559..0000000 --- a/0.0.3/html_split/_0023caveats_002d2.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#caveats-2 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #caveats-2.

    - diff --git a/0.0.3/html_split/_0023caveats_002d3.html b/0.0.3/html_split/_0023caveats_002d3.html deleted file mode 100644 index 479063f..0000000 --- a/0.0.3/html_split/_0023caveats_002d3.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#caveats-3 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #caveats-3.

    - diff --git a/0.0.3/html_split/_0023caveats_002d4.html b/0.0.3/html_split/_0023caveats_002d4.html deleted file mode 100644 index 9588a55..0000000 --- a/0.0.3/html_split/_0023caveats_002d4.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#caveats-4 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #caveats-4.

    - diff --git a/0.0.3/html_split/_0023caveats_002d5.html b/0.0.3/html_split/_0023caveats_002d5.html deleted file mode 100644 index 11edee5..0000000 --- a/0.0.3/html_split/_0023caveats_002d5.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#caveats-5 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #caveats-5.

    - diff --git a/0.0.3/html_split/_0023caveats_002d6.html b/0.0.3/html_split/_0023caveats_002d6.html deleted file mode 100644 index 6cea721..0000000 --- a/0.0.3/html_split/_0023caveats_002d6.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#caveats-6 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #caveats-6.

    - diff --git a/0.0.3/html_split/_0023caveats_002d7.html b/0.0.3/html_split/_0023caveats_002d7.html deleted file mode 100644 index 2a8f1cd..0000000 --- a/0.0.3/html_split/_0023caveats_002d7.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#caveats-7 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #caveats-7.

    - diff --git a/0.0.3/html_split/_0023caveats_002d8.html b/0.0.3/html_split/_0023caveats_002d8.html deleted file mode 100644 index e330642..0000000 --- a/0.0.3/html_split/_0023caveats_002d8.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#caveats-8 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #caveats-8.

    - diff --git a/0.0.3/html_split/_0023caveats_002d9.html b/0.0.3/html_split/_0023caveats_002d9.html deleted file mode 100644 index 004e434..0000000 --- a/0.0.3/html_split/_0023caveats_002d9.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#caveats-9 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #caveats-9.

    - diff --git a/0.0.3/html_split/_0023compilation_002dmodel.html b/0.0.3/html_split/_0023compilation_002dmodel.html deleted file mode 100644 index 1017867..0000000 --- a/0.0.3/html_split/_0023compilation_002dmodel.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#compilation-model (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #compilation-model.

    - diff --git a/0.0.3/html_split/_0023compile_002dtime_002dcomputation.html b/0.0.3/html_split/_0023compile_002dtime_002dcomputation.html deleted file mode 100644 index 59b0c57..0000000 --- a/0.0.3/html_split/_0023compile_002dtime_002dcomputation.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#compile-time-computation (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #compile-time-computation.

    - diff --git a/0.0.3/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html b/0.0.3/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html deleted file mode 100644 index 9294adf..0000000 --- a/0.0.3/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#context-and-aim-of-this-guide (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #context-and-aim-of-this-guide.

    - diff --git a/0.0.3/html_split/_0023contributing_002dto_002dthis_002ddocument.html b/0.0.3/html_split/_0023contributing_002dto_002dthis_002ddocument.html deleted file mode 100644 index 272d848..0000000 --- a/0.0.3/html_split/_0023contributing_002dto_002dthis_002ddocument.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#contributing-to-this-document (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #contributing-to-this-document.

    - diff --git a/0.0.3/html_split/_0023contributors.html b/0.0.3/html_split/_0023contributors.html deleted file mode 100644 index a391f9d..0000000 --- a/0.0.3/html_split/_0023contributors.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#contributors (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #contributors.

    - diff --git a/0.0.3/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html b/0.0.3/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html deleted file mode 100644 index d32c27e..0000000 --- a/0.0.3/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#detailed-information-for-modules-and-topics (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #detailed-information-for-modules-and-topics.

    - diff --git a/0.0.3/html_split/_0023disclaimer.html b/0.0.3/html_split/_0023disclaimer.html deleted file mode 100644 index e9658d6..0000000 --- a/0.0.3/html_split/_0023disclaimer.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#disclaimer (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #disclaimer.

    - diff --git a/0.0.3/html_split/_0023error_002dhandling.html b/0.0.3/html_split/_0023error_002dhandling.html deleted file mode 100644 index 80cfb94..0000000 --- a/0.0.3/html_split/_0023error_002dhandling.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#error-handling (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #error-handling.

    - diff --git a/0.0.3/html_split/_0023examples_002dof_002dcourse_002dcurricula.html b/0.0.3/html_split/_0023examples_002dof_002dcourse_002dcurricula.html deleted file mode 100644 index 99af091..0000000 --- a/0.0.3/html_split/_0023examples_002dof_002dcourse_002dcurricula.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#examples-of-course-curricula (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #examples-of-course-curricula.

    - diff --git a/0.0.3/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html b/0.0.3/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html deleted file mode 100644 index fc9b3eb..0000000 --- a/0.0.3/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#external-i.e.-non-standard-libraries (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #external-i.e.-non-standard-libraries.

    - diff --git a/0.0.3/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html b/0.0.3/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html deleted file mode 100644 index f915680..0000000 --- a/0.0.3/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#foundational-calling-static_assert-with-a-constant-expression (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #foundational-calling-static_assert-with-a-constant-expression.

    - diff --git a/0.0.3/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html b/0.0.3/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html deleted file mode 100644 index 88f62bc..0000000 --- a/0.0.3/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#foundational-how-and-when-are-copies-made (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #foundational-how-and-when-are-copies-made.

    - diff --git a/0.0.3/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html b/0.0.3/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html deleted file mode 100644 index 95ab098..0000000 --- a/0.0.3/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#foundational-using-and-defining-functions-with-default-arguments (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #foundational-using-and-defining-functions-with-default-arguments.

    - diff --git a/0.0.3/html_split/_0023foundational_002dusing_002dudls.html b/0.0.3/html_split/_0023foundational_002dusing_002dudls.html deleted file mode 100644 index 2f7afdd..0000000 --- a/0.0.3/html_split/_0023foundational_002dusing_002dudls.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#foundational-using-udls (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #foundational-using-udls.

    - diff --git a/0.0.3/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html b/0.0.3/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html deleted file mode 100644 index 708f2d3..0000000 --- a/0.0.3/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#foundational-writing-requires-expressions (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #foundational-writing-requires-expressions.

    - diff --git a/0.0.3/html_split/_0023functions.html b/0.0.3/html_split/_0023functions.html deleted file mode 100644 index e304abe..0000000 --- a/0.0.3/html_split/_0023functions.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#functions (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #functions.

    - diff --git a/0.0.3/html_split/_0023functions_002ddefault_002dargument.html b/0.0.3/html_split/_0023functions_002ddefault_002dargument.html deleted file mode 100644 index ccfbcbb..0000000 --- a/0.0.3/html_split/_0023functions_002ddefault_002dargument.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#functions-default-argument (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #functions-default-argument.

    - diff --git a/0.0.3/html_split/_0023functions_002duser_002ddefined_002dliterals.html b/0.0.3/html_split/_0023functions_002duser_002ddefined_002dliterals.html deleted file mode 100644 index b4f78b5..0000000 --- a/0.0.3/html_split/_0023functions_002duser_002ddefined_002dliterals.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#functions-user-defined-literals (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #functions-user-defined-literals.

    - diff --git a/0.0.3/html_split/_0023generic_002dprogramming_002dtemplates.html b/0.0.3/html_split/_0023generic_002dprogramming_002dtemplates.html deleted file mode 100644 index 3b91080..0000000 --- a/0.0.3/html_split/_0023generic_002dprogramming_002dtemplates.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#generic-programming-templates (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #generic-programming-templates.

    - diff --git a/0.0.3/html_split/_0023glossary.html b/0.0.3/html_split/_0023glossary.html deleted file mode 100644 index 9b46bf6..0000000 --- a/0.0.3/html_split/_0023glossary.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#glossary (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #glossary.

    - diff --git a/0.0.3/html_split/_0023how_002dto_002dcontribute.html b/0.0.3/html_split/_0023how_002dto_002dcontribute.html deleted file mode 100644 index d9cff4a..0000000 --- a/0.0.3/html_split/_0023how_002dto_002dcontribute.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#how-to-contribute (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #how-to-contribute.

    - diff --git a/0.0.3/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html b/0.0.3/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html deleted file mode 100644 index def5140..0000000 --- a/0.0.3/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#inheritance-and-class-hierarchies (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #inheritance-and-class-hierarchies.

    - diff --git a/0.0.3/html_split/_0023license.html b/0.0.3/html_split/_0023license.html deleted file mode 100644 index 6b44dd1..0000000 --- a/0.0.3/html_split/_0023license.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#license (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #license.

    - diff --git a/0.0.3/html_split/_0023main_002dadvanced_002drequirements.html b/0.0.3/html_split/_0023main_002dadvanced_002drequirements.html deleted file mode 100644 index 8214533..0000000 --- a/0.0.3/html_split/_0023main_002dadvanced_002drequirements.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#main-advanced-requirements (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #main-advanced-requirements.

    - diff --git a/0.0.3/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html b/0.0.3/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html deleted file mode 100644 index 22b0484..0000000 --- a/0.0.3/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#main-contracts-and-static_assert (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #main-contracts-and-static_assert.

    - diff --git a/0.0.3/html_split/_0023main_002dimplementing.html b/0.0.3/html_split/_0023main_002dimplementing.html deleted file mode 100644 index 260008c..0000000 --- a/0.0.3/html_split/_0023main_002dimplementing.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#main-implementing (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #main-implementing.

    - diff --git a/0.0.3/html_split/_0023main_002dimplementing_002dudls.html b/0.0.3/html_split/_0023main_002dimplementing_002dudls.html deleted file mode 100644 index a41d194..0000000 --- a/0.0.3/html_split/_0023main_002dimplementing_002dudls.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#main-implementing-udls (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #main-implementing-udls.

    - diff --git a/0.0.3/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html b/0.0.3/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html deleted file mode 100644 index 1e5a4d8..0000000 --- a/0.0.3/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#main-implementing-user-defined-copy-operations (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #main-implementing-user-defined-copy-operations.

    - diff --git a/0.0.3/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html b/0.0.3/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html deleted file mode 100644 index 4502ed8..0000000 --- a/0.0.3/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#meta-error-handling-static_assert (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #meta-error-handling-static_assert.

    - diff --git a/0.0.3/html_split/_0023module_002dname_002drequires_002dexpressions.html b/0.0.3/html_split/_0023module_002dname_002drequires_002dexpressions.html deleted file mode 100644 index 56a9ebf..0000000 --- a/0.0.3/html_split/_0023module_002dname_002drequires_002dexpressions.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#module-name-requires-expressions (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #module-name-requires-expressions.

    - diff --git a/0.0.3/html_split/_0023motivation.html b/0.0.3/html_split/_0023motivation.html deleted file mode 100644 index 0141374..0000000 --- a/0.0.3/html_split/_0023motivation.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#motivation (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #motivation.

    - diff --git a/0.0.3/html_split/_0023motivation_002d1.html b/0.0.3/html_split/_0023motivation_002d1.html deleted file mode 100644 index 7e4a69e..0000000 --- a/0.0.3/html_split/_0023motivation_002d1.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#motivation-1 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #motivation-1.

    - diff --git a/0.0.3/html_split/_0023motivation_002d2.html b/0.0.3/html_split/_0023motivation_002d2.html deleted file mode 100644 index 7901fd3..0000000 --- a/0.0.3/html_split/_0023motivation_002d2.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#motivation-2 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #motivation-2.

    - diff --git a/0.0.3/html_split/_0023motivation_002d3.html b/0.0.3/html_split/_0023motivation_002d3.html deleted file mode 100644 index ec720ad..0000000 --- a/0.0.3/html_split/_0023motivation_002d3.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#motivation-3 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #motivation-3.

    - diff --git a/0.0.3/html_split/_0023motivation_002d4.html b/0.0.3/html_split/_0023motivation_002d4.html deleted file mode 100644 index f53583a..0000000 --- a/0.0.3/html_split/_0023motivation_002d4.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#motivation-4 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #motivation-4.

    - diff --git a/0.0.3/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html b/0.0.3/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html deleted file mode 100644 index 57e8b6e..0000000 --- a/0.0.3/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#obtaining-this-document-the-most-recent-version-and-alternate-formats (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #obtaining-this-document-the-most-recent-version-and-alternate-formats.

    - diff --git a/0.0.3/html_split/_0023organization_002dof_002dthis_002ddocument.html b/0.0.3/html_split/_0023organization_002dof_002dthis_002ddocument.html deleted file mode 100644 index e312b8e..0000000 --- a/0.0.3/html_split/_0023organization_002dof_002dthis_002ddocument.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#organization-of-this-document (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #organization-of-this-document.

    - diff --git a/0.0.3/html_split/_0023overview.html b/0.0.3/html_split/_0023overview.html deleted file mode 100644 index b2d4bdc..0000000 --- a/0.0.3/html_split/_0023overview.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#overview (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #overview.

    - diff --git a/0.0.3/html_split/_0023overview_002d1.html b/0.0.3/html_split/_0023overview_002d1.html deleted file mode 100644 index d551764..0000000 --- a/0.0.3/html_split/_0023overview_002d1.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#overview-1 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #overview-1.

    - diff --git a/0.0.3/html_split/_0023overview_002d2.html b/0.0.3/html_split/_0023overview_002d2.html deleted file mode 100644 index 5a34b05..0000000 --- a/0.0.3/html_split/_0023overview_002d2.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#overview-2 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #overview-2.

    - diff --git a/0.0.3/html_split/_0023overview_002d3.html b/0.0.3/html_split/_0023overview_002d3.html deleted file mode 100644 index f230145..0000000 --- a/0.0.3/html_split/_0023overview_002d3.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#overview-3 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #overview-3.

    - diff --git a/0.0.3/html_split/_0023overview_002d4.html b/0.0.3/html_split/_0023overview_002d4.html deleted file mode 100644 index 2436b9a..0000000 --- a/0.0.3/html_split/_0023overview_002d4.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#overview-4 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #overview-4.

    - diff --git a/0.0.3/html_split/_0023points_002dto_002dcover.html b/0.0.3/html_split/_0023points_002dto_002dcover.html deleted file mode 100644 index 424b02b..0000000 --- a/0.0.3/html_split/_0023points_002dto_002dcover.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#points-to-cover (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #points-to-cover.

    - diff --git a/0.0.3/html_split/_0023points_002dto_002dcover_002d1.html b/0.0.3/html_split/_0023points_002dto_002dcover_002d1.html deleted file mode 100644 index 2a554bb..0000000 --- a/0.0.3/html_split/_0023points_002dto_002dcover_002d1.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#points-to-cover-1 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #points-to-cover-1.

    - diff --git a/0.0.3/html_split/_0023points_002dto_002dcover_002d2.html b/0.0.3/html_split/_0023points_002dto_002dcover_002d2.html deleted file mode 100644 index 053a51a..0000000 --- a/0.0.3/html_split/_0023points_002dto_002dcover_002d2.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#points-to-cover-2 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #points-to-cover-2.

    - diff --git a/0.0.3/html_split/_0023points_002dto_002dcover_002d3.html b/0.0.3/html_split/_0023points_002dto_002dcover_002d3.html deleted file mode 100644 index b0dad48..0000000 --- a/0.0.3/html_split/_0023points_002dto_002dcover_002d3.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#points-to-cover-3 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #points-to-cover-3.

    - diff --git a/0.0.3/html_split/_0023points_002dto_002dcover_002d4.html b/0.0.3/html_split/_0023points_002dto_002dcover_002d4.html deleted file mode 100644 index 94de8fa..0000000 --- a/0.0.3/html_split/_0023points_002dto_002dcover_002d4.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#points-to-cover-4 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #points-to-cover-4.

    - diff --git a/0.0.3/html_split/_0023points_002dto_002dcover_002d5.html b/0.0.3/html_split/_0023points_002dto_002dcover_002d5.html deleted file mode 100644 index 39d1eaf..0000000 --- a/0.0.3/html_split/_0023points_002dto_002dcover_002d5.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#points-to-cover-5 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #points-to-cover-5.

    - diff --git a/0.0.3/html_split/_0023points_002dto_002dcover_002d6.html b/0.0.3/html_split/_0023points_002dto_002dcover_002d6.html deleted file mode 100644 index 92df88f..0000000 --- a/0.0.3/html_split/_0023points_002dto_002dcover_002d6.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#points-to-cover-6 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #points-to-cover-6.

    - diff --git a/0.0.3/html_split/_0023points_002dto_002dcover_002d7.html b/0.0.3/html_split/_0023points_002dto_002dcover_002d7.html deleted file mode 100644 index 6e6c895..0000000 --- a/0.0.3/html_split/_0023points_002dto_002dcover_002d7.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#points-to-cover-7 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #points-to-cover-7.

    - diff --git a/0.0.3/html_split/_0023points_002dto_002dcover_002d8.html b/0.0.3/html_split/_0023points_002dto_002dcover_002d8.html deleted file mode 100644 index b5574e1..0000000 --- a/0.0.3/html_split/_0023points_002dto_002dcover_002d8.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#points-to-cover-8 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #points-to-cover-8.

    - diff --git a/0.0.3/html_split/_0023preprocessor.html b/0.0.3/html_split/_0023preprocessor.html deleted file mode 100644 index a3bb5f6..0000000 --- a/0.0.3/html_split/_0023preprocessor.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#preprocessor (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #preprocessor.

    - diff --git a/0.0.3/html_split/_0023references.html b/0.0.3/html_split/_0023references.html deleted file mode 100644 index 69fbd6b..0000000 --- a/0.0.3/html_split/_0023references.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#references (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #references.

    - diff --git a/0.0.3/html_split/_0023references_002don_002dlearning_002doutcomes.html b/0.0.3/html_split/_0023references_002don_002dlearning_002doutcomes.html deleted file mode 100644 index d28fbbf..0000000 --- a/0.0.3/html_split/_0023references_002don_002dlearning_002doutcomes.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#references-on-learning-outcomes (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #references-on-learning-outcomes.

    - diff --git a/0.0.3/html_split/_0023software_002ddesign.html b/0.0.3/html_split/_0023software_002ddesign.html deleted file mode 100644 index 16f5f54..0000000 --- a/0.0.3/html_split/_0023software_002ddesign.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#software-design (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #software-design.

    - diff --git a/0.0.3/html_split/_0023standard_002dlibrary.html b/0.0.3/html_split/_0023standard_002dlibrary.html deleted file mode 100644 index 71956d3..0000000 --- a/0.0.3/html_split/_0023standard_002dlibrary.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#standard-library (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #standard-library.

    - diff --git a/0.0.3/html_split/_0023student_002doutcomes.html b/0.0.3/html_split/_0023student_002doutcomes.html deleted file mode 100644 index df0035d..0000000 --- a/0.0.3/html_split/_0023student_002doutcomes.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#student-outcomes (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #student-outcomes.

    - diff --git a/0.0.3/html_split/_0023student_002doutcomes_002d1.html b/0.0.3/html_split/_0023student_002doutcomes_002d1.html deleted file mode 100644 index e9344b7..0000000 --- a/0.0.3/html_split/_0023student_002doutcomes_002d1.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#student-outcomes-1 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #student-outcomes-1.

    - diff --git a/0.0.3/html_split/_0023student_002doutcomes_002d2.html b/0.0.3/html_split/_0023student_002doutcomes_002d2.html deleted file mode 100644 index 6fa7724..0000000 --- a/0.0.3/html_split/_0023student_002doutcomes_002d2.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#student-outcomes-2 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #student-outcomes-2.

    - diff --git a/0.0.3/html_split/_0023student_002doutcomes_002d3.html b/0.0.3/html_split/_0023student_002doutcomes_002d3.html deleted file mode 100644 index 195d9d2..0000000 --- a/0.0.3/html_split/_0023student_002doutcomes_002d3.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#student-outcomes-3 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #student-outcomes-3.

    - diff --git a/0.0.3/html_split/_0023student_002doutcomes_002d4.html b/0.0.3/html_split/_0023student_002doutcomes_002d4.html deleted file mode 100644 index 3e30430..0000000 --- a/0.0.3/html_split/_0023student_002doutcomes_002d4.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#student-outcomes-4 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #student-outcomes-4.

    - diff --git a/0.0.3/html_split/_0023student_002doutcomes_002d5.html b/0.0.3/html_split/_0023student_002doutcomes_002d5.html deleted file mode 100644 index 0a4a7da..0000000 --- a/0.0.3/html_split/_0023student_002doutcomes_002d5.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#student-outcomes-5 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #student-outcomes-5.

    - diff --git a/0.0.3/html_split/_0023student_002doutcomes_002d6.html b/0.0.3/html_split/_0023student_002doutcomes_002d6.html deleted file mode 100644 index c5c4ac0..0000000 --- a/0.0.3/html_split/_0023student_002doutcomes_002d6.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#student-outcomes-6 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #student-outcomes-6.

    - diff --git a/0.0.3/html_split/_0023student_002doutcomes_002d7.html b/0.0.3/html_split/_0023student_002doutcomes_002d7.html deleted file mode 100644 index 5233f94..0000000 --- a/0.0.3/html_split/_0023student_002doutcomes_002d7.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#student-outcomes-7 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #student-outcomes-7.

    - diff --git a/0.0.3/html_split/_0023student_002doutcomes_002d8.html b/0.0.3/html_split/_0023student_002doutcomes_002d8.html deleted file mode 100644 index f19fd7f..0000000 --- a/0.0.3/html_split/_0023student_002doutcomes_002d8.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#student-outcomes-8 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #student-outcomes-8.

    - diff --git a/0.0.3/html_split/_0023student_002doutcomes_002d9.html b/0.0.3/html_split/_0023student_002doutcomes_002d9.html deleted file mode 100644 index 735a21f..0000000 --- a/0.0.3/html_split/_0023student_002doutcomes_002d9.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#student-outcomes-9 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #student-outcomes-9.

    - diff --git a/0.0.3/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html b/0.0.3/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html deleted file mode 100644 index 4801178..0000000 --- a/0.0.3/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#summary-of-modules-and-topics (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #summary-of-modules-and-topics.

    - diff --git a/0.0.3/html_split/_0023testing_002dand_002ddebugging.html b/0.0.3/html_split/_0023testing_002dand_002ddebugging.html deleted file mode 100644 index 1ae096d..0000000 --- a/0.0.3/html_split/_0023testing_002dand_002ddebugging.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#testing-and-debugging (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #testing-and-debugging.

    - diff --git a/0.0.3/html_split/_0023tooling.html b/0.0.3/html_split/_0023tooling.html deleted file mode 100644 index 634a8dc..0000000 --- a/0.0.3/html_split/_0023tooling.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#tooling (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #tooling.

    - diff --git a/0.0.3/html_split/_0023topic_002dintroduction.html b/0.0.3/html_split/_0023topic_002dintroduction.html deleted file mode 100644 index 742d5d9..0000000 --- a/0.0.3/html_split/_0023topic_002dintroduction.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#topic-introduction (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #topic-introduction.

    - diff --git a/0.0.3/html_split/_0023topic_002dintroduction_002d1.html b/0.0.3/html_split/_0023topic_002dintroduction_002d1.html deleted file mode 100644 index a110644..0000000 --- a/0.0.3/html_split/_0023topic_002dintroduction_002d1.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#topic-introduction-1 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #topic-introduction-1.

    - diff --git a/0.0.3/html_split/_0023topic_002dintroduction_002d2.html b/0.0.3/html_split/_0023topic_002dintroduction_002d2.html deleted file mode 100644 index 986bf37..0000000 --- a/0.0.3/html_split/_0023topic_002dintroduction_002d2.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#topic-introduction-2 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #topic-introduction-2.

    - diff --git a/0.0.3/html_split/_0023topic_002dintroduction_002d3.html b/0.0.3/html_split/_0023topic_002dintroduction_002d3.html deleted file mode 100644 index 3d14fd9..0000000 --- a/0.0.3/html_split/_0023topic_002dintroduction_002d3.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#topic-introduction-3 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #topic-introduction-3.

    - diff --git a/0.0.3/html_split/_0023topic_002dintroduction_002d4.html b/0.0.3/html_split/_0023topic_002dintroduction_002d4.html deleted file mode 100644 index c73a236..0000000 --- a/0.0.3/html_split/_0023topic_002dintroduction_002d4.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#topic-introduction-4 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #topic-introduction-4.

    - diff --git a/0.0.3/html_split/_0023use_002dof_002dthis_002ddocument.html b/0.0.3/html_split/_0023use_002dof_002dthis_002ddocument.html deleted file mode 100644 index 68d835d..0000000 --- a/0.0.3/html_split/_0023use_002dof_002dthis_002ddocument.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#use-of-this-document (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #use-of-this-document.

    - diff --git a/0.0.3/html_split/_0023user_002ddefined_002dtypes_002dclasses.html b/0.0.3/html_split/_0023user_002ddefined_002dtypes_002dclasses.html deleted file mode 100644 index 04771a9..0000000 --- a/0.0.3/html_split/_0023user_002ddefined_002dtypes_002dclasses.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#user-defined-types-classes (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #user-defined-types-classes.

    - diff --git a/0.0.3/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html b/0.0.3/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html deleted file mode 100644 index f4b9435..0000000 --- a/0.0.3/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#working-group-documents-related-to-c-teaching-guidelines (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #working-group-documents-related-to-c-teaching-guidelines.

    - diff --git a/0.0.3/html_split/index.html b/0.0.3/html_split/index.html deleted file mode 100644 index c4e5ff0..0000000 --- a/0.0.3/html_split/index.html +++ /dev/null @@ -1,240 +0,0 @@ - - - - - -Top (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -

    Table of Contents

    - -
    - - -
    - - - -
    -

    Guidelines for Teaching C++

    - - - - - - - - - - - - - - - - - - -
    - - - - - - diff --git a/0.0.3/html_split/unknown_node.html b/0.0.3/html_split/unknown_node.html deleted file mode 100644 index 5a652e5..0000000 --- a/0.0.3/html_split/unknown_node.html +++ /dev/null @@ -1,763 +0,0 @@ - - - - - -Guidelines for Teaching C++ - - - - - - - - - - - - - - - - -
    -

    -   [Contents]

    -
    -
    -

    8.1.5.1 Background/Required Knowledge

    -

    A student is able to: * identify special member functions -[C++ object model: -special member functions] -

    -

    It helps when a student is able to: * use move semantics -[C++ object model: move -semantics] * explain the rule of zero -[C++ object model: rule-of-zero] -* explain the rule of five [C++ -object model: rule-of-five] -

    -
    -

    -   [Contents]

    -
    -

    8.1.5.2 Student outcomes

    -

    A list of things “a student should be able to” after the -curriculum. The next word should be an action word and testable -in an exam. Max 5 items. -

    -

    A student should be able to: * explain when they have to implement the -copy operations for their own type * Copy constructor * Copy assignment -operator * implement copy operations for their own types * -Optional: explain when copying with basic and strong exception -guarantees is useful -

    -
    -

    -   [Contents]

    -
    -

    8.1.5.3 Caveats

    -

    This section mentions subtle points to understand, like anything -resulting in implementation-defined, unspecified, or undefined -behavior. -

    -
      -
    • Intricacies when implementing copy operations: -
        -
      • Examples of how not to write copy operations (e.g., C++03 -std::auto_ptr) -
      - -
    - -
    -

    -   [Contents]

    -
    -

    8.1.5.4 Points to cover

    -

    This section lists important details for each point. -

    -
      -
    • Copy constructors and copy assignment operators -
        -
      • How compiler generates default copy operations -
      • =default, =delete (No copy) -
      • How-to write your own copy operations -
      • Rule-of-five -
      • Copy assignment operators can be ref-qualified to avoid assigning into -temporary objects. -
      - -
    - -
    -

    -   [Contents]

    -
    -

    8.2.1 Overview

    -

    Provides a short natural language abstract of the module’s -contents. Specifies the different levels of teaching. -

    - - - - - -
    LevelObjectives
    Foundationalusing and understanding UDLs
    Mainimplementing your own UDLs
    AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
    - -
    -

    -   [Contents]

    -
    -

    8.2.2 Motivation

    -

    Why is this important? Why do we want to learn/teach this -topic? -

    -
      -
    • Allows clearer expression of intent in C++. -
    • std::string: "Hello, world!"s -
    • std::chrono: 3h + 10min + 5s -
    - -
    -

    -   [Contents]

    -
    -

    8.2.3 Topic introduction

    -

    Very brief introduction to the topic. -

    -
      -
    • Explain the existence of user defined literals. Example: -12min + 17s is terse, expressive and type safe. -
    - -
    -

    -   [Contents]

    -
    -

    8.2.4.1 Background/Required Knowledge

    -

    A student: * knows how to form numeric literals, e.g., 1.5f means -a float of value 1.5. * is familiar with the major C++ -types: * bool (Boolean type) * int (Integer type) * -double (Floating-point type) * std::string (Text type) * -std::vector (Collection type) * knows that namespaces exist, and -namespace std. * knows what using-declarations and -using-directives are. -[C++ object -model: declarations] -

    -
    -

    -   [Contents]

    -
    -

    8.2.4.2 Student outcomes

    -

    A list of things “a student should be able to” after the -curriculum. The next word should be an action word and testable -in an exam. Max 5 items. -

    -

    A student should be able to: -

    -
      -
    1. use using namespace std::string_literals[1]. -
    2. recognise UDLs in code that they are reading. -
    3. figure out which UDL definitions for a used type exist. -
    4. identify parts of the standard library that make use of UDLs. -
    5. prevent the dangers of temporaries created with "blah"s as well -as with std::string{"blah"}. -
    6. effectively selects the right set of namespaces in using-directives from -the sub-namespaces std::literals. -
    - -

    [1]: explain that it’s okay to use a using-directive to “activate” -UDLs. -

    -
    -

    -   [Contents]

    -
    -

    8.2.4.3 Caveats

    -

    This section mentions subtle points to understand, like anything -resulting in implementation-defined, unspecified, or undefined -behavior. -

    -
      -
    • A student gets confused by the similarities and differences between -built-in suffixes and UDLs and between UDLs from different namespaces. -
    • A student “activates” two suffixes with the same signature from -different namespaces. -
    - -
    -

    -   [Contents]

    -
    -

    8.2.4.4 Points to cover

    -

    This section lists important details for each point. -

    -
    -

    -   [Contents]

    -
    -

    8.2.5.1 Background/Required Knowledge

    -
      -
    • All of the above. -
    - -
    -

    -   [Contents]

    -
    -

    8.2.5.2 Student outcomes

    -

    A list of things “a student should be able to” after the -curriculum. The next word should be an action word and testable -in an exam. Max 5 items. -

    -

    A student should be able to: -

    -
      -
    1. write a UDL operator of their own. -
    2. separate unrelated UDLs into distinct namespaces. -
    - -
    -

    -   [Contents]

    -
    -

    8.2.5.3 Caveats

    -

    This section mentions subtle points to understand, like anything -resulting in implementation-defined, unspecified, or undefined -behavior. -

    -

    No caveats at present. #### Points to cover -

    -

    This section lists important details for each point. -

    -

    No caveats at present. ### Advanced {#udl-advanced} -

    -

    These are important topics that are not expected to be covered but -provide guidance where one can continue to investigate this topic in -more depth. -

    -
    -

    -   [Contents]

    -
    -

    8.3.1 Overview

    -

    Functions in C++ may be overloaded with different numbers and types of -parameters. It may be of value to specify default arguments for some -number of parameters, to allow a caller to avoid specifying arguments -that rarely change, or to enable expanding the set of parameters while -maintaining backward compatibility with existing callers. -

    - - - - - -
    LevelObjective
    FoundationalDefine and use functions with default arguments
    Main
    Advancedrefinement of default arguments through multiple declarations
    - -
    -

    -   [Contents]

    -
    -

    8.3.2 Motivation

    -

    Default arguments allow the omission of arguments with obvious or common -values. Also may be utilized to extend an existing function signature -without forcing changes to existing calling code. -

    -
    -

    -   [Contents]

    -
    -

    8.3.3 Topic introduction

    -

    Explain how default arguments work and how to define them. -

    -
    -

    -   [Contents]

    -
    -

    8.3.4.1 Background/Required Knowledge

    -

    A student is able to: -

    - - -
    -

    -   [Contents]

    -
    -

    8.3.4.2 Student outcomes

    -

    A student should be able to: -

    -
      -
    1. Call to a function with a default argument with or without that argument -specified -
    2. Declare a function with a default argument, and omit the default in the -definition’s signature -
    3. Explain when the lifetime of a default argument begins and ends -
    - -
    -

    -   [Contents]

    -
    -

    8.3.4.3 Caveats

    -
      -
    • When no forward-declaration exists, the definition serves as the -declaration -
    • When multiple declarations exist, only one may specify the default for -any particular parameter, but multiple declarations may specify the -defaults for different parameters. -
    • Additional default values may be specified for other parameters in -repeat declarations -
    • Calling an overloaded function with fewer arguments may be ambiguous -with regard to an overload with default arguments -
    - -
    -

    -   [Contents]

    -
    -

    8.3.4.4 Points to cover

    -
      -
    • Default value may only be specified once for each parameter among all -declarations -
    • Default values must start from the rightmost parameter and continue -leftward without gaps -
    • Considerations of when to use default arguments vs overload set -
    - -
    -

    -   [Contents]

    -
    -

    8.3.5.2 Student outcomes

    -

    A student should be able to: -

    -
    -

    -   [Contents]

    -
    -

    8.3.5.3 Caveats

    - -
    -

    -   [Contents]

    -
    -

    8.3.5.4 Points to cover

    - -
    -

    -   [Contents]

    -
    -

    8.3.6 Advanced

    -

    Subsequent redeclarations of the same function may add default argument -values, which are then usable by callers. Though a single parameter -cannot be given a default argument twice in the same translation unit, -it is legal, though ill-advised, to give the same function different -default arguments in different translation units. -

    -
    -

    -   [Contents]

    -
    -

    8.4.1 Overview

    - - - - - -
    LevelObjectives
    FoundationalDefine and use requires-expressions to check satisfaction of -expressions by given parameters
    MainDefine and use requires-expressions to check properties of -expressions
    Advanced
    - -
    -

    -   [Contents]

    -
    -

    8.4.2 Motivation

    -

    Requires-expressions allow a developer to perform compile-time -evaluation on the validity of other expressions. These are fundamental -to the ability to write concepts. -[Compile-time programming: -concepts] -

    -
    -

    -   [Contents]

    -
    -

    8.5 Topic introduction

    -

    Requires-expressions are compile-time predicates which evaluate to true -when their specified set of expressions are all valid for a given set of -inputs. -

    - - - - - - -
    -

    -   [Contents]

    -
    -

    8.5.1.1 Background/Required Knowledge

    -

    A student is able to: -

    - - -

    It is helpful if: -

    -
      -
    • The student is aware that attempting to specialize the template with -types or values which do not match otherwise unstated assumptions will -cause errors within the template. -
    - -
    -

    -   [Contents]

    -
    -

    8.5.1.2 Student outcomes

    -

    A student should be able to: -

    -
      -
    1. Write a simple-requirement to assert the validity of an expression -
    2. Write a type-requirement to check the existence of a type by its -identifier -
    3. Write a compound-requirement to test the resulting type of an expression -
    4. Write a nested-requirement to test the constexpr value of an operation, -as opposed to just the syntactic validity -
    5. Use a requires-expression within a concept, requires-clause, or -if constexpr condition -
    - -
    -

    -   [Contents]

    -
    -

    8.5.1.3 Caveats

    -

    To require that expressions, which evaluate to a boolean value like -sizeof(t) == 4, evaluate to true a nested-requirement is -needed (e.g., requires sizeof(t) == 4;). Omitting the -requires results in a simple-requirement, which is satisfied -based purely on syntactic validity, not on the result of the operation. -

    -
    -

    -   [Contents]

    -
    -

    8.5.1.4 Points to cover

    -
      -
    • All requires-expression requirements terminate with a semicolon. -
    • simple-requirements are used to check that an expression is well-formed. -
    • nested-requirements are introduced with requires and primarily -used to check the result of an expression computable by the compiler, -including concepts or other requires-expressions. -
    • type-requirements are introduced with typename and used to verify -the existence of a type with a particular identifier. -
    • compound-requirements are enclosed in braces and can be used to check -the resulting type of an expression. -
    • Checks are performed by the compiler, not at run time. -
    • If covering usage of requires-expression with requires-clause, -[Compile-time -programming: requires clause] demonstrate requires requires and -show how to ever avoid writing it by using a concept. -[Compile-time programming: -concepts] -
    - -
    -

    -   [Contents]

    -
    -

    8.5.2.1 Background/required knowledge

    -
      -
    • All of the above. -
    • Knowledge of noexcept -
    - -

    A student is able to: -

    - - -
    -

    -   [Contents]

    -
    -

    8.5.2.2 Student outcomes

    -

    A student should be able to: -

    -
      -
    1. Write compound-requirements which test the noexceptness of an -expression. -
    2. Use a concept as the target of a compound-requirement. -
    - -
    -

    -   [Contents]

    -
    -

    8.5.2.3 Caveats

    - -
    -

    -   [Contents]

    -
    -

    8.5.2.4 Points to cover

    -
      -
    • Compound-requirements allow the optional ability to test whether an -expression is marked as noexcept, by using a trailing -noexcept keyword. -
    - -
    struct S
    -{
    -    void foo() noexcept {}
    -    void bar() {}
    -};
    -
    -static_assert(requires(S s) { { s.foo() } noexcept; } ); // Succeeds. s.foo() is noexcept
    -static_assert(requires(S s) { { s.bar() } noexcept; } ); // Fails. s.bar() is not noexcept
    -
    -
      -
    • If the return-type-requirement of a compound-requirement is a concept, -that concept is given the resulting type as the first parameter, -followed by the specified parameters in the compound-requirement. -{ ++x } -> C<int> would substitute -C<decltype((++x)), int> and check that concept C is satisfied for -those parameters. -
    - -
    -

    -   [Contents]

    -
    -

    8.5.3 Advanced

    - -
    -

    -   [Contents]

    -
    -

    8.6.1 Overview

    -

    Provides a short natural language abstract of the module’s -contents. Specifies the different levels of teaching. -

    - - - - - -
    LevelObjectives
    FoundationalCalling static_assert with a constant expression
    MainUsing static_assert to detect contract violations and -improve error messages
    Advanced
    - -
    -

    -   [Contents]

    -
    -

    8.6.2 Motivation

    -

    Why is this important? Why do we want to learn/teach this -topic? -

    -

    static_assert allows the developer to enforce that conditions -which can be checked during compilation will force build errors when -violated. Additionally, they are the best mechanism by which a developer -can pass useful information to other developers regarding what violation -occurred or what must be done, instead. -

    -
    -

    -   [Contents]

    -
    -

    8.6.3 Topic introduction

    -

    Very brief introduction to the topic. -

    -

    static_assert is a compile-time evaluated function that asserts -the truth of a supplied predicate, issuing an optional user-supplied -error message if the predicate is false. -

    -
    -

    -   [Contents]

    -
    -

    8.6.4.1 Background/Required Knowledge

    -

    A student: -

    -
      -
    • Should be able to explain the difference between code evaluated at -compile-time and run-time -
    • Should be able to cite some examples of compile-time known information, -such as sizeof(T) -
    - -
    -

    -   [Contents]

    -
    -

    8.6.4.2 Student outcomes

    -

    A list of things “a student should be able to” after the -curriculum. The next word should be an action word and testable -in an exam. Max 5 items. -

    -

    A student should be able to: -

    -
      -
    1. Assert the expected size of a structure using static_assert -
    - -
    -

    -   [Contents]

    -
    -

    8.6.4.3 Caveats

    -

    This section mentions subtle points to understand, like anything -resulting in implementation-defined, unspecified, or undefined -behavior. -

    -
    -

    -   [Contents]

    -
    -

    8.6.4.4 Points to cover

    -

    This section lists important details for each point. -

    -
      -
    • X -
    • In addition to what is wrong, a good error message will inform the user -of how to correct it -
    - -
    -

    -   [Contents]

    -
    -

    8.6.5.1 Background/Required Knowledge

    -
      -
    • All of the above. -
    • General understanding of compile-time requirements -
    - -
    -

    -   [Contents]

    -
    -

    8.6.5.2 Student outcomes

    -

    A list of things “a student should be able to” after the -curriculum. The next word should be an action word and testable -in an exam. Max 5 items. -

    -

    A student should be able to: -

    -
      -
    1. Utilize static_assert to verify preconditions of a meta-function -
    2. Utilize static_assert to verify the results of meta-functions for -known values -
    - -
    -

    -   [Contents]

    -
    -

    8.6.5.3 Caveats

    -

    This section mentions subtle points to understand, like anything -resulting in implementation-defined, unspecified, or undefined -behavior. -

    -
    -

    -   [Contents]

    -
    -

    8.6.5.4 Points to cover

    -

    This section lists important details for each point. -

    -
      -
    • When writing a meta-function, use static_assert to test the -results -
    • Write static_assert calls at the scope of the code they are -guarding -
    - -
    template<typename T>
    -struct container {
    -    std::map<int, T> vals;
    -
    -    // Test location #1
    -    static_assert(
    -        std::is_default_constructible_v<T>,
    -        "container type T must be default constructible");i
    -
    -    void add(int key, T const& t) {
    -        // Test location #2
    -        static_assert(
    -            std::is_default_constructible_v<T>,
    -            "container type T must be default constructible");
    -        // std::map::operator[] requires default constructible type for 
    -        // the value. This will cause a build failure deep in the 
    -        // implementation of std::map, when T is not default constructible
    -        vals[key] = t;
    -    }
    -};
    -
    -struct NoDefCtor {
    -    NoDefCtor() = delete;
    -    NoDefCtor(double d) {}
    -};
    -
    -container<NoDefCtor> c; // If Test #1 was omitted, this would succeed
    -// This is ill-formed. Test #2 would catch this and provide a better 
    -// error message for the user
    -c.add(42, NoDefCtor(1.0)); 
    -
    -
    -

    -   [Contents]

    -
    -

    8.6.6 Advanced

    -

    These are important topics that are not expected to be covered but -provide guidance where one can continue to investigate this topic in -more depth. -

    - - - - - diff --git a/0.0.4/guidelines.epub b/0.0.4/guidelines.epub deleted file mode 100644 index d0b15306d38742040ee9efde1c9957cb4079eee9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31523 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
    t~m&bTozOR_U4fmrE<-`g4; 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 diff --git a/0.0.4/html/index.html b/0.0.4/html/index.html deleted file mode 100644 index c237b3f..0000000 --- a/0.0.4/html/index.html +++ /dev/null @@ -1,1430 +0,0 @@ - - - - - - - Guidelines for Teaching C++ - - - - - - - - - - - - - - - - - - - - - Guidelines for Teaching C++ - - - - - - - -
    - -
    - -
    - -
    - -
    -

    Guidelines for Teaching C++

    - -

    Version 0.0.4

    - -

    SG20 (ISO C++ Study Group on Education)

    -
    -
    - -
    -
    -
    - -
    -
    - -
    -

    1 Obtaining This Document: The Most Recent Version and Alternate Formats

    -

    The most recent version of this document is available as an online HTML document at: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/latest/.

    -

    The version of the document that you are currently reading is available in the following formats:

    -
      -
    1. online (HTML) format as a single large HTML document: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.4/html [later to be https://cplusplus.github.io/SG20/0.0.4/html?]

    2. -
    3. EPUB format: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.4/guidelines.epub [later to be https:/cplusplus.github.io/SG20/0.0.4/guidelines.epub?]

    4. -
    5. online (HTML) format, split across multiple HTML documents: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.4/html_split/ [later to be https://cplusplus.github.io/SG20/0.0.4/html_split/?] [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

    6. -
    -

    Older versions of this document are also available. In general version ver is available at https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/ver. For example, version v0.1.0 (assuming that this version exists) would be available at [later to be https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/v0.1.0?].

    -

    2 Disclaimer

    -

    This document is intended as a proof of concept to solicit feedback from others. This document is incomplete. This document likely has at least a few errors.

    -

    3 Context and Aim of This Guide

    -

    This document is intended to serve as a resource for instructors to assist in the preparation of courses on C++ in a variety of settings, including university, college, and industry environments. The main objectives of this document are as follows:

    -
      -
    • to provide guidelines for content to be covered by courses of various difficulty levels on C++ (e.g., topics and learning outcomes)
    • -
    • to note some common misunderstandings and problematic points that may be encountered when teaching particular topics
    • -
    • to suggest resources useful for teaching C++
    • -
    • to present examples of curriculum for specific courses
    • -
    -

    This document does not itself provide a curriculum for a single specific course, but is rather a set of guidelines that can be used to prepare curricula for a wide variety of courses that differ in focus and level of sophistication. (This said, however, some links to other documents with examples of curricula for specific courses may be included herein.) This document only intends to target the teaching of the most recently ratified version of the C++ standard. (This said, however, since older versions of this document are also available, these older versions may be of some use to those who need guidance in older versions of the standard, at least versions that do not predate C++20.)

    -

    4 Use of This Document

    -

    [NOTE: This document follows the same license model as the C++ Core Guidelines. The LICENSE document is taken verbatim from the C++ Core Guidelines.] This document is made available under a MIT-style license. In simple terms, this license permits copying, use, modification, and creation of derivative works. A copy of the license is included in the section LICENSE.

    -

    5 Contributing to This Document

    -

    Contributions to this document are welcome. If you would like to help with this project as a contributor, please read the section How to Contribute.

    -

    6 Organization of This Document

    -

    The various concepts (i.e., ideas) to potentially be covered are partitioned into modules. A module is very broad in scope and consists of numerous topics. [Note: Can I suggest that we use the term “area” or “unit” instead of “module”? I think that these other choices are better and also avoid any potential confusion over what is meant by “module” (i.e., C++ term versus plain English term).]

    -

    For each module, topics related to the module are identified. Then, for each topic, learning outcomes are specified. In order to address a wide variety of courses on C++, each topic is addressed at three proficiency levels. These proficiency levels allow each topic to be covered at more than one level of detail. This allows target audiences with different background and learning objectives to be accommodated. The three proficiency levels are as follows:

    -
      -
    • foundational. This level gives the learner the idea that a facility exists, what benefits it offers, and the basic ways of using it. [Note: Isn’t this just “novice”/“beginner”?]

    • -
    • main. This level shows mainstream uses and techniques. For abstraction and organizational mechanisms it also demonstrates how to build them. This level should also give the learner a basic (but not detailed) understanding of how a facility might be implemented so that the learner can have a first-order understanding of any costs involved. [Note: The term “main” is not very descriptive/helpful. Could I suggest using “intermediate”?]

    • -
    • advanced. This level gives information suitable for an expert. For most topics there is an expert level of knowledge that most programmers rarely need and techniques that require detailed understanding of language rules or library implementation.

    • -
    -

    The remainder of this document is organized as follows. The various topics are listed grouped by module. In cases where a topic might be classified into more than one module, the topic is listed under the module of most direct relevance. This is done in order to avoid duplication of content. (In the case that a topic is equally relevant to multiple modules, the decision of which to select is made by a proverbial coin toss.) The order in which modules and topics are presented is not meant to imply any order of coverage in a course. The order in which items are listed is essentially arbitrary.

    -

    7 Summary of Modules and Topics

    -

    In the sections that follow, the various modules and topics are presented. There is one section per module. For each module, a table listing the various topics in that module is provided. The ID for a topic is linked to the detailed coverage of that topic that comes later in the document. If a topic has any learning outcomes at a given proficiency level, this is indicated by a checkmark (“✔️”). If a topic has no learning outcomes (simply because there are not any, not because the information is missing), this is indicated by an em dash (“—”). In the case that the information for a topic is completely missing, a question mark (“?”) symbol is used.

    -

    [NOTE: These topics are taken mostly from the SG20 GitHub repository. They are not intended to be complete in any sense. In fact, by gathering together all topics in one place where they are easily viewed, it is hoped that missing and unbalanced items will be more obvious.]

    -

    7.1 Compilation Model

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Translation Units???
    [?]Headers???
    [?]Modules???
    [?]Name Mangling???
    [?]Phases of Translation???
    [?]Separate Compilation???
    [?]Linkage???
    -

    7.2 Preprocessor

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Preprocessor Metaprogramming???
    [?]Inclusion???
    [?]Macros???
    -

    7.3 Basics Types, Objects, Values, Expressions, Statements, and Control-Flow Constructs

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Constant Objects???
    [?]Declarations and Definitions???
    [?]Selection Constructs (e.g., if, ternary)???
    [?]Looping Constructs (e.g., for, while, etc.)???
    -

    7.4 Functions

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Calling Functions???
    [?]Parameter Passing (e.g., Passing By Value and Reference)???
    [func-args]Default Arguments✔️
    [?]Returning Multiple Values???
    [?]Overloading???
    [udl]User-Defined Literals✔️✔️
    -

    7.5 User-Defined Types (Classes)

    - ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Special Member Functions???
    [?]Types???
    [?]Conversions???
    [?]Constructors and Destructors???
    [?]Move/Copy Constructors and Assignment Operators???
    [?]Member Functions???
    [?]Sum Types???
    [?]User-Defined Literals???
    [?]Special Member Functions???
    [?]Guidelines for Special Member Functions (e.g., Rule of Five, Rule of Zero)???
    [copy]Copy Semantics✔️✔️
    [?]Moving and Copying???
    [?]Lambdas???
    -

    7.6 Inheritance and Class Hierarchies

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Virtual Functions???
    [?]Run-Time Type Information???
    -

    7.7 Compile-Time Computation

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Constant Expressions and Constant Evaluation???
    [static-assert]static_assert✔️✔️
    -

    7.8 Generic Programming (Templates)

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Concepts???
    [?]SFINAE???
    [?]Template Metaprogramming???
    [?]Function Templates???
    [?]Requires Clauses???
    [req-expr]Requires Expressions✔️✔️
    -

    7.9 Error Handling

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Classes of Errors???
    [?]errno???
    [?]Error Codes???
    [?]Exception Handling???
    -

    7.10 Standard Library

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Input/Output (I/O)???
    [?]Containers, Iterators, and Algorithms???
    -

    7.11 External (i.e., Non Standard) Libraries

    - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Graphical User Interfaces???
    -

    7.12 Building

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Software Build Tools???
    [?]Strategies for Handling Build Problems???
    -

    7.13 Testing and Debugging

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Source-Level Debuggers???
    [?]Code Sanitizers???
    [?]Test Frameworks???
    [?]Debugging Strategies???
    -

    7.14 Tooling

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Compiler Toolchains???
    [?]IDEs???
    -

    7.15 Software Design

    - - - - - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [?]Design by Contract???
    -

    8 Detailed Information for Modules and Topics

    -

    8.1 C++ object model: copy semantics

    -

    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

    -

    8.1.1 Overview

    -

    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

    - ---- - - - - - - - - - - - - - - - - - - - - -
    LevelObjectives
    Foundationalunderstanding how and when are copies made
    Mainimplementing user-defined copy operations
    Advancedspecial cases: copy elision
    -

    8.1.2 Motivation

    -

    Why is this important? Why do we want to learn/teach this topic?

    -

    Copy semantics allows the user to define how objects of a class get replicated and interact on a value level.

    -

    8.1.3 Topic introduction

    -

    Very brief introduction to the topic.

    -

    Explains when and how objects are copied.

    -

    8.1.4 Foundational: How and when are copies made

    -

    8.1.4.1 Background/Required Knowledge

    -

    A student is able to: * explain what a C++ type is? [C++ object model: types] * explain what an object is? [C++ object model: objects], [C++ object model: constant objects] * define and understand class invariants?

    -

    It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain special member functions [C++ object model: special member functions]

    -

    8.1.4.2 Student outcomes

    -

    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

    -

    A student should be able to:

    -
      -
    1. explain what copy semantics accomplish
    2. -
    -
      -
    • establishing “equivalent” object state in another object
    • -
    -
      -
    1. explain difference between copying a reference and copying a value*
    2. -
    3. explain where copies are made
    4. -
    -

    * In other languages these differences are sometimes referred to as shallow and deep copy.

    -

    8.1.4.3 Caveats

    -

    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

    -
      -
    • Compiler-provided copy operations may result in ownership problems (e.g., char*). These ownership problems can generally be solved by using types whose copy operations have the appropriate semantics, e.g., std::string instead of char* to hold string values.
    • -
    -

    8.1.4.4 Points to cover

    -

    This section lists important details for each point.

    -
      -
    • Principle of copying -
        -
      • Copying of types, which follow the rule of zero
      • -
      • Copying of types, with user defined copy operations
      • -
      • Copying an object does not change the original
      • -
    • -
    • Practical applications -
        -
      • std::unique_ptr (has no copy)
      • -
      • Strings (copies the value)
      • -
    • -
    -

    8.1.5 Main: Implementing user-defined copy operations

    -

    8.1.5.1 Background/Required Knowledge

    -

    A student is able to: * identify special member functions [C++ object model: special member functions]

    -

    It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain the rule of zero [C++ object model: rule-of-zero] * explain the rule of five [C++ object model: rule-of-five]

    -

    8.1.5.2 Student outcomes

    -

    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

    -

    A student should be able to: * explain when they have to implement the copy operations for their own type * Copy constructor * Copy assignment operator * implement copy operations for their own types * Optional: explain when copying with basic and strong exception guarantees is useful

    -

    8.1.5.3 Caveats

    -

    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

    -
      -
    • Intricacies when implementing copy operations: -
        -
      • Examples of how not to write copy operations (e.g., C++03 std::auto_ptr)
      • -
    • -
    -

    8.1.5.4 Points to cover

    -

    This section lists important details for each point.

    -
      -
    • Copy constructors and copy assignment operators -
        -
      • How compiler generates default copy operations
      • -
      • =default, =delete (No copy)
      • -
      • How-to write your own copy operations
      • -
      • Rule-of-five
      • -
      • Copy assignment operators can be ref-qualified to avoid assigning into temporary objects.
      • -
    • -
    -

    8.1.6 Advanced

    -

    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

    -

    When can copies be elided and when does the standard guarantee copy elision. References: * Abseil tip of the Week #166 * cppreference - Copy elision

    -

    8.2 Functions: user-defined literals

    -

    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

    -

    8.2.1 Overview

    -

    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

    - ---- - - - - - - - - - - - - - - - - - - - - -
    LevelObjectives
    Foundationalusing and understanding UDLs
    Mainimplementing your own UDLs
    AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
    -

    8.2.2 Motivation

    -

    Why is this important? Why do we want to learn/teach this topic?

    -
      -
    • Allows clearer expression of intent in C++.
    • -
    • std::string: "Hello, world!"s
    • -
    • std::chrono: 3h + 10min + 5s
    • -
    -

    8.2.3 Topic introduction

    -

    Very brief introduction to the topic.

    -
      -
    • Explain the existence of user defined literals. Example: 12min + 17s is terse, expressive and type safe.
    • -
    -

    8.2.4 Foundational: Using UDLs

    -

    8.2.4.1 Background/Required Knowledge

    -

    A student: * knows how to form numeric literals, e.g., 1.5f means a float of value 1.5. * is familiar with the major C++ types: * bool (Boolean type) * int (Integer type) * double (Floating-point type) * std::string (Text type) * std::vector (Collection type) * knows that namespaces exist, and namespace std. * knows what using-declarations and using-directives are. [C++ object model: declarations]

    -

    8.2.4.2 Student outcomes

    -

    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

    -

    A student should be able to:

    -
      -
    1. use using namespace std::string_literals[1].
    2. -
    3. recognise UDLs in code that they are reading.
    4. -
    5. figure out which UDL definitions for a used type exist.
    6. -
    7. identify parts of the standard library that make use of UDLs.
    8. -
    9. prevent the dangers of temporaries created with "blah"s as well as with std::string{"blah"}.
    10. -
    11. effectively selects the right set of namespaces in using-directives from the sub-namespaces std::literals.
    12. -
    -

    [1]: explain that it’s okay to use a using-directive to “activate” UDLs.

    -

    8.2.4.3 Caveats

    -

    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

    -
      -
    • A student gets confused by the similarities and differences between built-in suffixes and UDLs and between UDLs from different namespaces.
    • -
    • A student “activates” two suffixes with the same signature from different namespaces.
    • -
    -

    8.2.4.4 Points to cover

    -

    This section lists important details for each point.

    -

    8.2.5 Main: implementing UDLs

    -

    8.2.5.1 Background/Required Knowledge

    -
      -
    • All of the above.
    • -
    -

    8.2.5.2 Student outcomes

    -

    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

    -

    A student should be able to:

    -
      -
    1. write a UDL operator of their own.
    2. -
    3. separate unrelated UDLs into distinct namespaces.
    4. -
    -

    8.2.5.3 Caveats

    -

    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

    -

    No caveats at present. #### Points to cover

    -

    This section lists important details for each point.

    -

    No caveats at present. ### Advanced {#udl-advanced}

    -

    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

    -

    8.3 Functions: default argument

    -

    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

    -

    8.3.1 Overview

    -

    Functions in C++ may be overloaded with different numbers and types of parameters. It may be of value to specify default arguments for some number of parameters, to allow a caller to avoid specifying arguments that rarely change, or to enable expanding the set of parameters while maintaining backward compatibility with existing callers.

    - ---- - - - - - - - - - - - - - - - - - - - - -
    LevelObjective
    FoundationalDefine and use functions with default arguments
    Main
    Advancedrefinement of default arguments through multiple declarations
    -

    8.3.2 Motivation

    -

    Default arguments allow the omission of arguments with obvious or common values. Also may be utilized to extend an existing function signature without forcing changes to existing calling code.

    -

    8.3.3 Topic introduction

    -

    Explain how default arguments work and how to define them.

    -

    8.3.4 Foundational: Using and defining functions with default arguments

    -

    8.3.4.1 Background/Required Knowledge

    -

    A student is able to:

    - -

    8.3.4.2 Student outcomes

    -

    A student should be able to:

    -
      -
    1. Call to a function with a default argument with or without that argument specified
    2. -
    3. Declare a function with a default argument, and omit the default in the definition’s signature
    4. -
    5. Explain when the lifetime of a default argument begins and ends
    6. -
    -

    8.3.4.3 Caveats

    -
      -
    • When no forward-declaration exists, the definition serves as the declaration
    • -
    • When multiple declarations exist, only one may specify the default for any particular parameter, but multiple declarations may specify the defaults for different parameters.
    • -
    • Additional default values may be specified for other parameters in repeat declarations
    • -
    • Calling an overloaded function with fewer arguments may be ambiguous with regard to an overload with default arguments
    • -
    -

    8.3.4.4 Points to cover

    -
      -
    • Default value may only be specified once for each parameter among all declarations
    • -
    • Default values must start from the rightmost parameter and continue leftward without gaps
    • -
    • Considerations of when to use default arguments vs overload set
    • -
    -

    8.3.5 Main: implementing *

    -

    8.3.5.1 Background/required knowledge

    -
      -
    • All of the above.
    • -
    -

    8.3.5.2 Student outcomes

    -

    A student should be able to:

    -

    8.3.5.3 Caveats

    -

    8.3.5.4 Points to cover

    -

    8.3.6 Advanced

    -

    Subsequent redeclarations of the same function may add default argument values, which are then usable by callers. Though a single parameter cannot be given a default argument twice in the same translation unit, it is legal, though ill-advised, to give the same function different default arguments in different translation units.

    -

    8.4 Module name: Requires Expressions

    -

    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

    -

    8.4.1 Overview

    - ---- - - - - - - - - - - - - - - - - - - - - -
    LevelObjectives
    FoundationalDefine and use requires-expressions to check satisfaction of expressions by given parameters
    MainDefine and use requires-expressions to check properties of expressions
    Advanced
    -

    8.4.2 Motivation

    -

    Requires-expressions allow a developer to perform compile-time evaluation on the validity of other expressions. These are fundamental to the ability to write concepts. [Compile-time programming: concepts]

    -

    8.5 Topic introduction

    -

    Requires-expressions are compile-time predicates which evaluate to true when their specified set of expressions are all valid for a given set of inputs.

    -

    8.5.1 Foundational: Writing requires-expressions

    -

    8.5.1.1 Background/Required Knowledge

    -

    A student is able to:

    - -

    It is helpful if:

    -
      -
    • The student is aware that attempting to specialize the template with types or values which do not match otherwise unstated assumptions will cause errors within the template.
    • -
    -

    8.5.1.2 Student outcomes

    -

    A student should be able to:

    -
      -
    1. Write a simple-requirement to assert the validity of an expression
    2. -
    3. Write a type-requirement to check the existence of a type by its identifier
    4. -
    5. Write a compound-requirement to test the resulting type of an expression
    6. -
    7. Write a nested-requirement to test the constexpr value of an operation, as opposed to just the syntactic validity
    8. -
    9. Use a requires-expression within a concept, requires-clause, or if constexpr condition
    10. -
    -

    8.5.1.3 Caveats

    -

    To require that expressions, which evaluate to a boolean value like sizeof(t) == 4, evaluate to true a nested-requirement is needed (e.g., requires sizeof(t) == 4;). Omitting the requires results in a simple-requirement, which is satisfied based purely on syntactic validity, not on the result of the operation.

    -

    8.5.1.4 Points to cover

    -
      -
    • All requires-expression requirements terminate with a semicolon.
    • -
    • simple-requirements are used to check that an expression is well-formed.
    • -
    • nested-requirements are introduced with requires and primarily used to check the result of an expression computable by the compiler, including concepts or other requires-expressions.
    • -
    • type-requirements are introduced with typename and used to verify the existence of a type with a particular identifier.
    • -
    • compound-requirements are enclosed in braces and can be used to check the resulting type of an expression.
    • -
    • Checks are performed by the compiler, not at run time.
    • -
    • If covering usage of requires-expression with requires-clause, [Compile-time programming: requires clause] demonstrate requires requires and show how to ever avoid writing it by using a concept. [Compile-time programming: concepts]
    • -
    -

    8.5.2 Main: Advanced requirements

    -

    8.5.2.1 Background/required knowledge

    -
      -
    • All of the above.
    • -
    • Knowledge of noexcept
    • -
    -

    A student is able to:

    - -

    8.5.2.2 Student outcomes

    -

    A student should be able to:

    -
      -
    1. Write compound-requirements which test the noexceptness of an expression.
    2. -
    3. Use a concept as the target of a compound-requirement.
    4. -
    -

    8.5.2.3 Caveats

    -

    8.5.2.4 Points to cover

    -
      -
    • Compound-requirements allow the optional ability to test whether an expression is marked as noexcept, by using a trailing noexcept keyword.
    • -
    - -
      -
    • If the return-type-requirement of a compound-requirement is a concept, that concept is given the resulting type as the first parameter, followed by the specified parameters in the compound-requirement. { ++x } -> C<int> would substitute C<decltype((++x)), int> and check that concept C is satisfied for those parameters.
    • -
    -

    8.5.3 Advanced

    -

    8.6 Meta-error handling: static_assert

    -

    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

    -

    8.6.1 Overview

    -

    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

    - ---- - - - - - - - - - - - - - - - - - - - - -
    LevelObjectives
    FoundationalCalling static_assert with a constant expression
    MainUsing static_assert to detect contract violations and improve error messages
    Advanced
    -

    8.6.2 Motivation

    -

    Why is this important? Why do we want to learn/teach this topic?

    -

    static_assert allows the developer to enforce that conditions which can be checked during compilation will force build errors when violated. Additionally, they are the best mechanism by which a developer can pass useful information to other developers regarding what violation occurred or what must be done, instead.

    -

    8.6.3 Topic introduction

    -

    Very brief introduction to the topic.

    -

    static_assert is a compile-time evaluated function that asserts the truth of a supplied predicate, issuing an optional user-supplied error message if the predicate is false.

    -

    8.6.4 Foundational: Calling static_assert with a constant expression

    -

    8.6.4.1 Background/Required Knowledge

    -

    A student:

    -
      -
    • Should be able to explain the difference between code evaluated at compile-time and run-time
    • -
    • Should be able to cite some examples of compile-time known information, such as sizeof(T)
    • -
    -

    8.6.4.2 Student outcomes

    -

    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

    -

    A student should be able to:

    -
      -
    1. Assert the expected size of a structure using static_assert
    2. -
    -

    8.6.4.3 Caveats

    -

    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

    -

    8.6.4.4 Points to cover

    -

    This section lists important details for each point.

    -
      -
    • X
    • -
    • In addition to what is wrong, a good error message will inform the user of how to correct it
    • -
    -

    8.6.5 Main: Contracts and static_assert

    -

    8.6.5.1 Background/Required Knowledge

    -
      -
    • All of the above.
    • -
    • General understanding of compile-time requirements
    • -
    -

    8.6.5.2 Student outcomes

    -

    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

    -

    A student should be able to:

    -
      -
    1. Utilize static_assert to verify preconditions of a meta-function
    2. -
    3. Utilize static_assert to verify the results of meta-functions for known values
    4. -
    -

    8.6.5.3 Caveats

    -

    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

    -

    8.6.5.4 Points to cover

    -

    This section lists important details for each point.

    -
      -
    • When writing a meta-function, use static_assert to test the results
    • -
    • Write static_assert calls at the scope of the code they are guarding
    • -
    - -

    8.6.6 Advanced

    -

    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

    -

    9 Examples of Course Curricula

    -

    [NOTE: Anyone have any suggestions of items to add here?] The following are examples of curricula for course on C++: …

    -

    10 License

    -

    [NOTE: This license is copied verbatim from the C++ Core Guidelines.]

    -
    Copyright (c) Standard C++ Foundation and its contributors
    -
    -Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
    -perpetual license to copy, use, modify, and create derivative works from this
    -project for your personal or internal business use only. The above copyright
    -notice and this permission notice shall be included in all copies or
    -substantial portions of the project. This license does not grant permission
    -to use the trade names, trademarks, service marks, or product names of the
    -licensor, except as required for reasonable and customary use in describing
    -the origin of the project.
    -
    -Standard C++ Foundation reserves the right to accept contributions to the
    -project at its discretion.
    -
    -By contributing material to this project, you grant Standard C++ Foundation,
    -and those who receive the material directly or indirectly from Standard C++
    -Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
    -transferrable license to reproduce, prepare derivative works of, publicly
    -display, publicly perform, and distribute your contributed material and such
    -derivative works, and to sublicense any or all of the foregoing rights to third
    -parties for commercial or non-commercial use.  You also grant Standard C++
    -Foundation, and those who receive the material directly or indirectly from
    -Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
    -irrevocable license under your patent claims that directly read on your
    -contributed material to make, have made, use, offer to sell, sell and import
    -or otherwise dispose of the material. You warrant that your material is your
    -original work, or that you have the right to grant the above licenses.
    -
    -THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    -OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
    -PROJECT.
    -
    -If you believe that anything in the project infringes your copyright, please
    -contact us at admin@isocpp.org with your contact information and a detailed
    -description of your intellectual property, including a specific URL where you
    -believe your intellectual property is being infringed.
    -
    -

    11 Contributors

    -
    Christopher Di Bella
    -Florian Sattler
    -Michael Adams
    -rwdougla
    -vulder
    -

    12 How To Contribute

    -

    Before attempting to contribute any content for consideration for inclusion in this document, please read the information below and and the referenced documents as appropriate.

    -

    All contributions to this project must be made in accordance with the license in section License. This teaching-guidelines document only offers guidance on teaching C++ as it is specified in the current version of the C++ standard. So, content should be presented relative to the most-recently ratified version of the standard. A detailed explanation of how to present the material for a topic is given in:

    -
      -
    • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.
    • -
    -

    Any potential contributors should ensure that they read this document. The following document may also be helpful in providing some general background on the modular approach to teaching followed herein:

    - -

    In order to prepare content, it is important to understand what learning outcomes are, and how to prepare good ones. Some information on learning outcomes can be found in the References section. The following document offers a concise introduction to learning outcomes:

    - -

    13 Glossary

    -

    Some possible terms to include in the glossary:

    -
      -
    • learning objective
    • -
    • learning outcome
    • -
    -

    14 References

    -

    14.1 References on Learning Outcomes

    - - -
      -
    • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — Standing Document for SG20: Guidelines for Teaching C++ to Beginners. https://wg21.link/p1389.

    • -
    • Christopher Di Bella. P1725R0 — Modular Topic Design. https://wg21.link/p1725.

    • -
    • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.

    • -
    • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study Group: C++ Education. https://wg21.link/p1231.

    • -
    • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 — Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0.

    • -
    -
    -
    - -
    - - diff --git a/0.0.4/html_split/Advanced.html b/0.0.4/html_split/Advanced.html deleted file mode 100644 index c4d659a..0000000 --- a/0.0.4/html_split/Advanced.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - -Advanced (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    8.1.6 Advanced

    -

    These are important topics that are not expected to be covered but -provide guidance where one can continue to investigate this topic in -more depth. -

    -

    When can copies be elided and when does the standard guarantee copy -elision. References: * Abseil tip of -the Week #166 * -cppreference -- Copy elision -

    - - - - - diff --git a/0.0.4/html_split/Background_002fRequired-Knowledge.html b/0.0.4/html_split/Background_002fRequired-Knowledge.html deleted file mode 100644 index d3ee185..0000000 --- a/0.0.4/html_split/Background_002fRequired-Knowledge.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - -Background/Required Knowledge (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    8.1.4.1 Background/Required Knowledge

    -

    A student is able to: * explain what a C++ type is? -[C++ object model: types] -* explain what an object is? -[C++ object -model: objects], -[C++ object model: -constant objects] * define and understand class invariants? -

    -

    It helps when a student is able to: * use move semantics -[C++ object model: move -semantics] * explain special member functions -[C++ object model: -special member functions] -

    - - - - - diff --git a/0.0.4/html_split/Background_002frequired-knowledge.html b/0.0.4/html_split/Background_002frequired-knowledge.html deleted file mode 100644 index 79fd94d..0000000 --- a/0.0.4/html_split/Background_002frequired-knowledge.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - -Background/required knowledge (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    8.3.5.1 Background/required knowledge

    -
      -
    • All of the above. -
    - - - - - - diff --git a/0.0.4/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html b/0.0.4/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html deleted file mode 100644 index 3e850b1..0000000 --- a/0.0.4/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - -Basics Types Objects Values Expressions Statements and Control-Flow Constructs (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.3 Basics Types, Objects, Values, Expressions, Statements, and

    -

    Control-Flow Constructs -

    - - - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Constant Objects???
    [‘?’]Declarations and Definitions???
    [‘?’]Selection Constructs (e.g., if, ternary)???
    [‘?’]Looping Constructs (e.g., for, while, etc.)???
    - - - - - - diff --git a/0.0.4/html_split/Building.html b/0.0.4/html_split/Building.html deleted file mode 100644 index e628fd0..0000000 --- a/0.0.4/html_split/Building.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - -Building (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.12 Building

    - - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Software Build Tools???
    [‘?’]Strategies for Handling Build Problems???
    - - - - - - diff --git a/0.0.4/html_split/C_002b_002b-object-model-copy-semantics.html b/0.0.4/html_split/C_002b_002b-object-model-copy-semantics.html deleted file mode 100644 index 6d7350c..0000000 --- a/0.0.4/html_split/C_002b_002b-object-model-copy-semantics.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - -C++ object model copy semantics (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    8.1 C++ object model: copy semantics

    -

    Skeleton descriptions are typeset in italic text, so please -don’t remove these descriptions when editing the topic. -

    - - - - - - - - - - - - - - diff --git a/0.0.4/html_split/Caveats.html b/0.0.4/html_split/Caveats.html deleted file mode 100644 index c5303c9..0000000 --- a/0.0.4/html_split/Caveats.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - -Caveats (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    8.1.4.3 Caveats

    -

    This section mentions subtle points to understand, like anything -resulting in implementation-defined, unspecified, or undefined -behavior. -

    -
      -
    • Compiler-provided copy operations may result in ownership problems -(e.g., char*). These ownership problems can generally be solved -by using types whose copy operations have the appropriate semantics, -e.g., std::string instead of char* to hold string values. -
    - - - - - - diff --git a/0.0.4/html_split/Compilation-Model.html b/0.0.4/html_split/Compilation-Model.html deleted file mode 100644 index de11703..0000000 --- a/0.0.4/html_split/Compilation-Model.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - -Compilation Model (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.1 Compilation Model

    - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Translation Units???
    [‘?’]Headers???
    [‘?’]Modules???
    [‘?’]Name Mangling???
    [‘?’]Phases of Translation???
    [‘?’]Separate Compilation???
    [‘?’]Linkage???
    - - - - - - diff --git a/0.0.4/html_split/Compile_002dTime-Computation.html b/0.0.4/html_split/Compile_002dTime-Computation.html deleted file mode 100644 index b9aaa0e..0000000 --- a/0.0.4/html_split/Compile_002dTime-Computation.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - -Compile-Time Computation (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.7 Compile-Time Computation

    - - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Constant Expressions and Constant Evaluation???
    [‘static-assert’]static_assert‘✔️’‘✔️’
    - - - - - - diff --git a/0.0.4/html_split/Context-and-Aim-of-This-Guide.html b/0.0.4/html_split/Context-and-Aim-of-This-Guide.html deleted file mode 100644 index 60efa61..0000000 --- a/0.0.4/html_split/Context-and-Aim-of-This-Guide.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - -Context and Aim of This Guide (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    -Next: , Previous: , Up: Top   [Contents]

    -
    -
    -

    3 Context and Aim of This Guide

    -

    This document is intended to serve as a resource for instructors to -assist in the preparation of courses on C++ in a variety of settings, -including university, college, and industry environments. The main -objectives of this document are as follows: -

    -
      -
    • to provide guidelines for content to be covered by courses of various -difficulty levels on C++ (e.g., topics and learning outcomes) -
    • to note some common misunderstandings and problematic points that may be -encountered when teaching particular topics -
    • to suggest resources useful for teaching C++ -
    • to present examples of curriculum for specific courses -
    - -

    This document does not itself provide a curriculum for a single specific -course, but is rather a set of guidelines that can be used to prepare -curricula for a wide variety of courses that differ in focus and level -of sophistication. (This said, however, some links to other documents -with examples of curricula for specific courses may be included herein.) -This document only intends to target the teaching of the most recently -ratified version of the C++ standard. (This said, however, since older -versions of this document are also available, these older versions may -be of some use to those who need guidance in older versions of the -standard, at least versions that do not predate C++20.) -

    - - - - - diff --git a/0.0.4/html_split/Contributing-to-This-Document.html b/0.0.4/html_split/Contributing-to-This-Document.html deleted file mode 100644 index eac6c28..0000000 --- a/0.0.4/html_split/Contributing-to-This-Document.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - -Contributing to This Document (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    5 Contributing to This Document

    -

    Contributions to this document are welcome. If you would like to help -with this project as a contributor, please read the section -‘How to Contribute’. -

    - - - - - diff --git a/0.0.4/html_split/Contributors.html b/0.0.4/html_split/Contributors.html deleted file mode 100644 index 8adb4b1..0000000 --- a/0.0.4/html_split/Contributors.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - -Contributors (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    -Next: , Previous: , Up: Top   [Contents]

    -
    -
    -

    11 Contributors

    - -
    Christopher Di Bella
    -Florian Sattler
    -Michael Adams
    -rwdougla
    -vulder
    -
    - - - - - diff --git a/0.0.4/html_split/Detailed-Information-for-Modules-and-Topics.html b/0.0.4/html_split/Detailed-Information-for-Modules-and-Topics.html deleted file mode 100644 index c8c9fcd..0000000 --- a/0.0.4/html_split/Detailed-Information-for-Modules-and-Topics.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -Detailed Information for Modules and Topics (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    8 Detailed Information for Modules and Topics

    - - - - - - - - - - - - - - - diff --git a/0.0.4/html_split/Disclaimer.html b/0.0.4/html_split/Disclaimer.html deleted file mode 100644 index a911983..0000000 --- a/0.0.4/html_split/Disclaimer.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - -Disclaimer (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    2 Disclaimer

    -

    This document is intended as a proof of concept to solicit feedback from -others. This document is incomplete. This document likely has at least a -few errors. -

    - - - - - diff --git a/0.0.4/html_split/Error-Handling.html b/0.0.4/html_split/Error-Handling.html deleted file mode 100644 index 1f8d3e0..0000000 --- a/0.0.4/html_split/Error-Handling.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - -Error Handling (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.9 Error Handling

    - - - - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Classes of Errors???
    [‘?’]errno???
    [‘?’]Error Codes???
    [‘?’]Exception Handling???
    - - - - - - diff --git a/0.0.4/html_split/Examples-of-Course-Curricula.html b/0.0.4/html_split/Examples-of-Course-Curricula.html deleted file mode 100644 index 64eb64b..0000000 --- a/0.0.4/html_split/Examples-of-Course-Curricula.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - -Examples of Course Curricula (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    9 Examples of Course Curricula

    -

    [NOTE: Anyone have any suggestions of items to add here?] The -following are examples of curricula for course on C++: … -

    - - - - - diff --git a/0.0.4/html_split/External-ie-Non-Standard-Libraries.html b/0.0.4/html_split/External-ie-Non-Standard-Libraries.html deleted file mode 100644 index 2bf081e..0000000 --- a/0.0.4/html_split/External-ie-Non-Standard-Libraries.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - -External ie Non Standard Libraries (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.11 External (i.e., Non Standard) Libraries

    - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Graphical User Interfaces???
    - - - - - - diff --git a/0.0.4/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html b/0.0.4/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html deleted file mode 100644 index ce2c1b0..0000000 --- a/0.0.4/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - -Foundational Calling static_assert with a constant expression (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - -
    -

    8.6.4 Foundational: Calling static_assert with a constant

    -

    expression -

    - - - - - - - - - - - - diff --git a/0.0.4/html_split/Foundational-How-and-when-are-copies-made.html b/0.0.4/html_split/Foundational-How-and-when-are-copies-made.html deleted file mode 100644 index 4cec33b..0000000 --- a/0.0.4/html_split/Foundational-How-and-when-are-copies-made.html +++ /dev/null @@ -1,63 +0,0 @@ - - - - - -Foundational How and when are copies made (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    8.1.4 Foundational: How and when are copies made

    - - - - - - - - - - - - - diff --git a/0.0.4/html_split/Foundational-Using-UDLs.html b/0.0.4/html_split/Foundational-Using-UDLs.html deleted file mode 100644 index adb461e..0000000 --- a/0.0.4/html_split/Foundational-Using-UDLs.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - -Foundational Using UDLs (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - -
    -

    8.2.4 Foundational: Using UDLs

    - - - - - - - - - - - - - diff --git a/0.0.4/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html b/0.0.4/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html deleted file mode 100644 index e37a992..0000000 --- a/0.0.4/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - -Foundational Using and defining functions with default arguments (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - -
    -

    8.3.4 Foundational: Using and defining functions with default

    -

    arguments -

    - - - - - - - - - - - - diff --git a/0.0.4/html_split/Foundational-Writing-requires_002dexpressions.html b/0.0.4/html_split/Foundational-Writing-requires_002dexpressions.html deleted file mode 100644 index 6846c6e..0000000 --- a/0.0.4/html_split/Foundational-Writing-requires_002dexpressions.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - -Foundational Writing requires-expressions (Guidelines for Teaching C++) - - - - - - - - - - - - - - - -
    -

    8.5.1 Foundational: Writing requires-expressions

    - - - - - - - - - - - - - diff --git a/0.0.4/html_split/Functions-default-argument.html b/0.0.4/html_split/Functions-default-argument.html deleted file mode 100644 index 2571ca9..0000000 --- a/0.0.4/html_split/Functions-default-argument.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -Functions default argument (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - -
    -

    8.3 Functions: default argument

    -

    Skeleton descriptions are typeset in italic text, so please -don’t remove these descriptions when editing the topic. -

    - - - - - - - - - - - - - - diff --git a/0.0.4/html_split/Functions-user_002ddefined-literals.html b/0.0.4/html_split/Functions-user_002ddefined-literals.html deleted file mode 100644 index 7e41de9..0000000 --- a/0.0.4/html_split/Functions-user_002ddefined-literals.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - - -Functions user-defined literals (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    8.2 Functions: user-defined literals

    -

    Skeleton descriptions are typeset in italic text, so please -don’t remove these descriptions when editing the topic. -

    - - - - - - - - - - - - - diff --git a/0.0.4/html_split/Functions.html b/0.0.4/html_split/Functions.html deleted file mode 100644 index 82175a5..0000000 --- a/0.0.4/html_split/Functions.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - -Functions (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.4 Functions

    - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Calling Functions???
    [‘?’]Parameter Passing (e.g., Passing By Value and Reference)???
    [‘func-args’]Default Arguments‘✔️’
    [‘?’]Returning Multiple Values???
    [‘?’]Overloading???
    [‘udl’]User-Defined Literals‘✔️’‘✔️’
    - - - - - - diff --git a/0.0.4/html_split/Generic-Programming-Templates.html b/0.0.4/html_split/Generic-Programming-Templates.html deleted file mode 100644 index 1a22cd7..0000000 --- a/0.0.4/html_split/Generic-Programming-Templates.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - -Generic Programming Templates (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.8 Generic Programming (Templates)

    - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Concepts???
    [‘?’]SFINAE???
    [‘?’]Template Metaprogramming???
    [‘?’]Function Templates???
    [‘?’]Requires Clauses???
    [‘req-expr’]Requires Expressions‘✔️’‘✔️’
    - - - - - - diff --git a/0.0.4/html_split/Glossary.html b/0.0.4/html_split/Glossary.html deleted file mode 100644 index 2bf24f2..0000000 --- a/0.0.4/html_split/Glossary.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - -Glossary (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    -Next: , Previous: , Up: Top   [Contents]

    -
    -
    -

    13 Glossary

    -

    Some possible terms to include in the glossary: -

    -
      -
    • learning objective -
    • learning outcome -
    - - - - - - diff --git a/0.0.4/html_split/How-To-Contribute.html b/0.0.4/html_split/How-To-Contribute.html deleted file mode 100644 index f1963d5..0000000 --- a/0.0.4/html_split/How-To-Contribute.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - -How To Contribute (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    -Next: , Previous: , Up: Top   [Contents]

    -
    -
    -

    12 How To Contribute

    -

    Before attempting to contribute any content for consideration for -inclusion in this document, please read the information below and and -the referenced documents as appropriate. -

    -

    All contributions to this project must be made in accordance with the -license in section License. This teaching-guidelines -document only offers guidance on teaching C++ as it is specified in the -current version of the C++ standard. So, content should be presented -relative to the most-recently ratified version of the standard. A -detailed explanation of how to present the material for a topic is given -in: -

    -
      -
    • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to -structure a teaching topic. https://wg21.link/p2193. -
    - -

    Any potential contributors should ensure that they read this document. -The following document may also be helpful in providing some general -background on the modular approach to teaching followed herein: -

    - - -

    In order to prepare content, it is important to understand what learning -outcomes are, and how to prepare good ones. Some information on learning -outcomes can be found in the References section. The -following document offers a concise introduction to learning outcomes: -

    - - - - - - - diff --git a/0.0.4/html_split/Inheritance-and-Class-Hierarchies.html b/0.0.4/html_split/Inheritance-and-Class-Hierarchies.html deleted file mode 100644 index 1a394b0..0000000 --- a/0.0.4/html_split/Inheritance-and-Class-Hierarchies.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - -Inheritance and Class Hierarchies (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.6 Inheritance and Class Hierarchies

    - - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Virtual Functions???
    [‘?’]Run-Time Type Information???
    - - - - - - diff --git a/0.0.4/html_split/License.html b/0.0.4/html_split/License.html deleted file mode 100644 index 38d2d8d..0000000 --- a/0.0.4/html_split/License.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - -License (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    -Next: , Previous: , Up: Top   [Contents]

    -
    -
    -

    10 License

    -

    [NOTE: This license is copied verbatim from the C++ Core -Guidelines.] -

    -
    Copyright (c) Standard C++ Foundation and its contributors
    -
    -Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
    -perpetual license to copy, use, modify, and create derivative works from this
    -project for your personal or internal business use only. The above copyright
    -notice and this permission notice shall be included in all copies or
    -substantial portions of the project. This license does not grant permission
    -to use the trade names, trademarks, service marks, or product names of the
    -licensor, except as required for reasonable and customary use in describing
    -the origin of the project.
    -
    -Standard C++ Foundation reserves the right to accept contributions to the
    -project at its discretion.
    -
    -By contributing material to this project, you grant Standard C++ Foundation,
    -and those who receive the material directly or indirectly from Standard C++
    -Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
    -transferrable license to reproduce, prepare derivative works of, publicly
    -display, publicly perform, and distribute your contributed material and such
    -derivative works, and to sublicense any or all of the foregoing rights to third
    -parties for commercial or non-commercial use.  You also grant Standard C++
    -Foundation, and those who receive the material directly or indirectly from
    -Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
    -irrevocable license under your patent claims that directly read on your
    -contributed material to make, have made, use, offer to sell, sell and import
    -or otherwise dispose of the material. You warrant that your material is your
    -original work, or that you have the right to grant the above licenses.
    -
    -THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    -OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
    -PROJECT.
    -
    -If you believe that anything in the project infringes your copyright, please
    -contact us at admin@isocpp.org with your contact information and a detailed
    -description of your intellectual property, including a specific URL where you
    -believe your intellectual property is being infringed.
    -
    -
    -
    -

    -Next: , Previous: , Up: Top   [Contents]

    -
    - - - - - diff --git a/0.0.4/html_split/Main-Advanced-requirements.html b/0.0.4/html_split/Main-Advanced-requirements.html deleted file mode 100644 index 6c4ac0e..0000000 --- a/0.0.4/html_split/Main-Advanced-requirements.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - -Main Advanced requirements (Guidelines for Teaching C++) - - - - - - - - - - - - - - - -
    -

    8.5.2 Main: Advanced requirements

    - - - - - - - - - - - - - diff --git a/0.0.4/html_split/Main-Contracts-and-static_005fassert.html b/0.0.4/html_split/Main-Contracts-and-static_005fassert.html deleted file mode 100644 index 6c0ba46..0000000 --- a/0.0.4/html_split/Main-Contracts-and-static_005fassert.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - -Main Contracts and static_assert (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - -
    -

    8.6.5 Main: Contracts and static_assert

    - - - - - - - - - - - - - diff --git a/0.0.4/html_split/Main-Implementing-user_002ddefined-copy-operations.html b/0.0.4/html_split/Main-Implementing-user_002ddefined-copy-operations.html deleted file mode 100644 index e38dfd6..0000000 --- a/0.0.4/html_split/Main-Implementing-user_002ddefined-copy-operations.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - -Main Implementing user-defined copy operations (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    8.1.5 Main: Implementing user-defined copy operations

    - - - - - - - - - - - - - diff --git a/0.0.4/html_split/Main-implementing-UDLs.html b/0.0.4/html_split/Main-implementing-UDLs.html deleted file mode 100644 index 1f6f381..0000000 --- a/0.0.4/html_split/Main-implementing-UDLs.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - -Main implementing UDLs (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - -
    -

    8.2.5 Main: implementing UDLs

    - - - - - - - - - - - - diff --git a/0.0.4/html_split/Main-implementing-_002a.html b/0.0.4/html_split/Main-implementing-_002a.html deleted file mode 100644 index b661f2d..0000000 --- a/0.0.4/html_split/Main-implementing-_002a.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - -Main implementing * (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    8.3.5 Main: implementing *

    - - - - - - - - - - - - - diff --git a/0.0.4/html_split/Meta_002derror-handling-static_005fassert.html b/0.0.4/html_split/Meta_002derror-handling-static_005fassert.html deleted file mode 100644 index f81a34e..0000000 --- a/0.0.4/html_split/Meta_002derror-handling-static_005fassert.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -Meta-error handling static_assert (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - -
    -

    8.6 Meta-error handling: static_assert

    -

    Skeleton descriptions are typeset in italic text, so please -don’t remove these descriptions when editing the topic. -

    - - - - - - - - - - - - - - diff --git a/0.0.4/html_split/Module-name-Requires-Expressions.html b/0.0.4/html_split/Module-name-Requires-Expressions.html deleted file mode 100644 index 8bab76c..0000000 --- a/0.0.4/html_split/Module-name-Requires-Expressions.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - -Module name Requires Expressions (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - -
    -

    8.4 Module name: Requires Expressions

    -

    Skeleton descriptions are typeset in italic text, so please -don’t remove these descriptions when editing the topic. -

    - - - - - - - - - - diff --git a/0.0.4/html_split/Motivation.html b/0.0.4/html_split/Motivation.html deleted file mode 100644 index 40b0ec9..0000000 --- a/0.0.4/html_split/Motivation.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - -Motivation (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    8.1.2 Motivation

    -

    Why is this important? Why do we want to learn/teach this -topic? -

    -

    Copy semantics allows the user to define how objects of a class get -replicated and interact on a value level. -

    - - - - - diff --git a/0.0.4/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html b/0.0.4/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html deleted file mode 100644 index 2425525..0000000 --- a/0.0.4/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - -Obtaining This Document The Most Recent Version and Alternate Formats (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    -Next: , Previous: , Up: Top   [Contents]

    -
    -
    -

    1 Obtaining This Document: The Most Recent Version and Alternate

    -

    Formats -The most recent version of this document is available as an online HTML -document at: -https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/latest/. -

    -

    The version of the document that you are currently reading is available -in the following formats: -

    -
      -
    1. online (HTML) format as a single large HTML document: -https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.4/html -[later to be https://cplusplus.github.io/SG20/0.0.4/html?] - -
    2. EPUB format: -https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.4/guidelines.epub -[later to be -https:/cplusplus.github.io/SG20/0.0.4/guidelines.epub?] - -
    3. online (HTML) format, split across multiple HTML documents: -https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.4/html_split/ -[later to be https://cplusplus.github.io/SG20/0.0.4/html_split/?] -[Note: The support for this format needs more work (in order to -beautify and fix linking issues).] - -
    - -

    Older versions of this document are also available. In general version -ver is available at -https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/ver. -For example, version v0.1.0 (assuming that this version exists) would be -available at [later to be -https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/v0.1.0?]. -

    - - - - - diff --git a/0.0.4/html_split/Organization-of-This-Document.html b/0.0.4/html_split/Organization-of-This-Document.html deleted file mode 100644 index 3e48985..0000000 --- a/0.0.4/html_split/Organization-of-This-Document.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - -Organization of This Document (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    6 Organization of This Document

    -

    The various concepts (i.e., ideas) to potentially be covered are -partitioned into modules. A module is very broad in scope and consists -of numerous topics. [Note: Can I suggest that we use the term -“area” or “unit” instead of “module”? I think that these other -choices are better and also avoid any potential confusion over what is -meant by “module” (i.e., C++ term versus plain English term).] -

    -

    For each module, topics related to the module are identified. Then, for -each topic, learning outcomes are specified. In order to address a wide -variety of courses on C++, each topic is addressed at three proficiency -levels. These proficiency levels allow each topic to be covered at more -than one level of detail. This allows target audiences with different -background and learning objectives to be accommodated. The three -proficiency levels are as follows: -

    -
      -
    • foundational. This level gives the learner the idea that a facility -exists, what benefits it offers, and the basic ways of using it. -[Note: Isn’t this just “novice”/“beginner”?] - -
    • main. This level shows mainstream uses and techniques. For abstraction -and organizational mechanisms it also demonstrates how to build them. -This level should also give the learner a basic (but not detailed) -understanding of how a facility might be implemented so that the learner -can have a first-order understanding of any costs involved. -[Note: The term “main” is not very descriptive/helpful. Could -I suggest using “intermediate”?] - -
    • advanced. This level gives information suitable for an expert. For most -topics there is an expert level of knowledge that most programmers -rarely need and techniques that require detailed understanding of -language rules or library implementation. - -
    - -

    The remainder of this document is organized as follows. The various -topics are listed grouped by module. In cases where a topic might be -classified into more than one module, the topic is listed under the -module of most direct relevance. This is done in order to avoid -duplication of content. (In the case that a topic is equally relevant to -multiple modules, the decision of which to select is made by a -proverbial coin toss.) The order in which modules and topics are -presented is not meant to imply any order of coverage in a course. The -order in which items are listed is essentially arbitrary. -

    -
    - - - - - - diff --git a/0.0.4/html_split/Overview.html b/0.0.4/html_split/Overview.html deleted file mode 100644 index be44bfa..0000000 --- a/0.0.4/html_split/Overview.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - -Overview (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    8.1.1 Overview

    -

    Provides a short natural language abstract of the module’s -contents. Specifies the different levels of teaching. -

    - - - - - -
    LevelObjectives
    Foundationalunderstanding how and when are copies made
    Mainimplementing user-defined copy operations
    Advancedspecial cases: copy elision
    - - - - - - diff --git a/0.0.4/html_split/Points-to-cover.html b/0.0.4/html_split/Points-to-cover.html deleted file mode 100644 index ba4b5cc..0000000 --- a/0.0.4/html_split/Points-to-cover.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - -Points to cover (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    8.1.4.4 Points to cover

    -

    This section lists important details for each point. -

    -
      -
    • Principle of copying -
        -
      • Copying of types, which follow the rule of zero -
      • Copying of types, with user defined copy operations -
      • Copying an object does not change the original -
      - -
    • Practical applications -
        -
      • std::unique_ptr (has no copy) -
      • Strings (copies the value) -
      - -
    - - - - - - diff --git a/0.0.4/html_split/Preprocessor.html b/0.0.4/html_split/Preprocessor.html deleted file mode 100644 index 345e396..0000000 --- a/0.0.4/html_split/Preprocessor.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - -Preprocessor (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.2 Preprocessor

    - - - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Preprocessor Metaprogramming???
    [‘?’]Inclusion???
    [‘?’]Macros???
    - - - - - - diff --git a/0.0.4/html_split/References-on-Learning-Outcomes.html b/0.0.4/html_split/References-on-Learning-Outcomes.html deleted file mode 100644 index 7b74cad..0000000 --- a/0.0.4/html_split/References-on-Learning-Outcomes.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - - -References on Learning Outcomes (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    14.1 References on Learning Outcomes

    - - - - - - - diff --git a/0.0.4/html_split/References.html b/0.0.4/html_split/References.html deleted file mode 100644 index f595be2..0000000 --- a/0.0.4/html_split/References.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - -References (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    -Previous: , Up: Top   [Contents]

    -
    -
    -

    14 References

    - - - - - - - - - - - diff --git a/0.0.4/html_split/Software-Design.html b/0.0.4/html_split/Software-Design.html deleted file mode 100644 index 6b4f6c8..0000000 --- a/0.0.4/html_split/Software-Design.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - -Software Design (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.15 Software Design

    - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Design by Contract???
    - - - - - - diff --git a/0.0.4/html_split/Standard-Library.html b/0.0.4/html_split/Standard-Library.html deleted file mode 100644 index c80c7fc..0000000 --- a/0.0.4/html_split/Standard-Library.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - -Standard Library (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.10 Standard Library

    - - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Input/Output (I/O)???
    [‘?’]Containers, Iterators, and Algorithms???
    - - - - - - diff --git a/0.0.4/html_split/Student-outcomes.html b/0.0.4/html_split/Student-outcomes.html deleted file mode 100644 index c604549..0000000 --- a/0.0.4/html_split/Student-outcomes.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - - -Student outcomes (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    8.1.4.2 Student outcomes

    -

    A list of things “a student should be able to” after the -curriculum. The next word should be an action word and testable -in an exam. Max 5 items. -

    -

    A student should be able to: -

    -
      -
    1. explain what copy semantics accomplish -
    - -
      -
    • establishing “equivalent” object state in another object -
    - -
      -
    1. explain difference between copying a reference and copying a value* -
    2. explain where copies are made -
    - -

    * In other languages these differences are sometimes referred to as -shallow and deep copy. -

    - - - - - diff --git a/0.0.4/html_split/Summary-of-Modules-and-Topics.html b/0.0.4/html_split/Summary-of-Modules-and-Topics.html deleted file mode 100644 index 26b69be..0000000 --- a/0.0.4/html_split/Summary-of-Modules-and-Topics.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - -Summary of Modules and Topics (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7 Summary of Modules and Topics

    -

    In the sections that follow, the various modules and topics are -presented. There is one section per module. For each module, a table -listing the various topics in that module is provided. The ID for a -topic is linked to the detailed coverage of that topic that comes later -in the document. If a topic has any learning outcomes at a given -proficiency level, this is indicated by a checkmark (“✔️”). If a topic -has no learning outcomes (simply because there are not any, not because -the information is missing), this is indicated by an em dash (“—”). -In the case that the information for a topic is completely missing, a -question mark (“?”) symbol is used. -

    -

    [NOTE: These topics are taken mostly from the SG20 GitHub -repository. They are not intended to be complete in any sense. In fact, -by gathering together all topics in one place where they are easily -viewed, it is hoped that missing and unbalanced items will be more -obvious.] -

    - - - - - - - - - - - - - - - - - - -
    - - - - - - diff --git a/0.0.4/html_split/Testing-and-Debugging.html b/0.0.4/html_split/Testing-and-Debugging.html deleted file mode 100644 index da60211..0000000 --- a/0.0.4/html_split/Testing-and-Debugging.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - -Testing and Debugging (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    -Next: , Previous: , Up: Summary of Modules and Topics   [Contents]

    -
    -
    -

    7.13 Testing and Debugging

    - - - - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Source-Level Debuggers???
    [‘?’]Code Sanitizers???
    [‘?’]Test Frameworks???
    [‘?’]Debugging Strategies???
    - - - - - - diff --git a/0.0.4/html_split/Tooling.html b/0.0.4/html_split/Tooling.html deleted file mode 100644 index 43c3b2f..0000000 --- a/0.0.4/html_split/Tooling.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - -Tooling (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.14 Tooling

    - - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Compiler Toolchains???
    [‘?’]IDEs???
    - - - - - - diff --git a/0.0.4/html_split/Topic-introduction.html b/0.0.4/html_split/Topic-introduction.html deleted file mode 100644 index fff97f2..0000000 --- a/0.0.4/html_split/Topic-introduction.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - -Topic introduction (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    8.1.3 Topic introduction

    -

    Very brief introduction to the topic. -

    -

    Explains when and how objects are copied. -

    - - - - - diff --git a/0.0.4/html_split/Use-of-This-Document.html b/0.0.4/html_split/Use-of-This-Document.html deleted file mode 100644 index 4c820d5..0000000 --- a/0.0.4/html_split/Use-of-This-Document.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - -Use of This Document (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    4 Use of This Document

    -

    [NOTE: This document follows the same license model as the C++ -Core Guidelines. The LICENSE document is taken verbatim from the C++ -Core Guidelines.] This document is made available under a MIT-style -license. In simple terms, this license permits copying, use, -modification, and creation of derivative works. A copy of the license is -included in the section LICENSE. -

    - - - - - diff --git a/0.0.4/html_split/User_002dDefined-Types-Classes.html b/0.0.4/html_split/User_002dDefined-Types-Classes.html deleted file mode 100644 index 808279a..0000000 --- a/0.0.4/html_split/User_002dDefined-Types-Classes.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - -User-Defined Types Classes (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
    -

    7.5 User-Defined Types (Classes)

    - - - - - - - - - - - - - - - -
    IDUnitFoundationalMainAdvanced
    [‘?’]Special Member Functions???
    [‘?’]Types???
    [‘?’]Conversions???
    [‘?’]Constructors and Destructors???
    [‘?’]Move/Copy Constructors and Assignment Operators???
    [‘?’]Member Functions???
    [‘?’]Sum Types???
    [‘?’]User-Defined Literals???
    [‘?’]Special Member Functions???
    [‘?’]Guidelines for Special Member Functions (e.g., Rule of Five, Rule -of Zero)???
    [‘copy’]Copy Semantics‘✔️’‘✔️’
    [‘?’]Moving and Copying???
    [‘?’]Lambdas???
    - - - - - - diff --git a/0.0.4/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html b/0.0.4/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html deleted file mode 100644 index 3f9bf2c..0000000 --- a/0.0.4/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - -Working Group Documents Related to C++ Teaching Guidelines (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
    -

    14.2 Working Group Documents Related to C++ Teaching Guidelines

    -
      -
    • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — -Standing Document for SG20: Guidelines for Teaching C++ to Beginners. -https://wg21.link/p1389. - -
    • Christopher Di Bella. P1725R0 — Modular Topic Design. -https://wg21.link/p1725. - -
    • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to -structure a teaching topic. https://wg21.link/p2193. - -
    • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study -Group: C++ Education. https://wg21.link/p1231. - -
    • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 -— Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0. - -
    - - - - - - diff --git a/0.0.4/html_split/_0023advanced.html b/0.0.4/html_split/_0023advanced.html deleted file mode 100644 index d503bfc..0000000 --- a/0.0.4/html_split/_0023advanced.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#advanced (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #advanced.

    - diff --git a/0.0.4/html_split/_0023advanced_002d1.html b/0.0.4/html_split/_0023advanced_002d1.html deleted file mode 100644 index 282a7b8..0000000 --- a/0.0.4/html_split/_0023advanced_002d1.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#advanced-1 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #advanced-1.

    - diff --git a/0.0.4/html_split/_0023advanced_002d2.html b/0.0.4/html_split/_0023advanced_002d2.html deleted file mode 100644 index 039b3ff..0000000 --- a/0.0.4/html_split/_0023advanced_002d2.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#advanced-2 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #advanced-2.

    - diff --git a/0.0.4/html_split/_0023advanced_002d3.html b/0.0.4/html_split/_0023advanced_002d3.html deleted file mode 100644 index ebf5529..0000000 --- a/0.0.4/html_split/_0023advanced_002d3.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#advanced-3 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #advanced-3.

    - diff --git a/0.0.4/html_split/_0023backgroundrequired_002dknowledge.html b/0.0.4/html_split/_0023backgroundrequired_002dknowledge.html deleted file mode 100644 index 9959745..0000000 --- a/0.0.4/html_split/_0023backgroundrequired_002dknowledge.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#backgroundrequired-knowledge (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #backgroundrequired-knowledge.

    - diff --git a/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d1.html b/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d1.html deleted file mode 100644 index f6f6bd0..0000000 --- a/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d1.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#backgroundrequired-knowledge-1 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #backgroundrequired-knowledge-1.

    - diff --git a/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d2.html b/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d2.html deleted file mode 100644 index b0b297d..0000000 --- a/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d2.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#backgroundrequired-knowledge-2 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #backgroundrequired-knowledge-2.

    - diff --git a/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d3.html b/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d3.html deleted file mode 100644 index ae34d91..0000000 --- a/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d3.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#backgroundrequired-knowledge-3 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #backgroundrequired-knowledge-3.

    - diff --git a/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d4.html b/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d4.html deleted file mode 100644 index 7417f62..0000000 --- a/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d4.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#backgroundrequired-knowledge-4 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #backgroundrequired-knowledge-4.

    - diff --git a/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d5.html b/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d5.html deleted file mode 100644 index 8f0570c..0000000 --- a/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d5.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#backgroundrequired-knowledge-5 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #backgroundrequired-knowledge-5.

    - diff --git a/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d6.html b/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d6.html deleted file mode 100644 index a1cdee1..0000000 --- a/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d6.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#backgroundrequired-knowledge-6 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #backgroundrequired-knowledge-6.

    - diff --git a/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d7.html b/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d7.html deleted file mode 100644 index 893a0ba..0000000 --- a/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d7.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#backgroundrequired-knowledge-7 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #backgroundrequired-knowledge-7.

    - diff --git a/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d8.html b/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d8.html deleted file mode 100644 index 6080498..0000000 --- a/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d8.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#backgroundrequired-knowledge-8 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #backgroundrequired-knowledge-8.

    - diff --git a/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d9.html b/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d9.html deleted file mode 100644 index 3ea462d..0000000 --- a/0.0.4/html_split/_0023backgroundrequired_002dknowledge_002d9.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#backgroundrequired-knowledge-9 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #backgroundrequired-knowledge-9.

    - diff --git a/0.0.4/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html b/0.0.4/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html deleted file mode 100644 index 925c568..0000000 --- a/0.0.4/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#basics-types-objects-values-expressions-statements-and-control-flow-constructs (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #basics-types-objects-values-expressions-statements-and-control-flow-constructs.

    - diff --git a/0.0.4/html_split/_0023building.html b/0.0.4/html_split/_0023building.html deleted file mode 100644 index 8ffc9df..0000000 --- a/0.0.4/html_split/_0023building.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#building (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #building.

    - diff --git a/0.0.4/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html b/0.0.4/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html deleted file mode 100644 index a7e6bad..0000000 --- a/0.0.4/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#c-object-model-copy-semantics (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #c-object-model-copy-semantics.

    - diff --git a/0.0.4/html_split/_0023caveats.html b/0.0.4/html_split/_0023caveats.html deleted file mode 100644 index d4bac8b..0000000 --- a/0.0.4/html_split/_0023caveats.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#caveats (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #caveats.

    - diff --git a/0.0.4/html_split/_0023caveats_002d1.html b/0.0.4/html_split/_0023caveats_002d1.html deleted file mode 100644 index 64faefd..0000000 --- a/0.0.4/html_split/_0023caveats_002d1.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#caveats-1 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #caveats-1.

    - diff --git a/0.0.4/html_split/_0023caveats_002d2.html b/0.0.4/html_split/_0023caveats_002d2.html deleted file mode 100644 index 6c66559..0000000 --- a/0.0.4/html_split/_0023caveats_002d2.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#caveats-2 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #caveats-2.

    - diff --git a/0.0.4/html_split/_0023caveats_002d3.html b/0.0.4/html_split/_0023caveats_002d3.html deleted file mode 100644 index 479063f..0000000 --- a/0.0.4/html_split/_0023caveats_002d3.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#caveats-3 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #caveats-3.

    - diff --git a/0.0.4/html_split/_0023caveats_002d4.html b/0.0.4/html_split/_0023caveats_002d4.html deleted file mode 100644 index 9588a55..0000000 --- a/0.0.4/html_split/_0023caveats_002d4.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#caveats-4 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #caveats-4.

    - diff --git a/0.0.4/html_split/_0023caveats_002d5.html b/0.0.4/html_split/_0023caveats_002d5.html deleted file mode 100644 index 11edee5..0000000 --- a/0.0.4/html_split/_0023caveats_002d5.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#caveats-5 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #caveats-5.

    - diff --git a/0.0.4/html_split/_0023caveats_002d6.html b/0.0.4/html_split/_0023caveats_002d6.html deleted file mode 100644 index 6cea721..0000000 --- a/0.0.4/html_split/_0023caveats_002d6.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#caveats-6 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #caveats-6.

    - diff --git a/0.0.4/html_split/_0023caveats_002d7.html b/0.0.4/html_split/_0023caveats_002d7.html deleted file mode 100644 index 2a8f1cd..0000000 --- a/0.0.4/html_split/_0023caveats_002d7.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#caveats-7 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #caveats-7.

    - diff --git a/0.0.4/html_split/_0023caveats_002d8.html b/0.0.4/html_split/_0023caveats_002d8.html deleted file mode 100644 index e330642..0000000 --- a/0.0.4/html_split/_0023caveats_002d8.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#caveats-8 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #caveats-8.

    - diff --git a/0.0.4/html_split/_0023caveats_002d9.html b/0.0.4/html_split/_0023caveats_002d9.html deleted file mode 100644 index 004e434..0000000 --- a/0.0.4/html_split/_0023caveats_002d9.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#caveats-9 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #caveats-9.

    - diff --git a/0.0.4/html_split/_0023compilation_002dmodel.html b/0.0.4/html_split/_0023compilation_002dmodel.html deleted file mode 100644 index 1017867..0000000 --- a/0.0.4/html_split/_0023compilation_002dmodel.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#compilation-model (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #compilation-model.

    - diff --git a/0.0.4/html_split/_0023compile_002dtime_002dcomputation.html b/0.0.4/html_split/_0023compile_002dtime_002dcomputation.html deleted file mode 100644 index 59b0c57..0000000 --- a/0.0.4/html_split/_0023compile_002dtime_002dcomputation.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#compile-time-computation (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #compile-time-computation.

    - diff --git a/0.0.4/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html b/0.0.4/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html deleted file mode 100644 index 9294adf..0000000 --- a/0.0.4/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#context-and-aim-of-this-guide (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #context-and-aim-of-this-guide.

    - diff --git a/0.0.4/html_split/_0023contributing_002dto_002dthis_002ddocument.html b/0.0.4/html_split/_0023contributing_002dto_002dthis_002ddocument.html deleted file mode 100644 index 272d848..0000000 --- a/0.0.4/html_split/_0023contributing_002dto_002dthis_002ddocument.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#contributing-to-this-document (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #contributing-to-this-document.

    - diff --git a/0.0.4/html_split/_0023contributors.html b/0.0.4/html_split/_0023contributors.html deleted file mode 100644 index a391f9d..0000000 --- a/0.0.4/html_split/_0023contributors.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#contributors (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #contributors.

    - diff --git a/0.0.4/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html b/0.0.4/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html deleted file mode 100644 index d32c27e..0000000 --- a/0.0.4/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#detailed-information-for-modules-and-topics (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #detailed-information-for-modules-and-topics.

    - diff --git a/0.0.4/html_split/_0023disclaimer.html b/0.0.4/html_split/_0023disclaimer.html deleted file mode 100644 index e9658d6..0000000 --- a/0.0.4/html_split/_0023disclaimer.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#disclaimer (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #disclaimer.

    - diff --git a/0.0.4/html_split/_0023error_002dhandling.html b/0.0.4/html_split/_0023error_002dhandling.html deleted file mode 100644 index 80cfb94..0000000 --- a/0.0.4/html_split/_0023error_002dhandling.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#error-handling (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #error-handling.

    - diff --git a/0.0.4/html_split/_0023examples_002dof_002dcourse_002dcurricula.html b/0.0.4/html_split/_0023examples_002dof_002dcourse_002dcurricula.html deleted file mode 100644 index 99af091..0000000 --- a/0.0.4/html_split/_0023examples_002dof_002dcourse_002dcurricula.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#examples-of-course-curricula (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #examples-of-course-curricula.

    - diff --git a/0.0.4/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html b/0.0.4/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html deleted file mode 100644 index fc9b3eb..0000000 --- a/0.0.4/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#external-i.e.-non-standard-libraries (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #external-i.e.-non-standard-libraries.

    - diff --git a/0.0.4/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html b/0.0.4/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html deleted file mode 100644 index f915680..0000000 --- a/0.0.4/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#foundational-calling-static_assert-with-a-constant-expression (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #foundational-calling-static_assert-with-a-constant-expression.

    - diff --git a/0.0.4/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html b/0.0.4/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html deleted file mode 100644 index 88f62bc..0000000 --- a/0.0.4/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#foundational-how-and-when-are-copies-made (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #foundational-how-and-when-are-copies-made.

    - diff --git a/0.0.4/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html b/0.0.4/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html deleted file mode 100644 index 95ab098..0000000 --- a/0.0.4/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#foundational-using-and-defining-functions-with-default-arguments (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #foundational-using-and-defining-functions-with-default-arguments.

    - diff --git a/0.0.4/html_split/_0023foundational_002dusing_002dudls.html b/0.0.4/html_split/_0023foundational_002dusing_002dudls.html deleted file mode 100644 index 2f7afdd..0000000 --- a/0.0.4/html_split/_0023foundational_002dusing_002dudls.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#foundational-using-udls (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #foundational-using-udls.

    - diff --git a/0.0.4/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html b/0.0.4/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html deleted file mode 100644 index 708f2d3..0000000 --- a/0.0.4/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#foundational-writing-requires-expressions (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #foundational-writing-requires-expressions.

    - diff --git a/0.0.4/html_split/_0023functions.html b/0.0.4/html_split/_0023functions.html deleted file mode 100644 index e304abe..0000000 --- a/0.0.4/html_split/_0023functions.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#functions (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #functions.

    - diff --git a/0.0.4/html_split/_0023functions_002ddefault_002dargument.html b/0.0.4/html_split/_0023functions_002ddefault_002dargument.html deleted file mode 100644 index ccfbcbb..0000000 --- a/0.0.4/html_split/_0023functions_002ddefault_002dargument.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#functions-default-argument (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #functions-default-argument.

    - diff --git a/0.0.4/html_split/_0023functions_002duser_002ddefined_002dliterals.html b/0.0.4/html_split/_0023functions_002duser_002ddefined_002dliterals.html deleted file mode 100644 index b4f78b5..0000000 --- a/0.0.4/html_split/_0023functions_002duser_002ddefined_002dliterals.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#functions-user-defined-literals (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #functions-user-defined-literals.

    - diff --git a/0.0.4/html_split/_0023generic_002dprogramming_002dtemplates.html b/0.0.4/html_split/_0023generic_002dprogramming_002dtemplates.html deleted file mode 100644 index 3b91080..0000000 --- a/0.0.4/html_split/_0023generic_002dprogramming_002dtemplates.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#generic-programming-templates (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #generic-programming-templates.

    - diff --git a/0.0.4/html_split/_0023glossary.html b/0.0.4/html_split/_0023glossary.html deleted file mode 100644 index 9b46bf6..0000000 --- a/0.0.4/html_split/_0023glossary.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#glossary (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #glossary.

    - diff --git a/0.0.4/html_split/_0023how_002dto_002dcontribute.html b/0.0.4/html_split/_0023how_002dto_002dcontribute.html deleted file mode 100644 index d9cff4a..0000000 --- a/0.0.4/html_split/_0023how_002dto_002dcontribute.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#how-to-contribute (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #how-to-contribute.

    - diff --git a/0.0.4/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html b/0.0.4/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html deleted file mode 100644 index def5140..0000000 --- a/0.0.4/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#inheritance-and-class-hierarchies (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #inheritance-and-class-hierarchies.

    - diff --git a/0.0.4/html_split/_0023license.html b/0.0.4/html_split/_0023license.html deleted file mode 100644 index 6b44dd1..0000000 --- a/0.0.4/html_split/_0023license.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#license (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #license.

    - diff --git a/0.0.4/html_split/_0023main_002dadvanced_002drequirements.html b/0.0.4/html_split/_0023main_002dadvanced_002drequirements.html deleted file mode 100644 index 8214533..0000000 --- a/0.0.4/html_split/_0023main_002dadvanced_002drequirements.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#main-advanced-requirements (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #main-advanced-requirements.

    - diff --git a/0.0.4/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html b/0.0.4/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html deleted file mode 100644 index 22b0484..0000000 --- a/0.0.4/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#main-contracts-and-static_assert (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #main-contracts-and-static_assert.

    - diff --git a/0.0.4/html_split/_0023main_002dimplementing.html b/0.0.4/html_split/_0023main_002dimplementing.html deleted file mode 100644 index 260008c..0000000 --- a/0.0.4/html_split/_0023main_002dimplementing.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#main-implementing (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #main-implementing.

    - diff --git a/0.0.4/html_split/_0023main_002dimplementing_002dudls.html b/0.0.4/html_split/_0023main_002dimplementing_002dudls.html deleted file mode 100644 index a41d194..0000000 --- a/0.0.4/html_split/_0023main_002dimplementing_002dudls.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#main-implementing-udls (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #main-implementing-udls.

    - diff --git a/0.0.4/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html b/0.0.4/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html deleted file mode 100644 index 1e5a4d8..0000000 --- a/0.0.4/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#main-implementing-user-defined-copy-operations (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #main-implementing-user-defined-copy-operations.

    - diff --git a/0.0.4/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html b/0.0.4/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html deleted file mode 100644 index 4502ed8..0000000 --- a/0.0.4/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#meta-error-handling-static_assert (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #meta-error-handling-static_assert.

    - diff --git a/0.0.4/html_split/_0023module_002dname_002drequires_002dexpressions.html b/0.0.4/html_split/_0023module_002dname_002drequires_002dexpressions.html deleted file mode 100644 index 56a9ebf..0000000 --- a/0.0.4/html_split/_0023module_002dname_002drequires_002dexpressions.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#module-name-requires-expressions (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #module-name-requires-expressions.

    - diff --git a/0.0.4/html_split/_0023motivation.html b/0.0.4/html_split/_0023motivation.html deleted file mode 100644 index 0141374..0000000 --- a/0.0.4/html_split/_0023motivation.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#motivation (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #motivation.

    - diff --git a/0.0.4/html_split/_0023motivation_002d1.html b/0.0.4/html_split/_0023motivation_002d1.html deleted file mode 100644 index 7e4a69e..0000000 --- a/0.0.4/html_split/_0023motivation_002d1.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#motivation-1 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #motivation-1.

    - diff --git a/0.0.4/html_split/_0023motivation_002d2.html b/0.0.4/html_split/_0023motivation_002d2.html deleted file mode 100644 index 7901fd3..0000000 --- a/0.0.4/html_split/_0023motivation_002d2.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#motivation-2 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #motivation-2.

    - diff --git a/0.0.4/html_split/_0023motivation_002d3.html b/0.0.4/html_split/_0023motivation_002d3.html deleted file mode 100644 index ec720ad..0000000 --- a/0.0.4/html_split/_0023motivation_002d3.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#motivation-3 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #motivation-3.

    - diff --git a/0.0.4/html_split/_0023motivation_002d4.html b/0.0.4/html_split/_0023motivation_002d4.html deleted file mode 100644 index f53583a..0000000 --- a/0.0.4/html_split/_0023motivation_002d4.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#motivation-4 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #motivation-4.

    - diff --git a/0.0.4/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html b/0.0.4/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html deleted file mode 100644 index 57e8b6e..0000000 --- a/0.0.4/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#obtaining-this-document-the-most-recent-version-and-alternate-formats (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #obtaining-this-document-the-most-recent-version-and-alternate-formats.

    - diff --git a/0.0.4/html_split/_0023organization_002dof_002dthis_002ddocument.html b/0.0.4/html_split/_0023organization_002dof_002dthis_002ddocument.html deleted file mode 100644 index e312b8e..0000000 --- a/0.0.4/html_split/_0023organization_002dof_002dthis_002ddocument.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#organization-of-this-document (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #organization-of-this-document.

    - diff --git a/0.0.4/html_split/_0023overview.html b/0.0.4/html_split/_0023overview.html deleted file mode 100644 index b2d4bdc..0000000 --- a/0.0.4/html_split/_0023overview.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#overview (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #overview.

    - diff --git a/0.0.4/html_split/_0023overview_002d1.html b/0.0.4/html_split/_0023overview_002d1.html deleted file mode 100644 index d551764..0000000 --- a/0.0.4/html_split/_0023overview_002d1.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#overview-1 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #overview-1.

    - diff --git a/0.0.4/html_split/_0023overview_002d2.html b/0.0.4/html_split/_0023overview_002d2.html deleted file mode 100644 index 5a34b05..0000000 --- a/0.0.4/html_split/_0023overview_002d2.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#overview-2 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #overview-2.

    - diff --git a/0.0.4/html_split/_0023overview_002d3.html b/0.0.4/html_split/_0023overview_002d3.html deleted file mode 100644 index f230145..0000000 --- a/0.0.4/html_split/_0023overview_002d3.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#overview-3 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #overview-3.

    - diff --git a/0.0.4/html_split/_0023overview_002d4.html b/0.0.4/html_split/_0023overview_002d4.html deleted file mode 100644 index 2436b9a..0000000 --- a/0.0.4/html_split/_0023overview_002d4.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#overview-4 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #overview-4.

    - diff --git a/0.0.4/html_split/_0023points_002dto_002dcover.html b/0.0.4/html_split/_0023points_002dto_002dcover.html deleted file mode 100644 index 424b02b..0000000 --- a/0.0.4/html_split/_0023points_002dto_002dcover.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#points-to-cover (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #points-to-cover.

    - diff --git a/0.0.4/html_split/_0023points_002dto_002dcover_002d1.html b/0.0.4/html_split/_0023points_002dto_002dcover_002d1.html deleted file mode 100644 index 2a554bb..0000000 --- a/0.0.4/html_split/_0023points_002dto_002dcover_002d1.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#points-to-cover-1 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #points-to-cover-1.

    - diff --git a/0.0.4/html_split/_0023points_002dto_002dcover_002d2.html b/0.0.4/html_split/_0023points_002dto_002dcover_002d2.html deleted file mode 100644 index 053a51a..0000000 --- a/0.0.4/html_split/_0023points_002dto_002dcover_002d2.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#points-to-cover-2 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #points-to-cover-2.

    - diff --git a/0.0.4/html_split/_0023points_002dto_002dcover_002d3.html b/0.0.4/html_split/_0023points_002dto_002dcover_002d3.html deleted file mode 100644 index b0dad48..0000000 --- a/0.0.4/html_split/_0023points_002dto_002dcover_002d3.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#points-to-cover-3 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #points-to-cover-3.

    - diff --git a/0.0.4/html_split/_0023points_002dto_002dcover_002d4.html b/0.0.4/html_split/_0023points_002dto_002dcover_002d4.html deleted file mode 100644 index 94de8fa..0000000 --- a/0.0.4/html_split/_0023points_002dto_002dcover_002d4.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#points-to-cover-4 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #points-to-cover-4.

    - diff --git a/0.0.4/html_split/_0023points_002dto_002dcover_002d5.html b/0.0.4/html_split/_0023points_002dto_002dcover_002d5.html deleted file mode 100644 index 39d1eaf..0000000 --- a/0.0.4/html_split/_0023points_002dto_002dcover_002d5.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#points-to-cover-5 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #points-to-cover-5.

    - diff --git a/0.0.4/html_split/_0023points_002dto_002dcover_002d6.html b/0.0.4/html_split/_0023points_002dto_002dcover_002d6.html deleted file mode 100644 index 92df88f..0000000 --- a/0.0.4/html_split/_0023points_002dto_002dcover_002d6.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#points-to-cover-6 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #points-to-cover-6.

    - diff --git a/0.0.4/html_split/_0023points_002dto_002dcover_002d7.html b/0.0.4/html_split/_0023points_002dto_002dcover_002d7.html deleted file mode 100644 index 6e6c895..0000000 --- a/0.0.4/html_split/_0023points_002dto_002dcover_002d7.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#points-to-cover-7 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #points-to-cover-7.

    - diff --git a/0.0.4/html_split/_0023points_002dto_002dcover_002d8.html b/0.0.4/html_split/_0023points_002dto_002dcover_002d8.html deleted file mode 100644 index b5574e1..0000000 --- a/0.0.4/html_split/_0023points_002dto_002dcover_002d8.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#points-to-cover-8 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #points-to-cover-8.

    - diff --git a/0.0.4/html_split/_0023preprocessor.html b/0.0.4/html_split/_0023preprocessor.html deleted file mode 100644 index a3bb5f6..0000000 --- a/0.0.4/html_split/_0023preprocessor.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#preprocessor (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #preprocessor.

    - diff --git a/0.0.4/html_split/_0023references.html b/0.0.4/html_split/_0023references.html deleted file mode 100644 index 69fbd6b..0000000 --- a/0.0.4/html_split/_0023references.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#references (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #references.

    - diff --git a/0.0.4/html_split/_0023references_002don_002dlearning_002doutcomes.html b/0.0.4/html_split/_0023references_002don_002dlearning_002doutcomes.html deleted file mode 100644 index d28fbbf..0000000 --- a/0.0.4/html_split/_0023references_002don_002dlearning_002doutcomes.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#references-on-learning-outcomes (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #references-on-learning-outcomes.

    - diff --git a/0.0.4/html_split/_0023software_002ddesign.html b/0.0.4/html_split/_0023software_002ddesign.html deleted file mode 100644 index 16f5f54..0000000 --- a/0.0.4/html_split/_0023software_002ddesign.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#software-design (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #software-design.

    - diff --git a/0.0.4/html_split/_0023standard_002dlibrary.html b/0.0.4/html_split/_0023standard_002dlibrary.html deleted file mode 100644 index 71956d3..0000000 --- a/0.0.4/html_split/_0023standard_002dlibrary.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#standard-library (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #standard-library.

    - diff --git a/0.0.4/html_split/_0023student_002doutcomes.html b/0.0.4/html_split/_0023student_002doutcomes.html deleted file mode 100644 index df0035d..0000000 --- a/0.0.4/html_split/_0023student_002doutcomes.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#student-outcomes (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #student-outcomes.

    - diff --git a/0.0.4/html_split/_0023student_002doutcomes_002d1.html b/0.0.4/html_split/_0023student_002doutcomes_002d1.html deleted file mode 100644 index e9344b7..0000000 --- a/0.0.4/html_split/_0023student_002doutcomes_002d1.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#student-outcomes-1 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #student-outcomes-1.

    - diff --git a/0.0.4/html_split/_0023student_002doutcomes_002d2.html b/0.0.4/html_split/_0023student_002doutcomes_002d2.html deleted file mode 100644 index 6fa7724..0000000 --- a/0.0.4/html_split/_0023student_002doutcomes_002d2.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#student-outcomes-2 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #student-outcomes-2.

    - diff --git a/0.0.4/html_split/_0023student_002doutcomes_002d3.html b/0.0.4/html_split/_0023student_002doutcomes_002d3.html deleted file mode 100644 index 195d9d2..0000000 --- a/0.0.4/html_split/_0023student_002doutcomes_002d3.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#student-outcomes-3 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #student-outcomes-3.

    - diff --git a/0.0.4/html_split/_0023student_002doutcomes_002d4.html b/0.0.4/html_split/_0023student_002doutcomes_002d4.html deleted file mode 100644 index 3e30430..0000000 --- a/0.0.4/html_split/_0023student_002doutcomes_002d4.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#student-outcomes-4 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #student-outcomes-4.

    - diff --git a/0.0.4/html_split/_0023student_002doutcomes_002d5.html b/0.0.4/html_split/_0023student_002doutcomes_002d5.html deleted file mode 100644 index 0a4a7da..0000000 --- a/0.0.4/html_split/_0023student_002doutcomes_002d5.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#student-outcomes-5 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #student-outcomes-5.

    - diff --git a/0.0.4/html_split/_0023student_002doutcomes_002d6.html b/0.0.4/html_split/_0023student_002doutcomes_002d6.html deleted file mode 100644 index c5c4ac0..0000000 --- a/0.0.4/html_split/_0023student_002doutcomes_002d6.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#student-outcomes-6 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #student-outcomes-6.

    - diff --git a/0.0.4/html_split/_0023student_002doutcomes_002d7.html b/0.0.4/html_split/_0023student_002doutcomes_002d7.html deleted file mode 100644 index 5233f94..0000000 --- a/0.0.4/html_split/_0023student_002doutcomes_002d7.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#student-outcomes-7 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #student-outcomes-7.

    - diff --git a/0.0.4/html_split/_0023student_002doutcomes_002d8.html b/0.0.4/html_split/_0023student_002doutcomes_002d8.html deleted file mode 100644 index f19fd7f..0000000 --- a/0.0.4/html_split/_0023student_002doutcomes_002d8.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#student-outcomes-8 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #student-outcomes-8.

    - diff --git a/0.0.4/html_split/_0023student_002doutcomes_002d9.html b/0.0.4/html_split/_0023student_002doutcomes_002d9.html deleted file mode 100644 index 735a21f..0000000 --- a/0.0.4/html_split/_0023student_002doutcomes_002d9.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#student-outcomes-9 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #student-outcomes-9.

    - diff --git a/0.0.4/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html b/0.0.4/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html deleted file mode 100644 index 4801178..0000000 --- a/0.0.4/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#summary-of-modules-and-topics (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #summary-of-modules-and-topics.

    - diff --git a/0.0.4/html_split/_0023testing_002dand_002ddebugging.html b/0.0.4/html_split/_0023testing_002dand_002ddebugging.html deleted file mode 100644 index 1ae096d..0000000 --- a/0.0.4/html_split/_0023testing_002dand_002ddebugging.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#testing-and-debugging (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #testing-and-debugging.

    - diff --git a/0.0.4/html_split/_0023tooling.html b/0.0.4/html_split/_0023tooling.html deleted file mode 100644 index 634a8dc..0000000 --- a/0.0.4/html_split/_0023tooling.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#tooling (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #tooling.

    - diff --git a/0.0.4/html_split/_0023topic_002dintroduction.html b/0.0.4/html_split/_0023topic_002dintroduction.html deleted file mode 100644 index 742d5d9..0000000 --- a/0.0.4/html_split/_0023topic_002dintroduction.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#topic-introduction (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #topic-introduction.

    - diff --git a/0.0.4/html_split/_0023topic_002dintroduction_002d1.html b/0.0.4/html_split/_0023topic_002dintroduction_002d1.html deleted file mode 100644 index a110644..0000000 --- a/0.0.4/html_split/_0023topic_002dintroduction_002d1.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#topic-introduction-1 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #topic-introduction-1.

    - diff --git a/0.0.4/html_split/_0023topic_002dintroduction_002d2.html b/0.0.4/html_split/_0023topic_002dintroduction_002d2.html deleted file mode 100644 index 986bf37..0000000 --- a/0.0.4/html_split/_0023topic_002dintroduction_002d2.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#topic-introduction-2 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #topic-introduction-2.

    - diff --git a/0.0.4/html_split/_0023topic_002dintroduction_002d3.html b/0.0.4/html_split/_0023topic_002dintroduction_002d3.html deleted file mode 100644 index 3d14fd9..0000000 --- a/0.0.4/html_split/_0023topic_002dintroduction_002d3.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#topic-introduction-3 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #topic-introduction-3.

    - diff --git a/0.0.4/html_split/_0023topic_002dintroduction_002d4.html b/0.0.4/html_split/_0023topic_002dintroduction_002d4.html deleted file mode 100644 index c73a236..0000000 --- a/0.0.4/html_split/_0023topic_002dintroduction_002d4.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#topic-introduction-4 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #topic-introduction-4.

    - diff --git a/0.0.4/html_split/_0023use_002dof_002dthis_002ddocument.html b/0.0.4/html_split/_0023use_002dof_002dthis_002ddocument.html deleted file mode 100644 index 68d835d..0000000 --- a/0.0.4/html_split/_0023use_002dof_002dthis_002ddocument.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#use-of-this-document (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #use-of-this-document.

    - diff --git a/0.0.4/html_split/_0023user_002ddefined_002dtypes_002dclasses.html b/0.0.4/html_split/_0023user_002ddefined_002dtypes_002dclasses.html deleted file mode 100644 index 04771a9..0000000 --- a/0.0.4/html_split/_0023user_002ddefined_002dtypes_002dclasses.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#user-defined-types-classes (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #user-defined-types-classes.

    - diff --git a/0.0.4/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html b/0.0.4/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html deleted file mode 100644 index f4b9435..0000000 --- a/0.0.4/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#working-group-documents-related-to-c-teaching-guidelines (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

    The node you are looking for is at #working-group-documents-related-to-c-teaching-guidelines.

    - diff --git a/0.0.4/html_split/index.html b/0.0.4/html_split/index.html deleted file mode 100644 index c4e5ff0..0000000 --- a/0.0.4/html_split/index.html +++ /dev/null @@ -1,240 +0,0 @@ - - - - - -Top (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -

    Table of Contents

    - -
    - - -
    - - - -
    -

    Guidelines for Teaching C++

    - - - - - - - - - - - - - - - - - - -
    - - - - - - diff --git a/0.0.4/html_split/unknown_node.html b/0.0.4/html_split/unknown_node.html deleted file mode 100644 index 5a652e5..0000000 --- a/0.0.4/html_split/unknown_node.html +++ /dev/null @@ -1,763 +0,0 @@ - - - - - -Guidelines for Teaching C++ - - - - - - - - - - - - - - - - -
    -

    -   [Contents]

    -
    -
    -

    8.1.5.1 Background/Required Knowledge

    -

    A student is able to: * identify special member functions -[C++ object model: -special member functions] -

    -

    It helps when a student is able to: * use move semantics -[C++ object model: move -semantics] * explain the rule of zero -[C++ object model: rule-of-zero] -* explain the rule of five [C++ -object model: rule-of-five] -

    -
    -

    -   [Contents]

    -
    -

    8.1.5.2 Student outcomes

    -

    A list of things “a student should be able to” after the -curriculum. The next word should be an action word and testable -in an exam. Max 5 items. -

    -

    A student should be able to: * explain when they have to implement the -copy operations for their own type * Copy constructor * Copy assignment -operator * implement copy operations for their own types * -Optional: explain when copying with basic and strong exception -guarantees is useful -

    -
    -

    -   [Contents]

    -
    -

    8.1.5.3 Caveats

    -

    This section mentions subtle points to understand, like anything -resulting in implementation-defined, unspecified, or undefined -behavior. -

    -
      -
    • Intricacies when implementing copy operations: -
        -
      • Examples of how not to write copy operations (e.g., C++03 -std::auto_ptr) -
      - -
    - -
    -

    -   [Contents]

    -
    -

    8.1.5.4 Points to cover

    -

    This section lists important details for each point. -

    -
      -
    • Copy constructors and copy assignment operators -
        -
      • How compiler generates default copy operations -
      • =default, =delete (No copy) -
      • How-to write your own copy operations -
      • Rule-of-five -
      • Copy assignment operators can be ref-qualified to avoid assigning into -temporary objects. -
      - -
    - -
    -

    -   [Contents]

    -
    -

    8.2.1 Overview

    -

    Provides a short natural language abstract of the module’s -contents. Specifies the different levels of teaching. -

    - - - - - -
    LevelObjectives
    Foundationalusing and understanding UDLs
    Mainimplementing your own UDLs
    AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
    - -
    -

    -   [Contents]

    -
    -

    8.2.2 Motivation

    -

    Why is this important? Why do we want to learn/teach this -topic? -

    -
      -
    • Allows clearer expression of intent in C++. -
    • std::string: "Hello, world!"s -
    • std::chrono: 3h + 10min + 5s -
    - -
    -

    -   [Contents]

    -
    -

    8.2.3 Topic introduction

    -

    Very brief introduction to the topic. -

    -
      -
    • Explain the existence of user defined literals. Example: -12min + 17s is terse, expressive and type safe. -
    - -
    -

    -   [Contents]

    -
    -

    8.2.4.1 Background/Required Knowledge

    -

    A student: * knows how to form numeric literals, e.g., 1.5f means -a float of value 1.5. * is familiar with the major C++ -types: * bool (Boolean type) * int (Integer type) * -double (Floating-point type) * std::string (Text type) * -std::vector (Collection type) * knows that namespaces exist, and -namespace std. * knows what using-declarations and -using-directives are. -[C++ object -model: declarations] -

    -
    -

    -   [Contents]

    -
    -

    8.2.4.2 Student outcomes

    -

    A list of things “a student should be able to” after the -curriculum. The next word should be an action word and testable -in an exam. Max 5 items. -

    -

    A student should be able to: -

    -
      -
    1. use using namespace std::string_literals[1]. -
    2. recognise UDLs in code that they are reading. -
    3. figure out which UDL definitions for a used type exist. -
    4. identify parts of the standard library that make use of UDLs. -
    5. prevent the dangers of temporaries created with "blah"s as well -as with std::string{"blah"}. -
    6. effectively selects the right set of namespaces in using-directives from -the sub-namespaces std::literals. -
    - -

    [1]: explain that it’s okay to use a using-directive to “activate” -UDLs. -

    -
    -

    -   [Contents]

    -
    -

    8.2.4.3 Caveats

    -

    This section mentions subtle points to understand, like anything -resulting in implementation-defined, unspecified, or undefined -behavior. -

    -
      -
    • A student gets confused by the similarities and differences between -built-in suffixes and UDLs and between UDLs from different namespaces. -
    • A student “activates” two suffixes with the same signature from -different namespaces. -
    - -
    -

    -   [Contents]

    -
    -

    8.2.4.4 Points to cover

    -

    This section lists important details for each point. -

    -
    -

    -   [Contents]

    -
    -

    8.2.5.1 Background/Required Knowledge

    -
      -
    • All of the above. -
    - -
    -

    -   [Contents]

    -
    -

    8.2.5.2 Student outcomes

    -

    A list of things “a student should be able to” after the -curriculum. The next word should be an action word and testable -in an exam. Max 5 items. -

    -

    A student should be able to: -

    -
      -
    1. write a UDL operator of their own. -
    2. separate unrelated UDLs into distinct namespaces. -
    - -
    -

    -   [Contents]

    -
    -

    8.2.5.3 Caveats

    -

    This section mentions subtle points to understand, like anything -resulting in implementation-defined, unspecified, or undefined -behavior. -

    -

    No caveats at present. #### Points to cover -

    -

    This section lists important details for each point. -

    -

    No caveats at present. ### Advanced {#udl-advanced} -

    -

    These are important topics that are not expected to be covered but -provide guidance where one can continue to investigate this topic in -more depth. -

    -
    -

    -   [Contents]

    -
    -

    8.3.1 Overview

    -

    Functions in C++ may be overloaded with different numbers and types of -parameters. It may be of value to specify default arguments for some -number of parameters, to allow a caller to avoid specifying arguments -that rarely change, or to enable expanding the set of parameters while -maintaining backward compatibility with existing callers. -

    - - - - - -
    LevelObjective
    FoundationalDefine and use functions with default arguments
    Main
    Advancedrefinement of default arguments through multiple declarations
    - -
    -

    -   [Contents]

    -
    -

    8.3.2 Motivation

    -

    Default arguments allow the omission of arguments with obvious or common -values. Also may be utilized to extend an existing function signature -without forcing changes to existing calling code. -

    -
    -

    -   [Contents]

    -
    -

    8.3.3 Topic introduction

    -

    Explain how default arguments work and how to define them. -

    -
    -

    -   [Contents]

    -
    -

    8.3.4.1 Background/Required Knowledge

    -

    A student is able to: -

    - - -
    -

    -   [Contents]

    -
    -

    8.3.4.2 Student outcomes

    -

    A student should be able to: -

    -
      -
    1. Call to a function with a default argument with or without that argument -specified -
    2. Declare a function with a default argument, and omit the default in the -definition’s signature -
    3. Explain when the lifetime of a default argument begins and ends -
    - -
    -

    -   [Contents]

    -
    -

    8.3.4.3 Caveats

    -
      -
    • When no forward-declaration exists, the definition serves as the -declaration -
    • When multiple declarations exist, only one may specify the default for -any particular parameter, but multiple declarations may specify the -defaults for different parameters. -
    • Additional default values may be specified for other parameters in -repeat declarations -
    • Calling an overloaded function with fewer arguments may be ambiguous -with regard to an overload with default arguments -
    - -
    -

    -   [Contents]

    -
    -

    8.3.4.4 Points to cover

    -
      -
    • Default value may only be specified once for each parameter among all -declarations -
    • Default values must start from the rightmost parameter and continue -leftward without gaps -
    • Considerations of when to use default arguments vs overload set -
    - -
    -

    -   [Contents]

    -
    -

    8.3.5.2 Student outcomes

    -

    A student should be able to: -

    -
    -

    -   [Contents]

    -
    -

    8.3.5.3 Caveats

    - -
    -

    -   [Contents]

    -
    -

    8.3.5.4 Points to cover

    - -
    -

    -   [Contents]

    -
    -

    8.3.6 Advanced

    -

    Subsequent redeclarations of the same function may add default argument -values, which are then usable by callers. Though a single parameter -cannot be given a default argument twice in the same translation unit, -it is legal, though ill-advised, to give the same function different -default arguments in different translation units. -

    -
    -

    -   [Contents]

    -
    -

    8.4.1 Overview

    - - - - - -
    LevelObjectives
    FoundationalDefine and use requires-expressions to check satisfaction of -expressions by given parameters
    MainDefine and use requires-expressions to check properties of -expressions
    Advanced
    - -
    -

    -   [Contents]

    -
    -

    8.4.2 Motivation

    -

    Requires-expressions allow a developer to perform compile-time -evaluation on the validity of other expressions. These are fundamental -to the ability to write concepts. -[Compile-time programming: -concepts] -

    -
    -

    -   [Contents]

    -
    -

    8.5 Topic introduction

    -

    Requires-expressions are compile-time predicates which evaluate to true -when their specified set of expressions are all valid for a given set of -inputs. -

    - - - - - - -
    -

    -   [Contents]

    -
    -

    8.5.1.1 Background/Required Knowledge

    -

    A student is able to: -

    - - -

    It is helpful if: -

    -
      -
    • The student is aware that attempting to specialize the template with -types or values which do not match otherwise unstated assumptions will -cause errors within the template. -
    - -
    -

    -   [Contents]

    -
    -

    8.5.1.2 Student outcomes

    -

    A student should be able to: -

    -
      -
    1. Write a simple-requirement to assert the validity of an expression -
    2. Write a type-requirement to check the existence of a type by its -identifier -
    3. Write a compound-requirement to test the resulting type of an expression -
    4. Write a nested-requirement to test the constexpr value of an operation, -as opposed to just the syntactic validity -
    5. Use a requires-expression within a concept, requires-clause, or -if constexpr condition -
    - -
    -

    -   [Contents]

    -
    -

    8.5.1.3 Caveats

    -

    To require that expressions, which evaluate to a boolean value like -sizeof(t) == 4, evaluate to true a nested-requirement is -needed (e.g., requires sizeof(t) == 4;). Omitting the -requires results in a simple-requirement, which is satisfied -based purely on syntactic validity, not on the result of the operation. -

    -
    -

    -   [Contents]

    -
    -

    8.5.1.4 Points to cover

    -
      -
    • All requires-expression requirements terminate with a semicolon. -
    • simple-requirements are used to check that an expression is well-formed. -
    • nested-requirements are introduced with requires and primarily -used to check the result of an expression computable by the compiler, -including concepts or other requires-expressions. -
    • type-requirements are introduced with typename and used to verify -the existence of a type with a particular identifier. -
    • compound-requirements are enclosed in braces and can be used to check -the resulting type of an expression. -
    • Checks are performed by the compiler, not at run time. -
    • If covering usage of requires-expression with requires-clause, -[Compile-time -programming: requires clause] demonstrate requires requires and -show how to ever avoid writing it by using a concept. -[Compile-time programming: -concepts] -
    - -
    -

    -   [Contents]

    -
    -

    8.5.2.1 Background/required knowledge

    -
      -
    • All of the above. -
    • Knowledge of noexcept -
    - -

    A student is able to: -

    - - -
    -

    -   [Contents]

    -
    -

    8.5.2.2 Student outcomes

    -

    A student should be able to: -

    -
      -
    1. Write compound-requirements which test the noexceptness of an -expression. -
    2. Use a concept as the target of a compound-requirement. -
    - -
    -

    -   [Contents]

    -
    -

    8.5.2.3 Caveats

    - -
    -

    -   [Contents]

    -
    -

    8.5.2.4 Points to cover

    -
      -
    • Compound-requirements allow the optional ability to test whether an -expression is marked as noexcept, by using a trailing -noexcept keyword. -
    - -
    struct S
    -{
    -    void foo() noexcept {}
    -    void bar() {}
    -};
    -
    -static_assert(requires(S s) { { s.foo() } noexcept; } ); // Succeeds. s.foo() is noexcept
    -static_assert(requires(S s) { { s.bar() } noexcept; } ); // Fails. s.bar() is not noexcept
    -
    -
      -
    • If the return-type-requirement of a compound-requirement is a concept, -that concept is given the resulting type as the first parameter, -followed by the specified parameters in the compound-requirement. -{ ++x } -> C<int> would substitute -C<decltype((++x)), int> and check that concept C is satisfied for -those parameters. -
    - -
    -

    -   [Contents]

    -
    -

    8.5.3 Advanced

    - -
    -

    -   [Contents]

    -
    -

    8.6.1 Overview

    -

    Provides a short natural language abstract of the module’s -contents. Specifies the different levels of teaching. -

    - - - - - -
    LevelObjectives
    FoundationalCalling static_assert with a constant expression
    MainUsing static_assert to detect contract violations and -improve error messages
    Advanced
    - -
    -

    -   [Contents]

    -
    -

    8.6.2 Motivation

    -

    Why is this important? Why do we want to learn/teach this -topic? -

    -

    static_assert allows the developer to enforce that conditions -which can be checked during compilation will force build errors when -violated. Additionally, they are the best mechanism by which a developer -can pass useful information to other developers regarding what violation -occurred or what must be done, instead. -

    -
    -

    -   [Contents]

    -
    -

    8.6.3 Topic introduction

    -

    Very brief introduction to the topic. -

    -

    static_assert is a compile-time evaluated function that asserts -the truth of a supplied predicate, issuing an optional user-supplied -error message if the predicate is false. -

    -
    -

    -   [Contents]

    -
    -

    8.6.4.1 Background/Required Knowledge

    -

    A student: -

    -
      -
    • Should be able to explain the difference between code evaluated at -compile-time and run-time -
    • Should be able to cite some examples of compile-time known information, -such as sizeof(T) -
    - -
    -

    -   [Contents]

    -
    -

    8.6.4.2 Student outcomes

    -

    A list of things “a student should be able to” after the -curriculum. The next word should be an action word and testable -in an exam. Max 5 items. -

    -

    A student should be able to: -

    -
      -
    1. Assert the expected size of a structure using static_assert -
    - -
    -

    -   [Contents]

    -
    -

    8.6.4.3 Caveats

    -

    This section mentions subtle points to understand, like anything -resulting in implementation-defined, unspecified, or undefined -behavior. -

    -
    -

    -   [Contents]

    -
    -

    8.6.4.4 Points to cover

    -

    This section lists important details for each point. -

    -
      -
    • X -
    • In addition to what is wrong, a good error message will inform the user -of how to correct it -
    - -
    -

    -   [Contents]

    -
    -

    8.6.5.1 Background/Required Knowledge

    -
      -
    • All of the above. -
    • General understanding of compile-time requirements -
    - -
    -

    -   [Contents]

    -
    -

    8.6.5.2 Student outcomes

    -

    A list of things “a student should be able to” after the -curriculum. The next word should be an action word and testable -in an exam. Max 5 items. -

    -

    A student should be able to: -

    -
      -
    1. Utilize static_assert to verify preconditions of a meta-function -
    2. Utilize static_assert to verify the results of meta-functions for -known values -
    - -
    -

    -   [Contents]

    -
    -

    8.6.5.3 Caveats

    -

    This section mentions subtle points to understand, like anything -resulting in implementation-defined, unspecified, or undefined -behavior. -

    -
    -

    -   [Contents]

    -
    -

    8.6.5.4 Points to cover

    -

    This section lists important details for each point. -

    -
      -
    • When writing a meta-function, use static_assert to test the -results -
    • Write static_assert calls at the scope of the code they are -guarding -
    - -
    template<typename T>
    -struct container {
    -    std::map<int, T> vals;
    -
    -    // Test location #1
    -    static_assert(
    -        std::is_default_constructible_v<T>,
    -        "container type T must be default constructible");i
    -
    -    void add(int key, T const& t) {
    -        // Test location #2
    -        static_assert(
    -            std::is_default_constructible_v<T>,
    -            "container type T must be default constructible");
    -        // std::map::operator[] requires default constructible type for 
    -        // the value. This will cause a build failure deep in the 
    -        // implementation of std::map, when T is not default constructible
    -        vals[key] = t;
    -    }
    -};
    -
    -struct NoDefCtor {
    -    NoDefCtor() = delete;
    -    NoDefCtor(double d) {}
    -};
    -
    -container<NoDefCtor> c; // If Test #1 was omitted, this would succeed
    -// This is ill-formed. Test #2 would catch this and provide a better 
    -// error message for the user
    -c.add(42, NoDefCtor(1.0)); 
    -
    -
    -

    -   [Contents]

    -
    -

    8.6.6 Advanced

    -

    These are important topics that are not expected to be covered but -provide guidance where one can continue to investigate this topic in -more depth. -

    - - - - - diff --git a/0.0.3/guidelines.epub b/0.0.5/guidelines.epub similarity index 80% rename from 0.0.3/guidelines.epub rename to 0.0.5/guidelines.epub index ffbbf606fcd92242a2d107f8c3bdad91e85a1181..d893c99cdd9e085d97efc3feb29131db32fb31b7 100644 GIT binary patch delta 3870 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 delta 3878 zcmZWscQo8v*PaAnMhk*XU&Q zh>_wo@_p~R_rAYB&R)+s&))kvd;QK@dzYL7%T9r$_jK^U5CDh}0C3GuBb5bRuIh`I zE0Pz8CUVWUF~o1COJhgw19cHbLfcb;A~$;tCbQy%U=#)>)t}(HzW~sjW0k5f`c>r? z<#v*=Hf)0k<9jEC8Ga{YqR?Z3o=|xIlhoc`4V!q0Ly~r=Ev1l_J}<-PwsRAmyF@w6 z8GJ9`LIWWrG;G~f6B7Dy3^gA5^CncTW)%2NbMg-7TY`q04M%2X6=R4^n0lk8CUn0~ zF<4BZrNf9#?e@V2iOQ}n6K}R{Qf1omU&EPAdIhD?G&%jG`89;!_+3g9(BCPzP;}_n zWqo>PgA(?|ipk*nQ`&0o>fHjQZ7sC!+e0~Ji>?`iN;h>jHZ9ubMa)`xMNL_k_>leN znApq+GW#3>O$u$|Bu@m-YG{zp*3Q?#`ux`)Zt;dd6uR=n2w!O6d8vDC3*-uyr2h5~ z#rU>JJ78;LLDQCP-J2_@NVh)S(Zu%!uRRwnRETc^#JJhst=bWy? zr0-hxljl9%I!}LbT5wX@J$>H+Qayx}Pi!#2t;(oN6ZTi`^vELMxffv)13Yl$$|mr7_FdOVwe7seuK%s|R1UA%a%kEOLFbpApW0GV6=nyz&P1Q{lNa|^< zf!+BqKj-fYIGMB#Gg%sqfl8sMaHt^Tf^K*E5X*_Y0zl^20hwe0vgf-NVaUz6bVrDl_p5B=skCcMw*;g0ZswlXL9 zuKE?an_gWq$~kP-MI_(4@;uQ015aUE8TQd+|2k%&mzP&sC;fP<5xS2dj^8VyRg6cz zE!RX29q-5#M-Wddkxs*=B%@q-Z|h}AX>1A!7(|N4B6Ol_O+`jbsI@E+Mr;Y*bfqov z9Eu;Ji%EJ6g?#Y>MjNIc3fjF#5yU_NF*H*g%L%gl54?loJ71K31d@__ipd@mKiXS8 zBv)pmC>U4N7P~`qqipLlWOXuCMDIdOkG-I;dta?dK?>$>jd9veiyisJ6moy2wov{K zt4v+93xd;Qw}FTpMKscq-$=@oBE?NL!JUxbh-SVR>t0lT+HSK4u0*MP%BCJ9j{iNW zC)Lc_nGC04bEGM8>p(O9ih4{Mu46$hqyOIF$5uNdi=*VN8?aov2+?@U`c}(#S~!>}V>L=Yl6Kk^-?( zmWl{Mw0uG1Hv>dG!DXD=jR$7uhWtPw9}(*2O!~HE*omwb(`bZ~+MH22YjGl1Vi|k} z0SL7PPa5LSWw}HvY}%9Kn^crS*Gp2b`o) zC(A*SKlbp3NpMkBJ!6<~RmsBbB4j<|+_FQR%7a9iNvj}-OPYyCtouj5N5il>b76hzf6S=VaA2?}Xv%Q7 zr|PrE_)t+$XX3l%$b;qTsyh7+8OPkC zyQs6~G&U~f%V@e_fVump_&)ohtGH6$Wb>hUz;eMWYLOyTVRR4JfzOJzS)z{6={pzy zv>-+Sa%gIcdr+j-9RYgI2Bi3@i5QtHSWn`7+$im=Ygeq%RR;p-&y;?I*{A7l?+-WI z!VOfF3`SaCgQ)8*X;gK?VtRCX&O@{$xVuTim<%Mf4_8}kd+Z(3WhG~Ln2;>nX!PeshHLber3M0=8#Lm*_% zKH4qsnkk=?iA_BNLv%zV=G)my4-ceJM9;k{km|a?7fh&p=!#NNkV0*}0yYFvXw;EX zOtm$7Rt|~)3%}YyhjOhf`SN=$4U2m8F@Sq~LNIO_B-S-kein7YG-Ig_{4CU5Nmyp+-iK%HVa>WbM37vx+J0EnmJ4jaqu*Ek2y5c_%o#< zs)D`b`JPcfOvUE*0@=KCT*D7-k#Zy6lg@Is>a(T%O!=POExz#JyM7FNCN!KH)lJ6Y zqglx&)&5X-GS$5JDhEeZ)DLq9b@qPJf!u|Ldf}PybrWLFH(VfvGDWcEWLzXXeL!-0 zi#-@J>;d_bp;Xy`sHAoXe`UZKroKY{bU~+vo3O~Nb;!lJ-I@^LBkrlEQzJoG1X*>G zO?!SMW>77_G7t|xQxIw!4bVwhzRkf}xgY+ji_5*{&{v*FqePzU#|r~fP8Zlt6S)#W2I-BMb;>0rAi&IQp2@BaWirA}jHP3Z zG}0AKPL3LJeXUA1kfVm6$0HrhCE zKO%JRmnpte^y)i&JxY5C84T6$p)6Qj<9Ne(Q1$WutTdGdtary zUdg2S6GHNLQQ1ip%I@=U=_cBee6QPg&zfAjQ5ik+Q>+(+^>1oLr6#uE?Y4cW>0W;j zvGycnd&h)&eXQS5Y~2X^uq^&()KuOD@W1T<-eo_4QYY&oyzG=w#B}5!oMmFL#wWzJ z%rWp4Mr0(b1ZaZ~*~sdK7#Mu>n4zekAYOWoyL}Wq=Na&qfe}V=wlGU{D7mik&_1sz%wIidS|LY6!;FOptF9M2@T3z}YsB2nYaJ!9$Kp zLQqgab7~w0V5R*Ky>&%I)Kc*K2hL-d;4$I#%cxqE008sf9RQRJNC5^`!GEW~{b##)06-N9 z06_Z>2XACjAU8WMD1^oeNpdMH;ga`HPBL=j|2U}?b*fxo0KoB5?msz$NSYvSoK(3W z79c0m_zwuX1XyIwAMpMXm?P(d{-jGQ*j&*f0su^;{~hWrl0BIF>Ym|zfk_kW0Komc ze{*gqA@!B$ks-mPxSUUdS%5c@<-u111};G^a_bKu4`Bh`Mhb>po#=QO@+p ytw7SNONaZO`5yrR0Mq}ubPcjT

    Guidelines for Teaching C++

    -

    Version 0.0.2

    +

    Version 0.0.5

    SG20 (ISO C++ Study Group on Education)

    @@ -203,9 +203,9 @@

    <

    The most recent version of this document is available as an online HTML document at: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/latest/.

    The version of the document that you are currently reading is available in the following formats:

      -
    1. online (HTML) format as a single large HTML document: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.2/html [later to be https://cplusplus.github.io/SG20/0.0.2/html?]

    2. -
    3. EPUB format: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.2/guidelines.epub [later to be https:/cplusplus.github.io/SG20/0.0.2/guidelines.epub?]

    4. -
    5. online (HTML) format, split across multiple HTML documents: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.2/html_split/ [later to be https://cplusplus.github.io/SG20/0.0.2/html_split/?] [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

    6. +
    7. online (HTML) format as a single large HTML document: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.5/html [later to be https://cplusplus.github.io/SG20/0.0.5/html?]

    8. +
    9. EPUB format: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.5/guidelines.epub [later to be https:/cplusplus.github.io/SG20/0.0.5/guidelines.epub?]

    10. +
    11. online (HTML) format, split across multiple HTML documents: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.5/html_split/ [later to be https://cplusplus.github.io/SG20/0.0.5/html_split/?] [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

    Older versions of this document are also available. In general version ver is available at https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/ver. For example, version v0.1.0 (assuming that this version exists) would be available at [later to be https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/v0.1.0?].

    2 Disclaimer

    diff --git a/0.0.1/html_split/Advanced.html b/0.0.5/html_split/Advanced.html similarity index 100% rename from 0.0.1/html_split/Advanced.html rename to 0.0.5/html_split/Advanced.html diff --git a/0.0.1/html_split/Background_002fRequired-Knowledge.html b/0.0.5/html_split/Background_002fRequired-Knowledge.html similarity index 100% rename from 0.0.1/html_split/Background_002fRequired-Knowledge.html rename to 0.0.5/html_split/Background_002fRequired-Knowledge.html diff --git a/0.0.1/html_split/Background_002frequired-knowledge.html b/0.0.5/html_split/Background_002frequired-knowledge.html similarity index 100% rename from 0.0.1/html_split/Background_002frequired-knowledge.html rename to 0.0.5/html_split/Background_002frequired-knowledge.html diff --git a/0.0.1/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html b/0.0.5/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html similarity index 100% rename from 0.0.1/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html rename to 0.0.5/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html diff --git a/0.0.1/html_split/Building.html b/0.0.5/html_split/Building.html similarity index 100% rename from 0.0.1/html_split/Building.html rename to 0.0.5/html_split/Building.html diff --git a/0.0.1/html_split/C_002b_002b-object-model-copy-semantics.html b/0.0.5/html_split/C_002b_002b-object-model-copy-semantics.html similarity index 100% rename from 0.0.1/html_split/C_002b_002b-object-model-copy-semantics.html rename to 0.0.5/html_split/C_002b_002b-object-model-copy-semantics.html diff --git a/0.0.1/html_split/Caveats.html b/0.0.5/html_split/Caveats.html similarity index 100% rename from 0.0.1/html_split/Caveats.html rename to 0.0.5/html_split/Caveats.html diff --git a/0.0.1/html_split/Compilation-Model.html b/0.0.5/html_split/Compilation-Model.html similarity index 100% rename from 0.0.1/html_split/Compilation-Model.html rename to 0.0.5/html_split/Compilation-Model.html diff --git a/0.0.1/html_split/Compile_002dTime-Computation.html b/0.0.5/html_split/Compile_002dTime-Computation.html similarity index 100% rename from 0.0.1/html_split/Compile_002dTime-Computation.html rename to 0.0.5/html_split/Compile_002dTime-Computation.html diff --git a/0.0.1/html_split/Context-and-Aim-of-This-Guide.html b/0.0.5/html_split/Context-and-Aim-of-This-Guide.html similarity index 100% rename from 0.0.1/html_split/Context-and-Aim-of-This-Guide.html rename to 0.0.5/html_split/Context-and-Aim-of-This-Guide.html diff --git a/0.0.1/html_split/Contributing-to-This-Document.html b/0.0.5/html_split/Contributing-to-This-Document.html similarity index 100% rename from 0.0.1/html_split/Contributing-to-This-Document.html rename to 0.0.5/html_split/Contributing-to-This-Document.html diff --git a/0.0.2/html_split/Contributors.html b/0.0.5/html_split/Contributors.html similarity index 100% rename from 0.0.2/html_split/Contributors.html rename to 0.0.5/html_split/Contributors.html diff --git a/0.0.1/html_split/Detailed-Information-for-Modules-and-Topics.html b/0.0.5/html_split/Detailed-Information-for-Modules-and-Topics.html similarity index 100% rename from 0.0.1/html_split/Detailed-Information-for-Modules-and-Topics.html rename to 0.0.5/html_split/Detailed-Information-for-Modules-and-Topics.html diff --git a/0.0.1/html_split/Disclaimer.html b/0.0.5/html_split/Disclaimer.html similarity index 100% rename from 0.0.1/html_split/Disclaimer.html rename to 0.0.5/html_split/Disclaimer.html diff --git a/0.0.1/html_split/Error-Handling.html b/0.0.5/html_split/Error-Handling.html similarity index 100% rename from 0.0.1/html_split/Error-Handling.html rename to 0.0.5/html_split/Error-Handling.html diff --git a/0.0.1/html_split/Examples-of-Course-Curricula.html b/0.0.5/html_split/Examples-of-Course-Curricula.html similarity index 100% rename from 0.0.1/html_split/Examples-of-Course-Curricula.html rename to 0.0.5/html_split/Examples-of-Course-Curricula.html diff --git a/0.0.1/html_split/External-ie-Non-Standard-Libraries.html b/0.0.5/html_split/External-ie-Non-Standard-Libraries.html similarity index 100% rename from 0.0.1/html_split/External-ie-Non-Standard-Libraries.html rename to 0.0.5/html_split/External-ie-Non-Standard-Libraries.html diff --git a/0.0.1/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html b/0.0.5/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html similarity index 100% rename from 0.0.1/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html rename to 0.0.5/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html diff --git a/0.0.1/html_split/Foundational-How-and-when-are-copies-made.html b/0.0.5/html_split/Foundational-How-and-when-are-copies-made.html similarity index 100% rename from 0.0.1/html_split/Foundational-How-and-when-are-copies-made.html rename to 0.0.5/html_split/Foundational-How-and-when-are-copies-made.html diff --git a/0.0.1/html_split/Foundational-Using-UDLs.html b/0.0.5/html_split/Foundational-Using-UDLs.html similarity index 100% rename from 0.0.1/html_split/Foundational-Using-UDLs.html rename to 0.0.5/html_split/Foundational-Using-UDLs.html diff --git a/0.0.1/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html b/0.0.5/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html similarity index 100% rename from 0.0.1/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html rename to 0.0.5/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html diff --git a/0.0.1/html_split/Foundational-Writing-requires_002dexpressions.html b/0.0.5/html_split/Foundational-Writing-requires_002dexpressions.html similarity index 100% rename from 0.0.1/html_split/Foundational-Writing-requires_002dexpressions.html rename to 0.0.5/html_split/Foundational-Writing-requires_002dexpressions.html diff --git a/0.0.1/html_split/Functions-default-argument.html b/0.0.5/html_split/Functions-default-argument.html similarity index 100% rename from 0.0.1/html_split/Functions-default-argument.html rename to 0.0.5/html_split/Functions-default-argument.html diff --git a/0.0.1/html_split/Functions-user_002ddefined-literals.html b/0.0.5/html_split/Functions-user_002ddefined-literals.html similarity index 100% rename from 0.0.1/html_split/Functions-user_002ddefined-literals.html rename to 0.0.5/html_split/Functions-user_002ddefined-literals.html diff --git a/0.0.1/html_split/Functions.html b/0.0.5/html_split/Functions.html similarity index 100% rename from 0.0.1/html_split/Functions.html rename to 0.0.5/html_split/Functions.html diff --git a/0.0.1/html_split/Generic-Programming-Templates.html b/0.0.5/html_split/Generic-Programming-Templates.html similarity index 100% rename from 0.0.1/html_split/Generic-Programming-Templates.html rename to 0.0.5/html_split/Generic-Programming-Templates.html diff --git a/0.0.1/html_split/Glossary.html b/0.0.5/html_split/Glossary.html similarity index 100% rename from 0.0.1/html_split/Glossary.html rename to 0.0.5/html_split/Glossary.html diff --git a/0.0.1/html_split/How-To-Contribute.html b/0.0.5/html_split/How-To-Contribute.html similarity index 100% rename from 0.0.1/html_split/How-To-Contribute.html rename to 0.0.5/html_split/How-To-Contribute.html diff --git a/0.0.1/html_split/Inheritance-and-Class-Hierarchies.html b/0.0.5/html_split/Inheritance-and-Class-Hierarchies.html similarity index 100% rename from 0.0.1/html_split/Inheritance-and-Class-Hierarchies.html rename to 0.0.5/html_split/Inheritance-and-Class-Hierarchies.html diff --git a/0.0.1/html_split/License.html b/0.0.5/html_split/License.html similarity index 100% rename from 0.0.1/html_split/License.html rename to 0.0.5/html_split/License.html diff --git a/0.0.1/html_split/Main-Advanced-requirements.html b/0.0.5/html_split/Main-Advanced-requirements.html similarity index 100% rename from 0.0.1/html_split/Main-Advanced-requirements.html rename to 0.0.5/html_split/Main-Advanced-requirements.html diff --git a/0.0.1/html_split/Main-Contracts-and-static_005fassert.html b/0.0.5/html_split/Main-Contracts-and-static_005fassert.html similarity index 100% rename from 0.0.1/html_split/Main-Contracts-and-static_005fassert.html rename to 0.0.5/html_split/Main-Contracts-and-static_005fassert.html diff --git a/0.0.1/html_split/Main-Implementing-user_002ddefined-copy-operations.html b/0.0.5/html_split/Main-Implementing-user_002ddefined-copy-operations.html similarity index 100% rename from 0.0.1/html_split/Main-Implementing-user_002ddefined-copy-operations.html rename to 0.0.5/html_split/Main-Implementing-user_002ddefined-copy-operations.html diff --git a/0.0.1/html_split/Main-implementing-UDLs.html b/0.0.5/html_split/Main-implementing-UDLs.html similarity index 100% rename from 0.0.1/html_split/Main-implementing-UDLs.html rename to 0.0.5/html_split/Main-implementing-UDLs.html diff --git a/0.0.1/html_split/Main-implementing-_002a.html b/0.0.5/html_split/Main-implementing-_002a.html similarity index 100% rename from 0.0.1/html_split/Main-implementing-_002a.html rename to 0.0.5/html_split/Main-implementing-_002a.html diff --git a/0.0.1/html_split/Meta_002derror-handling-static_005fassert.html b/0.0.5/html_split/Meta_002derror-handling-static_005fassert.html similarity index 100% rename from 0.0.1/html_split/Meta_002derror-handling-static_005fassert.html rename to 0.0.5/html_split/Meta_002derror-handling-static_005fassert.html diff --git a/0.0.1/html_split/Module-name-Requires-Expressions.html b/0.0.5/html_split/Module-name-Requires-Expressions.html similarity index 100% rename from 0.0.1/html_split/Module-name-Requires-Expressions.html rename to 0.0.5/html_split/Module-name-Requires-Expressions.html diff --git a/0.0.1/html_split/Motivation.html b/0.0.5/html_split/Motivation.html similarity index 100% rename from 0.0.1/html_split/Motivation.html rename to 0.0.5/html_split/Motivation.html diff --git a/0.0.3/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html b/0.0.5/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html similarity index 84% rename from 0.0.3/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html rename to 0.0.5/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html index d45dda1..c3c4fda 100644 --- a/0.0.3/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html +++ b/0.0.5/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html @@ -54,17 +54,17 @@

    1. online (HTML) format as a single large HTML document: -https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.3/html -[later to be https://cplusplus.github.io/SG20/0.0.3/html?] +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.5/html +[later to be https://cplusplus.github.io/SG20/0.0.5/html?]
    2. EPUB format: -https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.3/guidelines.epub +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.5/guidelines.epub [later to be -https:/cplusplus.github.io/SG20/0.0.3/guidelines.epub?] +https:/cplusplus.github.io/SG20/0.0.5/guidelines.epub?]
    3. online (HTML) format, split across multiple HTML documents: -https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.3/html_split/ -[later to be https://cplusplus.github.io/SG20/0.0.3/html_split/?] +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.5/html_split/ +[later to be https://cplusplus.github.io/SG20/0.0.5/html_split/?] [Note: The support for this format needs more work (in order to beautify and fix linking issues).] diff --git a/0.0.1/html_split/Organization-of-This-Document.html b/0.0.5/html_split/Organization-of-This-Document.html similarity index 100% rename from 0.0.1/html_split/Organization-of-This-Document.html rename to 0.0.5/html_split/Organization-of-This-Document.html diff --git a/0.0.1/html_split/Overview.html b/0.0.5/html_split/Overview.html similarity index 100% rename from 0.0.1/html_split/Overview.html rename to 0.0.5/html_split/Overview.html diff --git a/0.0.1/html_split/Points-to-cover.html b/0.0.5/html_split/Points-to-cover.html similarity index 100% rename from 0.0.1/html_split/Points-to-cover.html rename to 0.0.5/html_split/Points-to-cover.html diff --git a/0.0.1/html_split/Preprocessor.html b/0.0.5/html_split/Preprocessor.html similarity index 100% rename from 0.0.1/html_split/Preprocessor.html rename to 0.0.5/html_split/Preprocessor.html diff --git a/0.0.1/html_split/References-on-Learning-Outcomes.html b/0.0.5/html_split/References-on-Learning-Outcomes.html similarity index 100% rename from 0.0.1/html_split/References-on-Learning-Outcomes.html rename to 0.0.5/html_split/References-on-Learning-Outcomes.html diff --git a/0.0.1/html_split/References.html b/0.0.5/html_split/References.html similarity index 100% rename from 0.0.1/html_split/References.html rename to 0.0.5/html_split/References.html diff --git a/0.0.1/html_split/Software-Design.html b/0.0.5/html_split/Software-Design.html similarity index 100% rename from 0.0.1/html_split/Software-Design.html rename to 0.0.5/html_split/Software-Design.html diff --git a/0.0.1/html_split/Standard-Library.html b/0.0.5/html_split/Standard-Library.html similarity index 100% rename from 0.0.1/html_split/Standard-Library.html rename to 0.0.5/html_split/Standard-Library.html diff --git a/0.0.1/html_split/Student-outcomes.html b/0.0.5/html_split/Student-outcomes.html similarity index 100% rename from 0.0.1/html_split/Student-outcomes.html rename to 0.0.5/html_split/Student-outcomes.html diff --git a/0.0.1/html_split/Summary-of-Modules-and-Topics.html b/0.0.5/html_split/Summary-of-Modules-and-Topics.html similarity index 100% rename from 0.0.1/html_split/Summary-of-Modules-and-Topics.html rename to 0.0.5/html_split/Summary-of-Modules-and-Topics.html diff --git a/0.0.1/html_split/Testing-and-Debugging.html b/0.0.5/html_split/Testing-and-Debugging.html similarity index 100% rename from 0.0.1/html_split/Testing-and-Debugging.html rename to 0.0.5/html_split/Testing-and-Debugging.html diff --git a/0.0.1/html_split/Tooling.html b/0.0.5/html_split/Tooling.html similarity index 100% rename from 0.0.1/html_split/Tooling.html rename to 0.0.5/html_split/Tooling.html diff --git a/0.0.1/html_split/Topic-introduction.html b/0.0.5/html_split/Topic-introduction.html similarity index 100% rename from 0.0.1/html_split/Topic-introduction.html rename to 0.0.5/html_split/Topic-introduction.html diff --git a/0.0.1/html_split/Use-of-This-Document.html b/0.0.5/html_split/Use-of-This-Document.html similarity index 100% rename from 0.0.1/html_split/Use-of-This-Document.html rename to 0.0.5/html_split/Use-of-This-Document.html diff --git a/0.0.1/html_split/User_002dDefined-Types-Classes.html b/0.0.5/html_split/User_002dDefined-Types-Classes.html similarity index 100% rename from 0.0.1/html_split/User_002dDefined-Types-Classes.html rename to 0.0.5/html_split/User_002dDefined-Types-Classes.html diff --git a/0.0.1/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html b/0.0.5/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html similarity index 100% rename from 0.0.1/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html rename to 0.0.5/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html diff --git a/0.0.1/html_split/_0023advanced.html b/0.0.5/html_split/_0023advanced.html similarity index 100% rename from 0.0.1/html_split/_0023advanced.html rename to 0.0.5/html_split/_0023advanced.html diff --git a/0.0.1/html_split/_0023advanced_002d1.html b/0.0.5/html_split/_0023advanced_002d1.html similarity index 100% rename from 0.0.1/html_split/_0023advanced_002d1.html rename to 0.0.5/html_split/_0023advanced_002d1.html diff --git a/0.0.1/html_split/_0023advanced_002d2.html b/0.0.5/html_split/_0023advanced_002d2.html similarity index 100% rename from 0.0.1/html_split/_0023advanced_002d2.html rename to 0.0.5/html_split/_0023advanced_002d2.html diff --git a/0.0.1/html_split/_0023advanced_002d3.html b/0.0.5/html_split/_0023advanced_002d3.html similarity index 100% rename from 0.0.1/html_split/_0023advanced_002d3.html rename to 0.0.5/html_split/_0023advanced_002d3.html diff --git a/0.0.1/html_split/_0023backgroundrequired_002dknowledge.html b/0.0.5/html_split/_0023backgroundrequired_002dknowledge.html similarity index 100% rename from 0.0.1/html_split/_0023backgroundrequired_002dknowledge.html rename to 0.0.5/html_split/_0023backgroundrequired_002dknowledge.html diff --git a/0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d1.html b/0.0.5/html_split/_0023backgroundrequired_002dknowledge_002d1.html similarity index 100% rename from 0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d1.html rename to 0.0.5/html_split/_0023backgroundrequired_002dknowledge_002d1.html diff --git a/0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d2.html b/0.0.5/html_split/_0023backgroundrequired_002dknowledge_002d2.html similarity index 100% rename from 0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d2.html rename to 0.0.5/html_split/_0023backgroundrequired_002dknowledge_002d2.html diff --git a/0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d3.html b/0.0.5/html_split/_0023backgroundrequired_002dknowledge_002d3.html similarity index 100% rename from 0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d3.html rename to 0.0.5/html_split/_0023backgroundrequired_002dknowledge_002d3.html diff --git a/0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d4.html b/0.0.5/html_split/_0023backgroundrequired_002dknowledge_002d4.html similarity index 100% rename from 0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d4.html rename to 0.0.5/html_split/_0023backgroundrequired_002dknowledge_002d4.html diff --git a/0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d5.html b/0.0.5/html_split/_0023backgroundrequired_002dknowledge_002d5.html similarity index 100% rename from 0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d5.html rename to 0.0.5/html_split/_0023backgroundrequired_002dknowledge_002d5.html diff --git a/0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d6.html b/0.0.5/html_split/_0023backgroundrequired_002dknowledge_002d6.html similarity index 100% rename from 0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d6.html rename to 0.0.5/html_split/_0023backgroundrequired_002dknowledge_002d6.html diff --git a/0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d7.html b/0.0.5/html_split/_0023backgroundrequired_002dknowledge_002d7.html similarity index 100% rename from 0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d7.html rename to 0.0.5/html_split/_0023backgroundrequired_002dknowledge_002d7.html diff --git a/0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d8.html b/0.0.5/html_split/_0023backgroundrequired_002dknowledge_002d8.html similarity index 100% rename from 0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d8.html rename to 0.0.5/html_split/_0023backgroundrequired_002dknowledge_002d8.html diff --git a/0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d9.html b/0.0.5/html_split/_0023backgroundrequired_002dknowledge_002d9.html similarity index 100% rename from 0.0.1/html_split/_0023backgroundrequired_002dknowledge_002d9.html rename to 0.0.5/html_split/_0023backgroundrequired_002dknowledge_002d9.html diff --git a/0.0.1/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html b/0.0.5/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html similarity index 100% rename from 0.0.1/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html rename to 0.0.5/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html diff --git a/0.0.1/html_split/_0023building.html b/0.0.5/html_split/_0023building.html similarity index 100% rename from 0.0.1/html_split/_0023building.html rename to 0.0.5/html_split/_0023building.html diff --git a/0.0.1/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html b/0.0.5/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html similarity index 100% rename from 0.0.1/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html rename to 0.0.5/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html diff --git a/0.0.1/html_split/_0023caveats.html b/0.0.5/html_split/_0023caveats.html similarity index 100% rename from 0.0.1/html_split/_0023caveats.html rename to 0.0.5/html_split/_0023caveats.html diff --git a/0.0.1/html_split/_0023caveats_002d1.html b/0.0.5/html_split/_0023caveats_002d1.html similarity index 100% rename from 0.0.1/html_split/_0023caveats_002d1.html rename to 0.0.5/html_split/_0023caveats_002d1.html diff --git a/0.0.1/html_split/_0023caveats_002d2.html b/0.0.5/html_split/_0023caveats_002d2.html similarity index 100% rename from 0.0.1/html_split/_0023caveats_002d2.html rename to 0.0.5/html_split/_0023caveats_002d2.html diff --git a/0.0.1/html_split/_0023caveats_002d3.html b/0.0.5/html_split/_0023caveats_002d3.html similarity index 100% rename from 0.0.1/html_split/_0023caveats_002d3.html rename to 0.0.5/html_split/_0023caveats_002d3.html diff --git a/0.0.1/html_split/_0023caveats_002d4.html b/0.0.5/html_split/_0023caveats_002d4.html similarity index 100% rename from 0.0.1/html_split/_0023caveats_002d4.html rename to 0.0.5/html_split/_0023caveats_002d4.html diff --git a/0.0.1/html_split/_0023caveats_002d5.html b/0.0.5/html_split/_0023caveats_002d5.html similarity index 100% rename from 0.0.1/html_split/_0023caveats_002d5.html rename to 0.0.5/html_split/_0023caveats_002d5.html diff --git a/0.0.1/html_split/_0023caveats_002d6.html b/0.0.5/html_split/_0023caveats_002d6.html similarity index 100% rename from 0.0.1/html_split/_0023caveats_002d6.html rename to 0.0.5/html_split/_0023caveats_002d6.html diff --git a/0.0.1/html_split/_0023caveats_002d7.html b/0.0.5/html_split/_0023caveats_002d7.html similarity index 100% rename from 0.0.1/html_split/_0023caveats_002d7.html rename to 0.0.5/html_split/_0023caveats_002d7.html diff --git a/0.0.1/html_split/_0023caveats_002d8.html b/0.0.5/html_split/_0023caveats_002d8.html similarity index 100% rename from 0.0.1/html_split/_0023caveats_002d8.html rename to 0.0.5/html_split/_0023caveats_002d8.html diff --git a/0.0.1/html_split/_0023caveats_002d9.html b/0.0.5/html_split/_0023caveats_002d9.html similarity index 100% rename from 0.0.1/html_split/_0023caveats_002d9.html rename to 0.0.5/html_split/_0023caveats_002d9.html diff --git a/0.0.1/html_split/_0023compilation_002dmodel.html b/0.0.5/html_split/_0023compilation_002dmodel.html similarity index 100% rename from 0.0.1/html_split/_0023compilation_002dmodel.html rename to 0.0.5/html_split/_0023compilation_002dmodel.html diff --git a/0.0.1/html_split/_0023compile_002dtime_002dcomputation.html b/0.0.5/html_split/_0023compile_002dtime_002dcomputation.html similarity index 100% rename from 0.0.1/html_split/_0023compile_002dtime_002dcomputation.html rename to 0.0.5/html_split/_0023compile_002dtime_002dcomputation.html diff --git a/0.0.1/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html b/0.0.5/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html similarity index 100% rename from 0.0.1/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html rename to 0.0.5/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html diff --git a/0.0.1/html_split/_0023contributing_002dto_002dthis_002ddocument.html b/0.0.5/html_split/_0023contributing_002dto_002dthis_002ddocument.html similarity index 100% rename from 0.0.1/html_split/_0023contributing_002dto_002dthis_002ddocument.html rename to 0.0.5/html_split/_0023contributing_002dto_002dthis_002ddocument.html diff --git a/0.0.1/html_split/_0023contributors.html b/0.0.5/html_split/_0023contributors.html similarity index 100% rename from 0.0.1/html_split/_0023contributors.html rename to 0.0.5/html_split/_0023contributors.html diff --git a/0.0.1/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html b/0.0.5/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html similarity index 100% rename from 0.0.1/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html rename to 0.0.5/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html diff --git a/0.0.1/html_split/_0023disclaimer.html b/0.0.5/html_split/_0023disclaimer.html similarity index 100% rename from 0.0.1/html_split/_0023disclaimer.html rename to 0.0.5/html_split/_0023disclaimer.html diff --git a/0.0.1/html_split/_0023error_002dhandling.html b/0.0.5/html_split/_0023error_002dhandling.html similarity index 100% rename from 0.0.1/html_split/_0023error_002dhandling.html rename to 0.0.5/html_split/_0023error_002dhandling.html diff --git a/0.0.1/html_split/_0023examples_002dof_002dcourse_002dcurricula.html b/0.0.5/html_split/_0023examples_002dof_002dcourse_002dcurricula.html similarity index 100% rename from 0.0.1/html_split/_0023examples_002dof_002dcourse_002dcurricula.html rename to 0.0.5/html_split/_0023examples_002dof_002dcourse_002dcurricula.html diff --git a/0.0.1/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html b/0.0.5/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html similarity index 100% rename from 0.0.1/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html rename to 0.0.5/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html diff --git a/0.0.1/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html b/0.0.5/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html similarity index 100% rename from 0.0.1/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html rename to 0.0.5/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html diff --git a/0.0.1/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html b/0.0.5/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html similarity index 100% rename from 0.0.1/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html rename to 0.0.5/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html diff --git a/0.0.1/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html b/0.0.5/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html similarity index 100% rename from 0.0.1/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html rename to 0.0.5/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html diff --git a/0.0.1/html_split/_0023foundational_002dusing_002dudls.html b/0.0.5/html_split/_0023foundational_002dusing_002dudls.html similarity index 100% rename from 0.0.1/html_split/_0023foundational_002dusing_002dudls.html rename to 0.0.5/html_split/_0023foundational_002dusing_002dudls.html diff --git a/0.0.1/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html b/0.0.5/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html similarity index 100% rename from 0.0.1/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html rename to 0.0.5/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html diff --git a/0.0.1/html_split/_0023functions.html b/0.0.5/html_split/_0023functions.html similarity index 100% rename from 0.0.1/html_split/_0023functions.html rename to 0.0.5/html_split/_0023functions.html diff --git a/0.0.1/html_split/_0023functions_002ddefault_002dargument.html b/0.0.5/html_split/_0023functions_002ddefault_002dargument.html similarity index 100% rename from 0.0.1/html_split/_0023functions_002ddefault_002dargument.html rename to 0.0.5/html_split/_0023functions_002ddefault_002dargument.html diff --git a/0.0.1/html_split/_0023functions_002duser_002ddefined_002dliterals.html b/0.0.5/html_split/_0023functions_002duser_002ddefined_002dliterals.html similarity index 100% rename from 0.0.1/html_split/_0023functions_002duser_002ddefined_002dliterals.html rename to 0.0.5/html_split/_0023functions_002duser_002ddefined_002dliterals.html diff --git a/0.0.1/html_split/_0023generic_002dprogramming_002dtemplates.html b/0.0.5/html_split/_0023generic_002dprogramming_002dtemplates.html similarity index 100% rename from 0.0.1/html_split/_0023generic_002dprogramming_002dtemplates.html rename to 0.0.5/html_split/_0023generic_002dprogramming_002dtemplates.html diff --git a/0.0.1/html_split/_0023glossary.html b/0.0.5/html_split/_0023glossary.html similarity index 100% rename from 0.0.1/html_split/_0023glossary.html rename to 0.0.5/html_split/_0023glossary.html diff --git a/0.0.1/html_split/_0023how_002dto_002dcontribute.html b/0.0.5/html_split/_0023how_002dto_002dcontribute.html similarity index 100% rename from 0.0.1/html_split/_0023how_002dto_002dcontribute.html rename to 0.0.5/html_split/_0023how_002dto_002dcontribute.html diff --git a/0.0.1/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html b/0.0.5/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html similarity index 100% rename from 0.0.1/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html rename to 0.0.5/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html diff --git a/0.0.1/html_split/_0023license.html b/0.0.5/html_split/_0023license.html similarity index 100% rename from 0.0.1/html_split/_0023license.html rename to 0.0.5/html_split/_0023license.html diff --git a/0.0.1/html_split/_0023main_002dadvanced_002drequirements.html b/0.0.5/html_split/_0023main_002dadvanced_002drequirements.html similarity index 100% rename from 0.0.1/html_split/_0023main_002dadvanced_002drequirements.html rename to 0.0.5/html_split/_0023main_002dadvanced_002drequirements.html diff --git a/0.0.1/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html b/0.0.5/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html similarity index 100% rename from 0.0.1/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html rename to 0.0.5/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html diff --git a/0.0.1/html_split/_0023main_002dimplementing.html b/0.0.5/html_split/_0023main_002dimplementing.html similarity index 100% rename from 0.0.1/html_split/_0023main_002dimplementing.html rename to 0.0.5/html_split/_0023main_002dimplementing.html diff --git a/0.0.1/html_split/_0023main_002dimplementing_002dudls.html b/0.0.5/html_split/_0023main_002dimplementing_002dudls.html similarity index 100% rename from 0.0.1/html_split/_0023main_002dimplementing_002dudls.html rename to 0.0.5/html_split/_0023main_002dimplementing_002dudls.html diff --git a/0.0.1/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html b/0.0.5/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html similarity index 100% rename from 0.0.1/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html rename to 0.0.5/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html diff --git a/0.0.1/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html b/0.0.5/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html similarity index 100% rename from 0.0.1/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html rename to 0.0.5/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html diff --git a/0.0.1/html_split/_0023module_002dname_002drequires_002dexpressions.html b/0.0.5/html_split/_0023module_002dname_002drequires_002dexpressions.html similarity index 100% rename from 0.0.1/html_split/_0023module_002dname_002drequires_002dexpressions.html rename to 0.0.5/html_split/_0023module_002dname_002drequires_002dexpressions.html diff --git a/0.0.1/html_split/_0023motivation.html b/0.0.5/html_split/_0023motivation.html similarity index 100% rename from 0.0.1/html_split/_0023motivation.html rename to 0.0.5/html_split/_0023motivation.html diff --git a/0.0.1/html_split/_0023motivation_002d1.html b/0.0.5/html_split/_0023motivation_002d1.html similarity index 100% rename from 0.0.1/html_split/_0023motivation_002d1.html rename to 0.0.5/html_split/_0023motivation_002d1.html diff --git a/0.0.1/html_split/_0023motivation_002d2.html b/0.0.5/html_split/_0023motivation_002d2.html similarity index 100% rename from 0.0.1/html_split/_0023motivation_002d2.html rename to 0.0.5/html_split/_0023motivation_002d2.html diff --git a/0.0.1/html_split/_0023motivation_002d3.html b/0.0.5/html_split/_0023motivation_002d3.html similarity index 100% rename from 0.0.1/html_split/_0023motivation_002d3.html rename to 0.0.5/html_split/_0023motivation_002d3.html diff --git a/0.0.1/html_split/_0023motivation_002d4.html b/0.0.5/html_split/_0023motivation_002d4.html similarity index 100% rename from 0.0.1/html_split/_0023motivation_002d4.html rename to 0.0.5/html_split/_0023motivation_002d4.html diff --git a/0.0.1/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html b/0.0.5/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html similarity index 100% rename from 0.0.1/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html rename to 0.0.5/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html diff --git a/0.0.1/html_split/_0023organization_002dof_002dthis_002ddocument.html b/0.0.5/html_split/_0023organization_002dof_002dthis_002ddocument.html similarity index 100% rename from 0.0.1/html_split/_0023organization_002dof_002dthis_002ddocument.html rename to 0.0.5/html_split/_0023organization_002dof_002dthis_002ddocument.html diff --git a/0.0.1/html_split/_0023overview.html b/0.0.5/html_split/_0023overview.html similarity index 100% rename from 0.0.1/html_split/_0023overview.html rename to 0.0.5/html_split/_0023overview.html diff --git a/0.0.1/html_split/_0023overview_002d1.html b/0.0.5/html_split/_0023overview_002d1.html similarity index 100% rename from 0.0.1/html_split/_0023overview_002d1.html rename to 0.0.5/html_split/_0023overview_002d1.html diff --git a/0.0.1/html_split/_0023overview_002d2.html b/0.0.5/html_split/_0023overview_002d2.html similarity index 100% rename from 0.0.1/html_split/_0023overview_002d2.html rename to 0.0.5/html_split/_0023overview_002d2.html diff --git a/0.0.1/html_split/_0023overview_002d3.html b/0.0.5/html_split/_0023overview_002d3.html similarity index 100% rename from 0.0.1/html_split/_0023overview_002d3.html rename to 0.0.5/html_split/_0023overview_002d3.html diff --git a/0.0.1/html_split/_0023overview_002d4.html b/0.0.5/html_split/_0023overview_002d4.html similarity index 100% rename from 0.0.1/html_split/_0023overview_002d4.html rename to 0.0.5/html_split/_0023overview_002d4.html diff --git a/0.0.1/html_split/_0023points_002dto_002dcover.html b/0.0.5/html_split/_0023points_002dto_002dcover.html similarity index 100% rename from 0.0.1/html_split/_0023points_002dto_002dcover.html rename to 0.0.5/html_split/_0023points_002dto_002dcover.html diff --git a/0.0.1/html_split/_0023points_002dto_002dcover_002d1.html b/0.0.5/html_split/_0023points_002dto_002dcover_002d1.html similarity index 100% rename from 0.0.1/html_split/_0023points_002dto_002dcover_002d1.html rename to 0.0.5/html_split/_0023points_002dto_002dcover_002d1.html diff --git a/0.0.1/html_split/_0023points_002dto_002dcover_002d2.html b/0.0.5/html_split/_0023points_002dto_002dcover_002d2.html similarity index 100% rename from 0.0.1/html_split/_0023points_002dto_002dcover_002d2.html rename to 0.0.5/html_split/_0023points_002dto_002dcover_002d2.html diff --git a/0.0.1/html_split/_0023points_002dto_002dcover_002d3.html b/0.0.5/html_split/_0023points_002dto_002dcover_002d3.html similarity index 100% rename from 0.0.1/html_split/_0023points_002dto_002dcover_002d3.html rename to 0.0.5/html_split/_0023points_002dto_002dcover_002d3.html diff --git a/0.0.1/html_split/_0023points_002dto_002dcover_002d4.html b/0.0.5/html_split/_0023points_002dto_002dcover_002d4.html similarity index 100% rename from 0.0.1/html_split/_0023points_002dto_002dcover_002d4.html rename to 0.0.5/html_split/_0023points_002dto_002dcover_002d4.html diff --git a/0.0.1/html_split/_0023points_002dto_002dcover_002d5.html b/0.0.5/html_split/_0023points_002dto_002dcover_002d5.html similarity index 100% rename from 0.0.1/html_split/_0023points_002dto_002dcover_002d5.html rename to 0.0.5/html_split/_0023points_002dto_002dcover_002d5.html diff --git a/0.0.1/html_split/_0023points_002dto_002dcover_002d6.html b/0.0.5/html_split/_0023points_002dto_002dcover_002d6.html similarity index 100% rename from 0.0.1/html_split/_0023points_002dto_002dcover_002d6.html rename to 0.0.5/html_split/_0023points_002dto_002dcover_002d6.html diff --git a/0.0.1/html_split/_0023points_002dto_002dcover_002d7.html b/0.0.5/html_split/_0023points_002dto_002dcover_002d7.html similarity index 100% rename from 0.0.1/html_split/_0023points_002dto_002dcover_002d7.html rename to 0.0.5/html_split/_0023points_002dto_002dcover_002d7.html diff --git a/0.0.1/html_split/_0023points_002dto_002dcover_002d8.html b/0.0.5/html_split/_0023points_002dto_002dcover_002d8.html similarity index 100% rename from 0.0.1/html_split/_0023points_002dto_002dcover_002d8.html rename to 0.0.5/html_split/_0023points_002dto_002dcover_002d8.html diff --git a/0.0.1/html_split/_0023preprocessor.html b/0.0.5/html_split/_0023preprocessor.html similarity index 100% rename from 0.0.1/html_split/_0023preprocessor.html rename to 0.0.5/html_split/_0023preprocessor.html diff --git a/0.0.1/html_split/_0023references.html b/0.0.5/html_split/_0023references.html similarity index 100% rename from 0.0.1/html_split/_0023references.html rename to 0.0.5/html_split/_0023references.html diff --git a/0.0.1/html_split/_0023references_002don_002dlearning_002doutcomes.html b/0.0.5/html_split/_0023references_002don_002dlearning_002doutcomes.html similarity index 100% rename from 0.0.1/html_split/_0023references_002don_002dlearning_002doutcomes.html rename to 0.0.5/html_split/_0023references_002don_002dlearning_002doutcomes.html diff --git a/0.0.1/html_split/_0023software_002ddesign.html b/0.0.5/html_split/_0023software_002ddesign.html similarity index 100% rename from 0.0.1/html_split/_0023software_002ddesign.html rename to 0.0.5/html_split/_0023software_002ddesign.html diff --git a/0.0.1/html_split/_0023standard_002dlibrary.html b/0.0.5/html_split/_0023standard_002dlibrary.html similarity index 100% rename from 0.0.1/html_split/_0023standard_002dlibrary.html rename to 0.0.5/html_split/_0023standard_002dlibrary.html diff --git a/0.0.1/html_split/_0023student_002doutcomes.html b/0.0.5/html_split/_0023student_002doutcomes.html similarity index 100% rename from 0.0.1/html_split/_0023student_002doutcomes.html rename to 0.0.5/html_split/_0023student_002doutcomes.html diff --git a/0.0.1/html_split/_0023student_002doutcomes_002d1.html b/0.0.5/html_split/_0023student_002doutcomes_002d1.html similarity index 100% rename from 0.0.1/html_split/_0023student_002doutcomes_002d1.html rename to 0.0.5/html_split/_0023student_002doutcomes_002d1.html diff --git a/0.0.1/html_split/_0023student_002doutcomes_002d2.html b/0.0.5/html_split/_0023student_002doutcomes_002d2.html similarity index 100% rename from 0.0.1/html_split/_0023student_002doutcomes_002d2.html rename to 0.0.5/html_split/_0023student_002doutcomes_002d2.html diff --git a/0.0.1/html_split/_0023student_002doutcomes_002d3.html b/0.0.5/html_split/_0023student_002doutcomes_002d3.html similarity index 100% rename from 0.0.1/html_split/_0023student_002doutcomes_002d3.html rename to 0.0.5/html_split/_0023student_002doutcomes_002d3.html diff --git a/0.0.1/html_split/_0023student_002doutcomes_002d4.html b/0.0.5/html_split/_0023student_002doutcomes_002d4.html similarity index 100% rename from 0.0.1/html_split/_0023student_002doutcomes_002d4.html rename to 0.0.5/html_split/_0023student_002doutcomes_002d4.html diff --git a/0.0.1/html_split/_0023student_002doutcomes_002d5.html b/0.0.5/html_split/_0023student_002doutcomes_002d5.html similarity index 100% rename from 0.0.1/html_split/_0023student_002doutcomes_002d5.html rename to 0.0.5/html_split/_0023student_002doutcomes_002d5.html diff --git a/0.0.1/html_split/_0023student_002doutcomes_002d6.html b/0.0.5/html_split/_0023student_002doutcomes_002d6.html similarity index 100% rename from 0.0.1/html_split/_0023student_002doutcomes_002d6.html rename to 0.0.5/html_split/_0023student_002doutcomes_002d6.html diff --git a/0.0.1/html_split/_0023student_002doutcomes_002d7.html b/0.0.5/html_split/_0023student_002doutcomes_002d7.html similarity index 100% rename from 0.0.1/html_split/_0023student_002doutcomes_002d7.html rename to 0.0.5/html_split/_0023student_002doutcomes_002d7.html diff --git a/0.0.1/html_split/_0023student_002doutcomes_002d8.html b/0.0.5/html_split/_0023student_002doutcomes_002d8.html similarity index 100% rename from 0.0.1/html_split/_0023student_002doutcomes_002d8.html rename to 0.0.5/html_split/_0023student_002doutcomes_002d8.html diff --git a/0.0.1/html_split/_0023student_002doutcomes_002d9.html b/0.0.5/html_split/_0023student_002doutcomes_002d9.html similarity index 100% rename from 0.0.1/html_split/_0023student_002doutcomes_002d9.html rename to 0.0.5/html_split/_0023student_002doutcomes_002d9.html diff --git a/0.0.1/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html b/0.0.5/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html similarity index 100% rename from 0.0.1/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html rename to 0.0.5/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html diff --git a/0.0.1/html_split/_0023testing_002dand_002ddebugging.html b/0.0.5/html_split/_0023testing_002dand_002ddebugging.html similarity index 100% rename from 0.0.1/html_split/_0023testing_002dand_002ddebugging.html rename to 0.0.5/html_split/_0023testing_002dand_002ddebugging.html diff --git a/0.0.1/html_split/_0023tooling.html b/0.0.5/html_split/_0023tooling.html similarity index 100% rename from 0.0.1/html_split/_0023tooling.html rename to 0.0.5/html_split/_0023tooling.html diff --git a/0.0.1/html_split/_0023topic_002dintroduction.html b/0.0.5/html_split/_0023topic_002dintroduction.html similarity index 100% rename from 0.0.1/html_split/_0023topic_002dintroduction.html rename to 0.0.5/html_split/_0023topic_002dintroduction.html diff --git a/0.0.1/html_split/_0023topic_002dintroduction_002d1.html b/0.0.5/html_split/_0023topic_002dintroduction_002d1.html similarity index 100% rename from 0.0.1/html_split/_0023topic_002dintroduction_002d1.html rename to 0.0.5/html_split/_0023topic_002dintroduction_002d1.html diff --git a/0.0.1/html_split/_0023topic_002dintroduction_002d2.html b/0.0.5/html_split/_0023topic_002dintroduction_002d2.html similarity index 100% rename from 0.0.1/html_split/_0023topic_002dintroduction_002d2.html rename to 0.0.5/html_split/_0023topic_002dintroduction_002d2.html diff --git a/0.0.1/html_split/_0023topic_002dintroduction_002d3.html b/0.0.5/html_split/_0023topic_002dintroduction_002d3.html similarity index 100% rename from 0.0.1/html_split/_0023topic_002dintroduction_002d3.html rename to 0.0.5/html_split/_0023topic_002dintroduction_002d3.html diff --git a/0.0.1/html_split/_0023topic_002dintroduction_002d4.html b/0.0.5/html_split/_0023topic_002dintroduction_002d4.html similarity index 100% rename from 0.0.1/html_split/_0023topic_002dintroduction_002d4.html rename to 0.0.5/html_split/_0023topic_002dintroduction_002d4.html diff --git a/0.0.1/html_split/_0023use_002dof_002dthis_002ddocument.html b/0.0.5/html_split/_0023use_002dof_002dthis_002ddocument.html similarity index 100% rename from 0.0.1/html_split/_0023use_002dof_002dthis_002ddocument.html rename to 0.0.5/html_split/_0023use_002dof_002dthis_002ddocument.html diff --git a/0.0.1/html_split/_0023user_002ddefined_002dtypes_002dclasses.html b/0.0.5/html_split/_0023user_002ddefined_002dtypes_002dclasses.html similarity index 100% rename from 0.0.1/html_split/_0023user_002ddefined_002dtypes_002dclasses.html rename to 0.0.5/html_split/_0023user_002ddefined_002dtypes_002dclasses.html diff --git a/0.0.1/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html b/0.0.5/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html similarity index 100% rename from 0.0.1/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html rename to 0.0.5/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html diff --git a/0.0.1/html_split/index.html b/0.0.5/html_split/index.html similarity index 100% rename from 0.0.1/html_split/index.html rename to 0.0.5/html_split/index.html diff --git a/0.0.1/html_split/unknown_node.html b/0.0.5/html_split/unknown_node.html similarity index 100% rename from 0.0.1/html_split/unknown_node.html rename to 0.0.5/html_split/unknown_node.html diff --git a/latest/guidelines.epub b/latest/guidelines.epub deleted file mode 100644 index 37560632ffe0c6bd4b4c73e8834650fcf6940713..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31523 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/L@>!>mExV2h2aS$8i=!~g?sLp6*Z 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 diff --git a/latest/html/index.html b/latest/html/index.html deleted file mode 100644 index bf68f9b..0000000 --- a/latest/html/index.html +++ /dev/null @@ -1,1430 +0,0 @@ - - - - - - - Guidelines for Teaching C++ - - - - - - - - - - - - - - - - - - - - - Guidelines for Teaching C++ - - - - - - - -

      - -
      - -
      - -
      - -
      -

      Guidelines for Teaching C++

      - -

      Version 0.0.2

      - -

      SG20 (ISO C++ Study Group on Education)

      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      1 Obtaining This Document: The Most Recent Version and Alternate Formats

      -

      The most recent version of this document is available as an online HTML document at: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/latest/.

      -

      The version of the document that you are currently reading is available in the following formats:

      -
        -
      1. online (HTML) format as a single large HTML document: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.2/html [later to be https://cplusplus.github.io/SG20/0.0.2/html?]

      2. -
      3. EPUB format: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.2/guidelines.epub [later to be https:/cplusplus.github.io/SG20/0.0.2/guidelines.epub?]

      4. -
      5. online (HTML) format, split across multiple HTML documents: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.2/html_split/ [later to be https://cplusplus.github.io/SG20/0.0.2/html_split/?] [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

      6. -
      -

      Older versions of this document are also available. In general version ver is available at https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/ver. For example, version v0.1.0 (assuming that this version exists) would be available at [later to be https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/v0.1.0?].

      -

      2 Disclaimer

      -

      This document is intended as a proof of concept to solicit feedback from others. This document is incomplete. This document likely has at least a few errors.

      -

      3 Context and Aim of This Guide

      -

      This document is intended to serve as a resource for instructors to assist in the preparation of courses on C++ in a variety of settings, including university, college, and industry environments. The main objectives of this document are as follows:

      -
        -
      • to provide guidelines for content to be covered by courses of various difficulty levels on C++ (e.g., topics and learning outcomes)
      • -
      • to note some common misunderstandings and problematic points that may be encountered when teaching particular topics
      • -
      • to suggest resources useful for teaching C++
      • -
      • to present examples of curriculum for specific courses
      • -
      -

      This document does not itself provide a curriculum for a single specific course, but is rather a set of guidelines that can be used to prepare curricula for a wide variety of courses that differ in focus and level of sophistication. (This said, however, some links to other documents with examples of curricula for specific courses may be included herein.) This document only intends to target the teaching of the most recently ratified version of the C++ standard. (This said, however, since older versions of this document are also available, these older versions may be of some use to those who need guidance in older versions of the standard, at least versions that do not predate C++20.)

      -

      4 Use of This Document

      -

      [NOTE: This document follows the same license model as the C++ Core Guidelines. The LICENSE document is taken verbatim from the C++ Core Guidelines.] This document is made available under a MIT-style license. In simple terms, this license permits copying, use, modification, and creation of derivative works. A copy of the license is included in the section LICENSE.

      -

      5 Contributing to This Document

      -

      Contributions to this document are welcome. If you would like to help with this project as a contributor, please read the section How to Contribute.

      -

      6 Organization of This Document

      -

      The various concepts (i.e., ideas) to potentially be covered are partitioned into modules. A module is very broad in scope and consists of numerous topics. [Note: Can I suggest that we use the term “area” or “unit” instead of “module”? I think that these other choices are better and also avoid any potential confusion over what is meant by “module” (i.e., C++ term versus plain English term).]

      -

      For each module, topics related to the module are identified. Then, for each topic, learning outcomes are specified. In order to address a wide variety of courses on C++, each topic is addressed at three proficiency levels. These proficiency levels allow each topic to be covered at more than one level of detail. This allows target audiences with different background and learning objectives to be accommodated. The three proficiency levels are as follows:

      -
        -
      • foundational. This level gives the learner the idea that a facility exists, what benefits it offers, and the basic ways of using it. [Note: Isn’t this just “novice”/“beginner”?]

      • -
      • main. This level shows mainstream uses and techniques. For abstraction and organizational mechanisms it also demonstrates how to build them. This level should also give the learner a basic (but not detailed) understanding of how a facility might be implemented so that the learner can have a first-order understanding of any costs involved. [Note: The term “main” is not very descriptive/helpful. Could I suggest using “intermediate”?]

      • -
      • advanced. This level gives information suitable for an expert. For most topics there is an expert level of knowledge that most programmers rarely need and techniques that require detailed understanding of language rules or library implementation.

      • -
      -

      The remainder of this document is organized as follows. The various topics are listed grouped by module. In cases where a topic might be classified into more than one module, the topic is listed under the module of most direct relevance. This is done in order to avoid duplication of content. (In the case that a topic is equally relevant to multiple modules, the decision of which to select is made by a proverbial coin toss.) The order in which modules and topics are presented is not meant to imply any order of coverage in a course. The order in which items are listed is essentially arbitrary.

      -

      7 Summary of Modules and Topics

      -

      In the sections that follow, the various modules and topics are presented. There is one section per module. For each module, a table listing the various topics in that module is provided. The ID for a topic is linked to the detailed coverage of that topic that comes later in the document. If a topic has any learning outcomes at a given proficiency level, this is indicated by a checkmark (“✔️”). If a topic has no learning outcomes (simply because there are not any, not because the information is missing), this is indicated by an em dash (“—”). In the case that the information for a topic is completely missing, a question mark (“?”) symbol is used.

      -

      [NOTE: These topics are taken mostly from the SG20 GitHub repository. They are not intended to be complete in any sense. In fact, by gathering together all topics in one place where they are easily viewed, it is hoped that missing and unbalanced items will be more obvious.]

      -

      7.1 Compilation Model

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      IDUnitFoundationalMainAdvanced
      [?]Translation Units???
      [?]Headers???
      [?]Modules???
      [?]Name Mangling???
      [?]Phases of Translation???
      [?]Separate Compilation???
      [?]Linkage???
      -

      7.2 Preprocessor

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      IDUnitFoundationalMainAdvanced
      [?]Preprocessor Metaprogramming???
      [?]Inclusion???
      [?]Macros???
      -

      7.3 Basics Types, Objects, Values, Expressions, Statements, and Control-Flow Constructs

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      IDUnitFoundationalMainAdvanced
      [?]Constant Objects???
      [?]Declarations and Definitions???
      [?]Selection Constructs (e.g., if, ternary)???
      [?]Looping Constructs (e.g., for, while, etc.)???
      -

      7.4 Functions

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      IDUnitFoundationalMainAdvanced
      [?]Calling Functions???
      [?]Parameter Passing (e.g., Passing By Value and Reference)???
      [func-args]Default Arguments✔️
      [?]Returning Multiple Values???
      [?]Overloading???
      [udl]User-Defined Literals✔️✔️
      -

      7.5 User-Defined Types (Classes)

      - ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      IDUnitFoundationalMainAdvanced
      [?]Special Member Functions???
      [?]Types???
      [?]Conversions???
      [?]Constructors and Destructors???
      [?]Move/Copy Constructors and Assignment Operators???
      [?]Member Functions???
      [?]Sum Types???
      [?]User-Defined Literals???
      [?]Special Member Functions???
      [?]Guidelines for Special Member Functions (e.g., Rule of Five, Rule of Zero)???
      [copy]Copy Semantics✔️✔️
      [?]Moving and Copying???
      [?]Lambdas???
      -

      7.6 Inheritance and Class Hierarchies

      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      IDUnitFoundationalMainAdvanced
      [?]Virtual Functions???
      [?]Run-Time Type Information???
      -

      7.7 Compile-Time Computation

      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      IDUnitFoundationalMainAdvanced
      [?]Constant Expressions and Constant Evaluation???
      [static-assert]static_assert✔️✔️
      -

      7.8 Generic Programming (Templates)

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      IDUnitFoundationalMainAdvanced
      [?]Concepts???
      [?]SFINAE???
      [?]Template Metaprogramming???
      [?]Function Templates???
      [?]Requires Clauses???
      [req-expr]Requires Expressions✔️✔️
      -

      7.9 Error Handling

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      IDUnitFoundationalMainAdvanced
      [?]Classes of Errors???
      [?]errno???
      [?]Error Codes???
      [?]Exception Handling???
      -

      7.10 Standard Library

      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      IDUnitFoundationalMainAdvanced
      [?]Input/Output (I/O)???
      [?]Containers, Iterators, and Algorithms???
      -

      7.11 External (i.e., Non Standard) Libraries

      - - - - - - - - - - - - - - - - - - - -
      IDUnitFoundationalMainAdvanced
      [?]Graphical User Interfaces???
      -

      7.12 Building

      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      IDUnitFoundationalMainAdvanced
      [?]Software Build Tools???
      [?]Strategies for Handling Build Problems???
      -

      7.13 Testing and Debugging

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      IDUnitFoundationalMainAdvanced
      [?]Source-Level Debuggers???
      [?]Code Sanitizers???
      [?]Test Frameworks???
      [?]Debugging Strategies???
      -

      7.14 Tooling

      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      IDUnitFoundationalMainAdvanced
      [?]Compiler Toolchains???
      [?]IDEs???
      -

      7.15 Software Design

      - - - - - - - - - - - - - - - - - - - -
      IDUnitFoundationalMainAdvanced
      [?]Design by Contract???
      -

      8 Detailed Information for Modules and Topics

      -

      8.1 C++ object model: copy semantics

      -

      Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

      -

      8.1.1 Overview

      -

      Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

      - ---- - - - - - - - - - - - - - - - - - - - - -
      LevelObjectives
      Foundationalunderstanding how and when are copies made
      Mainimplementing user-defined copy operations
      Advancedspecial cases: copy elision
      -

      8.1.2 Motivation

      -

      Why is this important? Why do we want to learn/teach this topic?

      -

      Copy semantics allows the user to define how objects of a class get replicated and interact on a value level.

      -

      8.1.3 Topic introduction

      -

      Very brief introduction to the topic.

      -

      Explains when and how objects are copied.

      -

      8.1.4 Foundational: How and when are copies made

      -

      8.1.4.1 Background/Required Knowledge

      -

      A student is able to: * explain what a C++ type is? [C++ object model: types] * explain what an object is? [C++ object model: objects], [C++ object model: constant objects] * define and understand class invariants?

      -

      It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain special member functions [C++ object model: special member functions]

      -

      8.1.4.2 Student outcomes

      -

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      -

      A student should be able to:

      -
        -
      1. explain what copy semantics accomplish
      2. -
      -
        -
      • establishing “equivalent” object state in another object
      • -
      -
        -
      1. explain difference between copying a reference and copying a value*
      2. -
      3. explain where copies are made
      4. -
      -

      * In other languages these differences are sometimes referred to as shallow and deep copy.

      -

      8.1.4.3 Caveats

      -

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      -
        -
      • Compiler-provided copy operations may result in ownership problems (e.g., char*). These ownership problems can generally be solved by using types whose copy operations have the appropriate semantics, e.g., std::string instead of char* to hold string values.
      • -
      -

      8.1.4.4 Points to cover

      -

      This section lists important details for each point.

      -
        -
      • Principle of copying -
          -
        • Copying of types, which follow the rule of zero
        • -
        • Copying of types, with user defined copy operations
        • -
        • Copying an object does not change the original
        • -
      • -
      • Practical applications -
          -
        • std::unique_ptr (has no copy)
        • -
        • Strings (copies the value)
        • -
      • -
      -

      8.1.5 Main: Implementing user-defined copy operations

      -

      8.1.5.1 Background/Required Knowledge

      -

      A student is able to: * identify special member functions [C++ object model: special member functions]

      -

      It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain the rule of zero [C++ object model: rule-of-zero] * explain the rule of five [C++ object model: rule-of-five]

      -

      8.1.5.2 Student outcomes

      -

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      -

      A student should be able to: * explain when they have to implement the copy operations for their own type * Copy constructor * Copy assignment operator * implement copy operations for their own types * Optional: explain when copying with basic and strong exception guarantees is useful

      -

      8.1.5.3 Caveats

      -

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      -
        -
      • Intricacies when implementing copy operations: -
          -
        • Examples of how not to write copy operations (e.g., C++03 std::auto_ptr)
        • -
      • -
      -

      8.1.5.4 Points to cover

      -

      This section lists important details for each point.

      -
        -
      • Copy constructors and copy assignment operators -
          -
        • How compiler generates default copy operations
        • -
        • =default, =delete (No copy)
        • -
        • How-to write your own copy operations
        • -
        • Rule-of-five
        • -
        • Copy assignment operators can be ref-qualified to avoid assigning into temporary objects.
        • -
      • -
      -

      8.1.6 Advanced

      -

      These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

      -

      When can copies be elided and when does the standard guarantee copy elision. References: * Abseil tip of the Week #166 * cppreference - Copy elision

      -

      8.2 Functions: user-defined literals

      -

      Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

      -

      8.2.1 Overview

      -

      Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

      - ---- - - - - - - - - - - - - - - - - - - - - -
      LevelObjectives
      Foundationalusing and understanding UDLs
      Mainimplementing your own UDLs
      AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
      -

      8.2.2 Motivation

      -

      Why is this important? Why do we want to learn/teach this topic?

      -
        -
      • Allows clearer expression of intent in C++.
      • -
      • std::string: "Hello, world!"s
      • -
      • std::chrono: 3h + 10min + 5s
      • -
      -

      8.2.3 Topic introduction

      -

      Very brief introduction to the topic.

      -
        -
      • Explain the existence of user defined literals. Example: 12min + 17s is terse, expressive and type safe.
      • -
      -

      8.2.4 Foundational: Using UDLs

      -

      8.2.4.1 Background/Required Knowledge

      -

      A student: * knows how to form numeric literals, e.g., 1.5f means a float of value 1.5. * is familiar with the major C++ types: * bool (Boolean type) * int (Integer type) * double (Floating-point type) * std::string (Text type) * std::vector (Collection type) * knows that namespaces exist, and namespace std. * knows what using-declarations and using-directives are. [C++ object model: declarations]

      -

      8.2.4.2 Student outcomes

      -

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      -

      A student should be able to:

      -
        -
      1. use using namespace std::string_literals[1].
      2. -
      3. recognise UDLs in code that they are reading.
      4. -
      5. figure out which UDL definitions for a used type exist.
      6. -
      7. identify parts of the standard library that make use of UDLs.
      8. -
      9. prevent the dangers of temporaries created with "blah"s as well as with std::string{"blah"}.
      10. -
      11. effectively selects the right set of namespaces in using-directives from the sub-namespaces std::literals.
      12. -
      -

      [1]: explain that it’s okay to use a using-directive to “activate” UDLs.

      -

      8.2.4.3 Caveats

      -

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      -
        -
      • A student gets confused by the similarities and differences between built-in suffixes and UDLs and between UDLs from different namespaces.
      • -
      • A student “activates” two suffixes with the same signature from different namespaces.
      • -
      -

      8.2.4.4 Points to cover

      -

      This section lists important details for each point.

      -

      8.2.5 Main: implementing UDLs

      -

      8.2.5.1 Background/Required Knowledge

      -
        -
      • All of the above.
      • -
      -

      8.2.5.2 Student outcomes

      -

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      -

      A student should be able to:

      -
        -
      1. write a UDL operator of their own.
      2. -
      3. separate unrelated UDLs into distinct namespaces.
      4. -
      -

      8.2.5.3 Caveats

      -

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      -

      No caveats at present. #### Points to cover

      -

      This section lists important details for each point.

      -

      No caveats at present. ### Advanced {#udl-advanced}

      -

      These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

      -

      8.3 Functions: default argument

      -

      Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

      -

      8.3.1 Overview

      -

      Functions in C++ may be overloaded with different numbers and types of parameters. It may be of value to specify default arguments for some number of parameters, to allow a caller to avoid specifying arguments that rarely change, or to enable expanding the set of parameters while maintaining backward compatibility with existing callers.

      - ---- - - - - - - - - - - - - - - - - - - - - -
      LevelObjective
      FoundationalDefine and use functions with default arguments
      Main
      Advancedrefinement of default arguments through multiple declarations
      -

      8.3.2 Motivation

      -

      Default arguments allow the omission of arguments with obvious or common values. Also may be utilized to extend an existing function signature without forcing changes to existing calling code.

      -

      8.3.3 Topic introduction

      -

      Explain how default arguments work and how to define them.

      -

      8.3.4 Foundational: Using and defining functions with default arguments

      -

      8.3.4.1 Background/Required Knowledge

      -

      A student is able to:

      - -

      8.3.4.2 Student outcomes

      -

      A student should be able to:

      -
        -
      1. Call to a function with a default argument with or without that argument specified
      2. -
      3. Declare a function with a default argument, and omit the default in the definition’s signature
      4. -
      5. Explain when the lifetime of a default argument begins and ends
      6. -
      -

      8.3.4.3 Caveats

      -
        -
      • When no forward-declaration exists, the definition serves as the declaration
      • -
      • When multiple declarations exist, only one may specify the default for any particular parameter, but multiple declarations may specify the defaults for different parameters.
      • -
      • Additional default values may be specified for other parameters in repeat declarations
      • -
      • Calling an overloaded function with fewer arguments may be ambiguous with regard to an overload with default arguments
      • -
      -

      8.3.4.4 Points to cover

      -
        -
      • Default value may only be specified once for each parameter among all declarations
      • -
      • Default values must start from the rightmost parameter and continue leftward without gaps
      • -
      • Considerations of when to use default arguments vs overload set
      • -
      -

      8.3.5 Main: implementing *

      -

      8.3.5.1 Background/required knowledge

      -
        -
      • All of the above.
      • -
      -

      8.3.5.2 Student outcomes

      -

      A student should be able to:

      -

      8.3.5.3 Caveats

      -

      8.3.5.4 Points to cover

      -

      8.3.6 Advanced

      -

      Subsequent redeclarations of the same function may add default argument values, which are then usable by callers. Though a single parameter cannot be given a default argument twice in the same translation unit, it is legal, though ill-advised, to give the same function different default arguments in different translation units.

      -

      8.4 Module name: Requires Expressions

      -

      Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

      -

      8.4.1 Overview

      - ---- - - - - - - - - - - - - - - - - - - - - -
      LevelObjectives
      FoundationalDefine and use requires-expressions to check satisfaction of expressions by given parameters
      MainDefine and use requires-expressions to check properties of expressions
      Advanced
      -

      8.4.2 Motivation

      -

      Requires-expressions allow a developer to perform compile-time evaluation on the validity of other expressions. These are fundamental to the ability to write concepts. [Compile-time programming: concepts]

      -

      8.5 Topic introduction

      -

      Requires-expressions are compile-time predicates which evaluate to true when their specified set of expressions are all valid for a given set of inputs.

      -

      8.5.1 Foundational: Writing requires-expressions

      -

      8.5.1.1 Background/Required Knowledge

      -

      A student is able to:

      - -

      It is helpful if:

      -
        -
      • The student is aware that attempting to specialize the template with types or values which do not match otherwise unstated assumptions will cause errors within the template.
      • -
      -

      8.5.1.2 Student outcomes

      -

      A student should be able to:

      -
        -
      1. Write a simple-requirement to assert the validity of an expression
      2. -
      3. Write a type-requirement to check the existence of a type by its identifier
      4. -
      5. Write a compound-requirement to test the resulting type of an expression
      6. -
      7. Write a nested-requirement to test the constexpr value of an operation, as opposed to just the syntactic validity
      8. -
      9. Use a requires-expression within a concept, requires-clause, or if constexpr condition
      10. -
      -

      8.5.1.3 Caveats

      -

      To require that expressions, which evaluate to a boolean value like sizeof(t) == 4, evaluate to true a nested-requirement is needed (e.g., requires sizeof(t) == 4;). Omitting the requires results in a simple-requirement, which is satisfied based purely on syntactic validity, not on the result of the operation.

      -

      8.5.1.4 Points to cover

      -
        -
      • All requires-expression requirements terminate with a semicolon.
      • -
      • simple-requirements are used to check that an expression is well-formed.
      • -
      • nested-requirements are introduced with requires and primarily used to check the result of an expression computable by the compiler, including concepts or other requires-expressions.
      • -
      • type-requirements are introduced with typename and used to verify the existence of a type with a particular identifier.
      • -
      • compound-requirements are enclosed in braces and can be used to check the resulting type of an expression.
      • -
      • Checks are performed by the compiler, not at run time.
      • -
      • If covering usage of requires-expression with requires-clause, [Compile-time programming: requires clause] demonstrate requires requires and show how to ever avoid writing it by using a concept. [Compile-time programming: concepts]
      • -
      -

      8.5.2 Main: Advanced requirements

      -

      8.5.2.1 Background/required knowledge

      -
        -
      • All of the above.
      • -
      • Knowledge of noexcept
      • -
      -

      A student is able to:

      - -

      8.5.2.2 Student outcomes

      -

      A student should be able to:

      -
        -
      1. Write compound-requirements which test the noexceptness of an expression.
      2. -
      3. Use a concept as the target of a compound-requirement.
      4. -
      -

      8.5.2.3 Caveats

      -

      8.5.2.4 Points to cover

      -
        -
      • Compound-requirements allow the optional ability to test whether an expression is marked as noexcept, by using a trailing noexcept keyword.
      • -
      - -
        -
      • If the return-type-requirement of a compound-requirement is a concept, that concept is given the resulting type as the first parameter, followed by the specified parameters in the compound-requirement. { ++x } -> C<int> would substitute C<decltype((++x)), int> and check that concept C is satisfied for those parameters.
      • -
      -

      8.5.3 Advanced

      -

      8.6 Meta-error handling: static_assert

      -

      Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

      -

      8.6.1 Overview

      -

      Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

      - ---- - - - - - - - - - - - - - - - - - - - - -
      LevelObjectives
      FoundationalCalling static_assert with a constant expression
      MainUsing static_assert to detect contract violations and improve error messages
      Advanced
      -

      8.6.2 Motivation

      -

      Why is this important? Why do we want to learn/teach this topic?

      -

      static_assert allows the developer to enforce that conditions which can be checked during compilation will force build errors when violated. Additionally, they are the best mechanism by which a developer can pass useful information to other developers regarding what violation occurred or what must be done, instead.

      -

      8.6.3 Topic introduction

      -

      Very brief introduction to the topic.

      -

      static_assert is a compile-time evaluated function that asserts the truth of a supplied predicate, issuing an optional user-supplied error message if the predicate is false.

      -

      8.6.4 Foundational: Calling static_assert with a constant expression

      -

      8.6.4.1 Background/Required Knowledge

      -

      A student:

      -
        -
      • Should be able to explain the difference between code evaluated at compile-time and run-time
      • -
      • Should be able to cite some examples of compile-time known information, such as sizeof(T)
      • -
      -

      8.6.4.2 Student outcomes

      -

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      -

      A student should be able to:

      -
        -
      1. Assert the expected size of a structure using static_assert
      2. -
      -

      8.6.4.3 Caveats

      -

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      -

      8.6.4.4 Points to cover

      -

      This section lists important details for each point.

      -
        -
      • X
      • -
      • In addition to what is wrong, a good error message will inform the user of how to correct it
      • -
      -

      8.6.5 Main: Contracts and static_assert

      -

      8.6.5.1 Background/Required Knowledge

      -
        -
      • All of the above.
      • -
      • General understanding of compile-time requirements
      • -
      -

      8.6.5.2 Student outcomes

      -

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      -

      A student should be able to:

      -
        -
      1. Utilize static_assert to verify preconditions of a meta-function
      2. -
      3. Utilize static_assert to verify the results of meta-functions for known values
      4. -
      -

      8.6.5.3 Caveats

      -

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      -

      8.6.5.4 Points to cover

      -

      This section lists important details for each point.

      -
        -
      • When writing a meta-function, use static_assert to test the results
      • -
      • Write static_assert calls at the scope of the code they are guarding
      • -
      - -

      8.6.6 Advanced

      -

      These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

      -

      9 Examples of Course Curricula

      -

      [NOTE: Anyone have any suggestions of items to add here?] The following are examples of curricula for course on C++: …

      -

      10 License

      -

      [NOTE: This license is copied verbatim from the C++ Core Guidelines.]

      -
      Copyright (c) Standard C++ Foundation and its contributors
      -
      -Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
      -perpetual license to copy, use, modify, and create derivative works from this
      -project for your personal or internal business use only. The above copyright
      -notice and this permission notice shall be included in all copies or
      -substantial portions of the project. This license does not grant permission
      -to use the trade names, trademarks, service marks, or product names of the
      -licensor, except as required for reasonable and customary use in describing
      -the origin of the project.
      -
      -Standard C++ Foundation reserves the right to accept contributions to the
      -project at its discretion.
      -
      -By contributing material to this project, you grant Standard C++ Foundation,
      -and those who receive the material directly or indirectly from Standard C++
      -Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
      -transferrable license to reproduce, prepare derivative works of, publicly
      -display, publicly perform, and distribute your contributed material and such
      -derivative works, and to sublicense any or all of the foregoing rights to third
      -parties for commercial or non-commercial use.  You also grant Standard C++
      -Foundation, and those who receive the material directly or indirectly from
      -Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
      -irrevocable license under your patent claims that directly read on your
      -contributed material to make, have made, use, offer to sell, sell and import
      -or otherwise dispose of the material. You warrant that your material is your
      -original work, or that you have the right to grant the above licenses.
      -
      -THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
      -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
      -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
      -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
      -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
      -OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
      -PROJECT.
      -
      -If you believe that anything in the project infringes your copyright, please
      -contact us at admin@isocpp.org with your contact information and a detailed
      -description of your intellectual property, including a specific URL where you
      -believe your intellectual property is being infringed.
      -
      -

      11 Contributors

      -
      Christopher Di Bella
      -Florian Sattler
      -Michael Adams
      -rwdougla
      -vulder
      -

      12 How To Contribute

      -

      Before attempting to contribute any content for consideration for inclusion in this document, please read the information below and and the referenced documents as appropriate.

      -

      All contributions to this project must be made in accordance with the license in section License. This teaching-guidelines document only offers guidance on teaching C++ as it is specified in the current version of the C++ standard. So, content should be presented relative to the most-recently ratified version of the standard. A detailed explanation of how to present the material for a topic is given in:

      -
        -
      • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.
      • -
      -

      Any potential contributors should ensure that they read this document. The following document may also be helpful in providing some general background on the modular approach to teaching followed herein:

      - -

      In order to prepare content, it is important to understand what learning outcomes are, and how to prepare good ones. Some information on learning outcomes can be found in the References section. The following document offers a concise introduction to learning outcomes:

      - -

      13 Glossary

      -

      Some possible terms to include in the glossary:

      -
        -
      • learning objective
      • -
      • learning outcome
      • -
      -

      14 References

      -

      14.1 References on Learning Outcomes

      - - -
        -
      • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — Standing Document for SG20: Guidelines for Teaching C++ to Beginners. https://wg21.link/p1389.

      • -
      • Christopher Di Bella. P1725R0 — Modular Topic Design. https://wg21.link/p1725.

      • -
      • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.

      • -
      • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study Group: C++ Education. https://wg21.link/p1231.

      • -
      • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 — Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0.

      • -
      -
      -
      - -
      - - diff --git a/latest/html_split/Advanced.html b/latest/html_split/Advanced.html deleted file mode 100644 index c4d659a..0000000 --- a/latest/html_split/Advanced.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - -Advanced (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
      -

      8.1.6 Advanced

      -

      These are important topics that are not expected to be covered but -provide guidance where one can continue to investigate this topic in -more depth. -

      -

      When can copies be elided and when does the standard guarantee copy -elision. References: * Abseil tip of -the Week #166 * -cppreference -- Copy elision -

      - - - - - diff --git a/latest/html_split/Background_002fRequired-Knowledge.html b/latest/html_split/Background_002fRequired-Knowledge.html deleted file mode 100644 index d3ee185..0000000 --- a/latest/html_split/Background_002fRequired-Knowledge.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - -Background/Required Knowledge (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
      -

      8.1.4.1 Background/Required Knowledge

      -

      A student is able to: * explain what a C++ type is? -[C++ object model: types] -* explain what an object is? -[C++ object -model: objects], -[C++ object model: -constant objects] * define and understand class invariants? -

      -

      It helps when a student is able to: * use move semantics -[C++ object model: move -semantics] * explain special member functions -[C++ object model: -special member functions] -

      - - - - - diff --git a/latest/html_split/Background_002frequired-knowledge.html b/latest/html_split/Background_002frequired-knowledge.html deleted file mode 100644 index 79fd94d..0000000 --- a/latest/html_split/Background_002frequired-knowledge.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - -Background/required knowledge (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
      -

      8.3.5.1 Background/required knowledge

      -
        -
      • All of the above. -
      - - - - - - diff --git a/latest/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html b/latest/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html deleted file mode 100644 index 3e850b1..0000000 --- a/latest/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - -Basics Types Objects Values Expressions Statements and Control-Flow Constructs (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
      -

      7.3 Basics Types, Objects, Values, Expressions, Statements, and

      -

      Control-Flow Constructs -

      - - - - - -
      IDUnitFoundationalMainAdvanced
      [‘?’]Constant Objects???
      [‘?’]Declarations and Definitions???
      [‘?’]Selection Constructs (e.g., if, ternary)???
      [‘?’]Looping Constructs (e.g., for, while, etc.)???
      - - - - - - diff --git a/latest/html_split/Building.html b/latest/html_split/Building.html deleted file mode 100644 index e628fd0..0000000 --- a/latest/html_split/Building.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - -Building (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
      -

      7.12 Building

      - - - - -
      IDUnitFoundationalMainAdvanced
      [‘?’]Software Build Tools???
      [‘?’]Strategies for Handling Build Problems???
      - - - - - - diff --git a/latest/html_split/C_002b_002b-object-model-copy-semantics.html b/latest/html_split/C_002b_002b-object-model-copy-semantics.html deleted file mode 100644 index 6d7350c..0000000 --- a/latest/html_split/C_002b_002b-object-model-copy-semantics.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - -C++ object model copy semantics (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
      -

      8.1 C++ object model: copy semantics

      -

      Skeleton descriptions are typeset in italic text, so please -don’t remove these descriptions when editing the topic. -

      - - - - - - - - - - - - - - diff --git a/latest/html_split/Caveats.html b/latest/html_split/Caveats.html deleted file mode 100644 index c5303c9..0000000 --- a/latest/html_split/Caveats.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - -Caveats (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
      -

      8.1.4.3 Caveats

      -

      This section mentions subtle points to understand, like anything -resulting in implementation-defined, unspecified, or undefined -behavior. -

      -
        -
      • Compiler-provided copy operations may result in ownership problems -(e.g., char*). These ownership problems can generally be solved -by using types whose copy operations have the appropriate semantics, -e.g., std::string instead of char* to hold string values. -
      - - - - - - diff --git a/latest/html_split/Compilation-Model.html b/latest/html_split/Compilation-Model.html deleted file mode 100644 index de11703..0000000 --- a/latest/html_split/Compilation-Model.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - -Compilation Model (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
      -

      7.1 Compilation Model

      - - - - - - - - - -
      IDUnitFoundationalMainAdvanced
      [‘?’]Translation Units???
      [‘?’]Headers???
      [‘?’]Modules???
      [‘?’]Name Mangling???
      [‘?’]Phases of Translation???
      [‘?’]Separate Compilation???
      [‘?’]Linkage???
      - - - - - - diff --git a/latest/html_split/Compile_002dTime-Computation.html b/latest/html_split/Compile_002dTime-Computation.html deleted file mode 100644 index b9aaa0e..0000000 --- a/latest/html_split/Compile_002dTime-Computation.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - -Compile-Time Computation (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
      -

      7.7 Compile-Time Computation

      - - - - -
      IDUnitFoundationalMainAdvanced
      [‘?’]Constant Expressions and Constant Evaluation???
      [‘static-assert’]static_assert‘✔️’‘✔️’
      - - - - - - diff --git a/latest/html_split/Context-and-Aim-of-This-Guide.html b/latest/html_split/Context-and-Aim-of-This-Guide.html deleted file mode 100644 index 60efa61..0000000 --- a/latest/html_split/Context-and-Aim-of-This-Guide.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - -Context and Aim of This Guide (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
      -

      -Next: , Previous: , Up: Top   [Contents]

      -
      -
      -

      3 Context and Aim of This Guide

      -

      This document is intended to serve as a resource for instructors to -assist in the preparation of courses on C++ in a variety of settings, -including university, college, and industry environments. The main -objectives of this document are as follows: -

      -
        -
      • to provide guidelines for content to be covered by courses of various -difficulty levels on C++ (e.g., topics and learning outcomes) -
      • to note some common misunderstandings and problematic points that may be -encountered when teaching particular topics -
      • to suggest resources useful for teaching C++ -
      • to present examples of curriculum for specific courses -
      - -

      This document does not itself provide a curriculum for a single specific -course, but is rather a set of guidelines that can be used to prepare -curricula for a wide variety of courses that differ in focus and level -of sophistication. (This said, however, some links to other documents -with examples of curricula for specific courses may be included herein.) -This document only intends to target the teaching of the most recently -ratified version of the C++ standard. (This said, however, since older -versions of this document are also available, these older versions may -be of some use to those who need guidance in older versions of the -standard, at least versions that do not predate C++20.) -

      - - - - - diff --git a/latest/html_split/Contributing-to-This-Document.html b/latest/html_split/Contributing-to-This-Document.html deleted file mode 100644 index eac6c28..0000000 --- a/latest/html_split/Contributing-to-This-Document.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - -Contributing to This Document (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
      -

      5 Contributing to This Document

      -

      Contributions to this document are welcome. If you would like to help -with this project as a contributor, please read the section -‘How to Contribute’. -

      - - - - - diff --git a/latest/html_split/Contributors.html b/latest/html_split/Contributors.html deleted file mode 100644 index 8adb4b1..0000000 --- a/latest/html_split/Contributors.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - -Contributors (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
      -

      -Next: , Previous: , Up: Top   [Contents]

      -
      -
      -

      11 Contributors

      - -
      Christopher Di Bella
      -Florian Sattler
      -Michael Adams
      -rwdougla
      -vulder
      -
      - - - - - diff --git a/latest/html_split/Detailed-Information-for-Modules-and-Topics.html b/latest/html_split/Detailed-Information-for-Modules-and-Topics.html deleted file mode 100644 index c8c9fcd..0000000 --- a/latest/html_split/Detailed-Information-for-Modules-and-Topics.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -Detailed Information for Modules and Topics (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
      -

      8 Detailed Information for Modules and Topics

      - - - - - - - - - - - - - - - diff --git a/latest/html_split/Disclaimer.html b/latest/html_split/Disclaimer.html deleted file mode 100644 index a911983..0000000 --- a/latest/html_split/Disclaimer.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - -Disclaimer (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
      -

      2 Disclaimer

      -

      This document is intended as a proof of concept to solicit feedback from -others. This document is incomplete. This document likely has at least a -few errors. -

      - - - - - diff --git a/latest/html_split/Error-Handling.html b/latest/html_split/Error-Handling.html deleted file mode 100644 index 1f8d3e0..0000000 --- a/latest/html_split/Error-Handling.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - -Error Handling (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
      -

      7.9 Error Handling

      - - - - - - -
      IDUnitFoundationalMainAdvanced
      [‘?’]Classes of Errors???
      [‘?’]errno???
      [‘?’]Error Codes???
      [‘?’]Exception Handling???
      - - - - - - diff --git a/latest/html_split/Examples-of-Course-Curricula.html b/latest/html_split/Examples-of-Course-Curricula.html deleted file mode 100644 index 64eb64b..0000000 --- a/latest/html_split/Examples-of-Course-Curricula.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - -Examples of Course Curricula (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
      -

      9 Examples of Course Curricula

      -

      [NOTE: Anyone have any suggestions of items to add here?] The -following are examples of curricula for course on C++: … -

      - - - - - diff --git a/latest/html_split/External-ie-Non-Standard-Libraries.html b/latest/html_split/External-ie-Non-Standard-Libraries.html deleted file mode 100644 index 2bf081e..0000000 --- a/latest/html_split/External-ie-Non-Standard-Libraries.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - -External ie Non Standard Libraries (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
      -

      7.11 External (i.e., Non Standard) Libraries

      - - - -
      IDUnitFoundationalMainAdvanced
      [‘?’]Graphical User Interfaces???
      - - - - - - diff --git a/latest/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html b/latest/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html deleted file mode 100644 index ce2c1b0..0000000 --- a/latest/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - -Foundational Calling static_assert with a constant expression (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - -
      -

      8.6.4 Foundational: Calling static_assert with a constant

      -

      expression -

      - - - - - - - - - - - - diff --git a/latest/html_split/Foundational-How-and-when-are-copies-made.html b/latest/html_split/Foundational-How-and-when-are-copies-made.html deleted file mode 100644 index 4cec33b..0000000 --- a/latest/html_split/Foundational-How-and-when-are-copies-made.html +++ /dev/null @@ -1,63 +0,0 @@ - - - - - -Foundational How and when are copies made (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
      -

      8.1.4 Foundational: How and when are copies made

      - - - - - - - - - - - - - diff --git a/latest/html_split/Foundational-Using-UDLs.html b/latest/html_split/Foundational-Using-UDLs.html deleted file mode 100644 index adb461e..0000000 --- a/latest/html_split/Foundational-Using-UDLs.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - -Foundational Using UDLs (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - -
      -

      8.2.4 Foundational: Using UDLs

      - - - - - - - - - - - - - diff --git a/latest/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html b/latest/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html deleted file mode 100644 index e37a992..0000000 --- a/latest/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - -Foundational Using and defining functions with default arguments (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - -
      -

      8.3.4 Foundational: Using and defining functions with default

      -

      arguments -

      - - - - - - - - - - - - diff --git a/latest/html_split/Foundational-Writing-requires_002dexpressions.html b/latest/html_split/Foundational-Writing-requires_002dexpressions.html deleted file mode 100644 index 6846c6e..0000000 --- a/latest/html_split/Foundational-Writing-requires_002dexpressions.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - -Foundational Writing requires-expressions (Guidelines for Teaching C++) - - - - - - - - - - - - - - - -
      -

      8.5.1 Foundational: Writing requires-expressions

      - - - - - - - - - - - - - diff --git a/latest/html_split/Functions-default-argument.html b/latest/html_split/Functions-default-argument.html deleted file mode 100644 index 2571ca9..0000000 --- a/latest/html_split/Functions-default-argument.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -Functions default argument (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - -
      -

      8.3 Functions: default argument

      -

      Skeleton descriptions are typeset in italic text, so please -don’t remove these descriptions when editing the topic. -

      - - - - - - - - - - - - - - diff --git a/latest/html_split/Functions-user_002ddefined-literals.html b/latest/html_split/Functions-user_002ddefined-literals.html deleted file mode 100644 index 7e41de9..0000000 --- a/latest/html_split/Functions-user_002ddefined-literals.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - - -Functions user-defined literals (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
      -

      8.2 Functions: user-defined literals

      -

      Skeleton descriptions are typeset in italic text, so please -don’t remove these descriptions when editing the topic. -

      - - - - - - - - - - - - - diff --git a/latest/html_split/Functions.html b/latest/html_split/Functions.html deleted file mode 100644 index 82175a5..0000000 --- a/latest/html_split/Functions.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - -Functions (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
      -

      7.4 Functions

      - - - - - - - - -
      IDUnitFoundationalMainAdvanced
      [‘?’]Calling Functions???
      [‘?’]Parameter Passing (e.g., Passing By Value and Reference)???
      [‘func-args’]Default Arguments‘✔️’
      [‘?’]Returning Multiple Values???
      [‘?’]Overloading???
      [‘udl’]User-Defined Literals‘✔️’‘✔️’
      - - - - - - diff --git a/latest/html_split/Generic-Programming-Templates.html b/latest/html_split/Generic-Programming-Templates.html deleted file mode 100644 index 1a22cd7..0000000 --- a/latest/html_split/Generic-Programming-Templates.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - -Generic Programming Templates (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
      -

      7.8 Generic Programming (Templates)

      - - - - - - - - -
      IDUnitFoundationalMainAdvanced
      [‘?’]Concepts???
      [‘?’]SFINAE???
      [‘?’]Template Metaprogramming???
      [‘?’]Function Templates???
      [‘?’]Requires Clauses???
      [‘req-expr’]Requires Expressions‘✔️’‘✔️’
      - - - - - - diff --git a/latest/html_split/Glossary.html b/latest/html_split/Glossary.html deleted file mode 100644 index 2bf24f2..0000000 --- a/latest/html_split/Glossary.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - -Glossary (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
      -

      -Next: , Previous: , Up: Top   [Contents]

      -
      -
      -

      13 Glossary

      -

      Some possible terms to include in the glossary: -

      -
        -
      • learning objective -
      • learning outcome -
      - - - - - - diff --git a/latest/html_split/How-To-Contribute.html b/latest/html_split/How-To-Contribute.html deleted file mode 100644 index f1963d5..0000000 --- a/latest/html_split/How-To-Contribute.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - -How To Contribute (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
      -

      -Next: , Previous: , Up: Top   [Contents]

      -
      -
      -

      12 How To Contribute

      -

      Before attempting to contribute any content for consideration for -inclusion in this document, please read the information below and and -the referenced documents as appropriate. -

      -

      All contributions to this project must be made in accordance with the -license in section License. This teaching-guidelines -document only offers guidance on teaching C++ as it is specified in the -current version of the C++ standard. So, content should be presented -relative to the most-recently ratified version of the standard. A -detailed explanation of how to present the material for a topic is given -in: -

      -
        -
      • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to -structure a teaching topic. https://wg21.link/p2193. -
      - -

      Any potential contributors should ensure that they read this document. -The following document may also be helpful in providing some general -background on the modular approach to teaching followed herein: -

      - - -

      In order to prepare content, it is important to understand what learning -outcomes are, and how to prepare good ones. Some information on learning -outcomes can be found in the References section. The -following document offers a concise introduction to learning outcomes: -

      - - - - - - - diff --git a/latest/html_split/Inheritance-and-Class-Hierarchies.html b/latest/html_split/Inheritance-and-Class-Hierarchies.html deleted file mode 100644 index 1a394b0..0000000 --- a/latest/html_split/Inheritance-and-Class-Hierarchies.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - -Inheritance and Class Hierarchies (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
      -

      7.6 Inheritance and Class Hierarchies

      - - - - -
      IDUnitFoundationalMainAdvanced
      [‘?’]Virtual Functions???
      [‘?’]Run-Time Type Information???
      - - - - - - diff --git a/latest/html_split/License.html b/latest/html_split/License.html deleted file mode 100644 index 38d2d8d..0000000 --- a/latest/html_split/License.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - -License (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
      -

      -Next: , Previous: , Up: Top   [Contents]

      -
      -
      -

      10 License

      -

      [NOTE: This license is copied verbatim from the C++ Core -Guidelines.] -

      -
      Copyright (c) Standard C++ Foundation and its contributors
      -
      -Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
      -perpetual license to copy, use, modify, and create derivative works from this
      -project for your personal or internal business use only. The above copyright
      -notice and this permission notice shall be included in all copies or
      -substantial portions of the project. This license does not grant permission
      -to use the trade names, trademarks, service marks, or product names of the
      -licensor, except as required for reasonable and customary use in describing
      -the origin of the project.
      -
      -Standard C++ Foundation reserves the right to accept contributions to the
      -project at its discretion.
      -
      -By contributing material to this project, you grant Standard C++ Foundation,
      -and those who receive the material directly or indirectly from Standard C++
      -Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
      -transferrable license to reproduce, prepare derivative works of, publicly
      -display, publicly perform, and distribute your contributed material and such
      -derivative works, and to sublicense any or all of the foregoing rights to third
      -parties for commercial or non-commercial use.  You also grant Standard C++
      -Foundation, and those who receive the material directly or indirectly from
      -Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
      -irrevocable license under your patent claims that directly read on your
      -contributed material to make, have made, use, offer to sell, sell and import
      -or otherwise dispose of the material. You warrant that your material is your
      -original work, or that you have the right to grant the above licenses.
      -
      -THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
      -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
      -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
      -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
      -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
      -OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
      -PROJECT.
      -
      -If you believe that anything in the project infringes your copyright, please
      -contact us at admin@isocpp.org with your contact information and a detailed
      -description of your intellectual property, including a specific URL where you
      -believe your intellectual property is being infringed.
      -
      -
      -
      -

      -Next: , Previous: , Up: Top   [Contents]

      -
      - - - - - diff --git a/latest/html_split/Main-Advanced-requirements.html b/latest/html_split/Main-Advanced-requirements.html deleted file mode 100644 index 6c4ac0e..0000000 --- a/latest/html_split/Main-Advanced-requirements.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - -Main Advanced requirements (Guidelines for Teaching C++) - - - - - - - - - - - - - - - -
      -

      8.5.2 Main: Advanced requirements

      - - - - - - - - - - - - - diff --git a/latest/html_split/Main-Contracts-and-static_005fassert.html b/latest/html_split/Main-Contracts-and-static_005fassert.html deleted file mode 100644 index 6c0ba46..0000000 --- a/latest/html_split/Main-Contracts-and-static_005fassert.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - -Main Contracts and static_assert (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - -
      -

      8.6.5 Main: Contracts and static_assert

      - - - - - - - - - - - - - diff --git a/latest/html_split/Main-Implementing-user_002ddefined-copy-operations.html b/latest/html_split/Main-Implementing-user_002ddefined-copy-operations.html deleted file mode 100644 index e38dfd6..0000000 --- a/latest/html_split/Main-Implementing-user_002ddefined-copy-operations.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - -Main Implementing user-defined copy operations (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
      -

      8.1.5 Main: Implementing user-defined copy operations

      - - - - - - - - - - - - - diff --git a/latest/html_split/Main-implementing-UDLs.html b/latest/html_split/Main-implementing-UDLs.html deleted file mode 100644 index 1f6f381..0000000 --- a/latest/html_split/Main-implementing-UDLs.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - -Main implementing UDLs (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - -
      -

      8.2.5 Main: implementing UDLs

      - - - - - - - - - - - - diff --git a/latest/html_split/Main-implementing-_002a.html b/latest/html_split/Main-implementing-_002a.html deleted file mode 100644 index b661f2d..0000000 --- a/latest/html_split/Main-implementing-_002a.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - -Main implementing * (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
      -

      8.3.5 Main: implementing *

      - - - - - - - - - - - - - diff --git a/latest/html_split/Meta_002derror-handling-static_005fassert.html b/latest/html_split/Meta_002derror-handling-static_005fassert.html deleted file mode 100644 index f81a34e..0000000 --- a/latest/html_split/Meta_002derror-handling-static_005fassert.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -Meta-error handling static_assert (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - -
      -

      8.6 Meta-error handling: static_assert

      -

      Skeleton descriptions are typeset in italic text, so please -don’t remove these descriptions when editing the topic. -

      - - - - - - - - - - - - - - diff --git a/latest/html_split/Module-name-Requires-Expressions.html b/latest/html_split/Module-name-Requires-Expressions.html deleted file mode 100644 index 8bab76c..0000000 --- a/latest/html_split/Module-name-Requires-Expressions.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - -Module name Requires Expressions (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - -
      -

      8.4 Module name: Requires Expressions

      -

      Skeleton descriptions are typeset in italic text, so please -don’t remove these descriptions when editing the topic. -

      - - - - - - - - - - diff --git a/latest/html_split/Motivation.html b/latest/html_split/Motivation.html deleted file mode 100644 index 40b0ec9..0000000 --- a/latest/html_split/Motivation.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - -Motivation (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
      -

      8.1.2 Motivation

      -

      Why is this important? Why do we want to learn/teach this -topic? -

      -

      Copy semantics allows the user to define how objects of a class get -replicated and interact on a value level. -

      - - - - - diff --git a/latest/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html b/latest/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html deleted file mode 100644 index a235793..0000000 --- a/latest/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - -Obtaining This Document The Most Recent Version and Alternate Formats (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
      -

      -Next: , Previous: , Up: Top   [Contents]

      -
      -
      -

      1 Obtaining This Document: The Most Recent Version and Alternate

      -

      Formats -The most recent version of this document is available as an online HTML -document at: -https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/latest/. -

      -

      The version of the document that you are currently reading is available -in the following formats: -

      -
        -
      1. online (HTML) format as a single large HTML document: -https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.2/html -[later to be https://cplusplus.github.io/SG20/0.0.2/html?] - -
      2. EPUB format: -https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.2/guidelines.epub -[later to be -https:/cplusplus.github.io/SG20/0.0.2/guidelines.epub?] - -
      3. online (HTML) format, split across multiple HTML documents: -https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.2/html_split/ -[later to be https://cplusplus.github.io/SG20/0.0.2/html_split/?] -[Note: The support for this format needs more work (in order to -beautify and fix linking issues).] - -
      - -

      Older versions of this document are also available. In general version -ver is available at -https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/ver. -For example, version v0.1.0 (assuming that this version exists) would be -available at [later to be -https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/v0.1.0?]. -

      - - - - - diff --git a/latest/html_split/Organization-of-This-Document.html b/latest/html_split/Organization-of-This-Document.html deleted file mode 100644 index 3e48985..0000000 --- a/latest/html_split/Organization-of-This-Document.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - -Organization of This Document (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
      -

      6 Organization of This Document

      -

      The various concepts (i.e., ideas) to potentially be covered are -partitioned into modules. A module is very broad in scope and consists -of numerous topics. [Note: Can I suggest that we use the term -“area” or “unit” instead of “module”? I think that these other -choices are better and also avoid any potential confusion over what is -meant by “module” (i.e., C++ term versus plain English term).] -

      -

      For each module, topics related to the module are identified. Then, for -each topic, learning outcomes are specified. In order to address a wide -variety of courses on C++, each topic is addressed at three proficiency -levels. These proficiency levels allow each topic to be covered at more -than one level of detail. This allows target audiences with different -background and learning objectives to be accommodated. The three -proficiency levels are as follows: -

      -
        -
      • foundational. This level gives the learner the idea that a facility -exists, what benefits it offers, and the basic ways of using it. -[Note: Isn’t this just “novice”/“beginner”?] - -
      • main. This level shows mainstream uses and techniques. For abstraction -and organizational mechanisms it also demonstrates how to build them. -This level should also give the learner a basic (but not detailed) -understanding of how a facility might be implemented so that the learner -can have a first-order understanding of any costs involved. -[Note: The term “main” is not very descriptive/helpful. Could -I suggest using “intermediate”?] - -
      • advanced. This level gives information suitable for an expert. For most -topics there is an expert level of knowledge that most programmers -rarely need and techniques that require detailed understanding of -language rules or library implementation. - -
      - -

      The remainder of this document is organized as follows. The various -topics are listed grouped by module. In cases where a topic might be -classified into more than one module, the topic is listed under the -module of most direct relevance. This is done in order to avoid -duplication of content. (In the case that a topic is equally relevant to -multiple modules, the decision of which to select is made by a -proverbial coin toss.) The order in which modules and topics are -presented is not meant to imply any order of coverage in a course. The -order in which items are listed is essentially arbitrary. -

      -
      - - - - - - diff --git a/latest/html_split/Overview.html b/latest/html_split/Overview.html deleted file mode 100644 index be44bfa..0000000 --- a/latest/html_split/Overview.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - -Overview (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
      -

      8.1.1 Overview

      -

      Provides a short natural language abstract of the module’s -contents. Specifies the different levels of teaching. -

      - - - - - -
      LevelObjectives
      Foundationalunderstanding how and when are copies made
      Mainimplementing user-defined copy operations
      Advancedspecial cases: copy elision
      - - - - - - diff --git a/latest/html_split/Points-to-cover.html b/latest/html_split/Points-to-cover.html deleted file mode 100644 index ba4b5cc..0000000 --- a/latest/html_split/Points-to-cover.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - -Points to cover (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
      -

      8.1.4.4 Points to cover

      -

      This section lists important details for each point. -

      -
        -
      • Principle of copying -
          -
        • Copying of types, which follow the rule of zero -
        • Copying of types, with user defined copy operations -
        • Copying an object does not change the original -
        - -
      • Practical applications -
          -
        • std::unique_ptr (has no copy) -
        • Strings (copies the value) -
        - -
      - - - - - - diff --git a/latest/html_split/Preprocessor.html b/latest/html_split/Preprocessor.html deleted file mode 100644 index 345e396..0000000 --- a/latest/html_split/Preprocessor.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - -Preprocessor (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
      -

      7.2 Preprocessor

      - - - - - -
      IDUnitFoundationalMainAdvanced
      [‘?’]Preprocessor Metaprogramming???
      [‘?’]Inclusion???
      [‘?’]Macros???
      - - - - - - diff --git a/latest/html_split/References-on-Learning-Outcomes.html b/latest/html_split/References-on-Learning-Outcomes.html deleted file mode 100644 index 7b74cad..0000000 --- a/latest/html_split/References-on-Learning-Outcomes.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - - -References on Learning Outcomes (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
      -

      14.1 References on Learning Outcomes

      - - - - - - - diff --git a/latest/html_split/References.html b/latest/html_split/References.html deleted file mode 100644 index f595be2..0000000 --- a/latest/html_split/References.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - -References (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
      -

      -Previous: , Up: Top   [Contents]

      -
      -
      -

      14 References

      - - - - - - - - - - - diff --git a/latest/html_split/Software-Design.html b/latest/html_split/Software-Design.html deleted file mode 100644 index 6b4f6c8..0000000 --- a/latest/html_split/Software-Design.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - -Software Design (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
      -

      7.15 Software Design

      - - - -
      IDUnitFoundationalMainAdvanced
      [‘?’]Design by Contract???
      - - - - - - diff --git a/latest/html_split/Standard-Library.html b/latest/html_split/Standard-Library.html deleted file mode 100644 index c80c7fc..0000000 --- a/latest/html_split/Standard-Library.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - -Standard Library (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
      -

      7.10 Standard Library

      - - - - -
      IDUnitFoundationalMainAdvanced
      [‘?’]Input/Output (I/O)???
      [‘?’]Containers, Iterators, and Algorithms???
      - - - - - - diff --git a/latest/html_split/Student-outcomes.html b/latest/html_split/Student-outcomes.html deleted file mode 100644 index c604549..0000000 --- a/latest/html_split/Student-outcomes.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - - -Student outcomes (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
      -

      8.1.4.2 Student outcomes

      -

      A list of things “a student should be able to” after the -curriculum. The next word should be an action word and testable -in an exam. Max 5 items. -

      -

      A student should be able to: -

      -
        -
      1. explain what copy semantics accomplish -
      - -
        -
      • establishing “equivalent” object state in another object -
      - -
        -
      1. explain difference between copying a reference and copying a value* -
      2. explain where copies are made -
      - -

      * In other languages these differences are sometimes referred to as -shallow and deep copy. -

      - - - - - diff --git a/latest/html_split/Summary-of-Modules-and-Topics.html b/latest/html_split/Summary-of-Modules-and-Topics.html deleted file mode 100644 index 26b69be..0000000 --- a/latest/html_split/Summary-of-Modules-and-Topics.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - -Summary of Modules and Topics (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
      -

      7 Summary of Modules and Topics

      -

      In the sections that follow, the various modules and topics are -presented. There is one section per module. For each module, a table -listing the various topics in that module is provided. The ID for a -topic is linked to the detailed coverage of that topic that comes later -in the document. If a topic has any learning outcomes at a given -proficiency level, this is indicated by a checkmark (“✔️”). If a topic -has no learning outcomes (simply because there are not any, not because -the information is missing), this is indicated by an em dash (“—”). -In the case that the information for a topic is completely missing, a -question mark (“?”) symbol is used. -

      -

      [NOTE: These topics are taken mostly from the SG20 GitHub -repository. They are not intended to be complete in any sense. In fact, -by gathering together all topics in one place where they are easily -viewed, it is hoped that missing and unbalanced items will be more -obvious.] -

      - - - - - - - - - - - - - - - - - - -
      - - - - - - diff --git a/latest/html_split/Testing-and-Debugging.html b/latest/html_split/Testing-and-Debugging.html deleted file mode 100644 index da60211..0000000 --- a/latest/html_split/Testing-and-Debugging.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - -Testing and Debugging (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
      -

      -Next: , Previous: , Up: Summary of Modules and Topics   [Contents]

      -
      -
      -

      7.13 Testing and Debugging

      - - - - - - -
      IDUnitFoundationalMainAdvanced
      [‘?’]Source-Level Debuggers???
      [‘?’]Code Sanitizers???
      [‘?’]Test Frameworks???
      [‘?’]Debugging Strategies???
      - - - - - - diff --git a/latest/html_split/Tooling.html b/latest/html_split/Tooling.html deleted file mode 100644 index 43c3b2f..0000000 --- a/latest/html_split/Tooling.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - -Tooling (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
      -

      7.14 Tooling

      - - - - -
      IDUnitFoundationalMainAdvanced
      [‘?’]Compiler Toolchains???
      [‘?’]IDEs???
      - - - - - - diff --git a/latest/html_split/Topic-introduction.html b/latest/html_split/Topic-introduction.html deleted file mode 100644 index fff97f2..0000000 --- a/latest/html_split/Topic-introduction.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - -Topic introduction (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
      -

      8.1.3 Topic introduction

      -

      Very brief introduction to the topic. -

      -

      Explains when and how objects are copied. -

      - - - - - diff --git a/latest/html_split/Use-of-This-Document.html b/latest/html_split/Use-of-This-Document.html deleted file mode 100644 index 4c820d5..0000000 --- a/latest/html_split/Use-of-This-Document.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - -Use of This Document (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
      -

      4 Use of This Document

      -

      [NOTE: This document follows the same license model as the C++ -Core Guidelines. The LICENSE document is taken verbatim from the C++ -Core Guidelines.] This document is made available under a MIT-style -license. In simple terms, this license permits copying, use, -modification, and creation of derivative works. A copy of the license is -included in the section LICENSE. -

      - - - - - diff --git a/latest/html_split/User_002dDefined-Types-Classes.html b/latest/html_split/User_002dDefined-Types-Classes.html deleted file mode 100644 index 808279a..0000000 --- a/latest/html_split/User_002dDefined-Types-Classes.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - -User-Defined Types Classes (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -
      -

      7.5 User-Defined Types (Classes)

      - - - - - - - - - - - - - - - -
      IDUnitFoundationalMainAdvanced
      [‘?’]Special Member Functions???
      [‘?’]Types???
      [‘?’]Conversions???
      [‘?’]Constructors and Destructors???
      [‘?’]Move/Copy Constructors and Assignment Operators???
      [‘?’]Member Functions???
      [‘?’]Sum Types???
      [‘?’]User-Defined Literals???
      [‘?’]Special Member Functions???
      [‘?’]Guidelines for Special Member Functions (e.g., Rule of Five, Rule -of Zero)???
      [‘copy’]Copy Semantics‘✔️’‘✔️’
      [‘?’]Moving and Copying???
      [‘?’]Lambdas???
      - - - - - - diff --git a/latest/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html b/latest/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html deleted file mode 100644 index 3f9bf2c..0000000 --- a/latest/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - -Working Group Documents Related to C++ Teaching Guidelines (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - -
      -

      14.2 Working Group Documents Related to C++ Teaching Guidelines

      -
        -
      • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — -Standing Document for SG20: Guidelines for Teaching C++ to Beginners. -https://wg21.link/p1389. - -
      • Christopher Di Bella. P1725R0 — Modular Topic Design. -https://wg21.link/p1725. - -
      • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to -structure a teaching topic. https://wg21.link/p2193. - -
      • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study -Group: C++ Education. https://wg21.link/p1231. - -
      • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 -— Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0. - -
      - - - - - - diff --git a/latest/html_split/_0023advanced.html b/latest/html_split/_0023advanced.html deleted file mode 100644 index d503bfc..0000000 --- a/latest/html_split/_0023advanced.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#advanced (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #advanced.

      - diff --git a/latest/html_split/_0023advanced_002d1.html b/latest/html_split/_0023advanced_002d1.html deleted file mode 100644 index 282a7b8..0000000 --- a/latest/html_split/_0023advanced_002d1.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#advanced-1 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #advanced-1.

      - diff --git a/latest/html_split/_0023advanced_002d2.html b/latest/html_split/_0023advanced_002d2.html deleted file mode 100644 index 039b3ff..0000000 --- a/latest/html_split/_0023advanced_002d2.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#advanced-2 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #advanced-2.

      - diff --git a/latest/html_split/_0023advanced_002d3.html b/latest/html_split/_0023advanced_002d3.html deleted file mode 100644 index ebf5529..0000000 --- a/latest/html_split/_0023advanced_002d3.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#advanced-3 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #advanced-3.

      - diff --git a/latest/html_split/_0023backgroundrequired_002dknowledge.html b/latest/html_split/_0023backgroundrequired_002dknowledge.html deleted file mode 100644 index 9959745..0000000 --- a/latest/html_split/_0023backgroundrequired_002dknowledge.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#backgroundrequired-knowledge (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #backgroundrequired-knowledge.

      - diff --git a/latest/html_split/_0023backgroundrequired_002dknowledge_002d1.html b/latest/html_split/_0023backgroundrequired_002dknowledge_002d1.html deleted file mode 100644 index f6f6bd0..0000000 --- a/latest/html_split/_0023backgroundrequired_002dknowledge_002d1.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#backgroundrequired-knowledge-1 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #backgroundrequired-knowledge-1.

      - diff --git a/latest/html_split/_0023backgroundrequired_002dknowledge_002d2.html b/latest/html_split/_0023backgroundrequired_002dknowledge_002d2.html deleted file mode 100644 index b0b297d..0000000 --- a/latest/html_split/_0023backgroundrequired_002dknowledge_002d2.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#backgroundrequired-knowledge-2 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #backgroundrequired-knowledge-2.

      - diff --git a/latest/html_split/_0023backgroundrequired_002dknowledge_002d3.html b/latest/html_split/_0023backgroundrequired_002dknowledge_002d3.html deleted file mode 100644 index ae34d91..0000000 --- a/latest/html_split/_0023backgroundrequired_002dknowledge_002d3.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#backgroundrequired-knowledge-3 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #backgroundrequired-knowledge-3.

      - diff --git a/latest/html_split/_0023backgroundrequired_002dknowledge_002d4.html b/latest/html_split/_0023backgroundrequired_002dknowledge_002d4.html deleted file mode 100644 index 7417f62..0000000 --- a/latest/html_split/_0023backgroundrequired_002dknowledge_002d4.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#backgroundrequired-knowledge-4 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #backgroundrequired-knowledge-4.

      - diff --git a/latest/html_split/_0023backgroundrequired_002dknowledge_002d5.html b/latest/html_split/_0023backgroundrequired_002dknowledge_002d5.html deleted file mode 100644 index 8f0570c..0000000 --- a/latest/html_split/_0023backgroundrequired_002dknowledge_002d5.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#backgroundrequired-knowledge-5 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #backgroundrequired-knowledge-5.

      - diff --git a/latest/html_split/_0023backgroundrequired_002dknowledge_002d6.html b/latest/html_split/_0023backgroundrequired_002dknowledge_002d6.html deleted file mode 100644 index a1cdee1..0000000 --- a/latest/html_split/_0023backgroundrequired_002dknowledge_002d6.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#backgroundrequired-knowledge-6 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #backgroundrequired-knowledge-6.

      - diff --git a/latest/html_split/_0023backgroundrequired_002dknowledge_002d7.html b/latest/html_split/_0023backgroundrequired_002dknowledge_002d7.html deleted file mode 100644 index 893a0ba..0000000 --- a/latest/html_split/_0023backgroundrequired_002dknowledge_002d7.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#backgroundrequired-knowledge-7 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #backgroundrequired-knowledge-7.

      - diff --git a/latest/html_split/_0023backgroundrequired_002dknowledge_002d8.html b/latest/html_split/_0023backgroundrequired_002dknowledge_002d8.html deleted file mode 100644 index 6080498..0000000 --- a/latest/html_split/_0023backgroundrequired_002dknowledge_002d8.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#backgroundrequired-knowledge-8 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #backgroundrequired-knowledge-8.

      - diff --git a/latest/html_split/_0023backgroundrequired_002dknowledge_002d9.html b/latest/html_split/_0023backgroundrequired_002dknowledge_002d9.html deleted file mode 100644 index 3ea462d..0000000 --- a/latest/html_split/_0023backgroundrequired_002dknowledge_002d9.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#backgroundrequired-knowledge-9 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #backgroundrequired-knowledge-9.

      - diff --git a/latest/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html b/latest/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html deleted file mode 100644 index 925c568..0000000 --- a/latest/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#basics-types-objects-values-expressions-statements-and-control-flow-constructs (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #basics-types-objects-values-expressions-statements-and-control-flow-constructs.

      - diff --git a/latest/html_split/_0023building.html b/latest/html_split/_0023building.html deleted file mode 100644 index 8ffc9df..0000000 --- a/latest/html_split/_0023building.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#building (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #building.

      - diff --git a/latest/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html b/latest/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html deleted file mode 100644 index a7e6bad..0000000 --- a/latest/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#c-object-model-copy-semantics (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #c-object-model-copy-semantics.

      - diff --git a/latest/html_split/_0023caveats.html b/latest/html_split/_0023caveats.html deleted file mode 100644 index d4bac8b..0000000 --- a/latest/html_split/_0023caveats.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#caveats (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #caveats.

      - diff --git a/latest/html_split/_0023caveats_002d1.html b/latest/html_split/_0023caveats_002d1.html deleted file mode 100644 index 64faefd..0000000 --- a/latest/html_split/_0023caveats_002d1.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#caveats-1 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #caveats-1.

      - diff --git a/latest/html_split/_0023caveats_002d2.html b/latest/html_split/_0023caveats_002d2.html deleted file mode 100644 index 6c66559..0000000 --- a/latest/html_split/_0023caveats_002d2.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#caveats-2 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #caveats-2.

      - diff --git a/latest/html_split/_0023caveats_002d3.html b/latest/html_split/_0023caveats_002d3.html deleted file mode 100644 index 479063f..0000000 --- a/latest/html_split/_0023caveats_002d3.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#caveats-3 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #caveats-3.

      - diff --git a/latest/html_split/_0023caveats_002d4.html b/latest/html_split/_0023caveats_002d4.html deleted file mode 100644 index 9588a55..0000000 --- a/latest/html_split/_0023caveats_002d4.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#caveats-4 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #caveats-4.

      - diff --git a/latest/html_split/_0023caveats_002d5.html b/latest/html_split/_0023caveats_002d5.html deleted file mode 100644 index 11edee5..0000000 --- a/latest/html_split/_0023caveats_002d5.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#caveats-5 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #caveats-5.

      - diff --git a/latest/html_split/_0023caveats_002d6.html b/latest/html_split/_0023caveats_002d6.html deleted file mode 100644 index 6cea721..0000000 --- a/latest/html_split/_0023caveats_002d6.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#caveats-6 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #caveats-6.

      - diff --git a/latest/html_split/_0023caveats_002d7.html b/latest/html_split/_0023caveats_002d7.html deleted file mode 100644 index 2a8f1cd..0000000 --- a/latest/html_split/_0023caveats_002d7.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#caveats-7 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #caveats-7.

      - diff --git a/latest/html_split/_0023caveats_002d8.html b/latest/html_split/_0023caveats_002d8.html deleted file mode 100644 index e330642..0000000 --- a/latest/html_split/_0023caveats_002d8.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#caveats-8 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #caveats-8.

      - diff --git a/latest/html_split/_0023caveats_002d9.html b/latest/html_split/_0023caveats_002d9.html deleted file mode 100644 index 004e434..0000000 --- a/latest/html_split/_0023caveats_002d9.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#caveats-9 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #caveats-9.

      - diff --git a/latest/html_split/_0023compilation_002dmodel.html b/latest/html_split/_0023compilation_002dmodel.html deleted file mode 100644 index 1017867..0000000 --- a/latest/html_split/_0023compilation_002dmodel.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#compilation-model (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #compilation-model.

      - diff --git a/latest/html_split/_0023compile_002dtime_002dcomputation.html b/latest/html_split/_0023compile_002dtime_002dcomputation.html deleted file mode 100644 index 59b0c57..0000000 --- a/latest/html_split/_0023compile_002dtime_002dcomputation.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#compile-time-computation (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #compile-time-computation.

      - diff --git a/latest/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html b/latest/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html deleted file mode 100644 index 9294adf..0000000 --- a/latest/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#context-and-aim-of-this-guide (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #context-and-aim-of-this-guide.

      - diff --git a/latest/html_split/_0023contributing_002dto_002dthis_002ddocument.html b/latest/html_split/_0023contributing_002dto_002dthis_002ddocument.html deleted file mode 100644 index 272d848..0000000 --- a/latest/html_split/_0023contributing_002dto_002dthis_002ddocument.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#contributing-to-this-document (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #contributing-to-this-document.

      - diff --git a/latest/html_split/_0023contributors.html b/latest/html_split/_0023contributors.html deleted file mode 100644 index a391f9d..0000000 --- a/latest/html_split/_0023contributors.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#contributors (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #contributors.

      - diff --git a/latest/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html b/latest/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html deleted file mode 100644 index d32c27e..0000000 --- a/latest/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#detailed-information-for-modules-and-topics (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #detailed-information-for-modules-and-topics.

      - diff --git a/latest/html_split/_0023disclaimer.html b/latest/html_split/_0023disclaimer.html deleted file mode 100644 index e9658d6..0000000 --- a/latest/html_split/_0023disclaimer.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#disclaimer (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #disclaimer.

      - diff --git a/latest/html_split/_0023error_002dhandling.html b/latest/html_split/_0023error_002dhandling.html deleted file mode 100644 index 80cfb94..0000000 --- a/latest/html_split/_0023error_002dhandling.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#error-handling (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #error-handling.

      - diff --git a/latest/html_split/_0023examples_002dof_002dcourse_002dcurricula.html b/latest/html_split/_0023examples_002dof_002dcourse_002dcurricula.html deleted file mode 100644 index 99af091..0000000 --- a/latest/html_split/_0023examples_002dof_002dcourse_002dcurricula.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#examples-of-course-curricula (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #examples-of-course-curricula.

      - diff --git a/latest/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html b/latest/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html deleted file mode 100644 index fc9b3eb..0000000 --- a/latest/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#external-i.e.-non-standard-libraries (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #external-i.e.-non-standard-libraries.

      - diff --git a/latest/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html b/latest/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html deleted file mode 100644 index f915680..0000000 --- a/latest/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#foundational-calling-static_assert-with-a-constant-expression (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #foundational-calling-static_assert-with-a-constant-expression.

      - diff --git a/latest/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html b/latest/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html deleted file mode 100644 index 88f62bc..0000000 --- a/latest/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#foundational-how-and-when-are-copies-made (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #foundational-how-and-when-are-copies-made.

      - diff --git a/latest/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html b/latest/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html deleted file mode 100644 index 95ab098..0000000 --- a/latest/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#foundational-using-and-defining-functions-with-default-arguments (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #foundational-using-and-defining-functions-with-default-arguments.

      - diff --git a/latest/html_split/_0023foundational_002dusing_002dudls.html b/latest/html_split/_0023foundational_002dusing_002dudls.html deleted file mode 100644 index 2f7afdd..0000000 --- a/latest/html_split/_0023foundational_002dusing_002dudls.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#foundational-using-udls (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #foundational-using-udls.

      - diff --git a/latest/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html b/latest/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html deleted file mode 100644 index 708f2d3..0000000 --- a/latest/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#foundational-writing-requires-expressions (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #foundational-writing-requires-expressions.

      - diff --git a/latest/html_split/_0023functions.html b/latest/html_split/_0023functions.html deleted file mode 100644 index e304abe..0000000 --- a/latest/html_split/_0023functions.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#functions (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #functions.

      - diff --git a/latest/html_split/_0023functions_002ddefault_002dargument.html b/latest/html_split/_0023functions_002ddefault_002dargument.html deleted file mode 100644 index ccfbcbb..0000000 --- a/latest/html_split/_0023functions_002ddefault_002dargument.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#functions-default-argument (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #functions-default-argument.

      - diff --git a/latest/html_split/_0023functions_002duser_002ddefined_002dliterals.html b/latest/html_split/_0023functions_002duser_002ddefined_002dliterals.html deleted file mode 100644 index b4f78b5..0000000 --- a/latest/html_split/_0023functions_002duser_002ddefined_002dliterals.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#functions-user-defined-literals (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #functions-user-defined-literals.

      - diff --git a/latest/html_split/_0023generic_002dprogramming_002dtemplates.html b/latest/html_split/_0023generic_002dprogramming_002dtemplates.html deleted file mode 100644 index 3b91080..0000000 --- a/latest/html_split/_0023generic_002dprogramming_002dtemplates.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#generic-programming-templates (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #generic-programming-templates.

      - diff --git a/latest/html_split/_0023glossary.html b/latest/html_split/_0023glossary.html deleted file mode 100644 index 9b46bf6..0000000 --- a/latest/html_split/_0023glossary.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#glossary (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #glossary.

      - diff --git a/latest/html_split/_0023how_002dto_002dcontribute.html b/latest/html_split/_0023how_002dto_002dcontribute.html deleted file mode 100644 index d9cff4a..0000000 --- a/latest/html_split/_0023how_002dto_002dcontribute.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#how-to-contribute (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #how-to-contribute.

      - diff --git a/latest/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html b/latest/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html deleted file mode 100644 index def5140..0000000 --- a/latest/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#inheritance-and-class-hierarchies (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #inheritance-and-class-hierarchies.

      - diff --git a/latest/html_split/_0023license.html b/latest/html_split/_0023license.html deleted file mode 100644 index 6b44dd1..0000000 --- a/latest/html_split/_0023license.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#license (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #license.

      - diff --git a/latest/html_split/_0023main_002dadvanced_002drequirements.html b/latest/html_split/_0023main_002dadvanced_002drequirements.html deleted file mode 100644 index 8214533..0000000 --- a/latest/html_split/_0023main_002dadvanced_002drequirements.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#main-advanced-requirements (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #main-advanced-requirements.

      - diff --git a/latest/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html b/latest/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html deleted file mode 100644 index 22b0484..0000000 --- a/latest/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#main-contracts-and-static_assert (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #main-contracts-and-static_assert.

      - diff --git a/latest/html_split/_0023main_002dimplementing.html b/latest/html_split/_0023main_002dimplementing.html deleted file mode 100644 index 260008c..0000000 --- a/latest/html_split/_0023main_002dimplementing.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#main-implementing (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #main-implementing.

      - diff --git a/latest/html_split/_0023main_002dimplementing_002dudls.html b/latest/html_split/_0023main_002dimplementing_002dudls.html deleted file mode 100644 index a41d194..0000000 --- a/latest/html_split/_0023main_002dimplementing_002dudls.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#main-implementing-udls (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #main-implementing-udls.

      - diff --git a/latest/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html b/latest/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html deleted file mode 100644 index 1e5a4d8..0000000 --- a/latest/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#main-implementing-user-defined-copy-operations (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #main-implementing-user-defined-copy-operations.

      - diff --git a/latest/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html b/latest/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html deleted file mode 100644 index 4502ed8..0000000 --- a/latest/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#meta-error-handling-static_assert (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #meta-error-handling-static_assert.

      - diff --git a/latest/html_split/_0023module_002dname_002drequires_002dexpressions.html b/latest/html_split/_0023module_002dname_002drequires_002dexpressions.html deleted file mode 100644 index 56a9ebf..0000000 --- a/latest/html_split/_0023module_002dname_002drequires_002dexpressions.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#module-name-requires-expressions (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #module-name-requires-expressions.

      - diff --git a/latest/html_split/_0023motivation.html b/latest/html_split/_0023motivation.html deleted file mode 100644 index 0141374..0000000 --- a/latest/html_split/_0023motivation.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#motivation (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #motivation.

      - diff --git a/latest/html_split/_0023motivation_002d1.html b/latest/html_split/_0023motivation_002d1.html deleted file mode 100644 index 7e4a69e..0000000 --- a/latest/html_split/_0023motivation_002d1.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#motivation-1 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #motivation-1.

      - diff --git a/latest/html_split/_0023motivation_002d2.html b/latest/html_split/_0023motivation_002d2.html deleted file mode 100644 index 7901fd3..0000000 --- a/latest/html_split/_0023motivation_002d2.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#motivation-2 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #motivation-2.

      - diff --git a/latest/html_split/_0023motivation_002d3.html b/latest/html_split/_0023motivation_002d3.html deleted file mode 100644 index ec720ad..0000000 --- a/latest/html_split/_0023motivation_002d3.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#motivation-3 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #motivation-3.

      - diff --git a/latest/html_split/_0023motivation_002d4.html b/latest/html_split/_0023motivation_002d4.html deleted file mode 100644 index f53583a..0000000 --- a/latest/html_split/_0023motivation_002d4.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#motivation-4 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #motivation-4.

      - diff --git a/latest/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html b/latest/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html deleted file mode 100644 index 57e8b6e..0000000 --- a/latest/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#obtaining-this-document-the-most-recent-version-and-alternate-formats (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #obtaining-this-document-the-most-recent-version-and-alternate-formats.

      - diff --git a/latest/html_split/_0023organization_002dof_002dthis_002ddocument.html b/latest/html_split/_0023organization_002dof_002dthis_002ddocument.html deleted file mode 100644 index e312b8e..0000000 --- a/latest/html_split/_0023organization_002dof_002dthis_002ddocument.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#organization-of-this-document (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #organization-of-this-document.

      - diff --git a/latest/html_split/_0023overview.html b/latest/html_split/_0023overview.html deleted file mode 100644 index b2d4bdc..0000000 --- a/latest/html_split/_0023overview.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#overview (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #overview.

      - diff --git a/latest/html_split/_0023overview_002d1.html b/latest/html_split/_0023overview_002d1.html deleted file mode 100644 index d551764..0000000 --- a/latest/html_split/_0023overview_002d1.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#overview-1 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #overview-1.

      - diff --git a/latest/html_split/_0023overview_002d2.html b/latest/html_split/_0023overview_002d2.html deleted file mode 100644 index 5a34b05..0000000 --- a/latest/html_split/_0023overview_002d2.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#overview-2 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #overview-2.

      - diff --git a/latest/html_split/_0023overview_002d3.html b/latest/html_split/_0023overview_002d3.html deleted file mode 100644 index f230145..0000000 --- a/latest/html_split/_0023overview_002d3.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#overview-3 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #overview-3.

      - diff --git a/latest/html_split/_0023overview_002d4.html b/latest/html_split/_0023overview_002d4.html deleted file mode 100644 index 2436b9a..0000000 --- a/latest/html_split/_0023overview_002d4.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#overview-4 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #overview-4.

      - diff --git a/latest/html_split/_0023points_002dto_002dcover.html b/latest/html_split/_0023points_002dto_002dcover.html deleted file mode 100644 index 424b02b..0000000 --- a/latest/html_split/_0023points_002dto_002dcover.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#points-to-cover (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #points-to-cover.

      - diff --git a/latest/html_split/_0023points_002dto_002dcover_002d1.html b/latest/html_split/_0023points_002dto_002dcover_002d1.html deleted file mode 100644 index 2a554bb..0000000 --- a/latest/html_split/_0023points_002dto_002dcover_002d1.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#points-to-cover-1 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #points-to-cover-1.

      - diff --git a/latest/html_split/_0023points_002dto_002dcover_002d2.html b/latest/html_split/_0023points_002dto_002dcover_002d2.html deleted file mode 100644 index 053a51a..0000000 --- a/latest/html_split/_0023points_002dto_002dcover_002d2.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#points-to-cover-2 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #points-to-cover-2.

      - diff --git a/latest/html_split/_0023points_002dto_002dcover_002d3.html b/latest/html_split/_0023points_002dto_002dcover_002d3.html deleted file mode 100644 index b0dad48..0000000 --- a/latest/html_split/_0023points_002dto_002dcover_002d3.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#points-to-cover-3 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #points-to-cover-3.

      - diff --git a/latest/html_split/_0023points_002dto_002dcover_002d4.html b/latest/html_split/_0023points_002dto_002dcover_002d4.html deleted file mode 100644 index 94de8fa..0000000 --- a/latest/html_split/_0023points_002dto_002dcover_002d4.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#points-to-cover-4 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #points-to-cover-4.

      - diff --git a/latest/html_split/_0023points_002dto_002dcover_002d5.html b/latest/html_split/_0023points_002dto_002dcover_002d5.html deleted file mode 100644 index 39d1eaf..0000000 --- a/latest/html_split/_0023points_002dto_002dcover_002d5.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#points-to-cover-5 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #points-to-cover-5.

      - diff --git a/latest/html_split/_0023points_002dto_002dcover_002d6.html b/latest/html_split/_0023points_002dto_002dcover_002d6.html deleted file mode 100644 index 92df88f..0000000 --- a/latest/html_split/_0023points_002dto_002dcover_002d6.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#points-to-cover-6 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #points-to-cover-6.

      - diff --git a/latest/html_split/_0023points_002dto_002dcover_002d7.html b/latest/html_split/_0023points_002dto_002dcover_002d7.html deleted file mode 100644 index 6e6c895..0000000 --- a/latest/html_split/_0023points_002dto_002dcover_002d7.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#points-to-cover-7 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #points-to-cover-7.

      - diff --git a/latest/html_split/_0023points_002dto_002dcover_002d8.html b/latest/html_split/_0023points_002dto_002dcover_002d8.html deleted file mode 100644 index b5574e1..0000000 --- a/latest/html_split/_0023points_002dto_002dcover_002d8.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#points-to-cover-8 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #points-to-cover-8.

      - diff --git a/latest/html_split/_0023preprocessor.html b/latest/html_split/_0023preprocessor.html deleted file mode 100644 index a3bb5f6..0000000 --- a/latest/html_split/_0023preprocessor.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#preprocessor (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #preprocessor.

      - diff --git a/latest/html_split/_0023references.html b/latest/html_split/_0023references.html deleted file mode 100644 index 69fbd6b..0000000 --- a/latest/html_split/_0023references.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#references (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #references.

      - diff --git a/latest/html_split/_0023references_002don_002dlearning_002doutcomes.html b/latest/html_split/_0023references_002don_002dlearning_002doutcomes.html deleted file mode 100644 index d28fbbf..0000000 --- a/latest/html_split/_0023references_002don_002dlearning_002doutcomes.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#references-on-learning-outcomes (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #references-on-learning-outcomes.

      - diff --git a/latest/html_split/_0023software_002ddesign.html b/latest/html_split/_0023software_002ddesign.html deleted file mode 100644 index 16f5f54..0000000 --- a/latest/html_split/_0023software_002ddesign.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#software-design (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #software-design.

      - diff --git a/latest/html_split/_0023standard_002dlibrary.html b/latest/html_split/_0023standard_002dlibrary.html deleted file mode 100644 index 71956d3..0000000 --- a/latest/html_split/_0023standard_002dlibrary.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#standard-library (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #standard-library.

      - diff --git a/latest/html_split/_0023student_002doutcomes.html b/latest/html_split/_0023student_002doutcomes.html deleted file mode 100644 index df0035d..0000000 --- a/latest/html_split/_0023student_002doutcomes.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#student-outcomes (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #student-outcomes.

      - diff --git a/latest/html_split/_0023student_002doutcomes_002d1.html b/latest/html_split/_0023student_002doutcomes_002d1.html deleted file mode 100644 index e9344b7..0000000 --- a/latest/html_split/_0023student_002doutcomes_002d1.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#student-outcomes-1 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #student-outcomes-1.

      - diff --git a/latest/html_split/_0023student_002doutcomes_002d2.html b/latest/html_split/_0023student_002doutcomes_002d2.html deleted file mode 100644 index 6fa7724..0000000 --- a/latest/html_split/_0023student_002doutcomes_002d2.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#student-outcomes-2 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #student-outcomes-2.

      - diff --git a/latest/html_split/_0023student_002doutcomes_002d3.html b/latest/html_split/_0023student_002doutcomes_002d3.html deleted file mode 100644 index 195d9d2..0000000 --- a/latest/html_split/_0023student_002doutcomes_002d3.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#student-outcomes-3 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #student-outcomes-3.

      - diff --git a/latest/html_split/_0023student_002doutcomes_002d4.html b/latest/html_split/_0023student_002doutcomes_002d4.html deleted file mode 100644 index 3e30430..0000000 --- a/latest/html_split/_0023student_002doutcomes_002d4.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#student-outcomes-4 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #student-outcomes-4.

      - diff --git a/latest/html_split/_0023student_002doutcomes_002d5.html b/latest/html_split/_0023student_002doutcomes_002d5.html deleted file mode 100644 index 0a4a7da..0000000 --- a/latest/html_split/_0023student_002doutcomes_002d5.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#student-outcomes-5 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #student-outcomes-5.

      - diff --git a/latest/html_split/_0023student_002doutcomes_002d6.html b/latest/html_split/_0023student_002doutcomes_002d6.html deleted file mode 100644 index c5c4ac0..0000000 --- a/latest/html_split/_0023student_002doutcomes_002d6.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#student-outcomes-6 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #student-outcomes-6.

      - diff --git a/latest/html_split/_0023student_002doutcomes_002d7.html b/latest/html_split/_0023student_002doutcomes_002d7.html deleted file mode 100644 index 5233f94..0000000 --- a/latest/html_split/_0023student_002doutcomes_002d7.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#student-outcomes-7 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #student-outcomes-7.

      - diff --git a/latest/html_split/_0023student_002doutcomes_002d8.html b/latest/html_split/_0023student_002doutcomes_002d8.html deleted file mode 100644 index f19fd7f..0000000 --- a/latest/html_split/_0023student_002doutcomes_002d8.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#student-outcomes-8 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #student-outcomes-8.

      - diff --git a/latest/html_split/_0023student_002doutcomes_002d9.html b/latest/html_split/_0023student_002doutcomes_002d9.html deleted file mode 100644 index 735a21f..0000000 --- a/latest/html_split/_0023student_002doutcomes_002d9.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#student-outcomes-9 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #student-outcomes-9.

      - diff --git a/latest/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html b/latest/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html deleted file mode 100644 index 4801178..0000000 --- a/latest/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#summary-of-modules-and-topics (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #summary-of-modules-and-topics.

      - diff --git a/latest/html_split/_0023testing_002dand_002ddebugging.html b/latest/html_split/_0023testing_002dand_002ddebugging.html deleted file mode 100644 index 1ae096d..0000000 --- a/latest/html_split/_0023testing_002dand_002ddebugging.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#testing-and-debugging (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #testing-and-debugging.

      - diff --git a/latest/html_split/_0023tooling.html b/latest/html_split/_0023tooling.html deleted file mode 100644 index 634a8dc..0000000 --- a/latest/html_split/_0023tooling.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#tooling (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #tooling.

      - diff --git a/latest/html_split/_0023topic_002dintroduction.html b/latest/html_split/_0023topic_002dintroduction.html deleted file mode 100644 index 742d5d9..0000000 --- a/latest/html_split/_0023topic_002dintroduction.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#topic-introduction (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #topic-introduction.

      - diff --git a/latest/html_split/_0023topic_002dintroduction_002d1.html b/latest/html_split/_0023topic_002dintroduction_002d1.html deleted file mode 100644 index a110644..0000000 --- a/latest/html_split/_0023topic_002dintroduction_002d1.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#topic-introduction-1 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #topic-introduction-1.

      - diff --git a/latest/html_split/_0023topic_002dintroduction_002d2.html b/latest/html_split/_0023topic_002dintroduction_002d2.html deleted file mode 100644 index 986bf37..0000000 --- a/latest/html_split/_0023topic_002dintroduction_002d2.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#topic-introduction-2 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #topic-introduction-2.

      - diff --git a/latest/html_split/_0023topic_002dintroduction_002d3.html b/latest/html_split/_0023topic_002dintroduction_002d3.html deleted file mode 100644 index 3d14fd9..0000000 --- a/latest/html_split/_0023topic_002dintroduction_002d3.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#topic-introduction-3 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #topic-introduction-3.

      - diff --git a/latest/html_split/_0023topic_002dintroduction_002d4.html b/latest/html_split/_0023topic_002dintroduction_002d4.html deleted file mode 100644 index c73a236..0000000 --- a/latest/html_split/_0023topic_002dintroduction_002d4.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#topic-introduction-4 (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #topic-introduction-4.

      - diff --git a/latest/html_split/_0023use_002dof_002dthis_002ddocument.html b/latest/html_split/_0023use_002dof_002dthis_002ddocument.html deleted file mode 100644 index 68d835d..0000000 --- a/latest/html_split/_0023use_002dof_002dthis_002ddocument.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#use-of-this-document (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #use-of-this-document.

      - diff --git a/latest/html_split/_0023user_002ddefined_002dtypes_002dclasses.html b/latest/html_split/_0023user_002ddefined_002dtypes_002dclasses.html deleted file mode 100644 index 04771a9..0000000 --- a/latest/html_split/_0023user_002ddefined_002dtypes_002dclasses.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#user-defined-types-classes (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #user-defined-types-classes.

      - diff --git a/latest/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html b/latest/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html deleted file mode 100644 index f4b9435..0000000 --- a/latest/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -#working-group-documents-related-to-c-teaching-guidelines (Guidelines for Teaching C++) - - - - - - - - - - - - - - -

      The node you are looking for is at #working-group-documents-related-to-c-teaching-guidelines.

      - diff --git a/latest/html_split/index.html b/latest/html_split/index.html deleted file mode 100644 index c4e5ff0..0000000 --- a/latest/html_split/index.html +++ /dev/null @@ -1,240 +0,0 @@ - - - - - -Top (Guidelines for Teaching C++) - - - - - - - - - - - - - - - - - - -

      Table of Contents

      - -
      - - -
      - - - -
      -

      Guidelines for Teaching C++

      - - - - - - - - - - - - - - - - - - -
      - - - - - - diff --git a/latest/html_split/unknown_node.html b/latest/html_split/unknown_node.html deleted file mode 100644 index 5a652e5..0000000 --- a/latest/html_split/unknown_node.html +++ /dev/null @@ -1,763 +0,0 @@ - - - - - -Guidelines for Teaching C++ - - - - - - - - - - - - - - - - -
      -

      -   [Contents]

      -
      -
      -

      8.1.5.1 Background/Required Knowledge

      -

      A student is able to: * identify special member functions -[C++ object model: -special member functions] -

      -

      It helps when a student is able to: * use move semantics -[C++ object model: move -semantics] * explain the rule of zero -[C++ object model: rule-of-zero] -* explain the rule of five [C++ -object model: rule-of-five] -

      -
      -

      -   [Contents]

      -
      -

      8.1.5.2 Student outcomes

      -

      A list of things “a student should be able to” after the -curriculum. The next word should be an action word and testable -in an exam. Max 5 items. -

      -

      A student should be able to: * explain when they have to implement the -copy operations for their own type * Copy constructor * Copy assignment -operator * implement copy operations for their own types * -Optional: explain when copying with basic and strong exception -guarantees is useful -

      -
      -

      -   [Contents]

      -
      -

      8.1.5.3 Caveats

      -

      This section mentions subtle points to understand, like anything -resulting in implementation-defined, unspecified, or undefined -behavior. -

      -
        -
      • Intricacies when implementing copy operations: -
          -
        • Examples of how not to write copy operations (e.g., C++03 -std::auto_ptr) -
        - -
      - -
      -

      -   [Contents]

      -
      -

      8.1.5.4 Points to cover

      -

      This section lists important details for each point. -

      -
        -
      • Copy constructors and copy assignment operators -
          -
        • How compiler generates default copy operations -
        • =default, =delete (No copy) -
        • How-to write your own copy operations -
        • Rule-of-five -
        • Copy assignment operators can be ref-qualified to avoid assigning into -temporary objects. -
        - -
      - -
      -

      -   [Contents]

      -
      -

      8.2.1 Overview

      -

      Provides a short natural language abstract of the module’s -contents. Specifies the different levels of teaching. -

      - - - - - -
      LevelObjectives
      Foundationalusing and understanding UDLs
      Mainimplementing your own UDLs
      AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
      - -
      -

      -   [Contents]

      -
      -

      8.2.2 Motivation

      -

      Why is this important? Why do we want to learn/teach this -topic? -

      -
        -
      • Allows clearer expression of intent in C++. -
      • std::string: "Hello, world!"s -
      • std::chrono: 3h + 10min + 5s -
      - -
      -

      -   [Contents]

      -
      -

      8.2.3 Topic introduction

      -

      Very brief introduction to the topic. -

      -
        -
      • Explain the existence of user defined literals. Example: -12min + 17s is terse, expressive and type safe. -
      - -
      -

      -   [Contents]

      -
      -

      8.2.4.1 Background/Required Knowledge

      -

      A student: * knows how to form numeric literals, e.g., 1.5f means -a float of value 1.5. * is familiar with the major C++ -types: * bool (Boolean type) * int (Integer type) * -double (Floating-point type) * std::string (Text type) * -std::vector (Collection type) * knows that namespaces exist, and -namespace std. * knows what using-declarations and -using-directives are. -[C++ object -model: declarations] -

      -
      -

      -   [Contents]

      -
      -

      8.2.4.2 Student outcomes

      -

      A list of things “a student should be able to” after the -curriculum. The next word should be an action word and testable -in an exam. Max 5 items. -

      -

      A student should be able to: -

      -
        -
      1. use using namespace std::string_literals[1]. -
      2. recognise UDLs in code that they are reading. -
      3. figure out which UDL definitions for a used type exist. -
      4. identify parts of the standard library that make use of UDLs. -
      5. prevent the dangers of temporaries created with "blah"s as well -as with std::string{"blah"}. -
      6. effectively selects the right set of namespaces in using-directives from -the sub-namespaces std::literals. -
      - -

      [1]: explain that it’s okay to use a using-directive to “activate” -UDLs. -

      -
      -

      -   [Contents]

      -
      -

      8.2.4.3 Caveats

      -

      This section mentions subtle points to understand, like anything -resulting in implementation-defined, unspecified, or undefined -behavior. -

      -
        -
      • A student gets confused by the similarities and differences between -built-in suffixes and UDLs and between UDLs from different namespaces. -
      • A student “activates” two suffixes with the same signature from -different namespaces. -
      - -
      -

      -   [Contents]

      -
      -

      8.2.4.4 Points to cover

      -

      This section lists important details for each point. -

      -
      -

      -   [Contents]

      -
      -

      8.2.5.1 Background/Required Knowledge

      -
        -
      • All of the above. -
      - -
      -

      -   [Contents]

      -
      -

      8.2.5.2 Student outcomes

      -

      A list of things “a student should be able to” after the -curriculum. The next word should be an action word and testable -in an exam. Max 5 items. -

      -

      A student should be able to: -

      -
        -
      1. write a UDL operator of their own. -
      2. separate unrelated UDLs into distinct namespaces. -
      - -
      -

      -   [Contents]

      -
      -

      8.2.5.3 Caveats

      -

      This section mentions subtle points to understand, like anything -resulting in implementation-defined, unspecified, or undefined -behavior. -

      -

      No caveats at present. #### Points to cover -

      -

      This section lists important details for each point. -

      -

      No caveats at present. ### Advanced {#udl-advanced} -

      -

      These are important topics that are not expected to be covered but -provide guidance where one can continue to investigate this topic in -more depth. -

      -
      -

      -   [Contents]

      -
      -

      8.3.1 Overview

      -

      Functions in C++ may be overloaded with different numbers and types of -parameters. It may be of value to specify default arguments for some -number of parameters, to allow a caller to avoid specifying arguments -that rarely change, or to enable expanding the set of parameters while -maintaining backward compatibility with existing callers. -

      - - - - - -
      LevelObjective
      FoundationalDefine and use functions with default arguments
      Main
      Advancedrefinement of default arguments through multiple declarations
      - -
      -

      -   [Contents]

      -
      -

      8.3.2 Motivation

      -

      Default arguments allow the omission of arguments with obvious or common -values. Also may be utilized to extend an existing function signature -without forcing changes to existing calling code. -

      -
      -

      -   [Contents]

      -
      -

      8.3.3 Topic introduction

      -

      Explain how default arguments work and how to define them. -

      -
      -

      -   [Contents]

      -
      -

      8.3.4.1 Background/Required Knowledge

      -

      A student is able to: -

      - - -
      -

      -   [Contents]

      -
      -

      8.3.4.2 Student outcomes

      -

      A student should be able to: -

      -
        -
      1. Call to a function with a default argument with or without that argument -specified -
      2. Declare a function with a default argument, and omit the default in the -definition’s signature -
      3. Explain when the lifetime of a default argument begins and ends -
      - -
      -

      -   [Contents]

      -
      -

      8.3.4.3 Caveats

      -
        -
      • When no forward-declaration exists, the definition serves as the -declaration -
      • When multiple declarations exist, only one may specify the default for -any particular parameter, but multiple declarations may specify the -defaults for different parameters. -
      • Additional default values may be specified for other parameters in -repeat declarations -
      • Calling an overloaded function with fewer arguments may be ambiguous -with regard to an overload with default arguments -
      - -
      -

      -   [Contents]

      -
      -

      8.3.4.4 Points to cover

      -
        -
      • Default value may only be specified once for each parameter among all -declarations -
      • Default values must start from the rightmost parameter and continue -leftward without gaps -
      • Considerations of when to use default arguments vs overload set -
      - -
      -

      -   [Contents]

      -
      -

      8.3.5.2 Student outcomes

      -

      A student should be able to: -

      -
      -

      -   [Contents]

      -
      -

      8.3.5.3 Caveats

      - -
      -

      -   [Contents]

      -
      -

      8.3.5.4 Points to cover

      - -
      -

      -   [Contents]

      -
      -

      8.3.6 Advanced

      -

      Subsequent redeclarations of the same function may add default argument -values, which are then usable by callers. Though a single parameter -cannot be given a default argument twice in the same translation unit, -it is legal, though ill-advised, to give the same function different -default arguments in different translation units. -

      -
      -

      -   [Contents]

      -
      -

      8.4.1 Overview

      - - - - - -
      LevelObjectives
      FoundationalDefine and use requires-expressions to check satisfaction of -expressions by given parameters
      MainDefine and use requires-expressions to check properties of -expressions
      Advanced
      - -
      -

      -   [Contents]

      -
      -

      8.4.2 Motivation

      -

      Requires-expressions allow a developer to perform compile-time -evaluation on the validity of other expressions. These are fundamental -to the ability to write concepts. -[Compile-time programming: -concepts] -

      -
      -

      -   [Contents]

      -
      -

      8.5 Topic introduction

      -

      Requires-expressions are compile-time predicates which evaluate to true -when their specified set of expressions are all valid for a given set of -inputs. -

      - - - - - - -
      -

      -   [Contents]

      -
      -

      8.5.1.1 Background/Required Knowledge

      -

      A student is able to: -

      - - -

      It is helpful if: -

      -
        -
      • The student is aware that attempting to specialize the template with -types or values which do not match otherwise unstated assumptions will -cause errors within the template. -
      - -
      -

      -   [Contents]

      -
      -

      8.5.1.2 Student outcomes

      -

      A student should be able to: -

      -
        -
      1. Write a simple-requirement to assert the validity of an expression -
      2. Write a type-requirement to check the existence of a type by its -identifier -
      3. Write a compound-requirement to test the resulting type of an expression -
      4. Write a nested-requirement to test the constexpr value of an operation, -as opposed to just the syntactic validity -
      5. Use a requires-expression within a concept, requires-clause, or -if constexpr condition -
      - -
      -

      -   [Contents]

      -
      -

      8.5.1.3 Caveats

      -

      To require that expressions, which evaluate to a boolean value like -sizeof(t) == 4, evaluate to true a nested-requirement is -needed (e.g., requires sizeof(t) == 4;). Omitting the -requires results in a simple-requirement, which is satisfied -based purely on syntactic validity, not on the result of the operation. -

      -
      -

      -   [Contents]

      -
      -

      8.5.1.4 Points to cover

      -
        -
      • All requires-expression requirements terminate with a semicolon. -
      • simple-requirements are used to check that an expression is well-formed. -
      • nested-requirements are introduced with requires and primarily -used to check the result of an expression computable by the compiler, -including concepts or other requires-expressions. -
      • type-requirements are introduced with typename and used to verify -the existence of a type with a particular identifier. -
      • compound-requirements are enclosed in braces and can be used to check -the resulting type of an expression. -
      • Checks are performed by the compiler, not at run time. -
      • If covering usage of requires-expression with requires-clause, -[Compile-time -programming: requires clause] demonstrate requires requires and -show how to ever avoid writing it by using a concept. -[Compile-time programming: -concepts] -
      - -
      -

      -   [Contents]

      -
      -

      8.5.2.1 Background/required knowledge

      -
        -
      • All of the above. -
      • Knowledge of noexcept -
      - -

      A student is able to: -

      - - -
      -

      -   [Contents]

      -
      -

      8.5.2.2 Student outcomes

      -

      A student should be able to: -

      -
        -
      1. Write compound-requirements which test the noexceptness of an -expression. -
      2. Use a concept as the target of a compound-requirement. -
      - -
      -

      -   [Contents]

      -
      -

      8.5.2.3 Caveats

      - -
      -

      -   [Contents]

      -
      -

      8.5.2.4 Points to cover

      -
        -
      • Compound-requirements allow the optional ability to test whether an -expression is marked as noexcept, by using a trailing -noexcept keyword. -
      - -
      struct S
      -{
      -    void foo() noexcept {}
      -    void bar() {}
      -};
      -
      -static_assert(requires(S s) { { s.foo() } noexcept; } ); // Succeeds. s.foo() is noexcept
      -static_assert(requires(S s) { { s.bar() } noexcept; } ); // Fails. s.bar() is not noexcept
      -
      -
        -
      • If the return-type-requirement of a compound-requirement is a concept, -that concept is given the resulting type as the first parameter, -followed by the specified parameters in the compound-requirement. -{ ++x } -> C<int> would substitute -C<decltype((++x)), int> and check that concept C is satisfied for -those parameters. -
      - -
      -

      -   [Contents]

      -
      -

      8.5.3 Advanced

      - -
      -

      -   [Contents]

      -
      -

      8.6.1 Overview

      -

      Provides a short natural language abstract of the module’s -contents. Specifies the different levels of teaching. -

      - - - - - -
      LevelObjectives
      FoundationalCalling static_assert with a constant expression
      MainUsing static_assert to detect contract violations and -improve error messages
      Advanced
      - -
      -

      -   [Contents]

      -
      -

      8.6.2 Motivation

      -

      Why is this important? Why do we want to learn/teach this -topic? -

      -

      static_assert allows the developer to enforce that conditions -which can be checked during compilation will force build errors when -violated. Additionally, they are the best mechanism by which a developer -can pass useful information to other developers regarding what violation -occurred or what must be done, instead. -

      -
      -

      -   [Contents]

      -
      -

      8.6.3 Topic introduction

      -

      Very brief introduction to the topic. -

      -

      static_assert is a compile-time evaluated function that asserts -the truth of a supplied predicate, issuing an optional user-supplied -error message if the predicate is false. -

      -
      -

      -   [Contents]

      -
      -

      8.6.4.1 Background/Required Knowledge

      -

      A student: -

      -
        -
      • Should be able to explain the difference between code evaluated at -compile-time and run-time -
      • Should be able to cite some examples of compile-time known information, -such as sizeof(T) -
      - -
      -

      -   [Contents]

      -
      -

      8.6.4.2 Student outcomes

      -

      A list of things “a student should be able to” after the -curriculum. The next word should be an action word and testable -in an exam. Max 5 items. -

      -

      A student should be able to: -

      -
        -
      1. Assert the expected size of a structure using static_assert -
      - -
      -

      -   [Contents]

      -
      -

      8.6.4.3 Caveats

      -

      This section mentions subtle points to understand, like anything -resulting in implementation-defined, unspecified, or undefined -behavior. -

      -
      -

      -   [Contents]

      -
      -

      8.6.4.4 Points to cover

      -

      This section lists important details for each point. -

      -
        -
      • X -
      • In addition to what is wrong, a good error message will inform the user -of how to correct it -
      - -
      -

      -   [Contents]

      -
      -

      8.6.5.1 Background/Required Knowledge

      -
        -
      • All of the above. -
      • General understanding of compile-time requirements -
      - -
      -

      -   [Contents]

      -
      -

      8.6.5.2 Student outcomes

      -

      A list of things “a student should be able to” after the -curriculum. The next word should be an action word and testable -in an exam. Max 5 items. -

      -

      A student should be able to: -

      -
        -
      1. Utilize static_assert to verify preconditions of a meta-function -
      2. Utilize static_assert to verify the results of meta-functions for -known values -
      - -
      -

      -   [Contents]

      -
      -

      8.6.5.3 Caveats

      -

      This section mentions subtle points to understand, like anything -resulting in implementation-defined, unspecified, or undefined -behavior. -

      -
      -

      -   [Contents]

      -
      -

      8.6.5.4 Points to cover

      -

      This section lists important details for each point. -

      -
        -
      • When writing a meta-function, use static_assert to test the -results -
      • Write static_assert calls at the scope of the code they are -guarding -
      - -
      template<typename T>
      -struct container {
      -    std::map<int, T> vals;
      -
      -    // Test location #1
      -    static_assert(
      -        std::is_default_constructible_v<T>,
      -        "container type T must be default constructible");i
      -
      -    void add(int key, T const& t) {
      -        // Test location #2
      -        static_assert(
      -            std::is_default_constructible_v<T>,
      -            "container type T must be default constructible");
      -        // std::map::operator[] requires default constructible type for 
      -        // the value. This will cause a build failure deep in the 
      -        // implementation of std::map, when T is not default constructible
      -        vals[key] = t;
      -    }
      -};
      -
      -struct NoDefCtor {
      -    NoDefCtor() = delete;
      -    NoDefCtor(double d) {}
      -};
      -
      -container<NoDefCtor> c; // If Test #1 was omitted, this would succeed
      -// This is ill-formed. Test #2 would catch this and provide a better 
      -// error message for the user
      -c.add(42, NoDefCtor(1.0)); 
      -
      -
      -

      -   [Contents]

      -
      -

      8.6.6 Advanced

      -

      These are important topics that are not expected to be covered but -provide guidance where one can continue to investigate this topic in -more depth. -

      - - - - - diff --git a/latest/index.html b/latest/index.html index c237b3f..9fdd6e6 100644 --- a/latest/index.html +++ b/latest/index.html @@ -106,7 +106,7 @@

      Guidelines for Teaching C++

      -

      Version 0.0.4

      +

      Version 0.0.5

      SG20 (ISO C++ Study Group on Education)

      @@ -203,9 +203,9 @@

      <

      The most recent version of this document is available as an online HTML document at: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/latest/.

      The version of the document that you are currently reading is available in the following formats:

        -
      1. online (HTML) format as a single large HTML document: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.4/html [later to be https://cplusplus.github.io/SG20/0.0.4/html?]

      2. -
      3. EPUB format: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.4/guidelines.epub [later to be https:/cplusplus.github.io/SG20/0.0.4/guidelines.epub?]

      4. -
      5. online (HTML) format, split across multiple HTML documents: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.4/html_split/ [later to be https://cplusplus.github.io/SG20/0.0.4/html_split/?] [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

      6. +
      7. online (HTML) format as a single large HTML document: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.5/html [later to be https://cplusplus.github.io/SG20/0.0.5/html?]

      8. +
      9. EPUB format: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.5/guidelines.epub [later to be https:/cplusplus.github.io/SG20/0.0.5/guidelines.epub?]

      10. +
      11. online (HTML) format, split across multiple HTML documents: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.5/html_split/ [later to be https://cplusplus.github.io/SG20/0.0.5/html_split/?] [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

      Older versions of this document are also available. In general version ver is available at https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/ver. For example, version v0.1.0 (assuming that this version exists) would be available at [later to be https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/v0.1.0?].

      2 Disclaimer

      From 40103c6560faeb9f69c218c5f7320fec30649f1d Mon Sep 17 00:00:00 2001 From: vulder Date: Mon, 1 Nov 2021 11:26:58 +0000 Subject: [PATCH 09/21] deploy: 1f7a150b02ec45f0e9c81313ff938debe4b538b2 --- 0.0.6/guidelines.epub | Bin 0 -> 31524 bytes 0.0.6/html/images/cpp_logo.png | Bin 0 -> 23613 bytes 0.0.6/html/index.html | 1430 +++++++++++++++++ 0.0.6/html_split/Advanced.html | 60 + .../Background_002fRequired-Knowledge.html | 65 + .../Background_002frequired-knowledge.html | 54 + ...ments-and-Control_002dFlow-Constructs.html | 60 + 0.0.6/html_split/Building.html | 57 + ...002b_002b-object-model-copy-semantics.html | 69 + 0.0.6/html_split/Caveats.html | 62 + 0.0.6/html_split/Compilation-Model.html | 62 + .../Compile_002dTime-Computation.html | 57 + .../Context-and-Aim-of-This-Guide.html | 76 + .../Contributing-to-This-Document.html | 55 + 0.0.6/html_split/Contributors.html | 58 + ...ed-Information-for-Modules-and-Topics.html | 67 + 0.0.6/html_split/Disclaimer.html | 55 + 0.0.6/html_split/Error-Handling.html | 59 + .../Examples-of-Course-Curricula.html | 53 + .../External-ie-Non-Standard-Libraries.html | 56 + ...005fassert-with-a-constant-expression.html | 62 + ...dational-How-and-when-are-copies-made.html | 63 + 0.0.6/html_split/Foundational-Using-UDLs.html | 61 + ...ning-functions-with-default-arguments.html | 62 + ...onal-Writing-requires_002dexpressions.html | 60 + .../Functions-default-argument.html | 67 + .../Functions-user_002ddefined-literals.html | 66 + 0.0.6/html_split/Functions.html | 61 + .../Generic-Programming-Templates.html | 61 + 0.0.6/html_split/Glossary.html | 58 + 0.0.6/html_split/How-To-Contribute.html | 89 + .../Inheritance-and-Class-Hierarchies.html | 57 + 0.0.6/html_split/License.html | 100 ++ .../Main-Advanced-requirements.html | 60 + .../Main-Contracts-and-static_005fassert.html | 61 + ...ting-user_002ddefined-copy-operations.html | 62 + 0.0.6/html_split/Main-implementing-UDLs.html | 59 + 0.0.6/html_split/Main-implementing-_002a.html | 62 + ..._002derror-handling-static_005fassert.html | 67 + .../Module-name-Requires-Expressions.html | 59 + 0.0.6/html_split/Motivation.html | 57 + ...-Recent-Version-and-Alternate-Formats.html | 84 + .../Organization-of-This-Document.html | 101 ++ 0.0.6/html_split/Overview.html | 61 + 0.0.6/html_split/Points-to-cover.html | 69 + 0.0.6/html_split/Preprocessor.html | 58 + .../References-on-Learning-Outcomes.html | 71 + 0.0.6/html_split/References.html | 59 + 0.0.6/html_split/Software-Design.html | 56 + 0.0.6/html_split/Standard-Library.html | 57 + 0.0.6/html_split/Student-outcomes.html | 73 + .../Summary-of-Modules-and-Topics.html | 106 ++ 0.0.6/html_split/Testing-and-Debugging.html | 59 + 0.0.6/html_split/Tooling.html | 57 + 0.0.6/html_split/Topic-introduction.html | 55 + 0.0.6/html_split/Use-of-This-Document.html | 58 + .../User_002dDefined-Types-Classes.html | 69 + ...ed-to-C_002b_002b-Teaching-Guidelines.html | 69 + 0.0.6/html_split/_0023advanced.html | 40 + 0.0.6/html_split/_0023advanced_002d1.html | 40 + 0.0.6/html_split/_0023advanced_002d2.html | 40 + 0.0.6/html_split/_0023advanced_002d3.html | 40 + ..._0023backgroundrequired_002dknowledge.html | 40 + ...ackgroundrequired_002dknowledge_002d1.html | 40 + ...ackgroundrequired_002dknowledge_002d2.html | 40 + ...ackgroundrequired_002dknowledge_002d3.html | 40 + ...ackgroundrequired_002dknowledge_002d4.html | 40 + ...ackgroundrequired_002dknowledge_002d5.html | 40 + ...ackgroundrequired_002dknowledge_002d6.html | 40 + ...ackgroundrequired_002dknowledge_002d7.html | 40 + ...ackgroundrequired_002dknowledge_002d8.html | 40 + ...ackgroundrequired_002dknowledge_002d9.html | 40 + ...d_002dcontrol_002dflow_002dconstructs.html | 40 + 0.0.6/html_split/_0023building.html | 40 + ...ject_002dmodel_002dcopy_002dsemantics.html | 40 + 0.0.6/html_split/_0023caveats.html | 40 + 0.0.6/html_split/_0023caveats_002d1.html | 40 + 0.0.6/html_split/_0023caveats_002d2.html | 40 + 0.0.6/html_split/_0023caveats_002d3.html | 40 + 0.0.6/html_split/_0023caveats_002d4.html | 40 + 0.0.6/html_split/_0023caveats_002d5.html | 40 + 0.0.6/html_split/_0023caveats_002d6.html | 40 + 0.0.6/html_split/_0023caveats_002d7.html | 40 + 0.0.6/html_split/_0023caveats_002d8.html | 40 + 0.0.6/html_split/_0023caveats_002d9.html | 40 + .../_0023compilation_002dmodel.html | 40 + ..._0023compile_002dtime_002dcomputation.html | 40 + ...and_002daim_002dof_002dthis_002dguide.html | 40 + ...ributing_002dto_002dthis_002ddocument.html | 40 + 0.0.6/html_split/_0023contributors.html | 40 + ...02dfor_002dmodules_002dand_002dtopics.html | 40 + 0.0.6/html_split/_0023disclaimer.html | 40 + 0.0.6/html_split/_0023error_002dhandling.html | 40 + ...mples_002dof_002dcourse_002dcurricula.html | 40 + ...2e_002dnon_002dstandard_002dlibraries.html | 40 + ...ith_002da_002dconstant_002dexpression.html | 40 + ..._002dwhen_002dare_002dcopies_002dmade.html | 40 + ...ns_002dwith_002ddefault_002darguments.html | 40 + .../_0023foundational_002dusing_002dudls.html | 40 + ...dwriting_002drequires_002dexpressions.html | 40 + 0.0.6/html_split/_0023functions.html | 40 + ...023functions_002ddefault_002dargument.html | 40 + ...ons_002duser_002ddefined_002dliterals.html | 40 + ...generic_002dprogramming_002dtemplates.html | 40 + 0.0.6/html_split/_0023glossary.html | 40 + .../_0023how_002dto_002dcontribute.html | 40 + ...nce_002dand_002dclass_002dhierarchies.html | 40 + 0.0.6/html_split/_0023license.html | 40 + ...023main_002dadvanced_002drequirements.html | 40 + ...ntracts_002dand_002dstatic_005fassert.html | 40 + .../_0023main_002dimplementing.html | 40 + .../_0023main_002dimplementing_002dudls.html | 40 + ...r_002ddefined_002dcopy_002doperations.html | 40 + ...or_002dhandling_002dstatic_005fassert.html | 40 + ...002dname_002drequires_002dexpressions.html | 40 + 0.0.6/html_split/_0023motivation.html | 40 + 0.0.6/html_split/_0023motivation_002d1.html | 40 + 0.0.6/html_split/_0023motivation_002d2.html | 40 + 0.0.6/html_split/_0023motivation_002d3.html | 40 + 0.0.6/html_split/_0023motivation_002d4.html | 40 + ...ion_002dand_002dalternate_002dformats.html | 40 + ...nization_002dof_002dthis_002ddocument.html | 40 + 0.0.6/html_split/_0023overview.html | 40 + 0.0.6/html_split/_0023overview_002d1.html | 40 + 0.0.6/html_split/_0023overview_002d2.html | 40 + 0.0.6/html_split/_0023overview_002d3.html | 40 + 0.0.6/html_split/_0023overview_002d4.html | 40 + .../_0023points_002dto_002dcover.html | 40 + .../_0023points_002dto_002dcover_002d1.html | 40 + .../_0023points_002dto_002dcover_002d2.html | 40 + .../_0023points_002dto_002dcover_002d3.html | 40 + .../_0023points_002dto_002dcover_002d4.html | 40 + .../_0023points_002dto_002dcover_002d5.html | 40 + .../_0023points_002dto_002dcover_002d6.html | 40 + .../_0023points_002dto_002dcover_002d7.html | 40 + .../_0023points_002dto_002dcover_002d8.html | 40 + 0.0.6/html_split/_0023preprocessor.html | 40 + 0.0.6/html_split/_0023references.html | 40 + ...nces_002don_002dlearning_002doutcomes.html | 40 + .../html_split/_0023software_002ddesign.html | 40 + .../html_split/_0023standard_002dlibrary.html | 40 + .../html_split/_0023student_002doutcomes.html | 40 + .../_0023student_002doutcomes_002d1.html | 40 + .../_0023student_002doutcomes_002d2.html | 40 + .../_0023student_002doutcomes_002d3.html | 40 + .../_0023student_002doutcomes_002d4.html | 40 + .../_0023student_002doutcomes_002d5.html | 40 + .../_0023student_002doutcomes_002d6.html | 40 + .../_0023student_002doutcomes_002d7.html | 40 + .../_0023student_002doutcomes_002d8.html | 40 + .../_0023student_002doutcomes_002d9.html | 40 + ...002dof_002dmodules_002dand_002dtopics.html | 40 + .../_0023testing_002dand_002ddebugging.html | 40 + 0.0.6/html_split/_0023tooling.html | 40 + .../_0023topic_002dintroduction.html | 40 + .../_0023topic_002dintroduction_002d1.html | 40 + .../_0023topic_002dintroduction_002d2.html | 40 + .../_0023topic_002dintroduction_002d3.html | 40 + .../_0023topic_002dintroduction_002d4.html | 40 + ..._0023use_002dof_002dthis_002ddocument.html | 40 + ...ser_002ddefined_002dtypes_002dclasses.html | 40 + ...dto_002dc_002dteaching_002dguidelines.html | 40 + 0.0.6/html_split/index.html | 240 +++ 0.0.6/html_split/unknown_node.html | 763 +++++++++ latest/index.html | 8 +- 165 files changed, 10138 insertions(+), 4 deletions(-) create mode 100644 0.0.6/guidelines.epub create mode 100644 0.0.6/html/images/cpp_logo.png create mode 100644 0.0.6/html/index.html create mode 100644 0.0.6/html_split/Advanced.html create mode 100644 0.0.6/html_split/Background_002fRequired-Knowledge.html create mode 100644 0.0.6/html_split/Background_002frequired-knowledge.html create mode 100644 0.0.6/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html create mode 100644 0.0.6/html_split/Building.html create mode 100644 0.0.6/html_split/C_002b_002b-object-model-copy-semantics.html create mode 100644 0.0.6/html_split/Caveats.html create mode 100644 0.0.6/html_split/Compilation-Model.html create mode 100644 0.0.6/html_split/Compile_002dTime-Computation.html create mode 100644 0.0.6/html_split/Context-and-Aim-of-This-Guide.html create mode 100644 0.0.6/html_split/Contributing-to-This-Document.html create mode 100644 0.0.6/html_split/Contributors.html create mode 100644 0.0.6/html_split/Detailed-Information-for-Modules-and-Topics.html create mode 100644 0.0.6/html_split/Disclaimer.html create mode 100644 0.0.6/html_split/Error-Handling.html create mode 100644 0.0.6/html_split/Examples-of-Course-Curricula.html create mode 100644 0.0.6/html_split/External-ie-Non-Standard-Libraries.html create mode 100644 0.0.6/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html create mode 100644 0.0.6/html_split/Foundational-How-and-when-are-copies-made.html create mode 100644 0.0.6/html_split/Foundational-Using-UDLs.html create mode 100644 0.0.6/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html create mode 100644 0.0.6/html_split/Foundational-Writing-requires_002dexpressions.html create mode 100644 0.0.6/html_split/Functions-default-argument.html create mode 100644 0.0.6/html_split/Functions-user_002ddefined-literals.html create mode 100644 0.0.6/html_split/Functions.html create mode 100644 0.0.6/html_split/Generic-Programming-Templates.html create mode 100644 0.0.6/html_split/Glossary.html create mode 100644 0.0.6/html_split/How-To-Contribute.html create mode 100644 0.0.6/html_split/Inheritance-and-Class-Hierarchies.html create mode 100644 0.0.6/html_split/License.html create mode 100644 0.0.6/html_split/Main-Advanced-requirements.html create mode 100644 0.0.6/html_split/Main-Contracts-and-static_005fassert.html create mode 100644 0.0.6/html_split/Main-Implementing-user_002ddefined-copy-operations.html create mode 100644 0.0.6/html_split/Main-implementing-UDLs.html create mode 100644 0.0.6/html_split/Main-implementing-_002a.html create mode 100644 0.0.6/html_split/Meta_002derror-handling-static_005fassert.html create mode 100644 0.0.6/html_split/Module-name-Requires-Expressions.html create mode 100644 0.0.6/html_split/Motivation.html create mode 100644 0.0.6/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html create mode 100644 0.0.6/html_split/Organization-of-This-Document.html create mode 100644 0.0.6/html_split/Overview.html create mode 100644 0.0.6/html_split/Points-to-cover.html create mode 100644 0.0.6/html_split/Preprocessor.html create mode 100644 0.0.6/html_split/References-on-Learning-Outcomes.html create mode 100644 0.0.6/html_split/References.html create mode 100644 0.0.6/html_split/Software-Design.html create mode 100644 0.0.6/html_split/Standard-Library.html create mode 100644 0.0.6/html_split/Student-outcomes.html create mode 100644 0.0.6/html_split/Summary-of-Modules-and-Topics.html create mode 100644 0.0.6/html_split/Testing-and-Debugging.html create mode 100644 0.0.6/html_split/Tooling.html create mode 100644 0.0.6/html_split/Topic-introduction.html create mode 100644 0.0.6/html_split/Use-of-This-Document.html create mode 100644 0.0.6/html_split/User_002dDefined-Types-Classes.html create mode 100644 0.0.6/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html create mode 100644 0.0.6/html_split/_0023advanced.html create mode 100644 0.0.6/html_split/_0023advanced_002d1.html create mode 100644 0.0.6/html_split/_0023advanced_002d2.html create mode 100644 0.0.6/html_split/_0023advanced_002d3.html create mode 100644 0.0.6/html_split/_0023backgroundrequired_002dknowledge.html create mode 100644 0.0.6/html_split/_0023backgroundrequired_002dknowledge_002d1.html create mode 100644 0.0.6/html_split/_0023backgroundrequired_002dknowledge_002d2.html create mode 100644 0.0.6/html_split/_0023backgroundrequired_002dknowledge_002d3.html create mode 100644 0.0.6/html_split/_0023backgroundrequired_002dknowledge_002d4.html create mode 100644 0.0.6/html_split/_0023backgroundrequired_002dknowledge_002d5.html create mode 100644 0.0.6/html_split/_0023backgroundrequired_002dknowledge_002d6.html create mode 100644 0.0.6/html_split/_0023backgroundrequired_002dknowledge_002d7.html create mode 100644 0.0.6/html_split/_0023backgroundrequired_002dknowledge_002d8.html create mode 100644 0.0.6/html_split/_0023backgroundrequired_002dknowledge_002d9.html create mode 100644 0.0.6/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html create mode 100644 0.0.6/html_split/_0023building.html create mode 100644 0.0.6/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html create mode 100644 0.0.6/html_split/_0023caveats.html create mode 100644 0.0.6/html_split/_0023caveats_002d1.html create mode 100644 0.0.6/html_split/_0023caveats_002d2.html create mode 100644 0.0.6/html_split/_0023caveats_002d3.html create mode 100644 0.0.6/html_split/_0023caveats_002d4.html create mode 100644 0.0.6/html_split/_0023caveats_002d5.html create mode 100644 0.0.6/html_split/_0023caveats_002d6.html create mode 100644 0.0.6/html_split/_0023caveats_002d7.html create mode 100644 0.0.6/html_split/_0023caveats_002d8.html create mode 100644 0.0.6/html_split/_0023caveats_002d9.html create mode 100644 0.0.6/html_split/_0023compilation_002dmodel.html create mode 100644 0.0.6/html_split/_0023compile_002dtime_002dcomputation.html create mode 100644 0.0.6/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html create mode 100644 0.0.6/html_split/_0023contributing_002dto_002dthis_002ddocument.html create mode 100644 0.0.6/html_split/_0023contributors.html create mode 100644 0.0.6/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html create mode 100644 0.0.6/html_split/_0023disclaimer.html create mode 100644 0.0.6/html_split/_0023error_002dhandling.html create mode 100644 0.0.6/html_split/_0023examples_002dof_002dcourse_002dcurricula.html create mode 100644 0.0.6/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html create mode 100644 0.0.6/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html create mode 100644 0.0.6/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html create mode 100644 0.0.6/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html create mode 100644 0.0.6/html_split/_0023foundational_002dusing_002dudls.html create mode 100644 0.0.6/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html create mode 100644 0.0.6/html_split/_0023functions.html create mode 100644 0.0.6/html_split/_0023functions_002ddefault_002dargument.html create mode 100644 0.0.6/html_split/_0023functions_002duser_002ddefined_002dliterals.html create mode 100644 0.0.6/html_split/_0023generic_002dprogramming_002dtemplates.html create mode 100644 0.0.6/html_split/_0023glossary.html create mode 100644 0.0.6/html_split/_0023how_002dto_002dcontribute.html create mode 100644 0.0.6/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html create mode 100644 0.0.6/html_split/_0023license.html create mode 100644 0.0.6/html_split/_0023main_002dadvanced_002drequirements.html create mode 100644 0.0.6/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html create mode 100644 0.0.6/html_split/_0023main_002dimplementing.html create mode 100644 0.0.6/html_split/_0023main_002dimplementing_002dudls.html create mode 100644 0.0.6/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html create mode 100644 0.0.6/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html create mode 100644 0.0.6/html_split/_0023module_002dname_002drequires_002dexpressions.html create mode 100644 0.0.6/html_split/_0023motivation.html create mode 100644 0.0.6/html_split/_0023motivation_002d1.html create mode 100644 0.0.6/html_split/_0023motivation_002d2.html create mode 100644 0.0.6/html_split/_0023motivation_002d3.html create mode 100644 0.0.6/html_split/_0023motivation_002d4.html create mode 100644 0.0.6/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html create mode 100644 0.0.6/html_split/_0023organization_002dof_002dthis_002ddocument.html create mode 100644 0.0.6/html_split/_0023overview.html create mode 100644 0.0.6/html_split/_0023overview_002d1.html create mode 100644 0.0.6/html_split/_0023overview_002d2.html create mode 100644 0.0.6/html_split/_0023overview_002d3.html create mode 100644 0.0.6/html_split/_0023overview_002d4.html create mode 100644 0.0.6/html_split/_0023points_002dto_002dcover.html create mode 100644 0.0.6/html_split/_0023points_002dto_002dcover_002d1.html create mode 100644 0.0.6/html_split/_0023points_002dto_002dcover_002d2.html create mode 100644 0.0.6/html_split/_0023points_002dto_002dcover_002d3.html create mode 100644 0.0.6/html_split/_0023points_002dto_002dcover_002d4.html create mode 100644 0.0.6/html_split/_0023points_002dto_002dcover_002d5.html create mode 100644 0.0.6/html_split/_0023points_002dto_002dcover_002d6.html create mode 100644 0.0.6/html_split/_0023points_002dto_002dcover_002d7.html create mode 100644 0.0.6/html_split/_0023points_002dto_002dcover_002d8.html create mode 100644 0.0.6/html_split/_0023preprocessor.html create mode 100644 0.0.6/html_split/_0023references.html create mode 100644 0.0.6/html_split/_0023references_002don_002dlearning_002doutcomes.html create mode 100644 0.0.6/html_split/_0023software_002ddesign.html create mode 100644 0.0.6/html_split/_0023standard_002dlibrary.html create mode 100644 0.0.6/html_split/_0023student_002doutcomes.html create mode 100644 0.0.6/html_split/_0023student_002doutcomes_002d1.html create mode 100644 0.0.6/html_split/_0023student_002doutcomes_002d2.html create mode 100644 0.0.6/html_split/_0023student_002doutcomes_002d3.html create mode 100644 0.0.6/html_split/_0023student_002doutcomes_002d4.html create mode 100644 0.0.6/html_split/_0023student_002doutcomes_002d5.html create mode 100644 0.0.6/html_split/_0023student_002doutcomes_002d6.html create mode 100644 0.0.6/html_split/_0023student_002doutcomes_002d7.html create mode 100644 0.0.6/html_split/_0023student_002doutcomes_002d8.html create mode 100644 0.0.6/html_split/_0023student_002doutcomes_002d9.html create mode 100644 0.0.6/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html create mode 100644 0.0.6/html_split/_0023testing_002dand_002ddebugging.html create mode 100644 0.0.6/html_split/_0023tooling.html create mode 100644 0.0.6/html_split/_0023topic_002dintroduction.html create mode 100644 0.0.6/html_split/_0023topic_002dintroduction_002d1.html create mode 100644 0.0.6/html_split/_0023topic_002dintroduction_002d2.html create mode 100644 0.0.6/html_split/_0023topic_002dintroduction_002d3.html create mode 100644 0.0.6/html_split/_0023topic_002dintroduction_002d4.html create mode 100644 0.0.6/html_split/_0023use_002dof_002dthis_002ddocument.html create mode 100644 0.0.6/html_split/_0023user_002ddefined_002dtypes_002dclasses.html create mode 100644 0.0.6/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html create mode 100644 0.0.6/html_split/index.html create mode 100644 0.0.6/html_split/unknown_node.html diff --git a/0.0.6/guidelines.epub b/0.0.6/guidelines.epub new file mode 100644 index 0000000000000000000000000000000000000000..e7327a3b11ede41735ac28322800a7507cb147d3 GIT binary patch literal 31524 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 P8bJT&N0OxTe_s86G?zaz literal 0 HcmV?d00001 diff --git a/0.0.6/html/images/cpp_logo.png b/0.0.6/html/images/cpp_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..780e8a32bdd384c1dbd0fc999b9ef9ed2e1bdad6 GIT binary patch literal 23613 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 literal 0 HcmV?d00001 diff --git a/0.0.6/html/index.html b/0.0.6/html/index.html new file mode 100644 index 0000000..1f19e20 --- /dev/null +++ b/0.0.6/html/index.html @@ -0,0 +1,1430 @@ + + + + + + + Guidelines for Teaching C++ + + + + + + + + + + + + + + + + + + + + + Guidelines for Teaching C++ + + + + + + + +
      + +
      + +
      + +
      + +
      +

      Guidelines for Teaching C++

      + +

      Version X.Y.Z

      + +

      SG20 (ISO C++ Study Group on Education)

      +
      +
      + +
      +
      +
      + +
      +
      + +
      +

      1 Obtaining This Document: The Most Recent Version and Alternate Formats

      +

      The most recent version of this document is available as an online HTML document at: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/latest/.

      +

      The version of the document that you are currently reading is available in the following formats:

      +
        +
      1. online (HTML) format as a single large HTML document: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.6/html [later to be https://cplusplus.github.io/SG20/0.0.6/html?]

      2. +
      3. EPUB format: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.6/guidelines.epub [later to be https:/cplusplus.github.io/SG20/0.0.6/guidelines.epub?]

      4. +
      5. online (HTML) format, split across multiple HTML documents: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.6/html_split/ [later to be https://cplusplus.github.io/SG20/0.0.6/html_split/?] [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

      6. +
      +

      Older versions of this document are also available. In general version ver is available at https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/ver. For example, version v0.1.0 (assuming that this version exists) would be available at [later to be https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/v0.1.0?].

      +

      2 Disclaimer

      +

      This document is intended as a proof of concept to solicit feedback from others. This document is incomplete. This document likely has at least a few errors.

      +

      3 Context and Aim of This Guide

      +

      This document is intended to serve as a resource for instructors to assist in the preparation of courses on C++ in a variety of settings, including university, college, and industry environments. The main objectives of this document are as follows:

      +
        +
      • to provide guidelines for content to be covered by courses of various difficulty levels on C++ (e.g., topics and learning outcomes)
      • +
      • to note some common misunderstandings and problematic points that may be encountered when teaching particular topics
      • +
      • to suggest resources useful for teaching C++
      • +
      • to present examples of curriculum for specific courses
      • +
      +

      This document does not itself provide a curriculum for a single specific course, but is rather a set of guidelines that can be used to prepare curricula for a wide variety of courses that differ in focus and level of sophistication. (This said, however, some links to other documents with examples of curricula for specific courses may be included herein.) This document only intends to target the teaching of the most recently ratified version of the C++ standard. (This said, however, since older versions of this document are also available, these older versions may be of some use to those who need guidance in older versions of the standard, at least versions that do not predate C++20.)

      +

      4 Use of This Document

      +

      [NOTE: This document follows the same license model as the C++ Core Guidelines. The LICENSE document is taken verbatim from the C++ Core Guidelines.] This document is made available under a MIT-style license. In simple terms, this license permits copying, use, modification, and creation of derivative works. A copy of the license is included in the section LICENSE.

      +

      5 Contributing to This Document

      +

      Contributions to this document are welcome. If you would like to help with this project as a contributor, please read the section How to Contribute.

      +

      6 Organization of This Document

      +

      The various concepts (i.e., ideas) to potentially be covered are partitioned into modules. A module is very broad in scope and consists of numerous topics. [Note: Can I suggest that we use the term “area” or “unit” instead of “module”? I think that these other choices are better and also avoid any potential confusion over what is meant by “module” (i.e., C++ term versus plain English term).]

      +

      For each module, topics related to the module are identified. Then, for each topic, learning outcomes are specified. In order to address a wide variety of courses on C++, each topic is addressed at three proficiency levels. These proficiency levels allow each topic to be covered at more than one level of detail. This allows target audiences with different background and learning objectives to be accommodated. The three proficiency levels are as follows:

      +
        +
      • foundational. This level gives the learner the idea that a facility exists, what benefits it offers, and the basic ways of using it. [Note: Isn’t this just “novice”/“beginner”?]

      • +
      • main. This level shows mainstream uses and techniques. For abstraction and organizational mechanisms it also demonstrates how to build them. This level should also give the learner a basic (but not detailed) understanding of how a facility might be implemented so that the learner can have a first-order understanding of any costs involved. [Note: The term “main” is not very descriptive/helpful. Could I suggest using “intermediate”?]

      • +
      • advanced. This level gives information suitable for an expert. For most topics there is an expert level of knowledge that most programmers rarely need and techniques that require detailed understanding of language rules or library implementation.

      • +
      +

      The remainder of this document is organized as follows. The various topics are listed grouped by module. In cases where a topic might be classified into more than one module, the topic is listed under the module of most direct relevance. This is done in order to avoid duplication of content. (In the case that a topic is equally relevant to multiple modules, the decision of which to select is made by a proverbial coin toss.) The order in which modules and topics are presented is not meant to imply any order of coverage in a course. The order in which items are listed is essentially arbitrary.

      +

      7 Summary of Modules and Topics

      +

      In the sections that follow, the various modules and topics are presented. There is one section per module. For each module, a table listing the various topics in that module is provided. The ID for a topic is linked to the detailed coverage of that topic that comes later in the document. If a topic has any learning outcomes at a given proficiency level, this is indicated by a checkmark (“✔️”). If a topic has no learning outcomes (simply because there are not any, not because the information is missing), this is indicated by an em dash (“—”). In the case that the information for a topic is completely missing, a question mark (“?”) symbol is used.

      +

      [NOTE: These topics are taken mostly from the SG20 GitHub repository. They are not intended to be complete in any sense. In fact, by gathering together all topics in one place where they are easily viewed, it is hoped that missing and unbalanced items will be more obvious.]

      +

      7.1 Compilation Model

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Translation Units???
      [?]Headers???
      [?]Modules???
      [?]Name Mangling???
      [?]Phases of Translation???
      [?]Separate Compilation???
      [?]Linkage???
      +

      7.2 Preprocessor

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Preprocessor Metaprogramming???
      [?]Inclusion???
      [?]Macros???
      +

      7.3 Basics Types, Objects, Values, Expressions, Statements, and Control-Flow Constructs

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Constant Objects???
      [?]Declarations and Definitions???
      [?]Selection Constructs (e.g., if, ternary)???
      [?]Looping Constructs (e.g., for, while, etc.)???
      +

      7.4 Functions

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Calling Functions???
      [?]Parameter Passing (e.g., Passing By Value and Reference)???
      [func-args]Default Arguments✔️
      [?]Returning Multiple Values???
      [?]Overloading???
      [udl]User-Defined Literals✔️✔️
      +

      7.5 User-Defined Types (Classes)

      + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Special Member Functions???
      [?]Types???
      [?]Conversions???
      [?]Constructors and Destructors???
      [?]Move/Copy Constructors and Assignment Operators???
      [?]Member Functions???
      [?]Sum Types???
      [?]User-Defined Literals???
      [?]Special Member Functions???
      [?]Guidelines for Special Member Functions (e.g., Rule of Five, Rule of Zero)???
      [copy]Copy Semantics✔️✔️
      [?]Moving and Copying???
      [?]Lambdas???
      +

      7.6 Inheritance and Class Hierarchies

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Virtual Functions???
      [?]Run-Time Type Information???
      +

      7.7 Compile-Time Computation

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Constant Expressions and Constant Evaluation???
      [static-assert]static_assert✔️✔️
      +

      7.8 Generic Programming (Templates)

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Concepts???
      [?]SFINAE???
      [?]Template Metaprogramming???
      [?]Function Templates???
      [?]Requires Clauses???
      [req-expr]Requires Expressions✔️✔️
      +

      7.9 Error Handling

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Classes of Errors???
      [?]errno???
      [?]Error Codes???
      [?]Exception Handling???
      +

      7.10 Standard Library

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Input/Output (I/O)???
      [?]Containers, Iterators, and Algorithms???
      +

      7.11 External (i.e., Non Standard) Libraries

      + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Graphical User Interfaces???
      +

      7.12 Building

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Software Build Tools???
      [?]Strategies for Handling Build Problems???
      +

      7.13 Testing and Debugging

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Source-Level Debuggers???
      [?]Code Sanitizers???
      [?]Test Frameworks???
      [?]Debugging Strategies???
      +

      7.14 Tooling

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Compiler Toolchains???
      [?]IDEs???
      +

      7.15 Software Design

      + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Design by Contract???
      +

      8 Detailed Information for Modules and Topics

      +

      8.1 C++ object model: copy semantics

      +

      Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

      +

      8.1.1 Overview

      +

      Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

      + ++++ + + + + + + + + + + + + + + + + + + + + +
      LevelObjectives
      Foundationalunderstanding how and when are copies made
      Mainimplementing user-defined copy operations
      Advancedspecial cases: copy elision
      +

      8.1.2 Motivation

      +

      Why is this important? Why do we want to learn/teach this topic?

      +

      Copy semantics allows the user to define how objects of a class get replicated and interact on a value level.

      +

      8.1.3 Topic introduction

      +

      Very brief introduction to the topic.

      +

      Explains when and how objects are copied.

      +

      8.1.4 Foundational: How and when are copies made

      +

      8.1.4.1 Background/Required Knowledge

      +

      A student is able to: * explain what a C++ type is? [C++ object model: types] * explain what an object is? [C++ object model: objects], [C++ object model: constant objects] * define and understand class invariants?

      +

      It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain special member functions [C++ object model: special member functions]

      +

      8.1.4.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      +

      A student should be able to:

      +
        +
      1. explain what copy semantics accomplish
      2. +
      +
        +
      • establishing “equivalent” object state in another object
      • +
      +
        +
      1. explain difference between copying a reference and copying a value*
      2. +
      3. explain where copies are made
      4. +
      +

      * In other languages these differences are sometimes referred to as shallow and deep copy.

      +

      8.1.4.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      +
        +
      • Compiler-provided copy operations may result in ownership problems (e.g., char*). These ownership problems can generally be solved by using types whose copy operations have the appropriate semantics, e.g., std::string instead of char* to hold string values.
      • +
      +

      8.1.4.4 Points to cover

      +

      This section lists important details for each point.

      +
        +
      • Principle of copying +
          +
        • Copying of types, which follow the rule of zero
        • +
        • Copying of types, with user defined copy operations
        • +
        • Copying an object does not change the original
        • +
      • +
      • Practical applications +
          +
        • std::unique_ptr (has no copy)
        • +
        • Strings (copies the value)
        • +
      • +
      +

      8.1.5 Main: Implementing user-defined copy operations

      +

      8.1.5.1 Background/Required Knowledge

      +

      A student is able to: * identify special member functions [C++ object model: special member functions]

      +

      It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain the rule of zero [C++ object model: rule-of-zero] * explain the rule of five [C++ object model: rule-of-five]

      +

      8.1.5.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      +

      A student should be able to: * explain when they have to implement the copy operations for their own type * Copy constructor * Copy assignment operator * implement copy operations for their own types * Optional: explain when copying with basic and strong exception guarantees is useful

      +

      8.1.5.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      +
        +
      • Intricacies when implementing copy operations: +
          +
        • Examples of how not to write copy operations (e.g., C++03 std::auto_ptr)
        • +
      • +
      +

      8.1.5.4 Points to cover

      +

      This section lists important details for each point.

      +
        +
      • Copy constructors and copy assignment operators +
          +
        • How compiler generates default copy operations
        • +
        • =default, =delete (No copy)
        • +
        • How-to write your own copy operations
        • +
        • Rule-of-five
        • +
        • Copy assignment operators can be ref-qualified to avoid assigning into temporary objects.
        • +
      • +
      +

      8.1.6 Advanced

      +

      These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

      +

      When can copies be elided and when does the standard guarantee copy elision. References: * Abseil tip of the Week #166 * cppreference - Copy elision

      +

      8.2 Functions: user-defined literals

      +

      Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

      +

      8.2.1 Overview

      +

      Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

      + ++++ + + + + + + + + + + + + + + + + + + + + +
      LevelObjectives
      Foundationalusing and understanding UDLs
      Mainimplementing your own UDLs
      AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
      +

      8.2.2 Motivation

      +

      Why is this important? Why do we want to learn/teach this topic?

      +
        +
      • Allows clearer expression of intent in C++.
      • +
      • std::string: "Hello, world!"s
      • +
      • std::chrono: 3h + 10min + 5s
      • +
      +

      8.2.3 Topic introduction

      +

      Very brief introduction to the topic.

      +
        +
      • Explain the existence of user defined literals. Example: 12min + 17s is terse, expressive and type safe.
      • +
      +

      8.2.4 Foundational: Using UDLs

      +

      8.2.4.1 Background/Required Knowledge

      +

      A student: * knows how to form numeric literals, e.g., 1.5f means a float of value 1.5. * is familiar with the major C++ types: * bool (Boolean type) * int (Integer type) * double (Floating-point type) * std::string (Text type) * std::vector (Collection type) * knows that namespaces exist, and namespace std. * knows what using-declarations and using-directives are. [C++ object model: declarations]

      +

      8.2.4.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      +

      A student should be able to:

      +
        +
      1. use using namespace std::string_literals[1].
      2. +
      3. recognise UDLs in code that they are reading.
      4. +
      5. figure out which UDL definitions for a used type exist.
      6. +
      7. identify parts of the standard library that make use of UDLs.
      8. +
      9. prevent the dangers of temporaries created with "blah"s as well as with std::string{"blah"}.
      10. +
      11. effectively selects the right set of namespaces in using-directives from the sub-namespaces std::literals.
      12. +
      +

      [1]: explain that it’s okay to use a using-directive to “activate” UDLs.

      +

      8.2.4.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      +
        +
      • A student gets confused by the similarities and differences between built-in suffixes and UDLs and between UDLs from different namespaces.
      • +
      • A student “activates” two suffixes with the same signature from different namespaces.
      • +
      +

      8.2.4.4 Points to cover

      +

      This section lists important details for each point.

      +

      8.2.5 Main: implementing UDLs

      +

      8.2.5.1 Background/Required Knowledge

      +
        +
      • All of the above.
      • +
      +

      8.2.5.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      +

      A student should be able to:

      +
        +
      1. write a UDL operator of their own.
      2. +
      3. separate unrelated UDLs into distinct namespaces.
      4. +
      +

      8.2.5.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      +

      No caveats at present. #### Points to cover

      +

      This section lists important details for each point.

      +

      No caveats at present. ### Advanced {#udl-advanced}

      +

      These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

      +

      8.3 Functions: default argument

      +

      Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

      +

      8.3.1 Overview

      +

      Functions in C++ may be overloaded with different numbers and types of parameters. It may be of value to specify default arguments for some number of parameters, to allow a caller to avoid specifying arguments that rarely change, or to enable expanding the set of parameters while maintaining backward compatibility with existing callers.

      + ++++ + + + + + + + + + + + + + + + + + + + + +
      LevelObjective
      FoundationalDefine and use functions with default arguments
      Main
      Advancedrefinement of default arguments through multiple declarations
      +

      8.3.2 Motivation

      +

      Default arguments allow the omission of arguments with obvious or common values. Also may be utilized to extend an existing function signature without forcing changes to existing calling code.

      +

      8.3.3 Topic introduction

      +

      Explain how default arguments work and how to define them.

      +

      8.3.4 Foundational: Using and defining functions with default arguments

      +

      8.3.4.1 Background/Required Knowledge

      +

      A student is able to:

      + +

      8.3.4.2 Student outcomes

      +

      A student should be able to:

      +
        +
      1. Call to a function with a default argument with or without that argument specified
      2. +
      3. Declare a function with a default argument, and omit the default in the definition’s signature
      4. +
      5. Explain when the lifetime of a default argument begins and ends
      6. +
      +

      8.3.4.3 Caveats

      +
        +
      • When no forward-declaration exists, the definition serves as the declaration
      • +
      • When multiple declarations exist, only one may specify the default for any particular parameter, but multiple declarations may specify the defaults for different parameters.
      • +
      • Additional default values may be specified for other parameters in repeat declarations
      • +
      • Calling an overloaded function with fewer arguments may be ambiguous with regard to an overload with default arguments
      • +
      +

      8.3.4.4 Points to cover

      +
        +
      • Default value may only be specified once for each parameter among all declarations
      • +
      • Default values must start from the rightmost parameter and continue leftward without gaps
      • +
      • Considerations of when to use default arguments vs overload set
      • +
      +

      8.3.5 Main: implementing *

      +

      8.3.5.1 Background/required knowledge

      +
        +
      • All of the above.
      • +
      +

      8.3.5.2 Student outcomes

      +

      A student should be able to:

      +

      8.3.5.3 Caveats

      +

      8.3.5.4 Points to cover

      +

      8.3.6 Advanced

      +

      Subsequent redeclarations of the same function may add default argument values, which are then usable by callers. Though a single parameter cannot be given a default argument twice in the same translation unit, it is legal, though ill-advised, to give the same function different default arguments in different translation units.

      +

      8.4 Module name: Requires Expressions

      +

      Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

      +

      8.4.1 Overview

      + ++++ + + + + + + + + + + + + + + + + + + + + +
      LevelObjectives
      FoundationalDefine and use requires-expressions to check satisfaction of expressions by given parameters
      MainDefine and use requires-expressions to check properties of expressions
      Advanced
      +

      8.4.2 Motivation

      +

      Requires-expressions allow a developer to perform compile-time evaluation on the validity of other expressions. These are fundamental to the ability to write concepts. [Compile-time programming: concepts]

      +

      8.5 Topic introduction

      +

      Requires-expressions are compile-time predicates which evaluate to true when their specified set of expressions are all valid for a given set of inputs.

      +

      8.5.1 Foundational: Writing requires-expressions

      +

      8.5.1.1 Background/Required Knowledge

      +

      A student is able to:

      + +

      It is helpful if:

      +
        +
      • The student is aware that attempting to specialize the template with types or values which do not match otherwise unstated assumptions will cause errors within the template.
      • +
      +

      8.5.1.2 Student outcomes

      +

      A student should be able to:

      +
        +
      1. Write a simple-requirement to assert the validity of an expression
      2. +
      3. Write a type-requirement to check the existence of a type by its identifier
      4. +
      5. Write a compound-requirement to test the resulting type of an expression
      6. +
      7. Write a nested-requirement to test the constexpr value of an operation, as opposed to just the syntactic validity
      8. +
      9. Use a requires-expression within a concept, requires-clause, or if constexpr condition
      10. +
      +

      8.5.1.3 Caveats

      +

      To require that expressions, which evaluate to a boolean value like sizeof(t) == 4, evaluate to true a nested-requirement is needed (e.g., requires sizeof(t) == 4;). Omitting the requires results in a simple-requirement, which is satisfied based purely on syntactic validity, not on the result of the operation.

      +

      8.5.1.4 Points to cover

      +
        +
      • All requires-expression requirements terminate with a semicolon.
      • +
      • simple-requirements are used to check that an expression is well-formed.
      • +
      • nested-requirements are introduced with requires and primarily used to check the result of an expression computable by the compiler, including concepts or other requires-expressions.
      • +
      • type-requirements are introduced with typename and used to verify the existence of a type with a particular identifier.
      • +
      • compound-requirements are enclosed in braces and can be used to check the resulting type of an expression.
      • +
      • Checks are performed by the compiler, not at run time.
      • +
      • If covering usage of requires-expression with requires-clause, [Compile-time programming: requires clause] demonstrate requires requires and show how to ever avoid writing it by using a concept. [Compile-time programming: concepts]
      • +
      +

      8.5.2 Main: Advanced requirements

      +

      8.5.2.1 Background/required knowledge

      +
        +
      • All of the above.
      • +
      • Knowledge of noexcept
      • +
      +

      A student is able to:

      + +

      8.5.2.2 Student outcomes

      +

      A student should be able to:

      +
        +
      1. Write compound-requirements which test the noexceptness of an expression.
      2. +
      3. Use a concept as the target of a compound-requirement.
      4. +
      +

      8.5.2.3 Caveats

      +

      8.5.2.4 Points to cover

      +
        +
      • Compound-requirements allow the optional ability to test whether an expression is marked as noexcept, by using a trailing noexcept keyword.
      • +
      + +
        +
      • If the return-type-requirement of a compound-requirement is a concept, that concept is given the resulting type as the first parameter, followed by the specified parameters in the compound-requirement. { ++x } -> C<int> would substitute C<decltype((++x)), int> and check that concept C is satisfied for those parameters.
      • +
      +

      8.5.3 Advanced

      +

      8.6 Meta-error handling: static_assert

      +

      Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

      +

      8.6.1 Overview

      +

      Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

      + ++++ + + + + + + + + + + + + + + + + + + + + +
      LevelObjectives
      FoundationalCalling static_assert with a constant expression
      MainUsing static_assert to detect contract violations and improve error messages
      Advanced
      +

      8.6.2 Motivation

      +

      Why is this important? Why do we want to learn/teach this topic?

      +

      static_assert allows the developer to enforce that conditions which can be checked during compilation will force build errors when violated. Additionally, they are the best mechanism by which a developer can pass useful information to other developers regarding what violation occurred or what must be done, instead.

      +

      8.6.3 Topic introduction

      +

      Very brief introduction to the topic.

      +

      static_assert is a compile-time evaluated function that asserts the truth of a supplied predicate, issuing an optional user-supplied error message if the predicate is false.

      +

      8.6.4 Foundational: Calling static_assert with a constant expression

      +

      8.6.4.1 Background/Required Knowledge

      +

      A student:

      +
        +
      • Should be able to explain the difference between code evaluated at compile-time and run-time
      • +
      • Should be able to cite some examples of compile-time known information, such as sizeof(T)
      • +
      +

      8.6.4.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      +

      A student should be able to:

      +
        +
      1. Assert the expected size of a structure using static_assert
      2. +
      +

      8.6.4.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      +

      8.6.4.4 Points to cover

      +

      This section lists important details for each point.

      +
        +
      • X
      • +
      • In addition to what is wrong, a good error message will inform the user of how to correct it
      • +
      +

      8.6.5 Main: Contracts and static_assert

      +

      8.6.5.1 Background/Required Knowledge

      +
        +
      • All of the above.
      • +
      • General understanding of compile-time requirements
      • +
      +

      8.6.5.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      +

      A student should be able to:

      +
        +
      1. Utilize static_assert to verify preconditions of a meta-function
      2. +
      3. Utilize static_assert to verify the results of meta-functions for known values
      4. +
      +

      8.6.5.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      +

      8.6.5.4 Points to cover

      +

      This section lists important details for each point.

      +
        +
      • When writing a meta-function, use static_assert to test the results
      • +
      • Write static_assert calls at the scope of the code they are guarding
      • +
      + +

      8.6.6 Advanced

      +

      These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

      +

      9 Examples of Course Curricula

      +

      [NOTE: Anyone have any suggestions of items to add here?] The following are examples of curricula for course on C++: …

      +

      10 License

      +

      [NOTE: This license is copied verbatim from the C++ Core Guidelines.]

      +
      Copyright (c) Standard C++ Foundation and its contributors
      +
      +Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
      +perpetual license to copy, use, modify, and create derivative works from this
      +project for your personal or internal business use only. The above copyright
      +notice and this permission notice shall be included in all copies or
      +substantial portions of the project. This license does not grant permission
      +to use the trade names, trademarks, service marks, or product names of the
      +licensor, except as required for reasonable and customary use in describing
      +the origin of the project.
      +
      +Standard C++ Foundation reserves the right to accept contributions to the
      +project at its discretion.
      +
      +By contributing material to this project, you grant Standard C++ Foundation,
      +and those who receive the material directly or indirectly from Standard C++
      +Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
      +transferrable license to reproduce, prepare derivative works of, publicly
      +display, publicly perform, and distribute your contributed material and such
      +derivative works, and to sublicense any or all of the foregoing rights to third
      +parties for commercial or non-commercial use.  You also grant Standard C++
      +Foundation, and those who receive the material directly or indirectly from
      +Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
      +irrevocable license under your patent claims that directly read on your
      +contributed material to make, have made, use, offer to sell, sell and import
      +or otherwise dispose of the material. You warrant that your material is your
      +original work, or that you have the right to grant the above licenses.
      +
      +THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
      +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
      +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
      +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
      +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
      +OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
      +PROJECT.
      +
      +If you believe that anything in the project infringes your copyright, please
      +contact us at admin@isocpp.org with your contact information and a detailed
      +description of your intellectual property, including a specific URL where you
      +believe your intellectual property is being infringed.
      +
      +

      11 Contributors

      +
      Christopher Di Bella
      +Florian Sattler
      +Michael Adams
      +rwdougla
      +vulder
      +

      12 How To Contribute

      +

      Before attempting to contribute any content for consideration for inclusion in this document, please read the information below and and the referenced documents as appropriate.

      +

      All contributions to this project must be made in accordance with the license in section License. This teaching-guidelines document only offers guidance on teaching C++ as it is specified in the current version of the C++ standard. So, content should be presented relative to the most-recently ratified version of the standard. A detailed explanation of how to present the material for a topic is given in:

      +
        +
      • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.
      • +
      +

      Any potential contributors should ensure that they read this document. The following document may also be helpful in providing some general background on the modular approach to teaching followed herein:

      + +

      In order to prepare content, it is important to understand what learning outcomes are, and how to prepare good ones. Some information on learning outcomes can be found in the References section. The following document offers a concise introduction to learning outcomes:

      + +

      13 Glossary

      +

      Some possible terms to include in the glossary:

      +
        +
      • learning objective
      • +
      • learning outcome
      • +
      +

      14 References

      +

      14.1 References on Learning Outcomes

      + + +
        +
      • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — Standing Document for SG20: Guidelines for Teaching C++ to Beginners. https://wg21.link/p1389.

      • +
      • Christopher Di Bella. P1725R0 — Modular Topic Design. https://wg21.link/p1725.

      • +
      • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.

      • +
      • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study Group: C++ Education. https://wg21.link/p1231.

      • +
      • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 — Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0.

      • +
      +
      +
      + +
      + + diff --git a/0.0.6/html_split/Advanced.html b/0.0.6/html_split/Advanced.html new file mode 100644 index 0000000..c4d659a --- /dev/null +++ b/0.0.6/html_split/Advanced.html @@ -0,0 +1,60 @@ + + + + + +Advanced (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      8.1.6 Advanced

      +

      These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

      +

      When can copies be elided and when does the standard guarantee copy +elision. References: * Abseil tip of +the Week #166 * +cppreference +- Copy elision +

      + + + + + diff --git a/0.0.6/html_split/Background_002fRequired-Knowledge.html b/0.0.6/html_split/Background_002fRequired-Knowledge.html new file mode 100644 index 0000000..d3ee185 --- /dev/null +++ b/0.0.6/html_split/Background_002fRequired-Knowledge.html @@ -0,0 +1,65 @@ + + + + + +Background/Required Knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1.4.1 Background/Required Knowledge

      +

      A student is able to: * explain what a C++ type is? +[C++ object model: types] +* explain what an object is? +[C++ object +model: objects], +[C++ object model: +constant objects] * define and understand class invariants? +

      +

      It helps when a student is able to: * use move semantics +[C++ object model: move +semantics] * explain special member functions +[C++ object model: +special member functions] +

      + + + + + diff --git a/0.0.6/html_split/Background_002frequired-knowledge.html b/0.0.6/html_split/Background_002frequired-knowledge.html new file mode 100644 index 0000000..79fd94d --- /dev/null +++ b/0.0.6/html_split/Background_002frequired-knowledge.html @@ -0,0 +1,54 @@ + + + + + +Background/required knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      8.3.5.1 Background/required knowledge

      +
        +
      • All of the above. +
      + + + + + + diff --git a/0.0.6/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html b/0.0.6/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html new file mode 100644 index 0000000..3e850b1 --- /dev/null +++ b/0.0.6/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html @@ -0,0 +1,60 @@ + + + + + +Basics Types Objects Values Expressions Statements and Control-Flow Constructs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.3 Basics Types, Objects, Values, Expressions, Statements, and

      +

      Control-Flow Constructs +

      + + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Constant Objects???
      [‘?’]Declarations and Definitions???
      [‘?’]Selection Constructs (e.g., if, ternary)???
      [‘?’]Looping Constructs (e.g., for, while, etc.)???
      + + + + + + diff --git a/0.0.6/html_split/Building.html b/0.0.6/html_split/Building.html new file mode 100644 index 0000000..e628fd0 --- /dev/null +++ b/0.0.6/html_split/Building.html @@ -0,0 +1,57 @@ + + + + + +Building (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.12 Building

      + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Software Build Tools???
      [‘?’]Strategies for Handling Build Problems???
      + + + + + + diff --git a/0.0.6/html_split/C_002b_002b-object-model-copy-semantics.html b/0.0.6/html_split/C_002b_002b-object-model-copy-semantics.html new file mode 100644 index 0000000..6d7350c --- /dev/null +++ b/0.0.6/html_split/C_002b_002b-object-model-copy-semantics.html @@ -0,0 +1,69 @@ + + + + + +C++ object model copy semantics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1 C++ object model: copy semantics

      +

      Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

      + + + + + + + + + + + + + + diff --git a/0.0.6/html_split/Caveats.html b/0.0.6/html_split/Caveats.html new file mode 100644 index 0000000..c5303c9 --- /dev/null +++ b/0.0.6/html_split/Caveats.html @@ -0,0 +1,62 @@ + + + + + +Caveats (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1.4.3 Caveats

      +

      This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

      +
        +
      • Compiler-provided copy operations may result in ownership problems +(e.g., char*). These ownership problems can generally be solved +by using types whose copy operations have the appropriate semantics, +e.g., std::string instead of char* to hold string values. +
      + + + + + + diff --git a/0.0.6/html_split/Compilation-Model.html b/0.0.6/html_split/Compilation-Model.html new file mode 100644 index 0000000..de11703 --- /dev/null +++ b/0.0.6/html_split/Compilation-Model.html @@ -0,0 +1,62 @@ + + + + + +Compilation Model (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.1 Compilation Model

      + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Translation Units???
      [‘?’]Headers???
      [‘?’]Modules???
      [‘?’]Name Mangling???
      [‘?’]Phases of Translation???
      [‘?’]Separate Compilation???
      [‘?’]Linkage???
      + + + + + + diff --git a/0.0.6/html_split/Compile_002dTime-Computation.html b/0.0.6/html_split/Compile_002dTime-Computation.html new file mode 100644 index 0000000..b9aaa0e --- /dev/null +++ b/0.0.6/html_split/Compile_002dTime-Computation.html @@ -0,0 +1,57 @@ + + + + + +Compile-Time Computation (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.7 Compile-Time Computation

      + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Constant Expressions and Constant Evaluation???
      [‘static-assert’]static_assert‘✔️’‘✔️’
      + + + + + + diff --git a/0.0.6/html_split/Context-and-Aim-of-This-Guide.html b/0.0.6/html_split/Context-and-Aim-of-This-Guide.html new file mode 100644 index 0000000..60efa61 --- /dev/null +++ b/0.0.6/html_split/Context-and-Aim-of-This-Guide.html @@ -0,0 +1,76 @@ + + + + + +Context and Aim of This Guide (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      +Next: , Previous: , Up: Top   [Contents]

      +
      +
      +

      3 Context and Aim of This Guide

      +

      This document is intended to serve as a resource for instructors to +assist in the preparation of courses on C++ in a variety of settings, +including university, college, and industry environments. The main +objectives of this document are as follows: +

      +
        +
      • to provide guidelines for content to be covered by courses of various +difficulty levels on C++ (e.g., topics and learning outcomes) +
      • to note some common misunderstandings and problematic points that may be +encountered when teaching particular topics +
      • to suggest resources useful for teaching C++ +
      • to present examples of curriculum for specific courses +
      + +

      This document does not itself provide a curriculum for a single specific +course, but is rather a set of guidelines that can be used to prepare +curricula for a wide variety of courses that differ in focus and level +of sophistication. (This said, however, some links to other documents +with examples of curricula for specific courses may be included herein.) +This document only intends to target the teaching of the most recently +ratified version of the C++ standard. (This said, however, since older +versions of this document are also available, these older versions may +be of some use to those who need guidance in older versions of the +standard, at least versions that do not predate C++20.) +

      + + + + + diff --git a/0.0.6/html_split/Contributing-to-This-Document.html b/0.0.6/html_split/Contributing-to-This-Document.html new file mode 100644 index 0000000..eac6c28 --- /dev/null +++ b/0.0.6/html_split/Contributing-to-This-Document.html @@ -0,0 +1,55 @@ + + + + + +Contributing to This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      5 Contributing to This Document

      +

      Contributions to this document are welcome. If you would like to help +with this project as a contributor, please read the section +‘How to Contribute’. +

      + + + + + diff --git a/0.0.6/html_split/Contributors.html b/0.0.6/html_split/Contributors.html new file mode 100644 index 0000000..8adb4b1 --- /dev/null +++ b/0.0.6/html_split/Contributors.html @@ -0,0 +1,58 @@ + + + + + +Contributors (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      +Next: , Previous: , Up: Top   [Contents]

      +
      +
      +

      11 Contributors

      + +
      Christopher Di Bella
      +Florian Sattler
      +Michael Adams
      +rwdougla
      +vulder
      +
      + + + + + diff --git a/0.0.6/html_split/Detailed-Information-for-Modules-and-Topics.html b/0.0.6/html_split/Detailed-Information-for-Modules-and-Topics.html new file mode 100644 index 0000000..c8c9fcd --- /dev/null +++ b/0.0.6/html_split/Detailed-Information-for-Modules-and-Topics.html @@ -0,0 +1,67 @@ + + + + + +Detailed Information for Modules and Topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8 Detailed Information for Modules and Topics

      + + + + + + + + + + + + + + + diff --git a/0.0.6/html_split/Disclaimer.html b/0.0.6/html_split/Disclaimer.html new file mode 100644 index 0000000..a911983 --- /dev/null +++ b/0.0.6/html_split/Disclaimer.html @@ -0,0 +1,55 @@ + + + + + +Disclaimer (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      2 Disclaimer

      +

      This document is intended as a proof of concept to solicit feedback from +others. This document is incomplete. This document likely has at least a +few errors. +

      + + + + + diff --git a/0.0.6/html_split/Error-Handling.html b/0.0.6/html_split/Error-Handling.html new file mode 100644 index 0000000..1f8d3e0 --- /dev/null +++ b/0.0.6/html_split/Error-Handling.html @@ -0,0 +1,59 @@ + + + + + +Error Handling (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.9 Error Handling

      + + + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Classes of Errors???
      [‘?’]errno???
      [‘?’]Error Codes???
      [‘?’]Exception Handling???
      + + + + + + diff --git a/0.0.6/html_split/Examples-of-Course-Curricula.html b/0.0.6/html_split/Examples-of-Course-Curricula.html new file mode 100644 index 0000000..64eb64b --- /dev/null +++ b/0.0.6/html_split/Examples-of-Course-Curricula.html @@ -0,0 +1,53 @@ + + + + + +Examples of Course Curricula (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      9 Examples of Course Curricula

      +

      [NOTE: Anyone have any suggestions of items to add here?] The +following are examples of curricula for course on C++: … +

      + + + + + diff --git a/0.0.6/html_split/External-ie-Non-Standard-Libraries.html b/0.0.6/html_split/External-ie-Non-Standard-Libraries.html new file mode 100644 index 0000000..2bf081e --- /dev/null +++ b/0.0.6/html_split/External-ie-Non-Standard-Libraries.html @@ -0,0 +1,56 @@ + + + + + +External ie Non Standard Libraries (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.11 External (i.e., Non Standard) Libraries

      + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Graphical User Interfaces???
      + + + + + + diff --git a/0.0.6/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html b/0.0.6/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html new file mode 100644 index 0000000..ce2c1b0 --- /dev/null +++ b/0.0.6/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html @@ -0,0 +1,62 @@ + + + + + +Foundational Calling static_assert with a constant expression (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
      +

      8.6.4 Foundational: Calling static_assert with a constant

      +

      expression +

      + + + + + + + + + + + + diff --git a/0.0.6/html_split/Foundational-How-and-when-are-copies-made.html b/0.0.6/html_split/Foundational-How-and-when-are-copies-made.html new file mode 100644 index 0000000..4cec33b --- /dev/null +++ b/0.0.6/html_split/Foundational-How-and-when-are-copies-made.html @@ -0,0 +1,63 @@ + + + + + +Foundational How and when are copies made (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1.4 Foundational: How and when are copies made

      + + + + + + + + + + + + + diff --git a/0.0.6/html_split/Foundational-Using-UDLs.html b/0.0.6/html_split/Foundational-Using-UDLs.html new file mode 100644 index 0000000..adb461e --- /dev/null +++ b/0.0.6/html_split/Foundational-Using-UDLs.html @@ -0,0 +1,61 @@ + + + + + +Foundational Using UDLs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
      +

      8.2.4 Foundational: Using UDLs

      + + + + + + + + + + + + + diff --git a/0.0.6/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html b/0.0.6/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html new file mode 100644 index 0000000..e37a992 --- /dev/null +++ b/0.0.6/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html @@ -0,0 +1,62 @@ + + + + + +Foundational Using and defining functions with default arguments (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
      +

      8.3.4 Foundational: Using and defining functions with default

      +

      arguments +

      + + + + + + + + + + + + diff --git a/0.0.6/html_split/Foundational-Writing-requires_002dexpressions.html b/0.0.6/html_split/Foundational-Writing-requires_002dexpressions.html new file mode 100644 index 0000000..6846c6e --- /dev/null +++ b/0.0.6/html_split/Foundational-Writing-requires_002dexpressions.html @@ -0,0 +1,60 @@ + + + + + +Foundational Writing requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +
      +

      8.5.1 Foundational: Writing requires-expressions

      + + + + + + + + + + + + + diff --git a/0.0.6/html_split/Functions-default-argument.html b/0.0.6/html_split/Functions-default-argument.html new file mode 100644 index 0000000..2571ca9 --- /dev/null +++ b/0.0.6/html_split/Functions-default-argument.html @@ -0,0 +1,67 @@ + + + + + +Functions default argument (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
      +

      8.3 Functions: default argument

      +

      Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

      + + + + + + + + + + + + + + diff --git a/0.0.6/html_split/Functions-user_002ddefined-literals.html b/0.0.6/html_split/Functions-user_002ddefined-literals.html new file mode 100644 index 0000000..7e41de9 --- /dev/null +++ b/0.0.6/html_split/Functions-user_002ddefined-literals.html @@ -0,0 +1,66 @@ + + + + + +Functions user-defined literals (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      8.2 Functions: user-defined literals

      +

      Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

      + + + + + + + + + + + + + diff --git a/0.0.6/html_split/Functions.html b/0.0.6/html_split/Functions.html new file mode 100644 index 0000000..82175a5 --- /dev/null +++ b/0.0.6/html_split/Functions.html @@ -0,0 +1,61 @@ + + + + + +Functions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.4 Functions

      + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Calling Functions???
      [‘?’]Parameter Passing (e.g., Passing By Value and Reference)???
      [‘func-args’]Default Arguments‘✔️’
      [‘?’]Returning Multiple Values???
      [‘?’]Overloading???
      [‘udl’]User-Defined Literals‘✔️’‘✔️’
      + + + + + + diff --git a/0.0.6/html_split/Generic-Programming-Templates.html b/0.0.6/html_split/Generic-Programming-Templates.html new file mode 100644 index 0000000..1a22cd7 --- /dev/null +++ b/0.0.6/html_split/Generic-Programming-Templates.html @@ -0,0 +1,61 @@ + + + + + +Generic Programming Templates (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.8 Generic Programming (Templates)

      + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Concepts???
      [‘?’]SFINAE???
      [‘?’]Template Metaprogramming???
      [‘?’]Function Templates???
      [‘?’]Requires Clauses???
      [‘req-expr’]Requires Expressions‘✔️’‘✔️’
      + + + + + + diff --git a/0.0.6/html_split/Glossary.html b/0.0.6/html_split/Glossary.html new file mode 100644 index 0000000..2bf24f2 --- /dev/null +++ b/0.0.6/html_split/Glossary.html @@ -0,0 +1,58 @@ + + + + + +Glossary (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      +Next: , Previous: , Up: Top   [Contents]

      +
      +
      +

      13 Glossary

      +

      Some possible terms to include in the glossary: +

      +
        +
      • learning objective +
      • learning outcome +
      + + + + + + diff --git a/0.0.6/html_split/How-To-Contribute.html b/0.0.6/html_split/How-To-Contribute.html new file mode 100644 index 0000000..f1963d5 --- /dev/null +++ b/0.0.6/html_split/How-To-Contribute.html @@ -0,0 +1,89 @@ + + + + + +How To Contribute (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      +Next: , Previous: , Up: Top   [Contents]

      +
      +
      +

      12 How To Contribute

      +

      Before attempting to contribute any content for consideration for +inclusion in this document, please read the information below and and +the referenced documents as appropriate. +

      +

      All contributions to this project must be made in accordance with the +license in section License. This teaching-guidelines +document only offers guidance on teaching C++ as it is specified in the +current version of the C++ standard. So, content should be presented +relative to the most-recently ratified version of the standard. A +detailed explanation of how to present the material for a topic is given +in: +

      +
        +
      • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to +structure a teaching topic. https://wg21.link/p2193. +
      + +

      Any potential contributors should ensure that they read this document. +The following document may also be helpful in providing some general +background on the modular approach to teaching followed herein: +

      + + +

      In order to prepare content, it is important to understand what learning +outcomes are, and how to prepare good ones. Some information on learning +outcomes can be found in the References section. The +following document offers a concise introduction to learning outcomes: +

      + + + + + + + diff --git a/0.0.6/html_split/Inheritance-and-Class-Hierarchies.html b/0.0.6/html_split/Inheritance-and-Class-Hierarchies.html new file mode 100644 index 0000000..1a394b0 --- /dev/null +++ b/0.0.6/html_split/Inheritance-and-Class-Hierarchies.html @@ -0,0 +1,57 @@ + + + + + +Inheritance and Class Hierarchies (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.6 Inheritance and Class Hierarchies

      + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Virtual Functions???
      [‘?’]Run-Time Type Information???
      + + + + + + diff --git a/0.0.6/html_split/License.html b/0.0.6/html_split/License.html new file mode 100644 index 0000000..38d2d8d --- /dev/null +++ b/0.0.6/html_split/License.html @@ -0,0 +1,100 @@ + + + + + +License (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      +Next: , Previous: , Up: Top   [Contents]

      +
      +
      +

      10 License

      +

      [NOTE: This license is copied verbatim from the C++ Core +Guidelines.] +

      +
      Copyright (c) Standard C++ Foundation and its contributors
      +
      +Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
      +perpetual license to copy, use, modify, and create derivative works from this
      +project for your personal or internal business use only. The above copyright
      +notice and this permission notice shall be included in all copies or
      +substantial portions of the project. This license does not grant permission
      +to use the trade names, trademarks, service marks, or product names of the
      +licensor, except as required for reasonable and customary use in describing
      +the origin of the project.
      +
      +Standard C++ Foundation reserves the right to accept contributions to the
      +project at its discretion.
      +
      +By contributing material to this project, you grant Standard C++ Foundation,
      +and those who receive the material directly or indirectly from Standard C++
      +Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
      +transferrable license to reproduce, prepare derivative works of, publicly
      +display, publicly perform, and distribute your contributed material and such
      +derivative works, and to sublicense any or all of the foregoing rights to third
      +parties for commercial or non-commercial use.  You also grant Standard C++
      +Foundation, and those who receive the material directly or indirectly from
      +Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
      +irrevocable license under your patent claims that directly read on your
      +contributed material to make, have made, use, offer to sell, sell and import
      +or otherwise dispose of the material. You warrant that your material is your
      +original work, or that you have the right to grant the above licenses.
      +
      +THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
      +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
      +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
      +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
      +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
      +OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
      +PROJECT.
      +
      +If you believe that anything in the project infringes your copyright, please
      +contact us at admin@isocpp.org with your contact information and a detailed
      +description of your intellectual property, including a specific URL where you
      +believe your intellectual property is being infringed.
      +
      +
      +
      +

      +Next: , Previous: , Up: Top   [Contents]

      +
      + + + + + diff --git a/0.0.6/html_split/Main-Advanced-requirements.html b/0.0.6/html_split/Main-Advanced-requirements.html new file mode 100644 index 0000000..6c4ac0e --- /dev/null +++ b/0.0.6/html_split/Main-Advanced-requirements.html @@ -0,0 +1,60 @@ + + + + + +Main Advanced requirements (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +
      +

      8.5.2 Main: Advanced requirements

      + + + + + + + + + + + + + diff --git a/0.0.6/html_split/Main-Contracts-and-static_005fassert.html b/0.0.6/html_split/Main-Contracts-and-static_005fassert.html new file mode 100644 index 0000000..6c0ba46 --- /dev/null +++ b/0.0.6/html_split/Main-Contracts-and-static_005fassert.html @@ -0,0 +1,61 @@ + + + + + +Main Contracts and static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
      +

      8.6.5 Main: Contracts and static_assert

      + + + + + + + + + + + + + diff --git a/0.0.6/html_split/Main-Implementing-user_002ddefined-copy-operations.html b/0.0.6/html_split/Main-Implementing-user_002ddefined-copy-operations.html new file mode 100644 index 0000000..e38dfd6 --- /dev/null +++ b/0.0.6/html_split/Main-Implementing-user_002ddefined-copy-operations.html @@ -0,0 +1,62 @@ + + + + + +Main Implementing user-defined copy operations (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      8.1.5 Main: Implementing user-defined copy operations

      + + + + + + + + + + + + + diff --git a/0.0.6/html_split/Main-implementing-UDLs.html b/0.0.6/html_split/Main-implementing-UDLs.html new file mode 100644 index 0000000..1f6f381 --- /dev/null +++ b/0.0.6/html_split/Main-implementing-UDLs.html @@ -0,0 +1,59 @@ + + + + + +Main implementing UDLs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
      +

      8.2.5 Main: implementing UDLs

      + + + + + + + + + + + + diff --git a/0.0.6/html_split/Main-implementing-_002a.html b/0.0.6/html_split/Main-implementing-_002a.html new file mode 100644 index 0000000..b661f2d --- /dev/null +++ b/0.0.6/html_split/Main-implementing-_002a.html @@ -0,0 +1,62 @@ + + + + + +Main implementing * (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      8.3.5 Main: implementing *

      + + + + + + + + + + + + + diff --git a/0.0.6/html_split/Meta_002derror-handling-static_005fassert.html b/0.0.6/html_split/Meta_002derror-handling-static_005fassert.html new file mode 100644 index 0000000..f81a34e --- /dev/null +++ b/0.0.6/html_split/Meta_002derror-handling-static_005fassert.html @@ -0,0 +1,67 @@ + + + + + +Meta-error handling static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
      +

      8.6 Meta-error handling: static_assert

      +

      Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

      + + + + + + + + + + + + + + diff --git a/0.0.6/html_split/Module-name-Requires-Expressions.html b/0.0.6/html_split/Module-name-Requires-Expressions.html new file mode 100644 index 0000000..8bab76c --- /dev/null +++ b/0.0.6/html_split/Module-name-Requires-Expressions.html @@ -0,0 +1,59 @@ + + + + + +Module name Requires Expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
      +

      8.4 Module name: Requires Expressions

      +

      Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

      + + + + + + + + + + diff --git a/0.0.6/html_split/Motivation.html b/0.0.6/html_split/Motivation.html new file mode 100644 index 0000000..40b0ec9 --- /dev/null +++ b/0.0.6/html_split/Motivation.html @@ -0,0 +1,57 @@ + + + + + +Motivation (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1.2 Motivation

      +

      Why is this important? Why do we want to learn/teach this +topic? +

      +

      Copy semantics allows the user to define how objects of a class get +replicated and interact on a value level. +

      + + + + + diff --git a/0.0.6/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html b/0.0.6/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html new file mode 100644 index 0000000..37fb345 --- /dev/null +++ b/0.0.6/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html @@ -0,0 +1,84 @@ + + + + + +Obtaining This Document The Most Recent Version and Alternate Formats (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      +Next: , Previous: , Up: Top   [Contents]

      +
      +
      +

      1 Obtaining This Document: The Most Recent Version and Alternate

      +

      Formats +The most recent version of this document is available as an online HTML +document at: +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/latest/. +

      +

      The version of the document that you are currently reading is available +in the following formats: +

      +
        +
      1. online (HTML) format as a single large HTML document: +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.6/html +[later to be https://cplusplus.github.io/SG20/0.0.6/html?] + +
      2. EPUB format: +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.6/guidelines.epub +[later to be +https:/cplusplus.github.io/SG20/0.0.6/guidelines.epub?] + +
      3. online (HTML) format, split across multiple HTML documents: +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.6/html_split/ +[later to be https://cplusplus.github.io/SG20/0.0.6/html_split/?] +[Note: The support for this format needs more work (in order to +beautify and fix linking issues).] + +
      + +

      Older versions of this document are also available. In general version +ver is available at +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/ver. +For example, version v0.1.0 (assuming that this version exists) would be +available at [later to be +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/v0.1.0?]. +

      + + + + + diff --git a/0.0.6/html_split/Organization-of-This-Document.html b/0.0.6/html_split/Organization-of-This-Document.html new file mode 100644 index 0000000..3e48985 --- /dev/null +++ b/0.0.6/html_split/Organization-of-This-Document.html @@ -0,0 +1,101 @@ + + + + + +Organization of This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      6 Organization of This Document

      +

      The various concepts (i.e., ideas) to potentially be covered are +partitioned into modules. A module is very broad in scope and consists +of numerous topics. [Note: Can I suggest that we use the term +“area” or “unit” instead of “module”? I think that these other +choices are better and also avoid any potential confusion over what is +meant by “module” (i.e., C++ term versus plain English term).] +

      +

      For each module, topics related to the module are identified. Then, for +each topic, learning outcomes are specified. In order to address a wide +variety of courses on C++, each topic is addressed at three proficiency +levels. These proficiency levels allow each topic to be covered at more +than one level of detail. This allows target audiences with different +background and learning objectives to be accommodated. The three +proficiency levels are as follows: +

      +
        +
      • foundational. This level gives the learner the idea that a facility +exists, what benefits it offers, and the basic ways of using it. +[Note: Isn’t this just “novice”/“beginner”?] + +
      • main. This level shows mainstream uses and techniques. For abstraction +and organizational mechanisms it also demonstrates how to build them. +This level should also give the learner a basic (but not detailed) +understanding of how a facility might be implemented so that the learner +can have a first-order understanding of any costs involved. +[Note: The term “main” is not very descriptive/helpful. Could +I suggest using “intermediate”?] + +
      • advanced. This level gives information suitable for an expert. For most +topics there is an expert level of knowledge that most programmers +rarely need and techniques that require detailed understanding of +language rules or library implementation. + +
      + +

      The remainder of this document is organized as follows. The various +topics are listed grouped by module. In cases where a topic might be +classified into more than one module, the topic is listed under the +module of most direct relevance. This is done in order to avoid +duplication of content. (In the case that a topic is equally relevant to +multiple modules, the decision of which to select is made by a +proverbial coin toss.) The order in which modules and topics are +presented is not meant to imply any order of coverage in a course. The +order in which items are listed is essentially arbitrary. +

      +
      + + + + + + diff --git a/0.0.6/html_split/Overview.html b/0.0.6/html_split/Overview.html new file mode 100644 index 0000000..be44bfa --- /dev/null +++ b/0.0.6/html_split/Overview.html @@ -0,0 +1,61 @@ + + + + + +Overview (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1.1 Overview

      +

      Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

      + + + + + +
      LevelObjectives
      Foundationalunderstanding how and when are copies made
      Mainimplementing user-defined copy operations
      Advancedspecial cases: copy elision
      + + + + + + diff --git a/0.0.6/html_split/Points-to-cover.html b/0.0.6/html_split/Points-to-cover.html new file mode 100644 index 0000000..ba4b5cc --- /dev/null +++ b/0.0.6/html_split/Points-to-cover.html @@ -0,0 +1,69 @@ + + + + + +Points to cover (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1.4.4 Points to cover

      +

      This section lists important details for each point. +

      +
        +
      • Principle of copying +
          +
        • Copying of types, which follow the rule of zero +
        • Copying of types, with user defined copy operations +
        • Copying an object does not change the original +
        + +
      • Practical applications +
          +
        • std::unique_ptr (has no copy) +
        • Strings (copies the value) +
        + +
      + + + + + + diff --git a/0.0.6/html_split/Preprocessor.html b/0.0.6/html_split/Preprocessor.html new file mode 100644 index 0000000..345e396 --- /dev/null +++ b/0.0.6/html_split/Preprocessor.html @@ -0,0 +1,58 @@ + + + + + +Preprocessor (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.2 Preprocessor

      + + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Preprocessor Metaprogramming???
      [‘?’]Inclusion???
      [‘?’]Macros???
      + + + + + + diff --git a/0.0.6/html_split/References-on-Learning-Outcomes.html b/0.0.6/html_split/References-on-Learning-Outcomes.html new file mode 100644 index 0000000..7b74cad --- /dev/null +++ b/0.0.6/html_split/References-on-Learning-Outcomes.html @@ -0,0 +1,71 @@ + + + + + +References on Learning Outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      14.1 References on Learning Outcomes

      + + + + + + + diff --git a/0.0.6/html_split/References.html b/0.0.6/html_split/References.html new file mode 100644 index 0000000..f595be2 --- /dev/null +++ b/0.0.6/html_split/References.html @@ -0,0 +1,59 @@ + + + + + +References (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      +Previous: , Up: Top   [Contents]

      +
      +
      +

      14 References

      + + + + + + + + + + + diff --git a/0.0.6/html_split/Software-Design.html b/0.0.6/html_split/Software-Design.html new file mode 100644 index 0000000..6b4f6c8 --- /dev/null +++ b/0.0.6/html_split/Software-Design.html @@ -0,0 +1,56 @@ + + + + + +Software Design (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.15 Software Design

      + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Design by Contract???
      + + + + + + diff --git a/0.0.6/html_split/Standard-Library.html b/0.0.6/html_split/Standard-Library.html new file mode 100644 index 0000000..c80c7fc --- /dev/null +++ b/0.0.6/html_split/Standard-Library.html @@ -0,0 +1,57 @@ + + + + + +Standard Library (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.10 Standard Library

      + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Input/Output (I/O)???
      [‘?’]Containers, Iterators, and Algorithms???
      + + + + + + diff --git a/0.0.6/html_split/Student-outcomes.html b/0.0.6/html_split/Student-outcomes.html new file mode 100644 index 0000000..c604549 --- /dev/null +++ b/0.0.6/html_split/Student-outcomes.html @@ -0,0 +1,73 @@ + + + + + +Student outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1.4.2 Student outcomes

      +

      A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

      +

      A student should be able to: +

      +
        +
      1. explain what copy semantics accomplish +
      + +
        +
      • establishing “equivalent” object state in another object +
      + +
        +
      1. explain difference between copying a reference and copying a value* +
      2. explain where copies are made +
      + +

      * In other languages these differences are sometimes referred to as +shallow and deep copy. +

      + + + + + diff --git a/0.0.6/html_split/Summary-of-Modules-and-Topics.html b/0.0.6/html_split/Summary-of-Modules-and-Topics.html new file mode 100644 index 0000000..26b69be --- /dev/null +++ b/0.0.6/html_split/Summary-of-Modules-and-Topics.html @@ -0,0 +1,106 @@ + + + + + +Summary of Modules and Topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7 Summary of Modules and Topics

      +

      In the sections that follow, the various modules and topics are +presented. There is one section per module. For each module, a table +listing the various topics in that module is provided. The ID for a +topic is linked to the detailed coverage of that topic that comes later +in the document. If a topic has any learning outcomes at a given +proficiency level, this is indicated by a checkmark (“✔️”). If a topic +has no learning outcomes (simply because there are not any, not because +the information is missing), this is indicated by an em dash (“—”). +In the case that the information for a topic is completely missing, a +question mark (“?”) symbol is used. +

      +

      [NOTE: These topics are taken mostly from the SG20 GitHub +repository. They are not intended to be complete in any sense. In fact, +by gathering together all topics in one place where they are easily +viewed, it is hoped that missing and unbalanced items will be more +obvious.] +

      + + + + + + + + + + + + + + + + + + +
      + + + + + + diff --git a/0.0.6/html_split/Testing-and-Debugging.html b/0.0.6/html_split/Testing-and-Debugging.html new file mode 100644 index 0000000..da60211 --- /dev/null +++ b/0.0.6/html_split/Testing-and-Debugging.html @@ -0,0 +1,59 @@ + + + + + +Testing and Debugging (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      +Next: , Previous: , Up: Summary of Modules and Topics   [Contents]

      +
      +
      +

      7.13 Testing and Debugging

      + + + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Source-Level Debuggers???
      [‘?’]Code Sanitizers???
      [‘?’]Test Frameworks???
      [‘?’]Debugging Strategies???
      + + + + + + diff --git a/0.0.6/html_split/Tooling.html b/0.0.6/html_split/Tooling.html new file mode 100644 index 0000000..43c3b2f --- /dev/null +++ b/0.0.6/html_split/Tooling.html @@ -0,0 +1,57 @@ + + + + + +Tooling (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.14 Tooling

      + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Compiler Toolchains???
      [‘?’]IDEs???
      + + + + + + diff --git a/0.0.6/html_split/Topic-introduction.html b/0.0.6/html_split/Topic-introduction.html new file mode 100644 index 0000000..fff97f2 --- /dev/null +++ b/0.0.6/html_split/Topic-introduction.html @@ -0,0 +1,55 @@ + + + + + +Topic introduction (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1.3 Topic introduction

      +

      Very brief introduction to the topic. +

      +

      Explains when and how objects are copied. +

      + + + + + diff --git a/0.0.6/html_split/Use-of-This-Document.html b/0.0.6/html_split/Use-of-This-Document.html new file mode 100644 index 0000000..4c820d5 --- /dev/null +++ b/0.0.6/html_split/Use-of-This-Document.html @@ -0,0 +1,58 @@ + + + + + +Use of This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      4 Use of This Document

      +

      [NOTE: This document follows the same license model as the C++ +Core Guidelines. The LICENSE document is taken verbatim from the C++ +Core Guidelines.] This document is made available under a MIT-style +license. In simple terms, this license permits copying, use, +modification, and creation of derivative works. A copy of the license is +included in the section LICENSE. +

      + + + + + diff --git a/0.0.6/html_split/User_002dDefined-Types-Classes.html b/0.0.6/html_split/User_002dDefined-Types-Classes.html new file mode 100644 index 0000000..808279a --- /dev/null +++ b/0.0.6/html_split/User_002dDefined-Types-Classes.html @@ -0,0 +1,69 @@ + + + + + +User-Defined Types Classes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.5 User-Defined Types (Classes)

      + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Special Member Functions???
      [‘?’]Types???
      [‘?’]Conversions???
      [‘?’]Constructors and Destructors???
      [‘?’]Move/Copy Constructors and Assignment Operators???
      [‘?’]Member Functions???
      [‘?’]Sum Types???
      [‘?’]User-Defined Literals???
      [‘?’]Special Member Functions???
      [‘?’]Guidelines for Special Member Functions (e.g., Rule of Five, Rule +of Zero)???
      [‘copy’]Copy Semantics‘✔️’‘✔️’
      [‘?’]Moving and Copying???
      [‘?’]Lambdas???
      + + + + + + diff --git a/0.0.6/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html b/0.0.6/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html new file mode 100644 index 0000000..3f9bf2c --- /dev/null +++ b/0.0.6/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html @@ -0,0 +1,69 @@ + + + + + +Working Group Documents Related to C++ Teaching Guidelines (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      14.2 Working Group Documents Related to C++ Teaching Guidelines

      +
        +
      • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — +Standing Document for SG20: Guidelines for Teaching C++ to Beginners. +https://wg21.link/p1389. + +
      • Christopher Di Bella. P1725R0 — Modular Topic Design. +https://wg21.link/p1725. + +
      • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to +structure a teaching topic. https://wg21.link/p2193. + +
      • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study +Group: C++ Education. https://wg21.link/p1231. + +
      • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 +— Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0. + +
      + + + + + + diff --git a/0.0.6/html_split/_0023advanced.html b/0.0.6/html_split/_0023advanced.html new file mode 100644 index 0000000..d503bfc --- /dev/null +++ b/0.0.6/html_split/_0023advanced.html @@ -0,0 +1,40 @@ + + + + + + +#advanced (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #advanced.

      + diff --git a/0.0.6/html_split/_0023advanced_002d1.html b/0.0.6/html_split/_0023advanced_002d1.html new file mode 100644 index 0000000..282a7b8 --- /dev/null +++ b/0.0.6/html_split/_0023advanced_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #advanced-1.

      + diff --git a/0.0.6/html_split/_0023advanced_002d2.html b/0.0.6/html_split/_0023advanced_002d2.html new file mode 100644 index 0000000..039b3ff --- /dev/null +++ b/0.0.6/html_split/_0023advanced_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #advanced-2.

      + diff --git a/0.0.6/html_split/_0023advanced_002d3.html b/0.0.6/html_split/_0023advanced_002d3.html new file mode 100644 index 0000000..ebf5529 --- /dev/null +++ b/0.0.6/html_split/_0023advanced_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #advanced-3.

      + diff --git a/0.0.6/html_split/_0023backgroundrequired_002dknowledge.html b/0.0.6/html_split/_0023backgroundrequired_002dknowledge.html new file mode 100644 index 0000000..9959745 --- /dev/null +++ b/0.0.6/html_split/_0023backgroundrequired_002dknowledge.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge.

      + diff --git a/0.0.6/html_split/_0023backgroundrequired_002dknowledge_002d1.html b/0.0.6/html_split/_0023backgroundrequired_002dknowledge_002d1.html new file mode 100644 index 0000000..f6f6bd0 --- /dev/null +++ b/0.0.6/html_split/_0023backgroundrequired_002dknowledge_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-1.

      + diff --git a/0.0.6/html_split/_0023backgroundrequired_002dknowledge_002d2.html b/0.0.6/html_split/_0023backgroundrequired_002dknowledge_002d2.html new file mode 100644 index 0000000..b0b297d --- /dev/null +++ b/0.0.6/html_split/_0023backgroundrequired_002dknowledge_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-2.

      + diff --git a/0.0.6/html_split/_0023backgroundrequired_002dknowledge_002d3.html b/0.0.6/html_split/_0023backgroundrequired_002dknowledge_002d3.html new file mode 100644 index 0000000..ae34d91 --- /dev/null +++ b/0.0.6/html_split/_0023backgroundrequired_002dknowledge_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-3.

      + diff --git a/0.0.6/html_split/_0023backgroundrequired_002dknowledge_002d4.html b/0.0.6/html_split/_0023backgroundrequired_002dknowledge_002d4.html new file mode 100644 index 0000000..7417f62 --- /dev/null +++ b/0.0.6/html_split/_0023backgroundrequired_002dknowledge_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-4.

      + diff --git a/0.0.6/html_split/_0023backgroundrequired_002dknowledge_002d5.html b/0.0.6/html_split/_0023backgroundrequired_002dknowledge_002d5.html new file mode 100644 index 0000000..8f0570c --- /dev/null +++ b/0.0.6/html_split/_0023backgroundrequired_002dknowledge_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-5.

      + diff --git a/0.0.6/html_split/_0023backgroundrequired_002dknowledge_002d6.html b/0.0.6/html_split/_0023backgroundrequired_002dknowledge_002d6.html new file mode 100644 index 0000000..a1cdee1 --- /dev/null +++ b/0.0.6/html_split/_0023backgroundrequired_002dknowledge_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-6.

      + diff --git a/0.0.6/html_split/_0023backgroundrequired_002dknowledge_002d7.html b/0.0.6/html_split/_0023backgroundrequired_002dknowledge_002d7.html new file mode 100644 index 0000000..893a0ba --- /dev/null +++ b/0.0.6/html_split/_0023backgroundrequired_002dknowledge_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-7.

      + diff --git a/0.0.6/html_split/_0023backgroundrequired_002dknowledge_002d8.html b/0.0.6/html_split/_0023backgroundrequired_002dknowledge_002d8.html new file mode 100644 index 0000000..6080498 --- /dev/null +++ b/0.0.6/html_split/_0023backgroundrequired_002dknowledge_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-8.

      + diff --git a/0.0.6/html_split/_0023backgroundrequired_002dknowledge_002d9.html b/0.0.6/html_split/_0023backgroundrequired_002dknowledge_002d9.html new file mode 100644 index 0000000..3ea462d --- /dev/null +++ b/0.0.6/html_split/_0023backgroundrequired_002dknowledge_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-9.

      + diff --git a/0.0.6/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html b/0.0.6/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html new file mode 100644 index 0000000..925c568 --- /dev/null +++ b/0.0.6/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html @@ -0,0 +1,40 @@ + + + + + + +#basics-types-objects-values-expressions-statements-and-control-flow-constructs (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #basics-types-objects-values-expressions-statements-and-control-flow-constructs.

      + diff --git a/0.0.6/html_split/_0023building.html b/0.0.6/html_split/_0023building.html new file mode 100644 index 0000000..8ffc9df --- /dev/null +++ b/0.0.6/html_split/_0023building.html @@ -0,0 +1,40 @@ + + + + + + +#building (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #building.

      + diff --git a/0.0.6/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html b/0.0.6/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html new file mode 100644 index 0000000..a7e6bad --- /dev/null +++ b/0.0.6/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html @@ -0,0 +1,40 @@ + + + + + + +#c-object-model-copy-semantics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #c-object-model-copy-semantics.

      + diff --git a/0.0.6/html_split/_0023caveats.html b/0.0.6/html_split/_0023caveats.html new file mode 100644 index 0000000..d4bac8b --- /dev/null +++ b/0.0.6/html_split/_0023caveats.html @@ -0,0 +1,40 @@ + + + + + + +#caveats (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats.

      + diff --git a/0.0.6/html_split/_0023caveats_002d1.html b/0.0.6/html_split/_0023caveats_002d1.html new file mode 100644 index 0000000..64faefd --- /dev/null +++ b/0.0.6/html_split/_0023caveats_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-1.

      + diff --git a/0.0.6/html_split/_0023caveats_002d2.html b/0.0.6/html_split/_0023caveats_002d2.html new file mode 100644 index 0000000..6c66559 --- /dev/null +++ b/0.0.6/html_split/_0023caveats_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-2.

      + diff --git a/0.0.6/html_split/_0023caveats_002d3.html b/0.0.6/html_split/_0023caveats_002d3.html new file mode 100644 index 0000000..479063f --- /dev/null +++ b/0.0.6/html_split/_0023caveats_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-3.

      + diff --git a/0.0.6/html_split/_0023caveats_002d4.html b/0.0.6/html_split/_0023caveats_002d4.html new file mode 100644 index 0000000..9588a55 --- /dev/null +++ b/0.0.6/html_split/_0023caveats_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-4.

      + diff --git a/0.0.6/html_split/_0023caveats_002d5.html b/0.0.6/html_split/_0023caveats_002d5.html new file mode 100644 index 0000000..11edee5 --- /dev/null +++ b/0.0.6/html_split/_0023caveats_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-5.

      + diff --git a/0.0.6/html_split/_0023caveats_002d6.html b/0.0.6/html_split/_0023caveats_002d6.html new file mode 100644 index 0000000..6cea721 --- /dev/null +++ b/0.0.6/html_split/_0023caveats_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-6.

      + diff --git a/0.0.6/html_split/_0023caveats_002d7.html b/0.0.6/html_split/_0023caveats_002d7.html new file mode 100644 index 0000000..2a8f1cd --- /dev/null +++ b/0.0.6/html_split/_0023caveats_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-7.

      + diff --git a/0.0.6/html_split/_0023caveats_002d8.html b/0.0.6/html_split/_0023caveats_002d8.html new file mode 100644 index 0000000..e330642 --- /dev/null +++ b/0.0.6/html_split/_0023caveats_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-8.

      + diff --git a/0.0.6/html_split/_0023caveats_002d9.html b/0.0.6/html_split/_0023caveats_002d9.html new file mode 100644 index 0000000..004e434 --- /dev/null +++ b/0.0.6/html_split/_0023caveats_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-9.

      + diff --git a/0.0.6/html_split/_0023compilation_002dmodel.html b/0.0.6/html_split/_0023compilation_002dmodel.html new file mode 100644 index 0000000..1017867 --- /dev/null +++ b/0.0.6/html_split/_0023compilation_002dmodel.html @@ -0,0 +1,40 @@ + + + + + + +#compilation-model (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #compilation-model.

      + diff --git a/0.0.6/html_split/_0023compile_002dtime_002dcomputation.html b/0.0.6/html_split/_0023compile_002dtime_002dcomputation.html new file mode 100644 index 0000000..59b0c57 --- /dev/null +++ b/0.0.6/html_split/_0023compile_002dtime_002dcomputation.html @@ -0,0 +1,40 @@ + + + + + + +#compile-time-computation (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #compile-time-computation.

      + diff --git a/0.0.6/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html b/0.0.6/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html new file mode 100644 index 0000000..9294adf --- /dev/null +++ b/0.0.6/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html @@ -0,0 +1,40 @@ + + + + + + +#context-and-aim-of-this-guide (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #context-and-aim-of-this-guide.

      + diff --git a/0.0.6/html_split/_0023contributing_002dto_002dthis_002ddocument.html b/0.0.6/html_split/_0023contributing_002dto_002dthis_002ddocument.html new file mode 100644 index 0000000..272d848 --- /dev/null +++ b/0.0.6/html_split/_0023contributing_002dto_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#contributing-to-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #contributing-to-this-document.

      + diff --git a/0.0.6/html_split/_0023contributors.html b/0.0.6/html_split/_0023contributors.html new file mode 100644 index 0000000..a391f9d --- /dev/null +++ b/0.0.6/html_split/_0023contributors.html @@ -0,0 +1,40 @@ + + + + + + +#contributors (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #contributors.

      + diff --git a/0.0.6/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html b/0.0.6/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html new file mode 100644 index 0000000..d32c27e --- /dev/null +++ b/0.0.6/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html @@ -0,0 +1,40 @@ + + + + + + +#detailed-information-for-modules-and-topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #detailed-information-for-modules-and-topics.

      + diff --git a/0.0.6/html_split/_0023disclaimer.html b/0.0.6/html_split/_0023disclaimer.html new file mode 100644 index 0000000..e9658d6 --- /dev/null +++ b/0.0.6/html_split/_0023disclaimer.html @@ -0,0 +1,40 @@ + + + + + + +#disclaimer (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #disclaimer.

      + diff --git a/0.0.6/html_split/_0023error_002dhandling.html b/0.0.6/html_split/_0023error_002dhandling.html new file mode 100644 index 0000000..80cfb94 --- /dev/null +++ b/0.0.6/html_split/_0023error_002dhandling.html @@ -0,0 +1,40 @@ + + + + + + +#error-handling (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #error-handling.

      + diff --git a/0.0.6/html_split/_0023examples_002dof_002dcourse_002dcurricula.html b/0.0.6/html_split/_0023examples_002dof_002dcourse_002dcurricula.html new file mode 100644 index 0000000..99af091 --- /dev/null +++ b/0.0.6/html_split/_0023examples_002dof_002dcourse_002dcurricula.html @@ -0,0 +1,40 @@ + + + + + + +#examples-of-course-curricula (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #examples-of-course-curricula.

      + diff --git a/0.0.6/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html b/0.0.6/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html new file mode 100644 index 0000000..fc9b3eb --- /dev/null +++ b/0.0.6/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html @@ -0,0 +1,40 @@ + + + + + + +#external-i.e.-non-standard-libraries (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #external-i.e.-non-standard-libraries.

      + diff --git a/0.0.6/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html b/0.0.6/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html new file mode 100644 index 0000000..f915680 --- /dev/null +++ b/0.0.6/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-calling-static_assert-with-a-constant-expression (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #foundational-calling-static_assert-with-a-constant-expression.

      + diff --git a/0.0.6/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html b/0.0.6/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html new file mode 100644 index 0000000..88f62bc --- /dev/null +++ b/0.0.6/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-how-and-when-are-copies-made (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #foundational-how-and-when-are-copies-made.

      + diff --git a/0.0.6/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html b/0.0.6/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html new file mode 100644 index 0000000..95ab098 --- /dev/null +++ b/0.0.6/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-using-and-defining-functions-with-default-arguments (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #foundational-using-and-defining-functions-with-default-arguments.

      + diff --git a/0.0.6/html_split/_0023foundational_002dusing_002dudls.html b/0.0.6/html_split/_0023foundational_002dusing_002dudls.html new file mode 100644 index 0000000..2f7afdd --- /dev/null +++ b/0.0.6/html_split/_0023foundational_002dusing_002dudls.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-using-udls (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #foundational-using-udls.

      + diff --git a/0.0.6/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html b/0.0.6/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html new file mode 100644 index 0000000..708f2d3 --- /dev/null +++ b/0.0.6/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-writing-requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #foundational-writing-requires-expressions.

      + diff --git a/0.0.6/html_split/_0023functions.html b/0.0.6/html_split/_0023functions.html new file mode 100644 index 0000000..e304abe --- /dev/null +++ b/0.0.6/html_split/_0023functions.html @@ -0,0 +1,40 @@ + + + + + + +#functions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #functions.

      + diff --git a/0.0.6/html_split/_0023functions_002ddefault_002dargument.html b/0.0.6/html_split/_0023functions_002ddefault_002dargument.html new file mode 100644 index 0000000..ccfbcbb --- /dev/null +++ b/0.0.6/html_split/_0023functions_002ddefault_002dargument.html @@ -0,0 +1,40 @@ + + + + + + +#functions-default-argument (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #functions-default-argument.

      + diff --git a/0.0.6/html_split/_0023functions_002duser_002ddefined_002dliterals.html b/0.0.6/html_split/_0023functions_002duser_002ddefined_002dliterals.html new file mode 100644 index 0000000..b4f78b5 --- /dev/null +++ b/0.0.6/html_split/_0023functions_002duser_002ddefined_002dliterals.html @@ -0,0 +1,40 @@ + + + + + + +#functions-user-defined-literals (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #functions-user-defined-literals.

      + diff --git a/0.0.6/html_split/_0023generic_002dprogramming_002dtemplates.html b/0.0.6/html_split/_0023generic_002dprogramming_002dtemplates.html new file mode 100644 index 0000000..3b91080 --- /dev/null +++ b/0.0.6/html_split/_0023generic_002dprogramming_002dtemplates.html @@ -0,0 +1,40 @@ + + + + + + +#generic-programming-templates (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #generic-programming-templates.

      + diff --git a/0.0.6/html_split/_0023glossary.html b/0.0.6/html_split/_0023glossary.html new file mode 100644 index 0000000..9b46bf6 --- /dev/null +++ b/0.0.6/html_split/_0023glossary.html @@ -0,0 +1,40 @@ + + + + + + +#glossary (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #glossary.

      + diff --git a/0.0.6/html_split/_0023how_002dto_002dcontribute.html b/0.0.6/html_split/_0023how_002dto_002dcontribute.html new file mode 100644 index 0000000..d9cff4a --- /dev/null +++ b/0.0.6/html_split/_0023how_002dto_002dcontribute.html @@ -0,0 +1,40 @@ + + + + + + +#how-to-contribute (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #how-to-contribute.

      + diff --git a/0.0.6/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html b/0.0.6/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html new file mode 100644 index 0000000..def5140 --- /dev/null +++ b/0.0.6/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html @@ -0,0 +1,40 @@ + + + + + + +#inheritance-and-class-hierarchies (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #inheritance-and-class-hierarchies.

      + diff --git a/0.0.6/html_split/_0023license.html b/0.0.6/html_split/_0023license.html new file mode 100644 index 0000000..6b44dd1 --- /dev/null +++ b/0.0.6/html_split/_0023license.html @@ -0,0 +1,40 @@ + + + + + + +#license (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #license.

      + diff --git a/0.0.6/html_split/_0023main_002dadvanced_002drequirements.html b/0.0.6/html_split/_0023main_002dadvanced_002drequirements.html new file mode 100644 index 0000000..8214533 --- /dev/null +++ b/0.0.6/html_split/_0023main_002dadvanced_002drequirements.html @@ -0,0 +1,40 @@ + + + + + + +#main-advanced-requirements (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #main-advanced-requirements.

      + diff --git a/0.0.6/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html b/0.0.6/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html new file mode 100644 index 0000000..22b0484 --- /dev/null +++ b/0.0.6/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html @@ -0,0 +1,40 @@ + + + + + + +#main-contracts-and-static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #main-contracts-and-static_assert.

      + diff --git a/0.0.6/html_split/_0023main_002dimplementing.html b/0.0.6/html_split/_0023main_002dimplementing.html new file mode 100644 index 0000000..260008c --- /dev/null +++ b/0.0.6/html_split/_0023main_002dimplementing.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #main-implementing.

      + diff --git a/0.0.6/html_split/_0023main_002dimplementing_002dudls.html b/0.0.6/html_split/_0023main_002dimplementing_002dudls.html new file mode 100644 index 0000000..a41d194 --- /dev/null +++ b/0.0.6/html_split/_0023main_002dimplementing_002dudls.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing-udls (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #main-implementing-udls.

      + diff --git a/0.0.6/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html b/0.0.6/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html new file mode 100644 index 0000000..1e5a4d8 --- /dev/null +++ b/0.0.6/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing-user-defined-copy-operations (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #main-implementing-user-defined-copy-operations.

      + diff --git a/0.0.6/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html b/0.0.6/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html new file mode 100644 index 0000000..4502ed8 --- /dev/null +++ b/0.0.6/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html @@ -0,0 +1,40 @@ + + + + + + +#meta-error-handling-static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #meta-error-handling-static_assert.

      + diff --git a/0.0.6/html_split/_0023module_002dname_002drequires_002dexpressions.html b/0.0.6/html_split/_0023module_002dname_002drequires_002dexpressions.html new file mode 100644 index 0000000..56a9ebf --- /dev/null +++ b/0.0.6/html_split/_0023module_002dname_002drequires_002dexpressions.html @@ -0,0 +1,40 @@ + + + + + + +#module-name-requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #module-name-requires-expressions.

      + diff --git a/0.0.6/html_split/_0023motivation.html b/0.0.6/html_split/_0023motivation.html new file mode 100644 index 0000000..0141374 --- /dev/null +++ b/0.0.6/html_split/_0023motivation.html @@ -0,0 +1,40 @@ + + + + + + +#motivation (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #motivation.

      + diff --git a/0.0.6/html_split/_0023motivation_002d1.html b/0.0.6/html_split/_0023motivation_002d1.html new file mode 100644 index 0000000..7e4a69e --- /dev/null +++ b/0.0.6/html_split/_0023motivation_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #motivation-1.

      + diff --git a/0.0.6/html_split/_0023motivation_002d2.html b/0.0.6/html_split/_0023motivation_002d2.html new file mode 100644 index 0000000..7901fd3 --- /dev/null +++ b/0.0.6/html_split/_0023motivation_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #motivation-2.

      + diff --git a/0.0.6/html_split/_0023motivation_002d3.html b/0.0.6/html_split/_0023motivation_002d3.html new file mode 100644 index 0000000..ec720ad --- /dev/null +++ b/0.0.6/html_split/_0023motivation_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #motivation-3.

      + diff --git a/0.0.6/html_split/_0023motivation_002d4.html b/0.0.6/html_split/_0023motivation_002d4.html new file mode 100644 index 0000000..f53583a --- /dev/null +++ b/0.0.6/html_split/_0023motivation_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #motivation-4.

      + diff --git a/0.0.6/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html b/0.0.6/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html new file mode 100644 index 0000000..57e8b6e --- /dev/null +++ b/0.0.6/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html @@ -0,0 +1,40 @@ + + + + + + +#obtaining-this-document-the-most-recent-version-and-alternate-formats (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #obtaining-this-document-the-most-recent-version-and-alternate-formats.

      + diff --git a/0.0.6/html_split/_0023organization_002dof_002dthis_002ddocument.html b/0.0.6/html_split/_0023organization_002dof_002dthis_002ddocument.html new file mode 100644 index 0000000..e312b8e --- /dev/null +++ b/0.0.6/html_split/_0023organization_002dof_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#organization-of-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #organization-of-this-document.

      + diff --git a/0.0.6/html_split/_0023overview.html b/0.0.6/html_split/_0023overview.html new file mode 100644 index 0000000..b2d4bdc --- /dev/null +++ b/0.0.6/html_split/_0023overview.html @@ -0,0 +1,40 @@ + + + + + + +#overview (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #overview.

      + diff --git a/0.0.6/html_split/_0023overview_002d1.html b/0.0.6/html_split/_0023overview_002d1.html new file mode 100644 index 0000000..d551764 --- /dev/null +++ b/0.0.6/html_split/_0023overview_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#overview-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #overview-1.

      + diff --git a/0.0.6/html_split/_0023overview_002d2.html b/0.0.6/html_split/_0023overview_002d2.html new file mode 100644 index 0000000..5a34b05 --- /dev/null +++ b/0.0.6/html_split/_0023overview_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#overview-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #overview-2.

      + diff --git a/0.0.6/html_split/_0023overview_002d3.html b/0.0.6/html_split/_0023overview_002d3.html new file mode 100644 index 0000000..f230145 --- /dev/null +++ b/0.0.6/html_split/_0023overview_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#overview-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #overview-3.

      + diff --git a/0.0.6/html_split/_0023overview_002d4.html b/0.0.6/html_split/_0023overview_002d4.html new file mode 100644 index 0000000..2436b9a --- /dev/null +++ b/0.0.6/html_split/_0023overview_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#overview-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #overview-4.

      + diff --git a/0.0.6/html_split/_0023points_002dto_002dcover.html b/0.0.6/html_split/_0023points_002dto_002dcover.html new file mode 100644 index 0000000..424b02b --- /dev/null +++ b/0.0.6/html_split/_0023points_002dto_002dcover.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover.

      + diff --git a/0.0.6/html_split/_0023points_002dto_002dcover_002d1.html b/0.0.6/html_split/_0023points_002dto_002dcover_002d1.html new file mode 100644 index 0000000..2a554bb --- /dev/null +++ b/0.0.6/html_split/_0023points_002dto_002dcover_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover-1.

      + diff --git a/0.0.6/html_split/_0023points_002dto_002dcover_002d2.html b/0.0.6/html_split/_0023points_002dto_002dcover_002d2.html new file mode 100644 index 0000000..053a51a --- /dev/null +++ b/0.0.6/html_split/_0023points_002dto_002dcover_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover-2.

      + diff --git a/0.0.6/html_split/_0023points_002dto_002dcover_002d3.html b/0.0.6/html_split/_0023points_002dto_002dcover_002d3.html new file mode 100644 index 0000000..b0dad48 --- /dev/null +++ b/0.0.6/html_split/_0023points_002dto_002dcover_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover-3.

      + diff --git a/0.0.6/html_split/_0023points_002dto_002dcover_002d4.html b/0.0.6/html_split/_0023points_002dto_002dcover_002d4.html new file mode 100644 index 0000000..94de8fa --- /dev/null +++ b/0.0.6/html_split/_0023points_002dto_002dcover_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover-4.

      + diff --git a/0.0.6/html_split/_0023points_002dto_002dcover_002d5.html b/0.0.6/html_split/_0023points_002dto_002dcover_002d5.html new file mode 100644 index 0000000..39d1eaf --- /dev/null +++ b/0.0.6/html_split/_0023points_002dto_002dcover_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover-5.

      + diff --git a/0.0.6/html_split/_0023points_002dto_002dcover_002d6.html b/0.0.6/html_split/_0023points_002dto_002dcover_002d6.html new file mode 100644 index 0000000..92df88f --- /dev/null +++ b/0.0.6/html_split/_0023points_002dto_002dcover_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover-6.

      + diff --git a/0.0.6/html_split/_0023points_002dto_002dcover_002d7.html b/0.0.6/html_split/_0023points_002dto_002dcover_002d7.html new file mode 100644 index 0000000..6e6c895 --- /dev/null +++ b/0.0.6/html_split/_0023points_002dto_002dcover_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover-7.

      + diff --git a/0.0.6/html_split/_0023points_002dto_002dcover_002d8.html b/0.0.6/html_split/_0023points_002dto_002dcover_002d8.html new file mode 100644 index 0000000..b5574e1 --- /dev/null +++ b/0.0.6/html_split/_0023points_002dto_002dcover_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover-8.

      + diff --git a/0.0.6/html_split/_0023preprocessor.html b/0.0.6/html_split/_0023preprocessor.html new file mode 100644 index 0000000..a3bb5f6 --- /dev/null +++ b/0.0.6/html_split/_0023preprocessor.html @@ -0,0 +1,40 @@ + + + + + + +#preprocessor (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #preprocessor.

      + diff --git a/0.0.6/html_split/_0023references.html b/0.0.6/html_split/_0023references.html new file mode 100644 index 0000000..69fbd6b --- /dev/null +++ b/0.0.6/html_split/_0023references.html @@ -0,0 +1,40 @@ + + + + + + +#references (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #references.

      + diff --git a/0.0.6/html_split/_0023references_002don_002dlearning_002doutcomes.html b/0.0.6/html_split/_0023references_002don_002dlearning_002doutcomes.html new file mode 100644 index 0000000..d28fbbf --- /dev/null +++ b/0.0.6/html_split/_0023references_002don_002dlearning_002doutcomes.html @@ -0,0 +1,40 @@ + + + + + + +#references-on-learning-outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #references-on-learning-outcomes.

      + diff --git a/0.0.6/html_split/_0023software_002ddesign.html b/0.0.6/html_split/_0023software_002ddesign.html new file mode 100644 index 0000000..16f5f54 --- /dev/null +++ b/0.0.6/html_split/_0023software_002ddesign.html @@ -0,0 +1,40 @@ + + + + + + +#software-design (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #software-design.

      + diff --git a/0.0.6/html_split/_0023standard_002dlibrary.html b/0.0.6/html_split/_0023standard_002dlibrary.html new file mode 100644 index 0000000..71956d3 --- /dev/null +++ b/0.0.6/html_split/_0023standard_002dlibrary.html @@ -0,0 +1,40 @@ + + + + + + +#standard-library (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #standard-library.

      + diff --git a/0.0.6/html_split/_0023student_002doutcomes.html b/0.0.6/html_split/_0023student_002doutcomes.html new file mode 100644 index 0000000..df0035d --- /dev/null +++ b/0.0.6/html_split/_0023student_002doutcomes.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes.

      + diff --git a/0.0.6/html_split/_0023student_002doutcomes_002d1.html b/0.0.6/html_split/_0023student_002doutcomes_002d1.html new file mode 100644 index 0000000..e9344b7 --- /dev/null +++ b/0.0.6/html_split/_0023student_002doutcomes_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-1.

      + diff --git a/0.0.6/html_split/_0023student_002doutcomes_002d2.html b/0.0.6/html_split/_0023student_002doutcomes_002d2.html new file mode 100644 index 0000000..6fa7724 --- /dev/null +++ b/0.0.6/html_split/_0023student_002doutcomes_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-2.

      + diff --git a/0.0.6/html_split/_0023student_002doutcomes_002d3.html b/0.0.6/html_split/_0023student_002doutcomes_002d3.html new file mode 100644 index 0000000..195d9d2 --- /dev/null +++ b/0.0.6/html_split/_0023student_002doutcomes_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-3.

      + diff --git a/0.0.6/html_split/_0023student_002doutcomes_002d4.html b/0.0.6/html_split/_0023student_002doutcomes_002d4.html new file mode 100644 index 0000000..3e30430 --- /dev/null +++ b/0.0.6/html_split/_0023student_002doutcomes_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-4.

      + diff --git a/0.0.6/html_split/_0023student_002doutcomes_002d5.html b/0.0.6/html_split/_0023student_002doutcomes_002d5.html new file mode 100644 index 0000000..0a4a7da --- /dev/null +++ b/0.0.6/html_split/_0023student_002doutcomes_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-5.

      + diff --git a/0.0.6/html_split/_0023student_002doutcomes_002d6.html b/0.0.6/html_split/_0023student_002doutcomes_002d6.html new file mode 100644 index 0000000..c5c4ac0 --- /dev/null +++ b/0.0.6/html_split/_0023student_002doutcomes_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-6.

      + diff --git a/0.0.6/html_split/_0023student_002doutcomes_002d7.html b/0.0.6/html_split/_0023student_002doutcomes_002d7.html new file mode 100644 index 0000000..5233f94 --- /dev/null +++ b/0.0.6/html_split/_0023student_002doutcomes_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-7.

      + diff --git a/0.0.6/html_split/_0023student_002doutcomes_002d8.html b/0.0.6/html_split/_0023student_002doutcomes_002d8.html new file mode 100644 index 0000000..f19fd7f --- /dev/null +++ b/0.0.6/html_split/_0023student_002doutcomes_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-8.

      + diff --git a/0.0.6/html_split/_0023student_002doutcomes_002d9.html b/0.0.6/html_split/_0023student_002doutcomes_002d9.html new file mode 100644 index 0000000..735a21f --- /dev/null +++ b/0.0.6/html_split/_0023student_002doutcomes_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-9.

      + diff --git a/0.0.6/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html b/0.0.6/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html new file mode 100644 index 0000000..4801178 --- /dev/null +++ b/0.0.6/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html @@ -0,0 +1,40 @@ + + + + + + +#summary-of-modules-and-topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #summary-of-modules-and-topics.

      + diff --git a/0.0.6/html_split/_0023testing_002dand_002ddebugging.html b/0.0.6/html_split/_0023testing_002dand_002ddebugging.html new file mode 100644 index 0000000..1ae096d --- /dev/null +++ b/0.0.6/html_split/_0023testing_002dand_002ddebugging.html @@ -0,0 +1,40 @@ + + + + + + +#testing-and-debugging (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #testing-and-debugging.

      + diff --git a/0.0.6/html_split/_0023tooling.html b/0.0.6/html_split/_0023tooling.html new file mode 100644 index 0000000..634a8dc --- /dev/null +++ b/0.0.6/html_split/_0023tooling.html @@ -0,0 +1,40 @@ + + + + + + +#tooling (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #tooling.

      + diff --git a/0.0.6/html_split/_0023topic_002dintroduction.html b/0.0.6/html_split/_0023topic_002dintroduction.html new file mode 100644 index 0000000..742d5d9 --- /dev/null +++ b/0.0.6/html_split/_0023topic_002dintroduction.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #topic-introduction.

      + diff --git a/0.0.6/html_split/_0023topic_002dintroduction_002d1.html b/0.0.6/html_split/_0023topic_002dintroduction_002d1.html new file mode 100644 index 0000000..a110644 --- /dev/null +++ b/0.0.6/html_split/_0023topic_002dintroduction_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #topic-introduction-1.

      + diff --git a/0.0.6/html_split/_0023topic_002dintroduction_002d2.html b/0.0.6/html_split/_0023topic_002dintroduction_002d2.html new file mode 100644 index 0000000..986bf37 --- /dev/null +++ b/0.0.6/html_split/_0023topic_002dintroduction_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #topic-introduction-2.

      + diff --git a/0.0.6/html_split/_0023topic_002dintroduction_002d3.html b/0.0.6/html_split/_0023topic_002dintroduction_002d3.html new file mode 100644 index 0000000..3d14fd9 --- /dev/null +++ b/0.0.6/html_split/_0023topic_002dintroduction_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #topic-introduction-3.

      + diff --git a/0.0.6/html_split/_0023topic_002dintroduction_002d4.html b/0.0.6/html_split/_0023topic_002dintroduction_002d4.html new file mode 100644 index 0000000..c73a236 --- /dev/null +++ b/0.0.6/html_split/_0023topic_002dintroduction_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #topic-introduction-4.

      + diff --git a/0.0.6/html_split/_0023use_002dof_002dthis_002ddocument.html b/0.0.6/html_split/_0023use_002dof_002dthis_002ddocument.html new file mode 100644 index 0000000..68d835d --- /dev/null +++ b/0.0.6/html_split/_0023use_002dof_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#use-of-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #use-of-this-document.

      + diff --git a/0.0.6/html_split/_0023user_002ddefined_002dtypes_002dclasses.html b/0.0.6/html_split/_0023user_002ddefined_002dtypes_002dclasses.html new file mode 100644 index 0000000..04771a9 --- /dev/null +++ b/0.0.6/html_split/_0023user_002ddefined_002dtypes_002dclasses.html @@ -0,0 +1,40 @@ + + + + + + +#user-defined-types-classes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #user-defined-types-classes.

      + diff --git a/0.0.6/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html b/0.0.6/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html new file mode 100644 index 0000000..f4b9435 --- /dev/null +++ b/0.0.6/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html @@ -0,0 +1,40 @@ + + + + + + +#working-group-documents-related-to-c-teaching-guidelines (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #working-group-documents-related-to-c-teaching-guidelines.

      + diff --git a/0.0.6/html_split/index.html b/0.0.6/html_split/index.html new file mode 100644 index 0000000..c4e5ff0 --- /dev/null +++ b/0.0.6/html_split/index.html @@ -0,0 +1,240 @@ + + + + + +Top (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +

      Table of Contents

      + +
      + + +
      + + + +
      +

      Guidelines for Teaching C++

      + + + + + + + + + + + + + + + + + + +
      + + + + + + diff --git a/0.0.6/html_split/unknown_node.html b/0.0.6/html_split/unknown_node.html new file mode 100644 index 0000000..5a652e5 --- /dev/null +++ b/0.0.6/html_split/unknown_node.html @@ -0,0 +1,763 @@ + + + + + +Guidelines for Teaching C++ + + + + + + + + + + + + + + + + +
      +

      +   [Contents]

      +
      +
      +

      8.1.5.1 Background/Required Knowledge

      +

      A student is able to: * identify special member functions +[C++ object model: +special member functions] +

      +

      It helps when a student is able to: * use move semantics +[C++ object model: move +semantics] * explain the rule of zero +[C++ object model: rule-of-zero] +* explain the rule of five [C++ +object model: rule-of-five] +

      +
      +

      +   [Contents]

      +
      +

      8.1.5.2 Student outcomes

      +

      A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

      +

      A student should be able to: * explain when they have to implement the +copy operations for their own type * Copy constructor * Copy assignment +operator * implement copy operations for their own types * +Optional: explain when copying with basic and strong exception +guarantees is useful +

      +
      +

      +   [Contents]

      +
      +

      8.1.5.3 Caveats

      +

      This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

      +
        +
      • Intricacies when implementing copy operations: +
          +
        • Examples of how not to write copy operations (e.g., C++03 +std::auto_ptr) +
        + +
      + +
      +

      +   [Contents]

      +
      +

      8.1.5.4 Points to cover

      +

      This section lists important details for each point. +

      +
        +
      • Copy constructors and copy assignment operators +
          +
        • How compiler generates default copy operations +
        • =default, =delete (No copy) +
        • How-to write your own copy operations +
        • Rule-of-five +
        • Copy assignment operators can be ref-qualified to avoid assigning into +temporary objects. +
        + +
      + +
      +

      +   [Contents]

      +
      +

      8.2.1 Overview

      +

      Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

      + + + + + +
      LevelObjectives
      Foundationalusing and understanding UDLs
      Mainimplementing your own UDLs
      AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
      + +
      +

      +   [Contents]

      +
      +

      8.2.2 Motivation

      +

      Why is this important? Why do we want to learn/teach this +topic? +

      +
        +
      • Allows clearer expression of intent in C++. +
      • std::string: "Hello, world!"s +
      • std::chrono: 3h + 10min + 5s +
      + +
      +

      +   [Contents]

      +
      +

      8.2.3 Topic introduction

      +

      Very brief introduction to the topic. +

      +
        +
      • Explain the existence of user defined literals. Example: +12min + 17s is terse, expressive and type safe. +
      + +
      +

      +   [Contents]

      +
      +

      8.2.4.1 Background/Required Knowledge

      +

      A student: * knows how to form numeric literals, e.g., 1.5f means +a float of value 1.5. * is familiar with the major C++ +types: * bool (Boolean type) * int (Integer type) * +double (Floating-point type) * std::string (Text type) * +std::vector (Collection type) * knows that namespaces exist, and +namespace std. * knows what using-declarations and +using-directives are. +[C++ object +model: declarations] +

      +
      +

      +   [Contents]

      +
      +

      8.2.4.2 Student outcomes

      +

      A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

      +

      A student should be able to: +

      +
        +
      1. use using namespace std::string_literals[1]. +
      2. recognise UDLs in code that they are reading. +
      3. figure out which UDL definitions for a used type exist. +
      4. identify parts of the standard library that make use of UDLs. +
      5. prevent the dangers of temporaries created with "blah"s as well +as with std::string{"blah"}. +
      6. effectively selects the right set of namespaces in using-directives from +the sub-namespaces std::literals. +
      + +

      [1]: explain that it’s okay to use a using-directive to “activate” +UDLs. +

      +
      +

      +   [Contents]

      +
      +

      8.2.4.3 Caveats

      +

      This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

      +
        +
      • A student gets confused by the similarities and differences between +built-in suffixes and UDLs and between UDLs from different namespaces. +
      • A student “activates” two suffixes with the same signature from +different namespaces. +
      + +
      +

      +   [Contents]

      +
      +

      8.2.4.4 Points to cover

      +

      This section lists important details for each point. +

      +
      +

      +   [Contents]

      +
      +

      8.2.5.1 Background/Required Knowledge

      +
        +
      • All of the above. +
      + +
      +

      +   [Contents]

      +
      +

      8.2.5.2 Student outcomes

      +

      A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

      +

      A student should be able to: +

      +
        +
      1. write a UDL operator of their own. +
      2. separate unrelated UDLs into distinct namespaces. +
      + +
      +

      +   [Contents]

      +
      +

      8.2.5.3 Caveats

      +

      This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

      +

      No caveats at present. #### Points to cover +

      +

      This section lists important details for each point. +

      +

      No caveats at present. ### Advanced {#udl-advanced} +

      +

      These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

      +
      +

      +   [Contents]

      +
      +

      8.3.1 Overview

      +

      Functions in C++ may be overloaded with different numbers and types of +parameters. It may be of value to specify default arguments for some +number of parameters, to allow a caller to avoid specifying arguments +that rarely change, or to enable expanding the set of parameters while +maintaining backward compatibility with existing callers. +

      + + + + + +
      LevelObjective
      FoundationalDefine and use functions with default arguments
      Main
      Advancedrefinement of default arguments through multiple declarations
      + +
      +

      +   [Contents]

      +
      +

      8.3.2 Motivation

      +

      Default arguments allow the omission of arguments with obvious or common +values. Also may be utilized to extend an existing function signature +without forcing changes to existing calling code. +

      +
      +

      +   [Contents]

      +
      +

      8.3.3 Topic introduction

      +

      Explain how default arguments work and how to define them. +

      +
      +

      +   [Contents]

      +
      +

      8.3.4.1 Background/Required Knowledge

      +

      A student is able to: +

      + + +
      +

      +   [Contents]

      +
      +

      8.3.4.2 Student outcomes

      +

      A student should be able to: +

      +
        +
      1. Call to a function with a default argument with or without that argument +specified +
      2. Declare a function with a default argument, and omit the default in the +definition’s signature +
      3. Explain when the lifetime of a default argument begins and ends +
      + +
      +

      +   [Contents]

      +
      +

      8.3.4.3 Caveats

      +
        +
      • When no forward-declaration exists, the definition serves as the +declaration +
      • When multiple declarations exist, only one may specify the default for +any particular parameter, but multiple declarations may specify the +defaults for different parameters. +
      • Additional default values may be specified for other parameters in +repeat declarations +
      • Calling an overloaded function with fewer arguments may be ambiguous +with regard to an overload with default arguments +
      + +
      +

      +   [Contents]

      +
      +

      8.3.4.4 Points to cover

      +
        +
      • Default value may only be specified once for each parameter among all +declarations +
      • Default values must start from the rightmost parameter and continue +leftward without gaps +
      • Considerations of when to use default arguments vs overload set +
      + +
      +

      +   [Contents]

      +
      +

      8.3.5.2 Student outcomes

      +

      A student should be able to: +

      +
      +

      +   [Contents]

      +
      +

      8.3.5.3 Caveats

      + +
      +

      +   [Contents]

      +
      +

      8.3.5.4 Points to cover

      + +
      +

      +   [Contents]

      +
      +

      8.3.6 Advanced

      +

      Subsequent redeclarations of the same function may add default argument +values, which are then usable by callers. Though a single parameter +cannot be given a default argument twice in the same translation unit, +it is legal, though ill-advised, to give the same function different +default arguments in different translation units. +

      +
      +

      +   [Contents]

      +
      +

      8.4.1 Overview

      + + + + + +
      LevelObjectives
      FoundationalDefine and use requires-expressions to check satisfaction of +expressions by given parameters
      MainDefine and use requires-expressions to check properties of +expressions
      Advanced
      + +
      +

      +   [Contents]

      +
      +

      8.4.2 Motivation

      +

      Requires-expressions allow a developer to perform compile-time +evaluation on the validity of other expressions. These are fundamental +to the ability to write concepts. +[Compile-time programming: +concepts] +

      +
      +

      +   [Contents]

      +
      +

      8.5 Topic introduction

      +

      Requires-expressions are compile-time predicates which evaluate to true +when their specified set of expressions are all valid for a given set of +inputs. +

      + + + + + + +
      +

      +   [Contents]

      +
      +

      8.5.1.1 Background/Required Knowledge

      +

      A student is able to: +

      + + +

      It is helpful if: +

      +
        +
      • The student is aware that attempting to specialize the template with +types or values which do not match otherwise unstated assumptions will +cause errors within the template. +
      + +
      +

      +   [Contents]

      +
      +

      8.5.1.2 Student outcomes

      +

      A student should be able to: +

      +
        +
      1. Write a simple-requirement to assert the validity of an expression +
      2. Write a type-requirement to check the existence of a type by its +identifier +
      3. Write a compound-requirement to test the resulting type of an expression +
      4. Write a nested-requirement to test the constexpr value of an operation, +as opposed to just the syntactic validity +
      5. Use a requires-expression within a concept, requires-clause, or +if constexpr condition +
      + +
      +

      +   [Contents]

      +
      +

      8.5.1.3 Caveats

      +

      To require that expressions, which evaluate to a boolean value like +sizeof(t) == 4, evaluate to true a nested-requirement is +needed (e.g., requires sizeof(t) == 4;). Omitting the +requires results in a simple-requirement, which is satisfied +based purely on syntactic validity, not on the result of the operation. +

      +
      +

      +   [Contents]

      +
      +

      8.5.1.4 Points to cover

      +
        +
      • All requires-expression requirements terminate with a semicolon. +
      • simple-requirements are used to check that an expression is well-formed. +
      • nested-requirements are introduced with requires and primarily +used to check the result of an expression computable by the compiler, +including concepts or other requires-expressions. +
      • type-requirements are introduced with typename and used to verify +the existence of a type with a particular identifier. +
      • compound-requirements are enclosed in braces and can be used to check +the resulting type of an expression. +
      • Checks are performed by the compiler, not at run time. +
      • If covering usage of requires-expression with requires-clause, +[Compile-time +programming: requires clause] demonstrate requires requires and +show how to ever avoid writing it by using a concept. +[Compile-time programming: +concepts] +
      + +
      +

      +   [Contents]

      +
      +

      8.5.2.1 Background/required knowledge

      +
        +
      • All of the above. +
      • Knowledge of noexcept +
      + +

      A student is able to: +

      + + +
      +

      +   [Contents]

      +
      +

      8.5.2.2 Student outcomes

      +

      A student should be able to: +

      +
        +
      1. Write compound-requirements which test the noexceptness of an +expression. +
      2. Use a concept as the target of a compound-requirement. +
      + +
      +

      +   [Contents]

      +
      +

      8.5.2.3 Caveats

      + +
      +

      +   [Contents]

      +
      +

      8.5.2.4 Points to cover

      +
        +
      • Compound-requirements allow the optional ability to test whether an +expression is marked as noexcept, by using a trailing +noexcept keyword. +
      + +
      struct S
      +{
      +    void foo() noexcept {}
      +    void bar() {}
      +};
      +
      +static_assert(requires(S s) { { s.foo() } noexcept; } ); // Succeeds. s.foo() is noexcept
      +static_assert(requires(S s) { { s.bar() } noexcept; } ); // Fails. s.bar() is not noexcept
      +
      +
        +
      • If the return-type-requirement of a compound-requirement is a concept, +that concept is given the resulting type as the first parameter, +followed by the specified parameters in the compound-requirement. +{ ++x } -> C<int> would substitute +C<decltype((++x)), int> and check that concept C is satisfied for +those parameters. +
      + +
      +

      +   [Contents]

      +
      +

      8.5.3 Advanced

      + +
      +

      +   [Contents]

      +
      +

      8.6.1 Overview

      +

      Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

      + + + + + +
      LevelObjectives
      FoundationalCalling static_assert with a constant expression
      MainUsing static_assert to detect contract violations and +improve error messages
      Advanced
      + +
      +

      +   [Contents]

      +
      +

      8.6.2 Motivation

      +

      Why is this important? Why do we want to learn/teach this +topic? +

      +

      static_assert allows the developer to enforce that conditions +which can be checked during compilation will force build errors when +violated. Additionally, they are the best mechanism by which a developer +can pass useful information to other developers regarding what violation +occurred or what must be done, instead. +

      +
      +

      +   [Contents]

      +
      +

      8.6.3 Topic introduction

      +

      Very brief introduction to the topic. +

      +

      static_assert is a compile-time evaluated function that asserts +the truth of a supplied predicate, issuing an optional user-supplied +error message if the predicate is false. +

      +
      +

      +   [Contents]

      +
      +

      8.6.4.1 Background/Required Knowledge

      +

      A student: +

      +
        +
      • Should be able to explain the difference between code evaluated at +compile-time and run-time +
      • Should be able to cite some examples of compile-time known information, +such as sizeof(T) +
      + +
      +

      +   [Contents]

      +
      +

      8.6.4.2 Student outcomes

      +

      A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

      +

      A student should be able to: +

      +
        +
      1. Assert the expected size of a structure using static_assert +
      + +
      +

      +   [Contents]

      +
      +

      8.6.4.3 Caveats

      +

      This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

      +
      +

      +   [Contents]

      +
      +

      8.6.4.4 Points to cover

      +

      This section lists important details for each point. +

      +
        +
      • X +
      • In addition to what is wrong, a good error message will inform the user +of how to correct it +
      + +
      +

      +   [Contents]

      +
      +

      8.6.5.1 Background/Required Knowledge

      +
        +
      • All of the above. +
      • General understanding of compile-time requirements +
      + +
      +

      +   [Contents]

      +
      +

      8.6.5.2 Student outcomes

      +

      A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

      +

      A student should be able to: +

      +
        +
      1. Utilize static_assert to verify preconditions of a meta-function +
      2. Utilize static_assert to verify the results of meta-functions for +known values +
      + +
      +

      +   [Contents]

      +
      +

      8.6.5.3 Caveats

      +

      This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

      +
      +

      +   [Contents]

      +
      +

      8.6.5.4 Points to cover

      +

      This section lists important details for each point. +

      +
        +
      • When writing a meta-function, use static_assert to test the +results +
      • Write static_assert calls at the scope of the code they are +guarding +
      + +
      template<typename T>
      +struct container {
      +    std::map<int, T> vals;
      +
      +    // Test location #1
      +    static_assert(
      +        std::is_default_constructible_v<T>,
      +        "container type T must be default constructible");i
      +
      +    void add(int key, T const& t) {
      +        // Test location #2
      +        static_assert(
      +            std::is_default_constructible_v<T>,
      +            "container type T must be default constructible");
      +        // std::map::operator[] requires default constructible type for 
      +        // the value. This will cause a build failure deep in the 
      +        // implementation of std::map, when T is not default constructible
      +        vals[key] = t;
      +    }
      +};
      +
      +struct NoDefCtor {
      +    NoDefCtor() = delete;
      +    NoDefCtor(double d) {}
      +};
      +
      +container<NoDefCtor> c; // If Test #1 was omitted, this would succeed
      +// This is ill-formed. Test #2 would catch this and provide a better 
      +// error message for the user
      +c.add(42, NoDefCtor(1.0)); 
      +
      +
      +

      +   [Contents]

      +
      +

      8.6.6 Advanced

      +

      These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

      + + + + + diff --git a/latest/index.html b/latest/index.html index 9fdd6e6..1f19e20 100644 --- a/latest/index.html +++ b/latest/index.html @@ -106,7 +106,7 @@

      Guidelines for Teaching C++

      -

      Version 0.0.5

      +

      Version X.Y.Z

      SG20 (ISO C++ Study Group on Education)

      @@ -203,9 +203,9 @@

      <

      The most recent version of this document is available as an online HTML document at: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/latest/.

      The version of the document that you are currently reading is available in the following formats:

        -
      1. online (HTML) format as a single large HTML document: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.5/html [later to be https://cplusplus.github.io/SG20/0.0.5/html?]

      2. -
      3. EPUB format: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.5/guidelines.epub [later to be https:/cplusplus.github.io/SG20/0.0.5/guidelines.epub?]

      4. -
      5. online (HTML) format, split across multiple HTML documents: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.5/html_split/ [later to be https://cplusplus.github.io/SG20/0.0.5/html_split/?] [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

      6. +
      7. online (HTML) format as a single large HTML document: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.6/html [later to be https://cplusplus.github.io/SG20/0.0.6/html?]

      8. +
      9. EPUB format: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.6/guidelines.epub [later to be https:/cplusplus.github.io/SG20/0.0.6/guidelines.epub?]

      10. +
      11. online (HTML) format, split across multiple HTML documents: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.6/html_split/ [later to be https://cplusplus.github.io/SG20/0.0.6/html_split/?] [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

      Older versions of this document are also available. In general version ver is available at https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/ver. For example, version v0.1.0 (assuming that this version exists) would be available at [later to be https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/v0.1.0?].

      2 Disclaimer

      From da7b8a03e240c89e29f9d9aa9d01aad41e60487b Mon Sep 17 00:00:00 2001 From: vulder Date: Mon, 1 Nov 2021 11:45:13 +0000 Subject: [PATCH 10/21] deploy: 38b622de3436a5c2f9814d83eab1ef7674927445 --- 0.0.7/guidelines.epub | Bin 0 -> 31526 bytes 0.0.7/html/images/cpp_logo.png | Bin 0 -> 23613 bytes 0.0.7/html/index.html | 1430 +++++++++++++++++ 0.0.7/html_split/Advanced.html | 60 + .../Background_002fRequired-Knowledge.html | 65 + .../Background_002frequired-knowledge.html | 54 + ...ments-and-Control_002dFlow-Constructs.html | 60 + 0.0.7/html_split/Building.html | 57 + ...002b_002b-object-model-copy-semantics.html | 69 + 0.0.7/html_split/Caveats.html | 62 + 0.0.7/html_split/Compilation-Model.html | 62 + .../Compile_002dTime-Computation.html | 57 + .../Context-and-Aim-of-This-Guide.html | 76 + .../Contributing-to-This-Document.html | 55 + 0.0.7/html_split/Contributors.html | 58 + ...ed-Information-for-Modules-and-Topics.html | 67 + 0.0.7/html_split/Disclaimer.html | 55 + 0.0.7/html_split/Error-Handling.html | 59 + .../Examples-of-Course-Curricula.html | 53 + .../External-ie-Non-Standard-Libraries.html | 56 + ...005fassert-with-a-constant-expression.html | 62 + ...dational-How-and-when-are-copies-made.html | 63 + 0.0.7/html_split/Foundational-Using-UDLs.html | 61 + ...ning-functions-with-default-arguments.html | 62 + ...onal-Writing-requires_002dexpressions.html | 60 + .../Functions-default-argument.html | 67 + .../Functions-user_002ddefined-literals.html | 66 + 0.0.7/html_split/Functions.html | 61 + .../Generic-Programming-Templates.html | 61 + 0.0.7/html_split/Glossary.html | 58 + 0.0.7/html_split/How-To-Contribute.html | 89 + .../Inheritance-and-Class-Hierarchies.html | 57 + 0.0.7/html_split/License.html | 100 ++ .../Main-Advanced-requirements.html | 60 + .../Main-Contracts-and-static_005fassert.html | 61 + ...ting-user_002ddefined-copy-operations.html | 62 + 0.0.7/html_split/Main-implementing-UDLs.html | 59 + 0.0.7/html_split/Main-implementing-_002a.html | 62 + ..._002derror-handling-static_005fassert.html | 67 + .../Module-name-Requires-Expressions.html | 59 + 0.0.7/html_split/Motivation.html | 57 + ...-Recent-Version-and-Alternate-Formats.html | 84 + .../Organization-of-This-Document.html | 101 ++ 0.0.7/html_split/Overview.html | 61 + 0.0.7/html_split/Points-to-cover.html | 69 + 0.0.7/html_split/Preprocessor.html | 58 + .../References-on-Learning-Outcomes.html | 71 + 0.0.7/html_split/References.html | 59 + 0.0.7/html_split/Software-Design.html | 56 + 0.0.7/html_split/Standard-Library.html | 57 + 0.0.7/html_split/Student-outcomes.html | 73 + .../Summary-of-Modules-and-Topics.html | 106 ++ 0.0.7/html_split/Testing-and-Debugging.html | 59 + 0.0.7/html_split/Tooling.html | 57 + 0.0.7/html_split/Topic-introduction.html | 55 + 0.0.7/html_split/Use-of-This-Document.html | 58 + .../User_002dDefined-Types-Classes.html | 69 + ...ed-to-C_002b_002b-Teaching-Guidelines.html | 69 + 0.0.7/html_split/_0023advanced.html | 40 + 0.0.7/html_split/_0023advanced_002d1.html | 40 + 0.0.7/html_split/_0023advanced_002d2.html | 40 + 0.0.7/html_split/_0023advanced_002d3.html | 40 + ..._0023backgroundrequired_002dknowledge.html | 40 + ...ackgroundrequired_002dknowledge_002d1.html | 40 + ...ackgroundrequired_002dknowledge_002d2.html | 40 + ...ackgroundrequired_002dknowledge_002d3.html | 40 + ...ackgroundrequired_002dknowledge_002d4.html | 40 + ...ackgroundrequired_002dknowledge_002d5.html | 40 + ...ackgroundrequired_002dknowledge_002d6.html | 40 + ...ackgroundrequired_002dknowledge_002d7.html | 40 + ...ackgroundrequired_002dknowledge_002d8.html | 40 + ...ackgroundrequired_002dknowledge_002d9.html | 40 + ...d_002dcontrol_002dflow_002dconstructs.html | 40 + 0.0.7/html_split/_0023building.html | 40 + ...ject_002dmodel_002dcopy_002dsemantics.html | 40 + 0.0.7/html_split/_0023caveats.html | 40 + 0.0.7/html_split/_0023caveats_002d1.html | 40 + 0.0.7/html_split/_0023caveats_002d2.html | 40 + 0.0.7/html_split/_0023caveats_002d3.html | 40 + 0.0.7/html_split/_0023caveats_002d4.html | 40 + 0.0.7/html_split/_0023caveats_002d5.html | 40 + 0.0.7/html_split/_0023caveats_002d6.html | 40 + 0.0.7/html_split/_0023caveats_002d7.html | 40 + 0.0.7/html_split/_0023caveats_002d8.html | 40 + 0.0.7/html_split/_0023caveats_002d9.html | 40 + .../_0023compilation_002dmodel.html | 40 + ..._0023compile_002dtime_002dcomputation.html | 40 + ...and_002daim_002dof_002dthis_002dguide.html | 40 + ...ributing_002dto_002dthis_002ddocument.html | 40 + 0.0.7/html_split/_0023contributors.html | 40 + ...02dfor_002dmodules_002dand_002dtopics.html | 40 + 0.0.7/html_split/_0023disclaimer.html | 40 + 0.0.7/html_split/_0023error_002dhandling.html | 40 + ...mples_002dof_002dcourse_002dcurricula.html | 40 + ...2e_002dnon_002dstandard_002dlibraries.html | 40 + ...ith_002da_002dconstant_002dexpression.html | 40 + ..._002dwhen_002dare_002dcopies_002dmade.html | 40 + ...ns_002dwith_002ddefault_002darguments.html | 40 + .../_0023foundational_002dusing_002dudls.html | 40 + ...dwriting_002drequires_002dexpressions.html | 40 + 0.0.7/html_split/_0023functions.html | 40 + ...023functions_002ddefault_002dargument.html | 40 + ...ons_002duser_002ddefined_002dliterals.html | 40 + ...generic_002dprogramming_002dtemplates.html | 40 + 0.0.7/html_split/_0023glossary.html | 40 + .../_0023how_002dto_002dcontribute.html | 40 + ...nce_002dand_002dclass_002dhierarchies.html | 40 + 0.0.7/html_split/_0023license.html | 40 + ...023main_002dadvanced_002drequirements.html | 40 + ...ntracts_002dand_002dstatic_005fassert.html | 40 + .../_0023main_002dimplementing.html | 40 + .../_0023main_002dimplementing_002dudls.html | 40 + ...r_002ddefined_002dcopy_002doperations.html | 40 + ...or_002dhandling_002dstatic_005fassert.html | 40 + ...002dname_002drequires_002dexpressions.html | 40 + 0.0.7/html_split/_0023motivation.html | 40 + 0.0.7/html_split/_0023motivation_002d1.html | 40 + 0.0.7/html_split/_0023motivation_002d2.html | 40 + 0.0.7/html_split/_0023motivation_002d3.html | 40 + 0.0.7/html_split/_0023motivation_002d4.html | 40 + ...ion_002dand_002dalternate_002dformats.html | 40 + ...nization_002dof_002dthis_002ddocument.html | 40 + 0.0.7/html_split/_0023overview.html | 40 + 0.0.7/html_split/_0023overview_002d1.html | 40 + 0.0.7/html_split/_0023overview_002d2.html | 40 + 0.0.7/html_split/_0023overview_002d3.html | 40 + 0.0.7/html_split/_0023overview_002d4.html | 40 + .../_0023points_002dto_002dcover.html | 40 + .../_0023points_002dto_002dcover_002d1.html | 40 + .../_0023points_002dto_002dcover_002d2.html | 40 + .../_0023points_002dto_002dcover_002d3.html | 40 + .../_0023points_002dto_002dcover_002d4.html | 40 + .../_0023points_002dto_002dcover_002d5.html | 40 + .../_0023points_002dto_002dcover_002d6.html | 40 + .../_0023points_002dto_002dcover_002d7.html | 40 + .../_0023points_002dto_002dcover_002d8.html | 40 + 0.0.7/html_split/_0023preprocessor.html | 40 + 0.0.7/html_split/_0023references.html | 40 + ...nces_002don_002dlearning_002doutcomes.html | 40 + .../html_split/_0023software_002ddesign.html | 40 + .../html_split/_0023standard_002dlibrary.html | 40 + .../html_split/_0023student_002doutcomes.html | 40 + .../_0023student_002doutcomes_002d1.html | 40 + .../_0023student_002doutcomes_002d2.html | 40 + .../_0023student_002doutcomes_002d3.html | 40 + .../_0023student_002doutcomes_002d4.html | 40 + .../_0023student_002doutcomes_002d5.html | 40 + .../_0023student_002doutcomes_002d6.html | 40 + .../_0023student_002doutcomes_002d7.html | 40 + .../_0023student_002doutcomes_002d8.html | 40 + .../_0023student_002doutcomes_002d9.html | 40 + ...002dof_002dmodules_002dand_002dtopics.html | 40 + .../_0023testing_002dand_002ddebugging.html | 40 + 0.0.7/html_split/_0023tooling.html | 40 + .../_0023topic_002dintroduction.html | 40 + .../_0023topic_002dintroduction_002d1.html | 40 + .../_0023topic_002dintroduction_002d2.html | 40 + .../_0023topic_002dintroduction_002d3.html | 40 + .../_0023topic_002dintroduction_002d4.html | 40 + ..._0023use_002dof_002dthis_002ddocument.html | 40 + ...ser_002ddefined_002dtypes_002dclasses.html | 40 + ...dto_002dc_002dteaching_002dguidelines.html | 40 + 0.0.7/html_split/index.html | 240 +++ 0.0.7/html_split/unknown_node.html | 763 +++++++++ latest/index.html | 8 +- 165 files changed, 10138 insertions(+), 4 deletions(-) create mode 100644 0.0.7/guidelines.epub create mode 100644 0.0.7/html/images/cpp_logo.png create mode 100644 0.0.7/html/index.html create mode 100644 0.0.7/html_split/Advanced.html create mode 100644 0.0.7/html_split/Background_002fRequired-Knowledge.html create mode 100644 0.0.7/html_split/Background_002frequired-knowledge.html create mode 100644 0.0.7/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html create mode 100644 0.0.7/html_split/Building.html create mode 100644 0.0.7/html_split/C_002b_002b-object-model-copy-semantics.html create mode 100644 0.0.7/html_split/Caveats.html create mode 100644 0.0.7/html_split/Compilation-Model.html create mode 100644 0.0.7/html_split/Compile_002dTime-Computation.html create mode 100644 0.0.7/html_split/Context-and-Aim-of-This-Guide.html create mode 100644 0.0.7/html_split/Contributing-to-This-Document.html create mode 100644 0.0.7/html_split/Contributors.html create mode 100644 0.0.7/html_split/Detailed-Information-for-Modules-and-Topics.html create mode 100644 0.0.7/html_split/Disclaimer.html create mode 100644 0.0.7/html_split/Error-Handling.html create mode 100644 0.0.7/html_split/Examples-of-Course-Curricula.html create mode 100644 0.0.7/html_split/External-ie-Non-Standard-Libraries.html create mode 100644 0.0.7/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html create mode 100644 0.0.7/html_split/Foundational-How-and-when-are-copies-made.html create mode 100644 0.0.7/html_split/Foundational-Using-UDLs.html create mode 100644 0.0.7/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html create mode 100644 0.0.7/html_split/Foundational-Writing-requires_002dexpressions.html create mode 100644 0.0.7/html_split/Functions-default-argument.html create mode 100644 0.0.7/html_split/Functions-user_002ddefined-literals.html create mode 100644 0.0.7/html_split/Functions.html create mode 100644 0.0.7/html_split/Generic-Programming-Templates.html create mode 100644 0.0.7/html_split/Glossary.html create mode 100644 0.0.7/html_split/How-To-Contribute.html create mode 100644 0.0.7/html_split/Inheritance-and-Class-Hierarchies.html create mode 100644 0.0.7/html_split/License.html create mode 100644 0.0.7/html_split/Main-Advanced-requirements.html create mode 100644 0.0.7/html_split/Main-Contracts-and-static_005fassert.html create mode 100644 0.0.7/html_split/Main-Implementing-user_002ddefined-copy-operations.html create mode 100644 0.0.7/html_split/Main-implementing-UDLs.html create mode 100644 0.0.7/html_split/Main-implementing-_002a.html create mode 100644 0.0.7/html_split/Meta_002derror-handling-static_005fassert.html create mode 100644 0.0.7/html_split/Module-name-Requires-Expressions.html create mode 100644 0.0.7/html_split/Motivation.html create mode 100644 0.0.7/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html create mode 100644 0.0.7/html_split/Organization-of-This-Document.html create mode 100644 0.0.7/html_split/Overview.html create mode 100644 0.0.7/html_split/Points-to-cover.html create mode 100644 0.0.7/html_split/Preprocessor.html create mode 100644 0.0.7/html_split/References-on-Learning-Outcomes.html create mode 100644 0.0.7/html_split/References.html create mode 100644 0.0.7/html_split/Software-Design.html create mode 100644 0.0.7/html_split/Standard-Library.html create mode 100644 0.0.7/html_split/Student-outcomes.html create mode 100644 0.0.7/html_split/Summary-of-Modules-and-Topics.html create mode 100644 0.0.7/html_split/Testing-and-Debugging.html create mode 100644 0.0.7/html_split/Tooling.html create mode 100644 0.0.7/html_split/Topic-introduction.html create mode 100644 0.0.7/html_split/Use-of-This-Document.html create mode 100644 0.0.7/html_split/User_002dDefined-Types-Classes.html create mode 100644 0.0.7/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html create mode 100644 0.0.7/html_split/_0023advanced.html create mode 100644 0.0.7/html_split/_0023advanced_002d1.html create mode 100644 0.0.7/html_split/_0023advanced_002d2.html create mode 100644 0.0.7/html_split/_0023advanced_002d3.html create mode 100644 0.0.7/html_split/_0023backgroundrequired_002dknowledge.html create mode 100644 0.0.7/html_split/_0023backgroundrequired_002dknowledge_002d1.html create mode 100644 0.0.7/html_split/_0023backgroundrequired_002dknowledge_002d2.html create mode 100644 0.0.7/html_split/_0023backgroundrequired_002dknowledge_002d3.html create mode 100644 0.0.7/html_split/_0023backgroundrequired_002dknowledge_002d4.html create mode 100644 0.0.7/html_split/_0023backgroundrequired_002dknowledge_002d5.html create mode 100644 0.0.7/html_split/_0023backgroundrequired_002dknowledge_002d6.html create mode 100644 0.0.7/html_split/_0023backgroundrequired_002dknowledge_002d7.html create mode 100644 0.0.7/html_split/_0023backgroundrequired_002dknowledge_002d8.html create mode 100644 0.0.7/html_split/_0023backgroundrequired_002dknowledge_002d9.html create mode 100644 0.0.7/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html create mode 100644 0.0.7/html_split/_0023building.html create mode 100644 0.0.7/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html create mode 100644 0.0.7/html_split/_0023caveats.html create mode 100644 0.0.7/html_split/_0023caveats_002d1.html create mode 100644 0.0.7/html_split/_0023caveats_002d2.html create mode 100644 0.0.7/html_split/_0023caveats_002d3.html create mode 100644 0.0.7/html_split/_0023caveats_002d4.html create mode 100644 0.0.7/html_split/_0023caveats_002d5.html create mode 100644 0.0.7/html_split/_0023caveats_002d6.html create mode 100644 0.0.7/html_split/_0023caveats_002d7.html create mode 100644 0.0.7/html_split/_0023caveats_002d8.html create mode 100644 0.0.7/html_split/_0023caveats_002d9.html create mode 100644 0.0.7/html_split/_0023compilation_002dmodel.html create mode 100644 0.0.7/html_split/_0023compile_002dtime_002dcomputation.html create mode 100644 0.0.7/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html create mode 100644 0.0.7/html_split/_0023contributing_002dto_002dthis_002ddocument.html create mode 100644 0.0.7/html_split/_0023contributors.html create mode 100644 0.0.7/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html create mode 100644 0.0.7/html_split/_0023disclaimer.html create mode 100644 0.0.7/html_split/_0023error_002dhandling.html create mode 100644 0.0.7/html_split/_0023examples_002dof_002dcourse_002dcurricula.html create mode 100644 0.0.7/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html create mode 100644 0.0.7/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html create mode 100644 0.0.7/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html create mode 100644 0.0.7/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html create mode 100644 0.0.7/html_split/_0023foundational_002dusing_002dudls.html create mode 100644 0.0.7/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html create mode 100644 0.0.7/html_split/_0023functions.html create mode 100644 0.0.7/html_split/_0023functions_002ddefault_002dargument.html create mode 100644 0.0.7/html_split/_0023functions_002duser_002ddefined_002dliterals.html create mode 100644 0.0.7/html_split/_0023generic_002dprogramming_002dtemplates.html create mode 100644 0.0.7/html_split/_0023glossary.html create mode 100644 0.0.7/html_split/_0023how_002dto_002dcontribute.html create mode 100644 0.0.7/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html create mode 100644 0.0.7/html_split/_0023license.html create mode 100644 0.0.7/html_split/_0023main_002dadvanced_002drequirements.html create mode 100644 0.0.7/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html create mode 100644 0.0.7/html_split/_0023main_002dimplementing.html create mode 100644 0.0.7/html_split/_0023main_002dimplementing_002dudls.html create mode 100644 0.0.7/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html create mode 100644 0.0.7/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html create mode 100644 0.0.7/html_split/_0023module_002dname_002drequires_002dexpressions.html create mode 100644 0.0.7/html_split/_0023motivation.html create mode 100644 0.0.7/html_split/_0023motivation_002d1.html create mode 100644 0.0.7/html_split/_0023motivation_002d2.html create mode 100644 0.0.7/html_split/_0023motivation_002d3.html create mode 100644 0.0.7/html_split/_0023motivation_002d4.html create mode 100644 0.0.7/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html create mode 100644 0.0.7/html_split/_0023organization_002dof_002dthis_002ddocument.html create mode 100644 0.0.7/html_split/_0023overview.html create mode 100644 0.0.7/html_split/_0023overview_002d1.html create mode 100644 0.0.7/html_split/_0023overview_002d2.html create mode 100644 0.0.7/html_split/_0023overview_002d3.html create mode 100644 0.0.7/html_split/_0023overview_002d4.html create mode 100644 0.0.7/html_split/_0023points_002dto_002dcover.html create mode 100644 0.0.7/html_split/_0023points_002dto_002dcover_002d1.html create mode 100644 0.0.7/html_split/_0023points_002dto_002dcover_002d2.html create mode 100644 0.0.7/html_split/_0023points_002dto_002dcover_002d3.html create mode 100644 0.0.7/html_split/_0023points_002dto_002dcover_002d4.html create mode 100644 0.0.7/html_split/_0023points_002dto_002dcover_002d5.html create mode 100644 0.0.7/html_split/_0023points_002dto_002dcover_002d6.html create mode 100644 0.0.7/html_split/_0023points_002dto_002dcover_002d7.html create mode 100644 0.0.7/html_split/_0023points_002dto_002dcover_002d8.html create mode 100644 0.0.7/html_split/_0023preprocessor.html create mode 100644 0.0.7/html_split/_0023references.html create mode 100644 0.0.7/html_split/_0023references_002don_002dlearning_002doutcomes.html create mode 100644 0.0.7/html_split/_0023software_002ddesign.html create mode 100644 0.0.7/html_split/_0023standard_002dlibrary.html create mode 100644 0.0.7/html_split/_0023student_002doutcomes.html create mode 100644 0.0.7/html_split/_0023student_002doutcomes_002d1.html create mode 100644 0.0.7/html_split/_0023student_002doutcomes_002d2.html create mode 100644 0.0.7/html_split/_0023student_002doutcomes_002d3.html create mode 100644 0.0.7/html_split/_0023student_002doutcomes_002d4.html create mode 100644 0.0.7/html_split/_0023student_002doutcomes_002d5.html create mode 100644 0.0.7/html_split/_0023student_002doutcomes_002d6.html create mode 100644 0.0.7/html_split/_0023student_002doutcomes_002d7.html create mode 100644 0.0.7/html_split/_0023student_002doutcomes_002d8.html create mode 100644 0.0.7/html_split/_0023student_002doutcomes_002d9.html create mode 100644 0.0.7/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html create mode 100644 0.0.7/html_split/_0023testing_002dand_002ddebugging.html create mode 100644 0.0.7/html_split/_0023tooling.html create mode 100644 0.0.7/html_split/_0023topic_002dintroduction.html create mode 100644 0.0.7/html_split/_0023topic_002dintroduction_002d1.html create mode 100644 0.0.7/html_split/_0023topic_002dintroduction_002d2.html create mode 100644 0.0.7/html_split/_0023topic_002dintroduction_002d3.html create mode 100644 0.0.7/html_split/_0023topic_002dintroduction_002d4.html create mode 100644 0.0.7/html_split/_0023use_002dof_002dthis_002ddocument.html create mode 100644 0.0.7/html_split/_0023user_002ddefined_002dtypes_002dclasses.html create mode 100644 0.0.7/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html create mode 100644 0.0.7/html_split/index.html create mode 100644 0.0.7/html_split/unknown_node.html diff --git a/0.0.7/guidelines.epub b/0.0.7/guidelines.epub new file mode 100644 index 0000000000000000000000000000000000000000..0fa0ec66831c6323c703e71437151559595ab5a3 GIT binary patch literal 31526 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 QqXG1PK9Z!J|8@2M04Kj>P5=M^ literal 0 HcmV?d00001 diff --git a/0.0.7/html/images/cpp_logo.png b/0.0.7/html/images/cpp_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..780e8a32bdd384c1dbd0fc999b9ef9ed2e1bdad6 GIT binary patch literal 23613 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 literal 0 HcmV?d00001 diff --git a/0.0.7/html/index.html b/0.0.7/html/index.html new file mode 100644 index 0000000..e15f98d --- /dev/null +++ b/0.0.7/html/index.html @@ -0,0 +1,1430 @@ + + + + + + + Guidelines for Teaching C++ + + + + + + + + + + + + + + + + + + + + + Guidelines for Teaching C++ + + + + + + + +
      + +
      + +
      + +
      + +
      +

      Guidelines for Teaching C++

      + +

      Version 0.0.7

      + +

      SG20 (ISO C++ Study Group on Education)

      +
      +
      + +
      +
      +
      + +
      +
      + +
      +

      1 Obtaining This Document: The Most Recent Version and Alternate Formats

      +

      The most recent version of this document is available as an online HTML document at: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/latest/.

      +

      The version of the document that you are currently reading is available in the following formats:

      +
        +
      1. online (HTML) format as a single large HTML document: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.7/html [later to be https://cplusplus.github.io/SG20/0.0.7/html?]

      2. +
      3. EPUB format: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.7/guidelines.epub [later to be https:/cplusplus.github.io/SG20/0.0.7/guidelines.epub?]

      4. +
      5. online (HTML) format, split across multiple HTML documents: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.7/html_split/ [later to be https://cplusplus.github.io/SG20/0.0.7/html_split/?] [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

      6. +
      +

      Older versions of this document are also available. In general version ver is available at https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/ver. For example, version v0.1.0 (assuming that this version exists) would be available at [later to be https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/v0.1.0?].

      +

      2 Disclaimer

      +

      This document is intended as a proof of concept to solicit feedback from others. This document is incomplete. This document likely has at least a few errors.

      +

      3 Context and Aim of This Guide

      +

      This document is intended to serve as a resource for instructors to assist in the preparation of courses on C++ in a variety of settings, including university, college, and industry environments. The main objectives of this document are as follows:

      +
        +
      • to provide guidelines for content to be covered by courses of various difficulty levels on C++ (e.g., topics and learning outcomes)
      • +
      • to note some common misunderstandings and problematic points that may be encountered when teaching particular topics
      • +
      • to suggest resources useful for teaching C++
      • +
      • to present examples of curriculum for specific courses
      • +
      +

      This document does not itself provide a curriculum for a single specific course, but is rather a set of guidelines that can be used to prepare curricula for a wide variety of courses that differ in focus and level of sophistication. (This said, however, some links to other documents with examples of curricula for specific courses may be included herein.) This document only intends to target the teaching of the most recently ratified version of the C++ standard. (This said, however, since older versions of this document are also available, these older versions may be of some use to those who need guidance in older versions of the standard, at least versions that do not predate C++20.)

      +

      4 Use of This Document

      +

      [NOTE: This document follows the same license model as the C++ Core Guidelines. The LICENSE document is taken verbatim from the C++ Core Guidelines.] This document is made available under a MIT-style license. In simple terms, this license permits copying, use, modification, and creation of derivative works. A copy of the license is included in the section LICENSE.

      +

      5 Contributing to This Document

      +

      Contributions to this document are welcome. If you would like to help with this project as a contributor, please read the section How to Contribute.

      +

      6 Organization of This Document

      +

      The various concepts (i.e., ideas) to potentially be covered are partitioned into modules. A module is very broad in scope and consists of numerous topics. [Note: Can I suggest that we use the term “area” or “unit” instead of “module”? I think that these other choices are better and also avoid any potential confusion over what is meant by “module” (i.e., C++ term versus plain English term).]

      +

      For each module, topics related to the module are identified. Then, for each topic, learning outcomes are specified. In order to address a wide variety of courses on C++, each topic is addressed at three proficiency levels. These proficiency levels allow each topic to be covered at more than one level of detail. This allows target audiences with different background and learning objectives to be accommodated. The three proficiency levels are as follows:

      +
        +
      • foundational. This level gives the learner the idea that a facility exists, what benefits it offers, and the basic ways of using it. [Note: Isn’t this just “novice”/“beginner”?]

      • +
      • main. This level shows mainstream uses and techniques. For abstraction and organizational mechanisms it also demonstrates how to build them. This level should also give the learner a basic (but not detailed) understanding of how a facility might be implemented so that the learner can have a first-order understanding of any costs involved. [Note: The term “main” is not very descriptive/helpful. Could I suggest using “intermediate”?]

      • +
      • advanced. This level gives information suitable for an expert. For most topics there is an expert level of knowledge that most programmers rarely need and techniques that require detailed understanding of language rules or library implementation.

      • +
      +

      The remainder of this document is organized as follows. The various topics are listed grouped by module. In cases where a topic might be classified into more than one module, the topic is listed under the module of most direct relevance. This is done in order to avoid duplication of content. (In the case that a topic is equally relevant to multiple modules, the decision of which to select is made by a proverbial coin toss.) The order in which modules and topics are presented is not meant to imply any order of coverage in a course. The order in which items are listed is essentially arbitrary.

      +

      7 Summary of Modules and Topics

      +

      In the sections that follow, the various modules and topics are presented. There is one section per module. For each module, a table listing the various topics in that module is provided. The ID for a topic is linked to the detailed coverage of that topic that comes later in the document. If a topic has any learning outcomes at a given proficiency level, this is indicated by a checkmark (“✔️”). If a topic has no learning outcomes (simply because there are not any, not because the information is missing), this is indicated by an em dash (“—”). In the case that the information for a topic is completely missing, a question mark (“?”) symbol is used.

      +

      [NOTE: These topics are taken mostly from the SG20 GitHub repository. They are not intended to be complete in any sense. In fact, by gathering together all topics in one place where they are easily viewed, it is hoped that missing and unbalanced items will be more obvious.]

      +

      7.1 Compilation Model

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Translation Units???
      [?]Headers???
      [?]Modules???
      [?]Name Mangling???
      [?]Phases of Translation???
      [?]Separate Compilation???
      [?]Linkage???
      +

      7.2 Preprocessor

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Preprocessor Metaprogramming???
      [?]Inclusion???
      [?]Macros???
      +

      7.3 Basics Types, Objects, Values, Expressions, Statements, and Control-Flow Constructs

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Constant Objects???
      [?]Declarations and Definitions???
      [?]Selection Constructs (e.g., if, ternary)???
      [?]Looping Constructs (e.g., for, while, etc.)???
      +

      7.4 Functions

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Calling Functions???
      [?]Parameter Passing (e.g., Passing By Value and Reference)???
      [func-args]Default Arguments✔️
      [?]Returning Multiple Values???
      [?]Overloading???
      [udl]User-Defined Literals✔️✔️
      +

      7.5 User-Defined Types (Classes)

      + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Special Member Functions???
      [?]Types???
      [?]Conversions???
      [?]Constructors and Destructors???
      [?]Move/Copy Constructors and Assignment Operators???
      [?]Member Functions???
      [?]Sum Types???
      [?]User-Defined Literals???
      [?]Special Member Functions???
      [?]Guidelines for Special Member Functions (e.g., Rule of Five, Rule of Zero)???
      [copy]Copy Semantics✔️✔️
      [?]Moving and Copying???
      [?]Lambdas???
      +

      7.6 Inheritance and Class Hierarchies

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Virtual Functions???
      [?]Run-Time Type Information???
      +

      7.7 Compile-Time Computation

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Constant Expressions and Constant Evaluation???
      [static-assert]static_assert✔️✔️
      +

      7.8 Generic Programming (Templates)

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Concepts???
      [?]SFINAE???
      [?]Template Metaprogramming???
      [?]Function Templates???
      [?]Requires Clauses???
      [req-expr]Requires Expressions✔️✔️
      +

      7.9 Error Handling

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Classes of Errors???
      [?]errno???
      [?]Error Codes???
      [?]Exception Handling???
      +

      7.10 Standard Library

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Input/Output (I/O)???
      [?]Containers, Iterators, and Algorithms???
      +

      7.11 External (i.e., Non Standard) Libraries

      + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Graphical User Interfaces???
      +

      7.12 Building

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Software Build Tools???
      [?]Strategies for Handling Build Problems???
      +

      7.13 Testing and Debugging

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Source-Level Debuggers???
      [?]Code Sanitizers???
      [?]Test Frameworks???
      [?]Debugging Strategies???
      +

      7.14 Tooling

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Compiler Toolchains???
      [?]IDEs???
      +

      7.15 Software Design

      + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Design by Contract???
      +

      8 Detailed Information for Modules and Topics

      +

      8.1 C++ object model: copy semantics

      +

      Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

      +

      8.1.1 Overview

      +

      Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

      + ++++ + + + + + + + + + + + + + + + + + + + + +
      LevelObjectives
      Foundationalunderstanding how and when are copies made
      Mainimplementing user-defined copy operations
      Advancedspecial cases: copy elision
      +

      8.1.2 Motivation

      +

      Why is this important? Why do we want to learn/teach this topic?

      +

      Copy semantics allows the user to define how objects of a class get replicated and interact on a value level.

      +

      8.1.3 Topic introduction

      +

      Very brief introduction to the topic.

      +

      Explains when and how objects are copied.

      +

      8.1.4 Foundational: How and when are copies made

      +

      8.1.4.1 Background/Required Knowledge

      +

      A student is able to: * explain what a C++ type is? [C++ object model: types] * explain what an object is? [C++ object model: objects], [C++ object model: constant objects] * define and understand class invariants?

      +

      It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain special member functions [C++ object model: special member functions]

      +

      8.1.4.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      +

      A student should be able to:

      +
        +
      1. explain what copy semantics accomplish
      2. +
      +
        +
      • establishing “equivalent” object state in another object
      • +
      +
        +
      1. explain difference between copying a reference and copying a value*
      2. +
      3. explain where copies are made
      4. +
      +

      * In other languages these differences are sometimes referred to as shallow and deep copy.

      +

      8.1.4.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      +
        +
      • Compiler-provided copy operations may result in ownership problems (e.g., char*). These ownership problems can generally be solved by using types whose copy operations have the appropriate semantics, e.g., std::string instead of char* to hold string values.
      • +
      +

      8.1.4.4 Points to cover

      +

      This section lists important details for each point.

      +
        +
      • Principle of copying +
          +
        • Copying of types, which follow the rule of zero
        • +
        • Copying of types, with user defined copy operations
        • +
        • Copying an object does not change the original
        • +
      • +
      • Practical applications +
          +
        • std::unique_ptr (has no copy)
        • +
        • Strings (copies the value)
        • +
      • +
      +

      8.1.5 Main: Implementing user-defined copy operations

      +

      8.1.5.1 Background/Required Knowledge

      +

      A student is able to: * identify special member functions [C++ object model: special member functions]

      +

      It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain the rule of zero [C++ object model: rule-of-zero] * explain the rule of five [C++ object model: rule-of-five]

      +

      8.1.5.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      +

      A student should be able to: * explain when they have to implement the copy operations for their own type * Copy constructor * Copy assignment operator * implement copy operations for their own types * Optional: explain when copying with basic and strong exception guarantees is useful

      +

      8.1.5.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      +
        +
      • Intricacies when implementing copy operations: +
          +
        • Examples of how not to write copy operations (e.g., C++03 std::auto_ptr)
        • +
      • +
      +

      8.1.5.4 Points to cover

      +

      This section lists important details for each point.

      +
        +
      • Copy constructors and copy assignment operators +
          +
        • How compiler generates default copy operations
        • +
        • =default, =delete (No copy)
        • +
        • How-to write your own copy operations
        • +
        • Rule-of-five
        • +
        • Copy assignment operators can be ref-qualified to avoid assigning into temporary objects.
        • +
      • +
      +

      8.1.6 Advanced

      +

      These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

      +

      When can copies be elided and when does the standard guarantee copy elision. References: * Abseil tip of the Week #166 * cppreference - Copy elision

      +

      8.2 Functions: user-defined literals

      +

      Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

      +

      8.2.1 Overview

      +

      Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

      + ++++ + + + + + + + + + + + + + + + + + + + + +
      LevelObjectives
      Foundationalusing and understanding UDLs
      Mainimplementing your own UDLs
      AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
      +

      8.2.2 Motivation

      +

      Why is this important? Why do we want to learn/teach this topic?

      +
        +
      • Allows clearer expression of intent in C++.
      • +
      • std::string: "Hello, world!"s
      • +
      • std::chrono: 3h + 10min + 5s
      • +
      +

      8.2.3 Topic introduction

      +

      Very brief introduction to the topic.

      +
        +
      • Explain the existence of user defined literals. Example: 12min + 17s is terse, expressive and type safe.
      • +
      +

      8.2.4 Foundational: Using UDLs

      +

      8.2.4.1 Background/Required Knowledge

      +

      A student: * knows how to form numeric literals, e.g., 1.5f means a float of value 1.5. * is familiar with the major C++ types: * bool (Boolean type) * int (Integer type) * double (Floating-point type) * std::string (Text type) * std::vector (Collection type) * knows that namespaces exist, and namespace std. * knows what using-declarations and using-directives are. [C++ object model: declarations]

      +

      8.2.4.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      +

      A student should be able to:

      +
        +
      1. use using namespace std::string_literals[1].
      2. +
      3. recognise UDLs in code that they are reading.
      4. +
      5. figure out which UDL definitions for a used type exist.
      6. +
      7. identify parts of the standard library that make use of UDLs.
      8. +
      9. prevent the dangers of temporaries created with "blah"s as well as with std::string{"blah"}.
      10. +
      11. effectively selects the right set of namespaces in using-directives from the sub-namespaces std::literals.
      12. +
      +

      [1]: explain that it’s okay to use a using-directive to “activate” UDLs.

      +

      8.2.4.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      +
        +
      • A student gets confused by the similarities and differences between built-in suffixes and UDLs and between UDLs from different namespaces.
      • +
      • A student “activates” two suffixes with the same signature from different namespaces.
      • +
      +

      8.2.4.4 Points to cover

      +

      This section lists important details for each point.

      +

      8.2.5 Main: implementing UDLs

      +

      8.2.5.1 Background/Required Knowledge

      +
        +
      • All of the above.
      • +
      +

      8.2.5.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      +

      A student should be able to:

      +
        +
      1. write a UDL operator of their own.
      2. +
      3. separate unrelated UDLs into distinct namespaces.
      4. +
      +

      8.2.5.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      +

      No caveats at present. #### Points to cover

      +

      This section lists important details for each point.

      +

      No caveats at present. ### Advanced {#udl-advanced}

      +

      These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

      +

      8.3 Functions: default argument

      +

      Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

      +

      8.3.1 Overview

      +

      Functions in C++ may be overloaded with different numbers and types of parameters. It may be of value to specify default arguments for some number of parameters, to allow a caller to avoid specifying arguments that rarely change, or to enable expanding the set of parameters while maintaining backward compatibility with existing callers.

      + ++++ + + + + + + + + + + + + + + + + + + + + +
      LevelObjective
      FoundationalDefine and use functions with default arguments
      Main
      Advancedrefinement of default arguments through multiple declarations
      +

      8.3.2 Motivation

      +

      Default arguments allow the omission of arguments with obvious or common values. Also may be utilized to extend an existing function signature without forcing changes to existing calling code.

      +

      8.3.3 Topic introduction

      +

      Explain how default arguments work and how to define them.

      +

      8.3.4 Foundational: Using and defining functions with default arguments

      +

      8.3.4.1 Background/Required Knowledge

      +

      A student is able to:

      + +

      8.3.4.2 Student outcomes

      +

      A student should be able to:

      +
        +
      1. Call to a function with a default argument with or without that argument specified
      2. +
      3. Declare a function with a default argument, and omit the default in the definition’s signature
      4. +
      5. Explain when the lifetime of a default argument begins and ends
      6. +
      +

      8.3.4.3 Caveats

      +
        +
      • When no forward-declaration exists, the definition serves as the declaration
      • +
      • When multiple declarations exist, only one may specify the default for any particular parameter, but multiple declarations may specify the defaults for different parameters.
      • +
      • Additional default values may be specified for other parameters in repeat declarations
      • +
      • Calling an overloaded function with fewer arguments may be ambiguous with regard to an overload with default arguments
      • +
      +

      8.3.4.4 Points to cover

      +
        +
      • Default value may only be specified once for each parameter among all declarations
      • +
      • Default values must start from the rightmost parameter and continue leftward without gaps
      • +
      • Considerations of when to use default arguments vs overload set
      • +
      +

      8.3.5 Main: implementing *

      +

      8.3.5.1 Background/required knowledge

      +
        +
      • All of the above.
      • +
      +

      8.3.5.2 Student outcomes

      +

      A student should be able to:

      +

      8.3.5.3 Caveats

      +

      8.3.5.4 Points to cover

      +

      8.3.6 Advanced

      +

      Subsequent redeclarations of the same function may add default argument values, which are then usable by callers. Though a single parameter cannot be given a default argument twice in the same translation unit, it is legal, though ill-advised, to give the same function different default arguments in different translation units.

      +

      8.4 Module name: Requires Expressions

      +

      Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

      +

      8.4.1 Overview

      + ++++ + + + + + + + + + + + + + + + + + + + + +
      LevelObjectives
      FoundationalDefine and use requires-expressions to check satisfaction of expressions by given parameters
      MainDefine and use requires-expressions to check properties of expressions
      Advanced
      +

      8.4.2 Motivation

      +

      Requires-expressions allow a developer to perform compile-time evaluation on the validity of other expressions. These are fundamental to the ability to write concepts. [Compile-time programming: concepts]

      +

      8.5 Topic introduction

      +

      Requires-expressions are compile-time predicates which evaluate to true when their specified set of expressions are all valid for a given set of inputs.

      +

      8.5.1 Foundational: Writing requires-expressions

      +

      8.5.1.1 Background/Required Knowledge

      +

      A student is able to:

      + +

      It is helpful if:

      +
        +
      • The student is aware that attempting to specialize the template with types or values which do not match otherwise unstated assumptions will cause errors within the template.
      • +
      +

      8.5.1.2 Student outcomes

      +

      A student should be able to:

      +
        +
      1. Write a simple-requirement to assert the validity of an expression
      2. +
      3. Write a type-requirement to check the existence of a type by its identifier
      4. +
      5. Write a compound-requirement to test the resulting type of an expression
      6. +
      7. Write a nested-requirement to test the constexpr value of an operation, as opposed to just the syntactic validity
      8. +
      9. Use a requires-expression within a concept, requires-clause, or if constexpr condition
      10. +
      +

      8.5.1.3 Caveats

      +

      To require that expressions, which evaluate to a boolean value like sizeof(t) == 4, evaluate to true a nested-requirement is needed (e.g., requires sizeof(t) == 4;). Omitting the requires results in a simple-requirement, which is satisfied based purely on syntactic validity, not on the result of the operation.

      +

      8.5.1.4 Points to cover

      +
        +
      • All requires-expression requirements terminate with a semicolon.
      • +
      • simple-requirements are used to check that an expression is well-formed.
      • +
      • nested-requirements are introduced with requires and primarily used to check the result of an expression computable by the compiler, including concepts or other requires-expressions.
      • +
      • type-requirements are introduced with typename and used to verify the existence of a type with a particular identifier.
      • +
      • compound-requirements are enclosed in braces and can be used to check the resulting type of an expression.
      • +
      • Checks are performed by the compiler, not at run time.
      • +
      • If covering usage of requires-expression with requires-clause, [Compile-time programming: requires clause] demonstrate requires requires and show how to ever avoid writing it by using a concept. [Compile-time programming: concepts]
      • +
      +

      8.5.2 Main: Advanced requirements

      +

      8.5.2.1 Background/required knowledge

      +
        +
      • All of the above.
      • +
      • Knowledge of noexcept
      • +
      +

      A student is able to:

      + +

      8.5.2.2 Student outcomes

      +

      A student should be able to:

      +
        +
      1. Write compound-requirements which test the noexceptness of an expression.
      2. +
      3. Use a concept as the target of a compound-requirement.
      4. +
      +

      8.5.2.3 Caveats

      +

      8.5.2.4 Points to cover

      +
        +
      • Compound-requirements allow the optional ability to test whether an expression is marked as noexcept, by using a trailing noexcept keyword.
      • +
      + +
        +
      • If the return-type-requirement of a compound-requirement is a concept, that concept is given the resulting type as the first parameter, followed by the specified parameters in the compound-requirement. { ++x } -> C<int> would substitute C<decltype((++x)), int> and check that concept C is satisfied for those parameters.
      • +
      +

      8.5.3 Advanced

      +

      8.6 Meta-error handling: static_assert

      +

      Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

      +

      8.6.1 Overview

      +

      Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

      + ++++ + + + + + + + + + + + + + + + + + + + + +
      LevelObjectives
      FoundationalCalling static_assert with a constant expression
      MainUsing static_assert to detect contract violations and improve error messages
      Advanced
      +

      8.6.2 Motivation

      +

      Why is this important? Why do we want to learn/teach this topic?

      +

      static_assert allows the developer to enforce that conditions which can be checked during compilation will force build errors when violated. Additionally, they are the best mechanism by which a developer can pass useful information to other developers regarding what violation occurred or what must be done, instead.

      +

      8.6.3 Topic introduction

      +

      Very brief introduction to the topic.

      +

      static_assert is a compile-time evaluated function that asserts the truth of a supplied predicate, issuing an optional user-supplied error message if the predicate is false.

      +

      8.6.4 Foundational: Calling static_assert with a constant expression

      +

      8.6.4.1 Background/Required Knowledge

      +

      A student:

      +
        +
      • Should be able to explain the difference between code evaluated at compile-time and run-time
      • +
      • Should be able to cite some examples of compile-time known information, such as sizeof(T)
      • +
      +

      8.6.4.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      +

      A student should be able to:

      +
        +
      1. Assert the expected size of a structure using static_assert
      2. +
      +

      8.6.4.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      +

      8.6.4.4 Points to cover

      +

      This section lists important details for each point.

      +
        +
      • X
      • +
      • In addition to what is wrong, a good error message will inform the user of how to correct it
      • +
      +

      8.6.5 Main: Contracts and static_assert

      +

      8.6.5.1 Background/Required Knowledge

      +
        +
      • All of the above.
      • +
      • General understanding of compile-time requirements
      • +
      +

      8.6.5.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      +

      A student should be able to:

      +
        +
      1. Utilize static_assert to verify preconditions of a meta-function
      2. +
      3. Utilize static_assert to verify the results of meta-functions for known values
      4. +
      +

      8.6.5.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      +

      8.6.5.4 Points to cover

      +

      This section lists important details for each point.

      +
        +
      • When writing a meta-function, use static_assert to test the results
      • +
      • Write static_assert calls at the scope of the code they are guarding
      • +
      + +

      8.6.6 Advanced

      +

      These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

      +

      9 Examples of Course Curricula

      +

      [NOTE: Anyone have any suggestions of items to add here?] The following are examples of curricula for course on C++: …

      +

      10 License

      +

      [NOTE: This license is copied verbatim from the C++ Core Guidelines.]

      +
      Copyright (c) Standard C++ Foundation and its contributors
      +
      +Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
      +perpetual license to copy, use, modify, and create derivative works from this
      +project for your personal or internal business use only. The above copyright
      +notice and this permission notice shall be included in all copies or
      +substantial portions of the project. This license does not grant permission
      +to use the trade names, trademarks, service marks, or product names of the
      +licensor, except as required for reasonable and customary use in describing
      +the origin of the project.
      +
      +Standard C++ Foundation reserves the right to accept contributions to the
      +project at its discretion.
      +
      +By contributing material to this project, you grant Standard C++ Foundation,
      +and those who receive the material directly or indirectly from Standard C++
      +Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
      +transferrable license to reproduce, prepare derivative works of, publicly
      +display, publicly perform, and distribute your contributed material and such
      +derivative works, and to sublicense any or all of the foregoing rights to third
      +parties for commercial or non-commercial use.  You also grant Standard C++
      +Foundation, and those who receive the material directly or indirectly from
      +Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
      +irrevocable license under your patent claims that directly read on your
      +contributed material to make, have made, use, offer to sell, sell and import
      +or otherwise dispose of the material. You warrant that your material is your
      +original work, or that you have the right to grant the above licenses.
      +
      +THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
      +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
      +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
      +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
      +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
      +OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
      +PROJECT.
      +
      +If you believe that anything in the project infringes your copyright, please
      +contact us at admin@isocpp.org with your contact information and a detailed
      +description of your intellectual property, including a specific URL where you
      +believe your intellectual property is being infringed.
      +
      +

      11 Contributors

      +
      Christopher Di Bella
      +Florian Sattler
      +Michael Adams
      +rwdougla
      +vulder
      +

      12 How To Contribute

      +

      Before attempting to contribute any content for consideration for inclusion in this document, please read the information below and and the referenced documents as appropriate.

      +

      All contributions to this project must be made in accordance with the license in section License. This teaching-guidelines document only offers guidance on teaching C++ as it is specified in the current version of the C++ standard. So, content should be presented relative to the most-recently ratified version of the standard. A detailed explanation of how to present the material for a topic is given in:

      +
        +
      • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.
      • +
      +

      Any potential contributors should ensure that they read this document. The following document may also be helpful in providing some general background on the modular approach to teaching followed herein:

      + +

      In order to prepare content, it is important to understand what learning outcomes are, and how to prepare good ones. Some information on learning outcomes can be found in the References section. The following document offers a concise introduction to learning outcomes:

      + +

      13 Glossary

      +

      Some possible terms to include in the glossary:

      +
        +
      • learning objective
      • +
      • learning outcome
      • +
      +

      14 References

      +

      14.1 References on Learning Outcomes

      + + +
        +
      • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — Standing Document for SG20: Guidelines for Teaching C++ to Beginners. https://wg21.link/p1389.

      • +
      • Christopher Di Bella. P1725R0 — Modular Topic Design. https://wg21.link/p1725.

      • +
      • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.

      • +
      • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study Group: C++ Education. https://wg21.link/p1231.

      • +
      • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 — Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0.

      • +
      +
      +
      + +
      + + diff --git a/0.0.7/html_split/Advanced.html b/0.0.7/html_split/Advanced.html new file mode 100644 index 0000000..c4d659a --- /dev/null +++ b/0.0.7/html_split/Advanced.html @@ -0,0 +1,60 @@ + + + + + +Advanced (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      8.1.6 Advanced

      +

      These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

      +

      When can copies be elided and when does the standard guarantee copy +elision. References: * Abseil tip of +the Week #166 * +cppreference +- Copy elision +

      + + + + + diff --git a/0.0.7/html_split/Background_002fRequired-Knowledge.html b/0.0.7/html_split/Background_002fRequired-Knowledge.html new file mode 100644 index 0000000..d3ee185 --- /dev/null +++ b/0.0.7/html_split/Background_002fRequired-Knowledge.html @@ -0,0 +1,65 @@ + + + + + +Background/Required Knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1.4.1 Background/Required Knowledge

      +

      A student is able to: * explain what a C++ type is? +[C++ object model: types] +* explain what an object is? +[C++ object +model: objects], +[C++ object model: +constant objects] * define and understand class invariants? +

      +

      It helps when a student is able to: * use move semantics +[C++ object model: move +semantics] * explain special member functions +[C++ object model: +special member functions] +

      + + + + + diff --git a/0.0.7/html_split/Background_002frequired-knowledge.html b/0.0.7/html_split/Background_002frequired-knowledge.html new file mode 100644 index 0000000..79fd94d --- /dev/null +++ b/0.0.7/html_split/Background_002frequired-knowledge.html @@ -0,0 +1,54 @@ + + + + + +Background/required knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      8.3.5.1 Background/required knowledge

      +
        +
      • All of the above. +
      + + + + + + diff --git a/0.0.7/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html b/0.0.7/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html new file mode 100644 index 0000000..3e850b1 --- /dev/null +++ b/0.0.7/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html @@ -0,0 +1,60 @@ + + + + + +Basics Types Objects Values Expressions Statements and Control-Flow Constructs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.3 Basics Types, Objects, Values, Expressions, Statements, and

      +

      Control-Flow Constructs +

      + + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Constant Objects???
      [‘?’]Declarations and Definitions???
      [‘?’]Selection Constructs (e.g., if, ternary)???
      [‘?’]Looping Constructs (e.g., for, while, etc.)???
      + + + + + + diff --git a/0.0.7/html_split/Building.html b/0.0.7/html_split/Building.html new file mode 100644 index 0000000..e628fd0 --- /dev/null +++ b/0.0.7/html_split/Building.html @@ -0,0 +1,57 @@ + + + + + +Building (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.12 Building

      + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Software Build Tools???
      [‘?’]Strategies for Handling Build Problems???
      + + + + + + diff --git a/0.0.7/html_split/C_002b_002b-object-model-copy-semantics.html b/0.0.7/html_split/C_002b_002b-object-model-copy-semantics.html new file mode 100644 index 0000000..6d7350c --- /dev/null +++ b/0.0.7/html_split/C_002b_002b-object-model-copy-semantics.html @@ -0,0 +1,69 @@ + + + + + +C++ object model copy semantics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1 C++ object model: copy semantics

      +

      Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

      + + + + + + + + + + + + + + diff --git a/0.0.7/html_split/Caveats.html b/0.0.7/html_split/Caveats.html new file mode 100644 index 0000000..c5303c9 --- /dev/null +++ b/0.0.7/html_split/Caveats.html @@ -0,0 +1,62 @@ + + + + + +Caveats (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1.4.3 Caveats

      +

      This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

      +
        +
      • Compiler-provided copy operations may result in ownership problems +(e.g., char*). These ownership problems can generally be solved +by using types whose copy operations have the appropriate semantics, +e.g., std::string instead of char* to hold string values. +
      + + + + + + diff --git a/0.0.7/html_split/Compilation-Model.html b/0.0.7/html_split/Compilation-Model.html new file mode 100644 index 0000000..de11703 --- /dev/null +++ b/0.0.7/html_split/Compilation-Model.html @@ -0,0 +1,62 @@ + + + + + +Compilation Model (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.1 Compilation Model

      + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Translation Units???
      [‘?’]Headers???
      [‘?’]Modules???
      [‘?’]Name Mangling???
      [‘?’]Phases of Translation???
      [‘?’]Separate Compilation???
      [‘?’]Linkage???
      + + + + + + diff --git a/0.0.7/html_split/Compile_002dTime-Computation.html b/0.0.7/html_split/Compile_002dTime-Computation.html new file mode 100644 index 0000000..b9aaa0e --- /dev/null +++ b/0.0.7/html_split/Compile_002dTime-Computation.html @@ -0,0 +1,57 @@ + + + + + +Compile-Time Computation (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.7 Compile-Time Computation

      + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Constant Expressions and Constant Evaluation???
      [‘static-assert’]static_assert‘✔️’‘✔️’
      + + + + + + diff --git a/0.0.7/html_split/Context-and-Aim-of-This-Guide.html b/0.0.7/html_split/Context-and-Aim-of-This-Guide.html new file mode 100644 index 0000000..60efa61 --- /dev/null +++ b/0.0.7/html_split/Context-and-Aim-of-This-Guide.html @@ -0,0 +1,76 @@ + + + + + +Context and Aim of This Guide (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      +Next: , Previous: , Up: Top   [Contents]

      +
      +
      +

      3 Context and Aim of This Guide

      +

      This document is intended to serve as a resource for instructors to +assist in the preparation of courses on C++ in a variety of settings, +including university, college, and industry environments. The main +objectives of this document are as follows: +

      +
        +
      • to provide guidelines for content to be covered by courses of various +difficulty levels on C++ (e.g., topics and learning outcomes) +
      • to note some common misunderstandings and problematic points that may be +encountered when teaching particular topics +
      • to suggest resources useful for teaching C++ +
      • to present examples of curriculum for specific courses +
      + +

      This document does not itself provide a curriculum for a single specific +course, but is rather a set of guidelines that can be used to prepare +curricula for a wide variety of courses that differ in focus and level +of sophistication. (This said, however, some links to other documents +with examples of curricula for specific courses may be included herein.) +This document only intends to target the teaching of the most recently +ratified version of the C++ standard. (This said, however, since older +versions of this document are also available, these older versions may +be of some use to those who need guidance in older versions of the +standard, at least versions that do not predate C++20.) +

      + + + + + diff --git a/0.0.7/html_split/Contributing-to-This-Document.html b/0.0.7/html_split/Contributing-to-This-Document.html new file mode 100644 index 0000000..eac6c28 --- /dev/null +++ b/0.0.7/html_split/Contributing-to-This-Document.html @@ -0,0 +1,55 @@ + + + + + +Contributing to This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      5 Contributing to This Document

      +

      Contributions to this document are welcome. If you would like to help +with this project as a contributor, please read the section +‘How to Contribute’. +

      + + + + + diff --git a/0.0.7/html_split/Contributors.html b/0.0.7/html_split/Contributors.html new file mode 100644 index 0000000..8adb4b1 --- /dev/null +++ b/0.0.7/html_split/Contributors.html @@ -0,0 +1,58 @@ + + + + + +Contributors (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      +Next: , Previous: , Up: Top   [Contents]

      +
      +
      +

      11 Contributors

      + +
      Christopher Di Bella
      +Florian Sattler
      +Michael Adams
      +rwdougla
      +vulder
      +
      + + + + + diff --git a/0.0.7/html_split/Detailed-Information-for-Modules-and-Topics.html b/0.0.7/html_split/Detailed-Information-for-Modules-and-Topics.html new file mode 100644 index 0000000..c8c9fcd --- /dev/null +++ b/0.0.7/html_split/Detailed-Information-for-Modules-and-Topics.html @@ -0,0 +1,67 @@ + + + + + +Detailed Information for Modules and Topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8 Detailed Information for Modules and Topics

      + + + + + + + + + + + + + + + diff --git a/0.0.7/html_split/Disclaimer.html b/0.0.7/html_split/Disclaimer.html new file mode 100644 index 0000000..a911983 --- /dev/null +++ b/0.0.7/html_split/Disclaimer.html @@ -0,0 +1,55 @@ + + + + + +Disclaimer (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      2 Disclaimer

      +

      This document is intended as a proof of concept to solicit feedback from +others. This document is incomplete. This document likely has at least a +few errors. +

      + + + + + diff --git a/0.0.7/html_split/Error-Handling.html b/0.0.7/html_split/Error-Handling.html new file mode 100644 index 0000000..1f8d3e0 --- /dev/null +++ b/0.0.7/html_split/Error-Handling.html @@ -0,0 +1,59 @@ + + + + + +Error Handling (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.9 Error Handling

      + + + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Classes of Errors???
      [‘?’]errno???
      [‘?’]Error Codes???
      [‘?’]Exception Handling???
      + + + + + + diff --git a/0.0.7/html_split/Examples-of-Course-Curricula.html b/0.0.7/html_split/Examples-of-Course-Curricula.html new file mode 100644 index 0000000..64eb64b --- /dev/null +++ b/0.0.7/html_split/Examples-of-Course-Curricula.html @@ -0,0 +1,53 @@ + + + + + +Examples of Course Curricula (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      9 Examples of Course Curricula

      +

      [NOTE: Anyone have any suggestions of items to add here?] The +following are examples of curricula for course on C++: … +

      + + + + + diff --git a/0.0.7/html_split/External-ie-Non-Standard-Libraries.html b/0.0.7/html_split/External-ie-Non-Standard-Libraries.html new file mode 100644 index 0000000..2bf081e --- /dev/null +++ b/0.0.7/html_split/External-ie-Non-Standard-Libraries.html @@ -0,0 +1,56 @@ + + + + + +External ie Non Standard Libraries (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.11 External (i.e., Non Standard) Libraries

      + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Graphical User Interfaces???
      + + + + + + diff --git a/0.0.7/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html b/0.0.7/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html new file mode 100644 index 0000000..ce2c1b0 --- /dev/null +++ b/0.0.7/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html @@ -0,0 +1,62 @@ + + + + + +Foundational Calling static_assert with a constant expression (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
      +

      8.6.4 Foundational: Calling static_assert with a constant

      +

      expression +

      + + + + + + + + + + + + diff --git a/0.0.7/html_split/Foundational-How-and-when-are-copies-made.html b/0.0.7/html_split/Foundational-How-and-when-are-copies-made.html new file mode 100644 index 0000000..4cec33b --- /dev/null +++ b/0.0.7/html_split/Foundational-How-and-when-are-copies-made.html @@ -0,0 +1,63 @@ + + + + + +Foundational How and when are copies made (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1.4 Foundational: How and when are copies made

      + + + + + + + + + + + + + diff --git a/0.0.7/html_split/Foundational-Using-UDLs.html b/0.0.7/html_split/Foundational-Using-UDLs.html new file mode 100644 index 0000000..adb461e --- /dev/null +++ b/0.0.7/html_split/Foundational-Using-UDLs.html @@ -0,0 +1,61 @@ + + + + + +Foundational Using UDLs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
      +

      8.2.4 Foundational: Using UDLs

      + + + + + + + + + + + + + diff --git a/0.0.7/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html b/0.0.7/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html new file mode 100644 index 0000000..e37a992 --- /dev/null +++ b/0.0.7/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html @@ -0,0 +1,62 @@ + + + + + +Foundational Using and defining functions with default arguments (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
      +

      8.3.4 Foundational: Using and defining functions with default

      +

      arguments +

      + + + + + + + + + + + + diff --git a/0.0.7/html_split/Foundational-Writing-requires_002dexpressions.html b/0.0.7/html_split/Foundational-Writing-requires_002dexpressions.html new file mode 100644 index 0000000..6846c6e --- /dev/null +++ b/0.0.7/html_split/Foundational-Writing-requires_002dexpressions.html @@ -0,0 +1,60 @@ + + + + + +Foundational Writing requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +
      +

      8.5.1 Foundational: Writing requires-expressions

      + + + + + + + + + + + + + diff --git a/0.0.7/html_split/Functions-default-argument.html b/0.0.7/html_split/Functions-default-argument.html new file mode 100644 index 0000000..2571ca9 --- /dev/null +++ b/0.0.7/html_split/Functions-default-argument.html @@ -0,0 +1,67 @@ + + + + + +Functions default argument (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
      +

      8.3 Functions: default argument

      +

      Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

      + + + + + + + + + + + + + + diff --git a/0.0.7/html_split/Functions-user_002ddefined-literals.html b/0.0.7/html_split/Functions-user_002ddefined-literals.html new file mode 100644 index 0000000..7e41de9 --- /dev/null +++ b/0.0.7/html_split/Functions-user_002ddefined-literals.html @@ -0,0 +1,66 @@ + + + + + +Functions user-defined literals (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      8.2 Functions: user-defined literals

      +

      Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

      + + + + + + + + + + + + + diff --git a/0.0.7/html_split/Functions.html b/0.0.7/html_split/Functions.html new file mode 100644 index 0000000..82175a5 --- /dev/null +++ b/0.0.7/html_split/Functions.html @@ -0,0 +1,61 @@ + + + + + +Functions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.4 Functions

      + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Calling Functions???
      [‘?’]Parameter Passing (e.g., Passing By Value and Reference)???
      [‘func-args’]Default Arguments‘✔️’
      [‘?’]Returning Multiple Values???
      [‘?’]Overloading???
      [‘udl’]User-Defined Literals‘✔️’‘✔️’
      + + + + + + diff --git a/0.0.7/html_split/Generic-Programming-Templates.html b/0.0.7/html_split/Generic-Programming-Templates.html new file mode 100644 index 0000000..1a22cd7 --- /dev/null +++ b/0.0.7/html_split/Generic-Programming-Templates.html @@ -0,0 +1,61 @@ + + + + + +Generic Programming Templates (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.8 Generic Programming (Templates)

      + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Concepts???
      [‘?’]SFINAE???
      [‘?’]Template Metaprogramming???
      [‘?’]Function Templates???
      [‘?’]Requires Clauses???
      [‘req-expr’]Requires Expressions‘✔️’‘✔️’
      + + + + + + diff --git a/0.0.7/html_split/Glossary.html b/0.0.7/html_split/Glossary.html new file mode 100644 index 0000000..2bf24f2 --- /dev/null +++ b/0.0.7/html_split/Glossary.html @@ -0,0 +1,58 @@ + + + + + +Glossary (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      +Next: , Previous: , Up: Top   [Contents]

      +
      +
      +

      13 Glossary

      +

      Some possible terms to include in the glossary: +

      +
        +
      • learning objective +
      • learning outcome +
      + + + + + + diff --git a/0.0.7/html_split/How-To-Contribute.html b/0.0.7/html_split/How-To-Contribute.html new file mode 100644 index 0000000..f1963d5 --- /dev/null +++ b/0.0.7/html_split/How-To-Contribute.html @@ -0,0 +1,89 @@ + + + + + +How To Contribute (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      +Next: , Previous: , Up: Top   [Contents]

      +
      +
      +

      12 How To Contribute

      +

      Before attempting to contribute any content for consideration for +inclusion in this document, please read the information below and and +the referenced documents as appropriate. +

      +

      All contributions to this project must be made in accordance with the +license in section License. This teaching-guidelines +document only offers guidance on teaching C++ as it is specified in the +current version of the C++ standard. So, content should be presented +relative to the most-recently ratified version of the standard. A +detailed explanation of how to present the material for a topic is given +in: +

      +
        +
      • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to +structure a teaching topic. https://wg21.link/p2193. +
      + +

      Any potential contributors should ensure that they read this document. +The following document may also be helpful in providing some general +background on the modular approach to teaching followed herein: +

      + + +

      In order to prepare content, it is important to understand what learning +outcomes are, and how to prepare good ones. Some information on learning +outcomes can be found in the References section. The +following document offers a concise introduction to learning outcomes: +

      + + + + + + + diff --git a/0.0.7/html_split/Inheritance-and-Class-Hierarchies.html b/0.0.7/html_split/Inheritance-and-Class-Hierarchies.html new file mode 100644 index 0000000..1a394b0 --- /dev/null +++ b/0.0.7/html_split/Inheritance-and-Class-Hierarchies.html @@ -0,0 +1,57 @@ + + + + + +Inheritance and Class Hierarchies (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.6 Inheritance and Class Hierarchies

      + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Virtual Functions???
      [‘?’]Run-Time Type Information???
      + + + + + + diff --git a/0.0.7/html_split/License.html b/0.0.7/html_split/License.html new file mode 100644 index 0000000..38d2d8d --- /dev/null +++ b/0.0.7/html_split/License.html @@ -0,0 +1,100 @@ + + + + + +License (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      +Next: , Previous: , Up: Top   [Contents]

      +
      +
      +

      10 License

      +

      [NOTE: This license is copied verbatim from the C++ Core +Guidelines.] +

      +
      Copyright (c) Standard C++ Foundation and its contributors
      +
      +Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
      +perpetual license to copy, use, modify, and create derivative works from this
      +project for your personal or internal business use only. The above copyright
      +notice and this permission notice shall be included in all copies or
      +substantial portions of the project. This license does not grant permission
      +to use the trade names, trademarks, service marks, or product names of the
      +licensor, except as required for reasonable and customary use in describing
      +the origin of the project.
      +
      +Standard C++ Foundation reserves the right to accept contributions to the
      +project at its discretion.
      +
      +By contributing material to this project, you grant Standard C++ Foundation,
      +and those who receive the material directly or indirectly from Standard C++
      +Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
      +transferrable license to reproduce, prepare derivative works of, publicly
      +display, publicly perform, and distribute your contributed material and such
      +derivative works, and to sublicense any or all of the foregoing rights to third
      +parties for commercial or non-commercial use.  You also grant Standard C++
      +Foundation, and those who receive the material directly or indirectly from
      +Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
      +irrevocable license under your patent claims that directly read on your
      +contributed material to make, have made, use, offer to sell, sell and import
      +or otherwise dispose of the material. You warrant that your material is your
      +original work, or that you have the right to grant the above licenses.
      +
      +THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
      +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
      +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
      +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
      +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
      +OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
      +PROJECT.
      +
      +If you believe that anything in the project infringes your copyright, please
      +contact us at admin@isocpp.org with your contact information and a detailed
      +description of your intellectual property, including a specific URL where you
      +believe your intellectual property is being infringed.
      +
      +
      +
      +

      +Next: , Previous: , Up: Top   [Contents]

      +
      + + + + + diff --git a/0.0.7/html_split/Main-Advanced-requirements.html b/0.0.7/html_split/Main-Advanced-requirements.html new file mode 100644 index 0000000..6c4ac0e --- /dev/null +++ b/0.0.7/html_split/Main-Advanced-requirements.html @@ -0,0 +1,60 @@ + + + + + +Main Advanced requirements (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +
      +

      8.5.2 Main: Advanced requirements

      + + + + + + + + + + + + + diff --git a/0.0.7/html_split/Main-Contracts-and-static_005fassert.html b/0.0.7/html_split/Main-Contracts-and-static_005fassert.html new file mode 100644 index 0000000..6c0ba46 --- /dev/null +++ b/0.0.7/html_split/Main-Contracts-and-static_005fassert.html @@ -0,0 +1,61 @@ + + + + + +Main Contracts and static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
      +

      8.6.5 Main: Contracts and static_assert

      + + + + + + + + + + + + + diff --git a/0.0.7/html_split/Main-Implementing-user_002ddefined-copy-operations.html b/0.0.7/html_split/Main-Implementing-user_002ddefined-copy-operations.html new file mode 100644 index 0000000..e38dfd6 --- /dev/null +++ b/0.0.7/html_split/Main-Implementing-user_002ddefined-copy-operations.html @@ -0,0 +1,62 @@ + + + + + +Main Implementing user-defined copy operations (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      8.1.5 Main: Implementing user-defined copy operations

      + + + + + + + + + + + + + diff --git a/0.0.7/html_split/Main-implementing-UDLs.html b/0.0.7/html_split/Main-implementing-UDLs.html new file mode 100644 index 0000000..1f6f381 --- /dev/null +++ b/0.0.7/html_split/Main-implementing-UDLs.html @@ -0,0 +1,59 @@ + + + + + +Main implementing UDLs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
      +

      8.2.5 Main: implementing UDLs

      + + + + + + + + + + + + diff --git a/0.0.7/html_split/Main-implementing-_002a.html b/0.0.7/html_split/Main-implementing-_002a.html new file mode 100644 index 0000000..b661f2d --- /dev/null +++ b/0.0.7/html_split/Main-implementing-_002a.html @@ -0,0 +1,62 @@ + + + + + +Main implementing * (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      8.3.5 Main: implementing *

      + + + + + + + + + + + + + diff --git a/0.0.7/html_split/Meta_002derror-handling-static_005fassert.html b/0.0.7/html_split/Meta_002derror-handling-static_005fassert.html new file mode 100644 index 0000000..f81a34e --- /dev/null +++ b/0.0.7/html_split/Meta_002derror-handling-static_005fassert.html @@ -0,0 +1,67 @@ + + + + + +Meta-error handling static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
      +

      8.6 Meta-error handling: static_assert

      +

      Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

      + + + + + + + + + + + + + + diff --git a/0.0.7/html_split/Module-name-Requires-Expressions.html b/0.0.7/html_split/Module-name-Requires-Expressions.html new file mode 100644 index 0000000..8bab76c --- /dev/null +++ b/0.0.7/html_split/Module-name-Requires-Expressions.html @@ -0,0 +1,59 @@ + + + + + +Module name Requires Expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
      +

      8.4 Module name: Requires Expressions

      +

      Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

      + + + + + + + + + + diff --git a/0.0.7/html_split/Motivation.html b/0.0.7/html_split/Motivation.html new file mode 100644 index 0000000..40b0ec9 --- /dev/null +++ b/0.0.7/html_split/Motivation.html @@ -0,0 +1,57 @@ + + + + + +Motivation (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1.2 Motivation

      +

      Why is this important? Why do we want to learn/teach this +topic? +

      +

      Copy semantics allows the user to define how objects of a class get +replicated and interact on a value level. +

      + + + + + diff --git a/0.0.7/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html b/0.0.7/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html new file mode 100644 index 0000000..b3c4560 --- /dev/null +++ b/0.0.7/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html @@ -0,0 +1,84 @@ + + + + + +Obtaining This Document The Most Recent Version and Alternate Formats (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      +Next: , Previous: , Up: Top   [Contents]

      +
      +
      +

      1 Obtaining This Document: The Most Recent Version and Alternate

      +

      Formats +The most recent version of this document is available as an online HTML +document at: +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/latest/. +

      +

      The version of the document that you are currently reading is available +in the following formats: +

      +
        +
      1. online (HTML) format as a single large HTML document: +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.7/html +[later to be https://cplusplus.github.io/SG20/0.0.7/html?] + +
      2. EPUB format: +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.7/guidelines.epub +[later to be +https:/cplusplus.github.io/SG20/0.0.7/guidelines.epub?] + +
      3. online (HTML) format, split across multiple HTML documents: +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.7/html_split/ +[later to be https://cplusplus.github.io/SG20/0.0.7/html_split/?] +[Note: The support for this format needs more work (in order to +beautify and fix linking issues).] + +
      + +

      Older versions of this document are also available. In general version +ver is available at +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/ver. +For example, version v0.1.0 (assuming that this version exists) would be +available at [later to be +https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/v0.1.0?]. +

      + + + + + diff --git a/0.0.7/html_split/Organization-of-This-Document.html b/0.0.7/html_split/Organization-of-This-Document.html new file mode 100644 index 0000000..3e48985 --- /dev/null +++ b/0.0.7/html_split/Organization-of-This-Document.html @@ -0,0 +1,101 @@ + + + + + +Organization of This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      6 Organization of This Document

      +

      The various concepts (i.e., ideas) to potentially be covered are +partitioned into modules. A module is very broad in scope and consists +of numerous topics. [Note: Can I suggest that we use the term +“area” or “unit” instead of “module”? I think that these other +choices are better and also avoid any potential confusion over what is +meant by “module” (i.e., C++ term versus plain English term).] +

      +

      For each module, topics related to the module are identified. Then, for +each topic, learning outcomes are specified. In order to address a wide +variety of courses on C++, each topic is addressed at three proficiency +levels. These proficiency levels allow each topic to be covered at more +than one level of detail. This allows target audiences with different +background and learning objectives to be accommodated. The three +proficiency levels are as follows: +

      +
        +
      • foundational. This level gives the learner the idea that a facility +exists, what benefits it offers, and the basic ways of using it. +[Note: Isn’t this just “novice”/“beginner”?] + +
      • main. This level shows mainstream uses and techniques. For abstraction +and organizational mechanisms it also demonstrates how to build them. +This level should also give the learner a basic (but not detailed) +understanding of how a facility might be implemented so that the learner +can have a first-order understanding of any costs involved. +[Note: The term “main” is not very descriptive/helpful. Could +I suggest using “intermediate”?] + +
      • advanced. This level gives information suitable for an expert. For most +topics there is an expert level of knowledge that most programmers +rarely need and techniques that require detailed understanding of +language rules or library implementation. + +
      + +

      The remainder of this document is organized as follows. The various +topics are listed grouped by module. In cases where a topic might be +classified into more than one module, the topic is listed under the +module of most direct relevance. This is done in order to avoid +duplication of content. (In the case that a topic is equally relevant to +multiple modules, the decision of which to select is made by a +proverbial coin toss.) The order in which modules and topics are +presented is not meant to imply any order of coverage in a course. The +order in which items are listed is essentially arbitrary. +

      +
      + + + + + + diff --git a/0.0.7/html_split/Overview.html b/0.0.7/html_split/Overview.html new file mode 100644 index 0000000..be44bfa --- /dev/null +++ b/0.0.7/html_split/Overview.html @@ -0,0 +1,61 @@ + + + + + +Overview (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1.1 Overview

      +

      Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

      + + + + + +
      LevelObjectives
      Foundationalunderstanding how and when are copies made
      Mainimplementing user-defined copy operations
      Advancedspecial cases: copy elision
      + + + + + + diff --git a/0.0.7/html_split/Points-to-cover.html b/0.0.7/html_split/Points-to-cover.html new file mode 100644 index 0000000..ba4b5cc --- /dev/null +++ b/0.0.7/html_split/Points-to-cover.html @@ -0,0 +1,69 @@ + + + + + +Points to cover (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1.4.4 Points to cover

      +

      This section lists important details for each point. +

      +
        +
      • Principle of copying +
          +
        • Copying of types, which follow the rule of zero +
        • Copying of types, with user defined copy operations +
        • Copying an object does not change the original +
        + +
      • Practical applications +
          +
        • std::unique_ptr (has no copy) +
        • Strings (copies the value) +
        + +
      + + + + + + diff --git a/0.0.7/html_split/Preprocessor.html b/0.0.7/html_split/Preprocessor.html new file mode 100644 index 0000000..345e396 --- /dev/null +++ b/0.0.7/html_split/Preprocessor.html @@ -0,0 +1,58 @@ + + + + + +Preprocessor (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.2 Preprocessor

      + + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Preprocessor Metaprogramming???
      [‘?’]Inclusion???
      [‘?’]Macros???
      + + + + + + diff --git a/0.0.7/html_split/References-on-Learning-Outcomes.html b/0.0.7/html_split/References-on-Learning-Outcomes.html new file mode 100644 index 0000000..7b74cad --- /dev/null +++ b/0.0.7/html_split/References-on-Learning-Outcomes.html @@ -0,0 +1,71 @@ + + + + + +References on Learning Outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      14.1 References on Learning Outcomes

      + + + + + + + diff --git a/0.0.7/html_split/References.html b/0.0.7/html_split/References.html new file mode 100644 index 0000000..f595be2 --- /dev/null +++ b/0.0.7/html_split/References.html @@ -0,0 +1,59 @@ + + + + + +References (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      +Previous: , Up: Top   [Contents]

      +
      +
      +

      14 References

      + + + + + + + + + + + diff --git a/0.0.7/html_split/Software-Design.html b/0.0.7/html_split/Software-Design.html new file mode 100644 index 0000000..6b4f6c8 --- /dev/null +++ b/0.0.7/html_split/Software-Design.html @@ -0,0 +1,56 @@ + + + + + +Software Design (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.15 Software Design

      + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Design by Contract???
      + + + + + + diff --git a/0.0.7/html_split/Standard-Library.html b/0.0.7/html_split/Standard-Library.html new file mode 100644 index 0000000..c80c7fc --- /dev/null +++ b/0.0.7/html_split/Standard-Library.html @@ -0,0 +1,57 @@ + + + + + +Standard Library (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.10 Standard Library

      + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Input/Output (I/O)???
      [‘?’]Containers, Iterators, and Algorithms???
      + + + + + + diff --git a/0.0.7/html_split/Student-outcomes.html b/0.0.7/html_split/Student-outcomes.html new file mode 100644 index 0000000..c604549 --- /dev/null +++ b/0.0.7/html_split/Student-outcomes.html @@ -0,0 +1,73 @@ + + + + + +Student outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1.4.2 Student outcomes

      +

      A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

      +

      A student should be able to: +

      +
        +
      1. explain what copy semantics accomplish +
      + +
        +
      • establishing “equivalent” object state in another object +
      + +
        +
      1. explain difference between copying a reference and copying a value* +
      2. explain where copies are made +
      + +

      * In other languages these differences are sometimes referred to as +shallow and deep copy. +

      + + + + + diff --git a/0.0.7/html_split/Summary-of-Modules-and-Topics.html b/0.0.7/html_split/Summary-of-Modules-and-Topics.html new file mode 100644 index 0000000..26b69be --- /dev/null +++ b/0.0.7/html_split/Summary-of-Modules-and-Topics.html @@ -0,0 +1,106 @@ + + + + + +Summary of Modules and Topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7 Summary of Modules and Topics

      +

      In the sections that follow, the various modules and topics are +presented. There is one section per module. For each module, a table +listing the various topics in that module is provided. The ID for a +topic is linked to the detailed coverage of that topic that comes later +in the document. If a topic has any learning outcomes at a given +proficiency level, this is indicated by a checkmark (“✔️”). If a topic +has no learning outcomes (simply because there are not any, not because +the information is missing), this is indicated by an em dash (“—”). +In the case that the information for a topic is completely missing, a +question mark (“?”) symbol is used. +

      +

      [NOTE: These topics are taken mostly from the SG20 GitHub +repository. They are not intended to be complete in any sense. In fact, +by gathering together all topics in one place where they are easily +viewed, it is hoped that missing and unbalanced items will be more +obvious.] +

      + + + + + + + + + + + + + + + + + + +
      + + + + + + diff --git a/0.0.7/html_split/Testing-and-Debugging.html b/0.0.7/html_split/Testing-and-Debugging.html new file mode 100644 index 0000000..da60211 --- /dev/null +++ b/0.0.7/html_split/Testing-and-Debugging.html @@ -0,0 +1,59 @@ + + + + + +Testing and Debugging (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      +Next: , Previous: , Up: Summary of Modules and Topics   [Contents]

      +
      +
      +

      7.13 Testing and Debugging

      + + + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Source-Level Debuggers???
      [‘?’]Code Sanitizers???
      [‘?’]Test Frameworks???
      [‘?’]Debugging Strategies???
      + + + + + + diff --git a/0.0.7/html_split/Tooling.html b/0.0.7/html_split/Tooling.html new file mode 100644 index 0000000..43c3b2f --- /dev/null +++ b/0.0.7/html_split/Tooling.html @@ -0,0 +1,57 @@ + + + + + +Tooling (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.14 Tooling

      + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Compiler Toolchains???
      [‘?’]IDEs???
      + + + + + + diff --git a/0.0.7/html_split/Topic-introduction.html b/0.0.7/html_split/Topic-introduction.html new file mode 100644 index 0000000..fff97f2 --- /dev/null +++ b/0.0.7/html_split/Topic-introduction.html @@ -0,0 +1,55 @@ + + + + + +Topic introduction (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1.3 Topic introduction

      +

      Very brief introduction to the topic. +

      +

      Explains when and how objects are copied. +

      + + + + + diff --git a/0.0.7/html_split/Use-of-This-Document.html b/0.0.7/html_split/Use-of-This-Document.html new file mode 100644 index 0000000..4c820d5 --- /dev/null +++ b/0.0.7/html_split/Use-of-This-Document.html @@ -0,0 +1,58 @@ + + + + + +Use of This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      4 Use of This Document

      +

      [NOTE: This document follows the same license model as the C++ +Core Guidelines. The LICENSE document is taken verbatim from the C++ +Core Guidelines.] This document is made available under a MIT-style +license. In simple terms, this license permits copying, use, +modification, and creation of derivative works. A copy of the license is +included in the section LICENSE. +

      + + + + + diff --git a/0.0.7/html_split/User_002dDefined-Types-Classes.html b/0.0.7/html_split/User_002dDefined-Types-Classes.html new file mode 100644 index 0000000..808279a --- /dev/null +++ b/0.0.7/html_split/User_002dDefined-Types-Classes.html @@ -0,0 +1,69 @@ + + + + + +User-Defined Types Classes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.5 User-Defined Types (Classes)

      + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Special Member Functions???
      [‘?’]Types???
      [‘?’]Conversions???
      [‘?’]Constructors and Destructors???
      [‘?’]Move/Copy Constructors and Assignment Operators???
      [‘?’]Member Functions???
      [‘?’]Sum Types???
      [‘?’]User-Defined Literals???
      [‘?’]Special Member Functions???
      [‘?’]Guidelines for Special Member Functions (e.g., Rule of Five, Rule +of Zero)???
      [‘copy’]Copy Semantics‘✔️’‘✔️’
      [‘?’]Moving and Copying???
      [‘?’]Lambdas???
      + + + + + + diff --git a/0.0.7/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html b/0.0.7/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html new file mode 100644 index 0000000..3f9bf2c --- /dev/null +++ b/0.0.7/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html @@ -0,0 +1,69 @@ + + + + + +Working Group Documents Related to C++ Teaching Guidelines (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      14.2 Working Group Documents Related to C++ Teaching Guidelines

      +
        +
      • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — +Standing Document for SG20: Guidelines for Teaching C++ to Beginners. +https://wg21.link/p1389. + +
      • Christopher Di Bella. P1725R0 — Modular Topic Design. +https://wg21.link/p1725. + +
      • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to +structure a teaching topic. https://wg21.link/p2193. + +
      • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study +Group: C++ Education. https://wg21.link/p1231. + +
      • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 +— Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0. + +
      + + + + + + diff --git a/0.0.7/html_split/_0023advanced.html b/0.0.7/html_split/_0023advanced.html new file mode 100644 index 0000000..d503bfc --- /dev/null +++ b/0.0.7/html_split/_0023advanced.html @@ -0,0 +1,40 @@ + + + + + + +#advanced (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #advanced.

      + diff --git a/0.0.7/html_split/_0023advanced_002d1.html b/0.0.7/html_split/_0023advanced_002d1.html new file mode 100644 index 0000000..282a7b8 --- /dev/null +++ b/0.0.7/html_split/_0023advanced_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #advanced-1.

      + diff --git a/0.0.7/html_split/_0023advanced_002d2.html b/0.0.7/html_split/_0023advanced_002d2.html new file mode 100644 index 0000000..039b3ff --- /dev/null +++ b/0.0.7/html_split/_0023advanced_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #advanced-2.

      + diff --git a/0.0.7/html_split/_0023advanced_002d3.html b/0.0.7/html_split/_0023advanced_002d3.html new file mode 100644 index 0000000..ebf5529 --- /dev/null +++ b/0.0.7/html_split/_0023advanced_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #advanced-3.

      + diff --git a/0.0.7/html_split/_0023backgroundrequired_002dknowledge.html b/0.0.7/html_split/_0023backgroundrequired_002dknowledge.html new file mode 100644 index 0000000..9959745 --- /dev/null +++ b/0.0.7/html_split/_0023backgroundrequired_002dknowledge.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge.

      + diff --git a/0.0.7/html_split/_0023backgroundrequired_002dknowledge_002d1.html b/0.0.7/html_split/_0023backgroundrequired_002dknowledge_002d1.html new file mode 100644 index 0000000..f6f6bd0 --- /dev/null +++ b/0.0.7/html_split/_0023backgroundrequired_002dknowledge_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-1.

      + diff --git a/0.0.7/html_split/_0023backgroundrequired_002dknowledge_002d2.html b/0.0.7/html_split/_0023backgroundrequired_002dknowledge_002d2.html new file mode 100644 index 0000000..b0b297d --- /dev/null +++ b/0.0.7/html_split/_0023backgroundrequired_002dknowledge_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-2.

      + diff --git a/0.0.7/html_split/_0023backgroundrequired_002dknowledge_002d3.html b/0.0.7/html_split/_0023backgroundrequired_002dknowledge_002d3.html new file mode 100644 index 0000000..ae34d91 --- /dev/null +++ b/0.0.7/html_split/_0023backgroundrequired_002dknowledge_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-3.

      + diff --git a/0.0.7/html_split/_0023backgroundrequired_002dknowledge_002d4.html b/0.0.7/html_split/_0023backgroundrequired_002dknowledge_002d4.html new file mode 100644 index 0000000..7417f62 --- /dev/null +++ b/0.0.7/html_split/_0023backgroundrequired_002dknowledge_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-4.

      + diff --git a/0.0.7/html_split/_0023backgroundrequired_002dknowledge_002d5.html b/0.0.7/html_split/_0023backgroundrequired_002dknowledge_002d5.html new file mode 100644 index 0000000..8f0570c --- /dev/null +++ b/0.0.7/html_split/_0023backgroundrequired_002dknowledge_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-5.

      + diff --git a/0.0.7/html_split/_0023backgroundrequired_002dknowledge_002d6.html b/0.0.7/html_split/_0023backgroundrequired_002dknowledge_002d6.html new file mode 100644 index 0000000..a1cdee1 --- /dev/null +++ b/0.0.7/html_split/_0023backgroundrequired_002dknowledge_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-6.

      + diff --git a/0.0.7/html_split/_0023backgroundrequired_002dknowledge_002d7.html b/0.0.7/html_split/_0023backgroundrequired_002dknowledge_002d7.html new file mode 100644 index 0000000..893a0ba --- /dev/null +++ b/0.0.7/html_split/_0023backgroundrequired_002dknowledge_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-7.

      + diff --git a/0.0.7/html_split/_0023backgroundrequired_002dknowledge_002d8.html b/0.0.7/html_split/_0023backgroundrequired_002dknowledge_002d8.html new file mode 100644 index 0000000..6080498 --- /dev/null +++ b/0.0.7/html_split/_0023backgroundrequired_002dknowledge_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-8.

      + diff --git a/0.0.7/html_split/_0023backgroundrequired_002dknowledge_002d9.html b/0.0.7/html_split/_0023backgroundrequired_002dknowledge_002d9.html new file mode 100644 index 0000000..3ea462d --- /dev/null +++ b/0.0.7/html_split/_0023backgroundrequired_002dknowledge_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-9.

      + diff --git a/0.0.7/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html b/0.0.7/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html new file mode 100644 index 0000000..925c568 --- /dev/null +++ b/0.0.7/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html @@ -0,0 +1,40 @@ + + + + + + +#basics-types-objects-values-expressions-statements-and-control-flow-constructs (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #basics-types-objects-values-expressions-statements-and-control-flow-constructs.

      + diff --git a/0.0.7/html_split/_0023building.html b/0.0.7/html_split/_0023building.html new file mode 100644 index 0000000..8ffc9df --- /dev/null +++ b/0.0.7/html_split/_0023building.html @@ -0,0 +1,40 @@ + + + + + + +#building (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #building.

      + diff --git a/0.0.7/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html b/0.0.7/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html new file mode 100644 index 0000000..a7e6bad --- /dev/null +++ b/0.0.7/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html @@ -0,0 +1,40 @@ + + + + + + +#c-object-model-copy-semantics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #c-object-model-copy-semantics.

      + diff --git a/0.0.7/html_split/_0023caveats.html b/0.0.7/html_split/_0023caveats.html new file mode 100644 index 0000000..d4bac8b --- /dev/null +++ b/0.0.7/html_split/_0023caveats.html @@ -0,0 +1,40 @@ + + + + + + +#caveats (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats.

      + diff --git a/0.0.7/html_split/_0023caveats_002d1.html b/0.0.7/html_split/_0023caveats_002d1.html new file mode 100644 index 0000000..64faefd --- /dev/null +++ b/0.0.7/html_split/_0023caveats_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-1.

      + diff --git a/0.0.7/html_split/_0023caveats_002d2.html b/0.0.7/html_split/_0023caveats_002d2.html new file mode 100644 index 0000000..6c66559 --- /dev/null +++ b/0.0.7/html_split/_0023caveats_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-2.

      + diff --git a/0.0.7/html_split/_0023caveats_002d3.html b/0.0.7/html_split/_0023caveats_002d3.html new file mode 100644 index 0000000..479063f --- /dev/null +++ b/0.0.7/html_split/_0023caveats_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-3.

      + diff --git a/0.0.7/html_split/_0023caveats_002d4.html b/0.0.7/html_split/_0023caveats_002d4.html new file mode 100644 index 0000000..9588a55 --- /dev/null +++ b/0.0.7/html_split/_0023caveats_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-4.

      + diff --git a/0.0.7/html_split/_0023caveats_002d5.html b/0.0.7/html_split/_0023caveats_002d5.html new file mode 100644 index 0000000..11edee5 --- /dev/null +++ b/0.0.7/html_split/_0023caveats_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-5.

      + diff --git a/0.0.7/html_split/_0023caveats_002d6.html b/0.0.7/html_split/_0023caveats_002d6.html new file mode 100644 index 0000000..6cea721 --- /dev/null +++ b/0.0.7/html_split/_0023caveats_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-6.

      + diff --git a/0.0.7/html_split/_0023caveats_002d7.html b/0.0.7/html_split/_0023caveats_002d7.html new file mode 100644 index 0000000..2a8f1cd --- /dev/null +++ b/0.0.7/html_split/_0023caveats_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-7.

      + diff --git a/0.0.7/html_split/_0023caveats_002d8.html b/0.0.7/html_split/_0023caveats_002d8.html new file mode 100644 index 0000000..e330642 --- /dev/null +++ b/0.0.7/html_split/_0023caveats_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-8.

      + diff --git a/0.0.7/html_split/_0023caveats_002d9.html b/0.0.7/html_split/_0023caveats_002d9.html new file mode 100644 index 0000000..004e434 --- /dev/null +++ b/0.0.7/html_split/_0023caveats_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-9.

      + diff --git a/0.0.7/html_split/_0023compilation_002dmodel.html b/0.0.7/html_split/_0023compilation_002dmodel.html new file mode 100644 index 0000000..1017867 --- /dev/null +++ b/0.0.7/html_split/_0023compilation_002dmodel.html @@ -0,0 +1,40 @@ + + + + + + +#compilation-model (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #compilation-model.

      + diff --git a/0.0.7/html_split/_0023compile_002dtime_002dcomputation.html b/0.0.7/html_split/_0023compile_002dtime_002dcomputation.html new file mode 100644 index 0000000..59b0c57 --- /dev/null +++ b/0.0.7/html_split/_0023compile_002dtime_002dcomputation.html @@ -0,0 +1,40 @@ + + + + + + +#compile-time-computation (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #compile-time-computation.

      + diff --git a/0.0.7/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html b/0.0.7/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html new file mode 100644 index 0000000..9294adf --- /dev/null +++ b/0.0.7/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html @@ -0,0 +1,40 @@ + + + + + + +#context-and-aim-of-this-guide (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #context-and-aim-of-this-guide.

      + diff --git a/0.0.7/html_split/_0023contributing_002dto_002dthis_002ddocument.html b/0.0.7/html_split/_0023contributing_002dto_002dthis_002ddocument.html new file mode 100644 index 0000000..272d848 --- /dev/null +++ b/0.0.7/html_split/_0023contributing_002dto_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#contributing-to-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #contributing-to-this-document.

      + diff --git a/0.0.7/html_split/_0023contributors.html b/0.0.7/html_split/_0023contributors.html new file mode 100644 index 0000000..a391f9d --- /dev/null +++ b/0.0.7/html_split/_0023contributors.html @@ -0,0 +1,40 @@ + + + + + + +#contributors (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #contributors.

      + diff --git a/0.0.7/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html b/0.0.7/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html new file mode 100644 index 0000000..d32c27e --- /dev/null +++ b/0.0.7/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html @@ -0,0 +1,40 @@ + + + + + + +#detailed-information-for-modules-and-topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #detailed-information-for-modules-and-topics.

      + diff --git a/0.0.7/html_split/_0023disclaimer.html b/0.0.7/html_split/_0023disclaimer.html new file mode 100644 index 0000000..e9658d6 --- /dev/null +++ b/0.0.7/html_split/_0023disclaimer.html @@ -0,0 +1,40 @@ + + + + + + +#disclaimer (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #disclaimer.

      + diff --git a/0.0.7/html_split/_0023error_002dhandling.html b/0.0.7/html_split/_0023error_002dhandling.html new file mode 100644 index 0000000..80cfb94 --- /dev/null +++ b/0.0.7/html_split/_0023error_002dhandling.html @@ -0,0 +1,40 @@ + + + + + + +#error-handling (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #error-handling.

      + diff --git a/0.0.7/html_split/_0023examples_002dof_002dcourse_002dcurricula.html b/0.0.7/html_split/_0023examples_002dof_002dcourse_002dcurricula.html new file mode 100644 index 0000000..99af091 --- /dev/null +++ b/0.0.7/html_split/_0023examples_002dof_002dcourse_002dcurricula.html @@ -0,0 +1,40 @@ + + + + + + +#examples-of-course-curricula (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #examples-of-course-curricula.

      + diff --git a/0.0.7/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html b/0.0.7/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html new file mode 100644 index 0000000..fc9b3eb --- /dev/null +++ b/0.0.7/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html @@ -0,0 +1,40 @@ + + + + + + +#external-i.e.-non-standard-libraries (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #external-i.e.-non-standard-libraries.

      + diff --git a/0.0.7/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html b/0.0.7/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html new file mode 100644 index 0000000..f915680 --- /dev/null +++ b/0.0.7/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-calling-static_assert-with-a-constant-expression (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #foundational-calling-static_assert-with-a-constant-expression.

      + diff --git a/0.0.7/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html b/0.0.7/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html new file mode 100644 index 0000000..88f62bc --- /dev/null +++ b/0.0.7/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-how-and-when-are-copies-made (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #foundational-how-and-when-are-copies-made.

      + diff --git a/0.0.7/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html b/0.0.7/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html new file mode 100644 index 0000000..95ab098 --- /dev/null +++ b/0.0.7/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-using-and-defining-functions-with-default-arguments (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #foundational-using-and-defining-functions-with-default-arguments.

      + diff --git a/0.0.7/html_split/_0023foundational_002dusing_002dudls.html b/0.0.7/html_split/_0023foundational_002dusing_002dudls.html new file mode 100644 index 0000000..2f7afdd --- /dev/null +++ b/0.0.7/html_split/_0023foundational_002dusing_002dudls.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-using-udls (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #foundational-using-udls.

      + diff --git a/0.0.7/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html b/0.0.7/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html new file mode 100644 index 0000000..708f2d3 --- /dev/null +++ b/0.0.7/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-writing-requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #foundational-writing-requires-expressions.

      + diff --git a/0.0.7/html_split/_0023functions.html b/0.0.7/html_split/_0023functions.html new file mode 100644 index 0000000..e304abe --- /dev/null +++ b/0.0.7/html_split/_0023functions.html @@ -0,0 +1,40 @@ + + + + + + +#functions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #functions.

      + diff --git a/0.0.7/html_split/_0023functions_002ddefault_002dargument.html b/0.0.7/html_split/_0023functions_002ddefault_002dargument.html new file mode 100644 index 0000000..ccfbcbb --- /dev/null +++ b/0.0.7/html_split/_0023functions_002ddefault_002dargument.html @@ -0,0 +1,40 @@ + + + + + + +#functions-default-argument (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #functions-default-argument.

      + diff --git a/0.0.7/html_split/_0023functions_002duser_002ddefined_002dliterals.html b/0.0.7/html_split/_0023functions_002duser_002ddefined_002dliterals.html new file mode 100644 index 0000000..b4f78b5 --- /dev/null +++ b/0.0.7/html_split/_0023functions_002duser_002ddefined_002dliterals.html @@ -0,0 +1,40 @@ + + + + + + +#functions-user-defined-literals (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #functions-user-defined-literals.

      + diff --git a/0.0.7/html_split/_0023generic_002dprogramming_002dtemplates.html b/0.0.7/html_split/_0023generic_002dprogramming_002dtemplates.html new file mode 100644 index 0000000..3b91080 --- /dev/null +++ b/0.0.7/html_split/_0023generic_002dprogramming_002dtemplates.html @@ -0,0 +1,40 @@ + + + + + + +#generic-programming-templates (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #generic-programming-templates.

      + diff --git a/0.0.7/html_split/_0023glossary.html b/0.0.7/html_split/_0023glossary.html new file mode 100644 index 0000000..9b46bf6 --- /dev/null +++ b/0.0.7/html_split/_0023glossary.html @@ -0,0 +1,40 @@ + + + + + + +#glossary (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #glossary.

      + diff --git a/0.0.7/html_split/_0023how_002dto_002dcontribute.html b/0.0.7/html_split/_0023how_002dto_002dcontribute.html new file mode 100644 index 0000000..d9cff4a --- /dev/null +++ b/0.0.7/html_split/_0023how_002dto_002dcontribute.html @@ -0,0 +1,40 @@ + + + + + + +#how-to-contribute (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #how-to-contribute.

      + diff --git a/0.0.7/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html b/0.0.7/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html new file mode 100644 index 0000000..def5140 --- /dev/null +++ b/0.0.7/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html @@ -0,0 +1,40 @@ + + + + + + +#inheritance-and-class-hierarchies (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #inheritance-and-class-hierarchies.

      + diff --git a/0.0.7/html_split/_0023license.html b/0.0.7/html_split/_0023license.html new file mode 100644 index 0000000..6b44dd1 --- /dev/null +++ b/0.0.7/html_split/_0023license.html @@ -0,0 +1,40 @@ + + + + + + +#license (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #license.

      + diff --git a/0.0.7/html_split/_0023main_002dadvanced_002drequirements.html b/0.0.7/html_split/_0023main_002dadvanced_002drequirements.html new file mode 100644 index 0000000..8214533 --- /dev/null +++ b/0.0.7/html_split/_0023main_002dadvanced_002drequirements.html @@ -0,0 +1,40 @@ + + + + + + +#main-advanced-requirements (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #main-advanced-requirements.

      + diff --git a/0.0.7/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html b/0.0.7/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html new file mode 100644 index 0000000..22b0484 --- /dev/null +++ b/0.0.7/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html @@ -0,0 +1,40 @@ + + + + + + +#main-contracts-and-static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #main-contracts-and-static_assert.

      + diff --git a/0.0.7/html_split/_0023main_002dimplementing.html b/0.0.7/html_split/_0023main_002dimplementing.html new file mode 100644 index 0000000..260008c --- /dev/null +++ b/0.0.7/html_split/_0023main_002dimplementing.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #main-implementing.

      + diff --git a/0.0.7/html_split/_0023main_002dimplementing_002dudls.html b/0.0.7/html_split/_0023main_002dimplementing_002dudls.html new file mode 100644 index 0000000..a41d194 --- /dev/null +++ b/0.0.7/html_split/_0023main_002dimplementing_002dudls.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing-udls (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #main-implementing-udls.

      + diff --git a/0.0.7/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html b/0.0.7/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html new file mode 100644 index 0000000..1e5a4d8 --- /dev/null +++ b/0.0.7/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing-user-defined-copy-operations (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #main-implementing-user-defined-copy-operations.

      + diff --git a/0.0.7/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html b/0.0.7/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html new file mode 100644 index 0000000..4502ed8 --- /dev/null +++ b/0.0.7/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html @@ -0,0 +1,40 @@ + + + + + + +#meta-error-handling-static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #meta-error-handling-static_assert.

      + diff --git a/0.0.7/html_split/_0023module_002dname_002drequires_002dexpressions.html b/0.0.7/html_split/_0023module_002dname_002drequires_002dexpressions.html new file mode 100644 index 0000000..56a9ebf --- /dev/null +++ b/0.0.7/html_split/_0023module_002dname_002drequires_002dexpressions.html @@ -0,0 +1,40 @@ + + + + + + +#module-name-requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #module-name-requires-expressions.

      + diff --git a/0.0.7/html_split/_0023motivation.html b/0.0.7/html_split/_0023motivation.html new file mode 100644 index 0000000..0141374 --- /dev/null +++ b/0.0.7/html_split/_0023motivation.html @@ -0,0 +1,40 @@ + + + + + + +#motivation (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #motivation.

      + diff --git a/0.0.7/html_split/_0023motivation_002d1.html b/0.0.7/html_split/_0023motivation_002d1.html new file mode 100644 index 0000000..7e4a69e --- /dev/null +++ b/0.0.7/html_split/_0023motivation_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #motivation-1.

      + diff --git a/0.0.7/html_split/_0023motivation_002d2.html b/0.0.7/html_split/_0023motivation_002d2.html new file mode 100644 index 0000000..7901fd3 --- /dev/null +++ b/0.0.7/html_split/_0023motivation_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #motivation-2.

      + diff --git a/0.0.7/html_split/_0023motivation_002d3.html b/0.0.7/html_split/_0023motivation_002d3.html new file mode 100644 index 0000000..ec720ad --- /dev/null +++ b/0.0.7/html_split/_0023motivation_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #motivation-3.

      + diff --git a/0.0.7/html_split/_0023motivation_002d4.html b/0.0.7/html_split/_0023motivation_002d4.html new file mode 100644 index 0000000..f53583a --- /dev/null +++ b/0.0.7/html_split/_0023motivation_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #motivation-4.

      + diff --git a/0.0.7/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html b/0.0.7/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html new file mode 100644 index 0000000..57e8b6e --- /dev/null +++ b/0.0.7/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html @@ -0,0 +1,40 @@ + + + + + + +#obtaining-this-document-the-most-recent-version-and-alternate-formats (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #obtaining-this-document-the-most-recent-version-and-alternate-formats.

      + diff --git a/0.0.7/html_split/_0023organization_002dof_002dthis_002ddocument.html b/0.0.7/html_split/_0023organization_002dof_002dthis_002ddocument.html new file mode 100644 index 0000000..e312b8e --- /dev/null +++ b/0.0.7/html_split/_0023organization_002dof_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#organization-of-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #organization-of-this-document.

      + diff --git a/0.0.7/html_split/_0023overview.html b/0.0.7/html_split/_0023overview.html new file mode 100644 index 0000000..b2d4bdc --- /dev/null +++ b/0.0.7/html_split/_0023overview.html @@ -0,0 +1,40 @@ + + + + + + +#overview (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #overview.

      + diff --git a/0.0.7/html_split/_0023overview_002d1.html b/0.0.7/html_split/_0023overview_002d1.html new file mode 100644 index 0000000..d551764 --- /dev/null +++ b/0.0.7/html_split/_0023overview_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#overview-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #overview-1.

      + diff --git a/0.0.7/html_split/_0023overview_002d2.html b/0.0.7/html_split/_0023overview_002d2.html new file mode 100644 index 0000000..5a34b05 --- /dev/null +++ b/0.0.7/html_split/_0023overview_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#overview-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #overview-2.

      + diff --git a/0.0.7/html_split/_0023overview_002d3.html b/0.0.7/html_split/_0023overview_002d3.html new file mode 100644 index 0000000..f230145 --- /dev/null +++ b/0.0.7/html_split/_0023overview_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#overview-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #overview-3.

      + diff --git a/0.0.7/html_split/_0023overview_002d4.html b/0.0.7/html_split/_0023overview_002d4.html new file mode 100644 index 0000000..2436b9a --- /dev/null +++ b/0.0.7/html_split/_0023overview_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#overview-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #overview-4.

      + diff --git a/0.0.7/html_split/_0023points_002dto_002dcover.html b/0.0.7/html_split/_0023points_002dto_002dcover.html new file mode 100644 index 0000000..424b02b --- /dev/null +++ b/0.0.7/html_split/_0023points_002dto_002dcover.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover.

      + diff --git a/0.0.7/html_split/_0023points_002dto_002dcover_002d1.html b/0.0.7/html_split/_0023points_002dto_002dcover_002d1.html new file mode 100644 index 0000000..2a554bb --- /dev/null +++ b/0.0.7/html_split/_0023points_002dto_002dcover_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover-1.

      + diff --git a/0.0.7/html_split/_0023points_002dto_002dcover_002d2.html b/0.0.7/html_split/_0023points_002dto_002dcover_002d2.html new file mode 100644 index 0000000..053a51a --- /dev/null +++ b/0.0.7/html_split/_0023points_002dto_002dcover_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover-2.

      + diff --git a/0.0.7/html_split/_0023points_002dto_002dcover_002d3.html b/0.0.7/html_split/_0023points_002dto_002dcover_002d3.html new file mode 100644 index 0000000..b0dad48 --- /dev/null +++ b/0.0.7/html_split/_0023points_002dto_002dcover_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover-3.

      + diff --git a/0.0.7/html_split/_0023points_002dto_002dcover_002d4.html b/0.0.7/html_split/_0023points_002dto_002dcover_002d4.html new file mode 100644 index 0000000..94de8fa --- /dev/null +++ b/0.0.7/html_split/_0023points_002dto_002dcover_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover-4.

      + diff --git a/0.0.7/html_split/_0023points_002dto_002dcover_002d5.html b/0.0.7/html_split/_0023points_002dto_002dcover_002d5.html new file mode 100644 index 0000000..39d1eaf --- /dev/null +++ b/0.0.7/html_split/_0023points_002dto_002dcover_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover-5.

      + diff --git a/0.0.7/html_split/_0023points_002dto_002dcover_002d6.html b/0.0.7/html_split/_0023points_002dto_002dcover_002d6.html new file mode 100644 index 0000000..92df88f --- /dev/null +++ b/0.0.7/html_split/_0023points_002dto_002dcover_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover-6.

      + diff --git a/0.0.7/html_split/_0023points_002dto_002dcover_002d7.html b/0.0.7/html_split/_0023points_002dto_002dcover_002d7.html new file mode 100644 index 0000000..6e6c895 --- /dev/null +++ b/0.0.7/html_split/_0023points_002dto_002dcover_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover-7.

      + diff --git a/0.0.7/html_split/_0023points_002dto_002dcover_002d8.html b/0.0.7/html_split/_0023points_002dto_002dcover_002d8.html new file mode 100644 index 0000000..b5574e1 --- /dev/null +++ b/0.0.7/html_split/_0023points_002dto_002dcover_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover-8.

      + diff --git a/0.0.7/html_split/_0023preprocessor.html b/0.0.7/html_split/_0023preprocessor.html new file mode 100644 index 0000000..a3bb5f6 --- /dev/null +++ b/0.0.7/html_split/_0023preprocessor.html @@ -0,0 +1,40 @@ + + + + + + +#preprocessor (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #preprocessor.

      + diff --git a/0.0.7/html_split/_0023references.html b/0.0.7/html_split/_0023references.html new file mode 100644 index 0000000..69fbd6b --- /dev/null +++ b/0.0.7/html_split/_0023references.html @@ -0,0 +1,40 @@ + + + + + + +#references (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #references.

      + diff --git a/0.0.7/html_split/_0023references_002don_002dlearning_002doutcomes.html b/0.0.7/html_split/_0023references_002don_002dlearning_002doutcomes.html new file mode 100644 index 0000000..d28fbbf --- /dev/null +++ b/0.0.7/html_split/_0023references_002don_002dlearning_002doutcomes.html @@ -0,0 +1,40 @@ + + + + + + +#references-on-learning-outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #references-on-learning-outcomes.

      + diff --git a/0.0.7/html_split/_0023software_002ddesign.html b/0.0.7/html_split/_0023software_002ddesign.html new file mode 100644 index 0000000..16f5f54 --- /dev/null +++ b/0.0.7/html_split/_0023software_002ddesign.html @@ -0,0 +1,40 @@ + + + + + + +#software-design (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #software-design.

      + diff --git a/0.0.7/html_split/_0023standard_002dlibrary.html b/0.0.7/html_split/_0023standard_002dlibrary.html new file mode 100644 index 0000000..71956d3 --- /dev/null +++ b/0.0.7/html_split/_0023standard_002dlibrary.html @@ -0,0 +1,40 @@ + + + + + + +#standard-library (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #standard-library.

      + diff --git a/0.0.7/html_split/_0023student_002doutcomes.html b/0.0.7/html_split/_0023student_002doutcomes.html new file mode 100644 index 0000000..df0035d --- /dev/null +++ b/0.0.7/html_split/_0023student_002doutcomes.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes.

      + diff --git a/0.0.7/html_split/_0023student_002doutcomes_002d1.html b/0.0.7/html_split/_0023student_002doutcomes_002d1.html new file mode 100644 index 0000000..e9344b7 --- /dev/null +++ b/0.0.7/html_split/_0023student_002doutcomes_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-1.

      + diff --git a/0.0.7/html_split/_0023student_002doutcomes_002d2.html b/0.0.7/html_split/_0023student_002doutcomes_002d2.html new file mode 100644 index 0000000..6fa7724 --- /dev/null +++ b/0.0.7/html_split/_0023student_002doutcomes_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-2.

      + diff --git a/0.0.7/html_split/_0023student_002doutcomes_002d3.html b/0.0.7/html_split/_0023student_002doutcomes_002d3.html new file mode 100644 index 0000000..195d9d2 --- /dev/null +++ b/0.0.7/html_split/_0023student_002doutcomes_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-3.

      + diff --git a/0.0.7/html_split/_0023student_002doutcomes_002d4.html b/0.0.7/html_split/_0023student_002doutcomes_002d4.html new file mode 100644 index 0000000..3e30430 --- /dev/null +++ b/0.0.7/html_split/_0023student_002doutcomes_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-4.

      + diff --git a/0.0.7/html_split/_0023student_002doutcomes_002d5.html b/0.0.7/html_split/_0023student_002doutcomes_002d5.html new file mode 100644 index 0000000..0a4a7da --- /dev/null +++ b/0.0.7/html_split/_0023student_002doutcomes_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-5.

      + diff --git a/0.0.7/html_split/_0023student_002doutcomes_002d6.html b/0.0.7/html_split/_0023student_002doutcomes_002d6.html new file mode 100644 index 0000000..c5c4ac0 --- /dev/null +++ b/0.0.7/html_split/_0023student_002doutcomes_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-6.

      + diff --git a/0.0.7/html_split/_0023student_002doutcomes_002d7.html b/0.0.7/html_split/_0023student_002doutcomes_002d7.html new file mode 100644 index 0000000..5233f94 --- /dev/null +++ b/0.0.7/html_split/_0023student_002doutcomes_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-7.

      + diff --git a/0.0.7/html_split/_0023student_002doutcomes_002d8.html b/0.0.7/html_split/_0023student_002doutcomes_002d8.html new file mode 100644 index 0000000..f19fd7f --- /dev/null +++ b/0.0.7/html_split/_0023student_002doutcomes_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-8.

      + diff --git a/0.0.7/html_split/_0023student_002doutcomes_002d9.html b/0.0.7/html_split/_0023student_002doutcomes_002d9.html new file mode 100644 index 0000000..735a21f --- /dev/null +++ b/0.0.7/html_split/_0023student_002doutcomes_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-9.

      + diff --git a/0.0.7/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html b/0.0.7/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html new file mode 100644 index 0000000..4801178 --- /dev/null +++ b/0.0.7/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html @@ -0,0 +1,40 @@ + + + + + + +#summary-of-modules-and-topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #summary-of-modules-and-topics.

      + diff --git a/0.0.7/html_split/_0023testing_002dand_002ddebugging.html b/0.0.7/html_split/_0023testing_002dand_002ddebugging.html new file mode 100644 index 0000000..1ae096d --- /dev/null +++ b/0.0.7/html_split/_0023testing_002dand_002ddebugging.html @@ -0,0 +1,40 @@ + + + + + + +#testing-and-debugging (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #testing-and-debugging.

      + diff --git a/0.0.7/html_split/_0023tooling.html b/0.0.7/html_split/_0023tooling.html new file mode 100644 index 0000000..634a8dc --- /dev/null +++ b/0.0.7/html_split/_0023tooling.html @@ -0,0 +1,40 @@ + + + + + + +#tooling (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #tooling.

      + diff --git a/0.0.7/html_split/_0023topic_002dintroduction.html b/0.0.7/html_split/_0023topic_002dintroduction.html new file mode 100644 index 0000000..742d5d9 --- /dev/null +++ b/0.0.7/html_split/_0023topic_002dintroduction.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #topic-introduction.

      + diff --git a/0.0.7/html_split/_0023topic_002dintroduction_002d1.html b/0.0.7/html_split/_0023topic_002dintroduction_002d1.html new file mode 100644 index 0000000..a110644 --- /dev/null +++ b/0.0.7/html_split/_0023topic_002dintroduction_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #topic-introduction-1.

      + diff --git a/0.0.7/html_split/_0023topic_002dintroduction_002d2.html b/0.0.7/html_split/_0023topic_002dintroduction_002d2.html new file mode 100644 index 0000000..986bf37 --- /dev/null +++ b/0.0.7/html_split/_0023topic_002dintroduction_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #topic-introduction-2.

      + diff --git a/0.0.7/html_split/_0023topic_002dintroduction_002d3.html b/0.0.7/html_split/_0023topic_002dintroduction_002d3.html new file mode 100644 index 0000000..3d14fd9 --- /dev/null +++ b/0.0.7/html_split/_0023topic_002dintroduction_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #topic-introduction-3.

      + diff --git a/0.0.7/html_split/_0023topic_002dintroduction_002d4.html b/0.0.7/html_split/_0023topic_002dintroduction_002d4.html new file mode 100644 index 0000000..c73a236 --- /dev/null +++ b/0.0.7/html_split/_0023topic_002dintroduction_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #topic-introduction-4.

      + diff --git a/0.0.7/html_split/_0023use_002dof_002dthis_002ddocument.html b/0.0.7/html_split/_0023use_002dof_002dthis_002ddocument.html new file mode 100644 index 0000000..68d835d --- /dev/null +++ b/0.0.7/html_split/_0023use_002dof_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#use-of-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #use-of-this-document.

      + diff --git a/0.0.7/html_split/_0023user_002ddefined_002dtypes_002dclasses.html b/0.0.7/html_split/_0023user_002ddefined_002dtypes_002dclasses.html new file mode 100644 index 0000000..04771a9 --- /dev/null +++ b/0.0.7/html_split/_0023user_002ddefined_002dtypes_002dclasses.html @@ -0,0 +1,40 @@ + + + + + + +#user-defined-types-classes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #user-defined-types-classes.

      + diff --git a/0.0.7/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html b/0.0.7/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html new file mode 100644 index 0000000..f4b9435 --- /dev/null +++ b/0.0.7/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html @@ -0,0 +1,40 @@ + + + + + + +#working-group-documents-related-to-c-teaching-guidelines (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #working-group-documents-related-to-c-teaching-guidelines.

      + diff --git a/0.0.7/html_split/index.html b/0.0.7/html_split/index.html new file mode 100644 index 0000000..c4e5ff0 --- /dev/null +++ b/0.0.7/html_split/index.html @@ -0,0 +1,240 @@ + + + + + +Top (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +

      Table of Contents

      + +
      + + +
      + + + +
      +

      Guidelines for Teaching C++

      + + + + + + + + + + + + + + + + + + +
      + + + + + + diff --git a/0.0.7/html_split/unknown_node.html b/0.0.7/html_split/unknown_node.html new file mode 100644 index 0000000..5a652e5 --- /dev/null +++ b/0.0.7/html_split/unknown_node.html @@ -0,0 +1,763 @@ + + + + + +Guidelines for Teaching C++ + + + + + + + + + + + + + + + + +
      +

      +   [Contents]

      +
      +
      +

      8.1.5.1 Background/Required Knowledge

      +

      A student is able to: * identify special member functions +[C++ object model: +special member functions] +

      +

      It helps when a student is able to: * use move semantics +[C++ object model: move +semantics] * explain the rule of zero +[C++ object model: rule-of-zero] +* explain the rule of five [C++ +object model: rule-of-five] +

      +
      +

      +   [Contents]

      +
      +

      8.1.5.2 Student outcomes

      +

      A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

      +

      A student should be able to: * explain when they have to implement the +copy operations for their own type * Copy constructor * Copy assignment +operator * implement copy operations for their own types * +Optional: explain when copying with basic and strong exception +guarantees is useful +

      +
      +

      +   [Contents]

      +
      +

      8.1.5.3 Caveats

      +

      This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

      +
        +
      • Intricacies when implementing copy operations: +
          +
        • Examples of how not to write copy operations (e.g., C++03 +std::auto_ptr) +
        + +
      + +
      +

      +   [Contents]

      +
      +

      8.1.5.4 Points to cover

      +

      This section lists important details for each point. +

      +
        +
      • Copy constructors and copy assignment operators +
          +
        • How compiler generates default copy operations +
        • =default, =delete (No copy) +
        • How-to write your own copy operations +
        • Rule-of-five +
        • Copy assignment operators can be ref-qualified to avoid assigning into +temporary objects. +
        + +
      + +
      +

      +   [Contents]

      +
      +

      8.2.1 Overview

      +

      Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

      + + + + + +
      LevelObjectives
      Foundationalusing and understanding UDLs
      Mainimplementing your own UDLs
      AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
      + +
      +

      +   [Contents]

      +
      +

      8.2.2 Motivation

      +

      Why is this important? Why do we want to learn/teach this +topic? +

      +
        +
      • Allows clearer expression of intent in C++. +
      • std::string: "Hello, world!"s +
      • std::chrono: 3h + 10min + 5s +
      + +
      +

      +   [Contents]

      +
      +

      8.2.3 Topic introduction

      +

      Very brief introduction to the topic. +

      +
        +
      • Explain the existence of user defined literals. Example: +12min + 17s is terse, expressive and type safe. +
      + +
      +

      +   [Contents]

      +
      +

      8.2.4.1 Background/Required Knowledge

      +

      A student: * knows how to form numeric literals, e.g., 1.5f means +a float of value 1.5. * is familiar with the major C++ +types: * bool (Boolean type) * int (Integer type) * +double (Floating-point type) * std::string (Text type) * +std::vector (Collection type) * knows that namespaces exist, and +namespace std. * knows what using-declarations and +using-directives are. +[C++ object +model: declarations] +

      +
      +

      +   [Contents]

      +
      +

      8.2.4.2 Student outcomes

      +

      A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

      +

      A student should be able to: +

      +
        +
      1. use using namespace std::string_literals[1]. +
      2. recognise UDLs in code that they are reading. +
      3. figure out which UDL definitions for a used type exist. +
      4. identify parts of the standard library that make use of UDLs. +
      5. prevent the dangers of temporaries created with "blah"s as well +as with std::string{"blah"}. +
      6. effectively selects the right set of namespaces in using-directives from +the sub-namespaces std::literals. +
      + +

      [1]: explain that it’s okay to use a using-directive to “activate” +UDLs. +

      +
      +

      +   [Contents]

      +
      +

      8.2.4.3 Caveats

      +

      This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

      +
        +
      • A student gets confused by the similarities and differences between +built-in suffixes and UDLs and between UDLs from different namespaces. +
      • A student “activates” two suffixes with the same signature from +different namespaces. +
      + +
      +

      +   [Contents]

      +
      +

      8.2.4.4 Points to cover

      +

      This section lists important details for each point. +

      +
      +

      +   [Contents]

      +
      +

      8.2.5.1 Background/Required Knowledge

      +
        +
      • All of the above. +
      + +
      +

      +   [Contents]

      +
      +

      8.2.5.2 Student outcomes

      +

      A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

      +

      A student should be able to: +

      +
        +
      1. write a UDL operator of their own. +
      2. separate unrelated UDLs into distinct namespaces. +
      + +
      +

      +   [Contents]

      +
      +

      8.2.5.3 Caveats

      +

      This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

      +

      No caveats at present. #### Points to cover +

      +

      This section lists important details for each point. +

      +

      No caveats at present. ### Advanced {#udl-advanced} +

      +

      These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

      +
      +

      +   [Contents]

      +
      +

      8.3.1 Overview

      +

      Functions in C++ may be overloaded with different numbers and types of +parameters. It may be of value to specify default arguments for some +number of parameters, to allow a caller to avoid specifying arguments +that rarely change, or to enable expanding the set of parameters while +maintaining backward compatibility with existing callers. +

      + + + + + +
      LevelObjective
      FoundationalDefine and use functions with default arguments
      Main
      Advancedrefinement of default arguments through multiple declarations
      + +
      +

      +   [Contents]

      +
      +

      8.3.2 Motivation

      +

      Default arguments allow the omission of arguments with obvious or common +values. Also may be utilized to extend an existing function signature +without forcing changes to existing calling code. +

      +
      +

      +   [Contents]

      +
      +

      8.3.3 Topic introduction

      +

      Explain how default arguments work and how to define them. +

      +
      +

      +   [Contents]

      +
      +

      8.3.4.1 Background/Required Knowledge

      +

      A student is able to: +

      + + +
      +

      +   [Contents]

      +
      +

      8.3.4.2 Student outcomes

      +

      A student should be able to: +

      +
        +
      1. Call to a function with a default argument with or without that argument +specified +
      2. Declare a function with a default argument, and omit the default in the +definition’s signature +
      3. Explain when the lifetime of a default argument begins and ends +
      + +
      +

      +   [Contents]

      +
      +

      8.3.4.3 Caveats

      +
        +
      • When no forward-declaration exists, the definition serves as the +declaration +
      • When multiple declarations exist, only one may specify the default for +any particular parameter, but multiple declarations may specify the +defaults for different parameters. +
      • Additional default values may be specified for other parameters in +repeat declarations +
      • Calling an overloaded function with fewer arguments may be ambiguous +with regard to an overload with default arguments +
      + +
      +

      +   [Contents]

      +
      +

      8.3.4.4 Points to cover

      +
        +
      • Default value may only be specified once for each parameter among all +declarations +
      • Default values must start from the rightmost parameter and continue +leftward without gaps +
      • Considerations of when to use default arguments vs overload set +
      + +
      +

      +   [Contents]

      +
      +

      8.3.5.2 Student outcomes

      +

      A student should be able to: +

      +
      +

      +   [Contents]

      +
      +

      8.3.5.3 Caveats

      + +
      +

      +   [Contents]

      +
      +

      8.3.5.4 Points to cover

      + +
      +

      +   [Contents]

      +
      +

      8.3.6 Advanced

      +

      Subsequent redeclarations of the same function may add default argument +values, which are then usable by callers. Though a single parameter +cannot be given a default argument twice in the same translation unit, +it is legal, though ill-advised, to give the same function different +default arguments in different translation units. +

      +
      +

      +   [Contents]

      +
      +

      8.4.1 Overview

      + + + + + +
      LevelObjectives
      FoundationalDefine and use requires-expressions to check satisfaction of +expressions by given parameters
      MainDefine and use requires-expressions to check properties of +expressions
      Advanced
      + +
      +

      +   [Contents]

      +
      +

      8.4.2 Motivation

      +

      Requires-expressions allow a developer to perform compile-time +evaluation on the validity of other expressions. These are fundamental +to the ability to write concepts. +[Compile-time programming: +concepts] +

      +
      +

      +   [Contents]

      +
      +

      8.5 Topic introduction

      +

      Requires-expressions are compile-time predicates which evaluate to true +when their specified set of expressions are all valid for a given set of +inputs. +

      + + + + + + +
      +

      +   [Contents]

      +
      +

      8.5.1.1 Background/Required Knowledge

      +

      A student is able to: +

      + + +

      It is helpful if: +

      +
        +
      • The student is aware that attempting to specialize the template with +types or values which do not match otherwise unstated assumptions will +cause errors within the template. +
      + +
      +

      +   [Contents]

      +
      +

      8.5.1.2 Student outcomes

      +

      A student should be able to: +

      +
        +
      1. Write a simple-requirement to assert the validity of an expression +
      2. Write a type-requirement to check the existence of a type by its +identifier +
      3. Write a compound-requirement to test the resulting type of an expression +
      4. Write a nested-requirement to test the constexpr value of an operation, +as opposed to just the syntactic validity +
      5. Use a requires-expression within a concept, requires-clause, or +if constexpr condition +
      + +
      +

      +   [Contents]

      +
      +

      8.5.1.3 Caveats

      +

      To require that expressions, which evaluate to a boolean value like +sizeof(t) == 4, evaluate to true a nested-requirement is +needed (e.g., requires sizeof(t) == 4;). Omitting the +requires results in a simple-requirement, which is satisfied +based purely on syntactic validity, not on the result of the operation. +

      +
      +

      +   [Contents]

      +
      +

      8.5.1.4 Points to cover

      +
        +
      • All requires-expression requirements terminate with a semicolon. +
      • simple-requirements are used to check that an expression is well-formed. +
      • nested-requirements are introduced with requires and primarily +used to check the result of an expression computable by the compiler, +including concepts or other requires-expressions. +
      • type-requirements are introduced with typename and used to verify +the existence of a type with a particular identifier. +
      • compound-requirements are enclosed in braces and can be used to check +the resulting type of an expression. +
      • Checks are performed by the compiler, not at run time. +
      • If covering usage of requires-expression with requires-clause, +[Compile-time +programming: requires clause] demonstrate requires requires and +show how to ever avoid writing it by using a concept. +[Compile-time programming: +concepts] +
      + +
      +

      +   [Contents]

      +
      +

      8.5.2.1 Background/required knowledge

      +
        +
      • All of the above. +
      • Knowledge of noexcept +
      + +

      A student is able to: +

      + + +
      +

      +   [Contents]

      +
      +

      8.5.2.2 Student outcomes

      +

      A student should be able to: +

      +
        +
      1. Write compound-requirements which test the noexceptness of an +expression. +
      2. Use a concept as the target of a compound-requirement. +
      + +
      +

      +   [Contents]

      +
      +

      8.5.2.3 Caveats

      + +
      +

      +   [Contents]

      +
      +

      8.5.2.4 Points to cover

      +
        +
      • Compound-requirements allow the optional ability to test whether an +expression is marked as noexcept, by using a trailing +noexcept keyword. +
      + +
      struct S
      +{
      +    void foo() noexcept {}
      +    void bar() {}
      +};
      +
      +static_assert(requires(S s) { { s.foo() } noexcept; } ); // Succeeds. s.foo() is noexcept
      +static_assert(requires(S s) { { s.bar() } noexcept; } ); // Fails. s.bar() is not noexcept
      +
      +
        +
      • If the return-type-requirement of a compound-requirement is a concept, +that concept is given the resulting type as the first parameter, +followed by the specified parameters in the compound-requirement. +{ ++x } -> C<int> would substitute +C<decltype((++x)), int> and check that concept C is satisfied for +those parameters. +
      + +
      +

      +   [Contents]

      +
      +

      8.5.3 Advanced

      + +
      +

      +   [Contents]

      +
      +

      8.6.1 Overview

      +

      Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

      + + + + + +
      LevelObjectives
      FoundationalCalling static_assert with a constant expression
      MainUsing static_assert to detect contract violations and +improve error messages
      Advanced
      + +
      +

      +   [Contents]

      +
      +

      8.6.2 Motivation

      +

      Why is this important? Why do we want to learn/teach this +topic? +

      +

      static_assert allows the developer to enforce that conditions +which can be checked during compilation will force build errors when +violated. Additionally, they are the best mechanism by which a developer +can pass useful information to other developers regarding what violation +occurred or what must be done, instead. +

      +
      +

      +   [Contents]

      +
      +

      8.6.3 Topic introduction

      +

      Very brief introduction to the topic. +

      +

      static_assert is a compile-time evaluated function that asserts +the truth of a supplied predicate, issuing an optional user-supplied +error message if the predicate is false. +

      +
      +

      +   [Contents]

      +
      +

      8.6.4.1 Background/Required Knowledge

      +

      A student: +

      +
        +
      • Should be able to explain the difference between code evaluated at +compile-time and run-time +
      • Should be able to cite some examples of compile-time known information, +such as sizeof(T) +
      + +
      +

      +   [Contents]

      +
      +

      8.6.4.2 Student outcomes

      +

      A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

      +

      A student should be able to: +

      +
        +
      1. Assert the expected size of a structure using static_assert +
      + +
      +

      +   [Contents]

      +
      +

      8.6.4.3 Caveats

      +

      This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

      +
      +

      +   [Contents]

      +
      +

      8.6.4.4 Points to cover

      +

      This section lists important details for each point. +

      +
        +
      • X +
      • In addition to what is wrong, a good error message will inform the user +of how to correct it +
      + +
      +

      +   [Contents]

      +
      +

      8.6.5.1 Background/Required Knowledge

      +
        +
      • All of the above. +
      • General understanding of compile-time requirements +
      + +
      +

      +   [Contents]

      +
      +

      8.6.5.2 Student outcomes

      +

      A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

      +

      A student should be able to: +

      +
        +
      1. Utilize static_assert to verify preconditions of a meta-function +
      2. Utilize static_assert to verify the results of meta-functions for +known values +
      + +
      +

      +   [Contents]

      +
      +

      8.6.5.3 Caveats

      +

      This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

      +
      +

      +   [Contents]

      +
      +

      8.6.5.4 Points to cover

      +

      This section lists important details for each point. +

      +
        +
      • When writing a meta-function, use static_assert to test the +results +
      • Write static_assert calls at the scope of the code they are +guarding +
      + +
      template<typename T>
      +struct container {
      +    std::map<int, T> vals;
      +
      +    // Test location #1
      +    static_assert(
      +        std::is_default_constructible_v<T>,
      +        "container type T must be default constructible");i
      +
      +    void add(int key, T const& t) {
      +        // Test location #2
      +        static_assert(
      +            std::is_default_constructible_v<T>,
      +            "container type T must be default constructible");
      +        // std::map::operator[] requires default constructible type for 
      +        // the value. This will cause a build failure deep in the 
      +        // implementation of std::map, when T is not default constructible
      +        vals[key] = t;
      +    }
      +};
      +
      +struct NoDefCtor {
      +    NoDefCtor() = delete;
      +    NoDefCtor(double d) {}
      +};
      +
      +container<NoDefCtor> c; // If Test #1 was omitted, this would succeed
      +// This is ill-formed. Test #2 would catch this and provide a better 
      +// error message for the user
      +c.add(42, NoDefCtor(1.0)); 
      +
      +
      +

      +   [Contents]

      +
      +

      8.6.6 Advanced

      +

      These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

      + + + + + diff --git a/latest/index.html b/latest/index.html index 1f19e20..e15f98d 100644 --- a/latest/index.html +++ b/latest/index.html @@ -106,7 +106,7 @@

      Guidelines for Teaching C++

      -

      Version X.Y.Z

      +

      Version 0.0.7

      SG20 (ISO C++ Study Group on Education)

      @@ -203,9 +203,9 @@

      <

      The most recent version of this document is available as an online HTML document at: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/latest/.

      The version of the document that you are currently reading is available in the following formats:

        -
      1. online (HTML) format as a single large HTML document: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.6/html [later to be https://cplusplus.github.io/SG20/0.0.6/html?]

      2. -
      3. EPUB format: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.6/guidelines.epub [later to be https:/cplusplus.github.io/SG20/0.0.6/guidelines.epub?]

      4. -
      5. online (HTML) format, split across multiple HTML documents: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.6/html_split/ [later to be https://cplusplus.github.io/SG20/0.0.6/html_split/?] [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

      6. +
      7. online (HTML) format as a single large HTML document: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.7/html [later to be https://cplusplus.github.io/SG20/0.0.7/html?]

      8. +
      9. EPUB format: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.7/guidelines.epub [later to be https:/cplusplus.github.io/SG20/0.0.7/guidelines.epub?]

      10. +
      11. online (HTML) format, split across multiple HTML documents: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.7/html_split/ [later to be https://cplusplus.github.io/SG20/0.0.7/html_split/?] [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

      Older versions of this document are also available. In general version ver is available at https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/ver. For example, version v0.1.0 (assuming that this version exists) would be available at [later to be https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/v0.1.0?].

      2 Disclaimer

      From 438851ab9ea0d2fdebfa6b2fcacc230482d1ba80 Mon Sep 17 00:00:00 2001 From: vulder Date: Mon, 1 Nov 2021 12:21:50 +0000 Subject: [PATCH 11/21] deploy: a3899d3447507de0225c7b4bd1b3299cc27fa57d --- 0.0.9/guidelines.epub | Bin 0 -> 31450 bytes 0.0.9/html/images/cpp_logo.png | Bin 0 -> 23613 bytes 0.0.9/html/index.html | 1429 +++++++++++++++++ 0.0.9/html_split/Advanced.html | 60 + .../Background_002fRequired-Knowledge.html | 65 + .../Background_002frequired-knowledge.html | 54 + ...ments-and-Control_002dFlow-Constructs.html | 60 + 0.0.9/html_split/Building.html | 57 + ...002b_002b-object-model-copy-semantics.html | 69 + 0.0.9/html_split/Caveats.html | 62 + 0.0.9/html_split/Compilation-Model.html | 62 + .../Compile_002dTime-Computation.html | 57 + .../Context-and-Aim-of-This-Guide.html | 76 + .../Contributing-to-This-Document.html | 55 + 0.0.9/html_split/Contributors.html | 57 + ...ed-Information-for-Modules-and-Topics.html | 67 + 0.0.9/html_split/Disclaimer.html | 55 + 0.0.9/html_split/Error-Handling.html | 59 + .../Examples-of-Course-Curricula.html | 53 + .../External-ie-Non-Standard-Libraries.html | 56 + ...005fassert-with-a-constant-expression.html | 62 + ...dational-How-and-when-are-copies-made.html | 63 + 0.0.9/html_split/Foundational-Using-UDLs.html | 61 + ...ning-functions-with-default-arguments.html | 62 + ...onal-Writing-requires_002dexpressions.html | 60 + .../Functions-default-argument.html | 67 + .../Functions-user_002ddefined-literals.html | 66 + 0.0.9/html_split/Functions.html | 61 + .../Generic-Programming-Templates.html | 61 + 0.0.9/html_split/Glossary.html | 58 + 0.0.9/html_split/How-To-Contribute.html | 89 + .../Inheritance-and-Class-Hierarchies.html | 57 + 0.0.9/html_split/License.html | 100 ++ .../Main-Advanced-requirements.html | 60 + .../Main-Contracts-and-static_005fassert.html | 61 + ...ting-user_002ddefined-copy-operations.html | 62 + 0.0.9/html_split/Main-implementing-UDLs.html | 59 + 0.0.9/html_split/Main-implementing-_002a.html | 62 + ..._002derror-handling-static_005fassert.html | 67 + .../Module-name-Requires-Expressions.html | 59 + 0.0.9/html_split/Motivation.html | 57 + ...-Recent-Version-and-Alternate-Formats.html | 77 + .../Organization-of-This-Document.html | 101 ++ 0.0.9/html_split/Overview.html | 61 + 0.0.9/html_split/Points-to-cover.html | 69 + 0.0.9/html_split/Preprocessor.html | 58 + .../References-on-Learning-Outcomes.html | 71 + 0.0.9/html_split/References.html | 59 + 0.0.9/html_split/Software-Design.html | 56 + 0.0.9/html_split/Standard-Library.html | 57 + 0.0.9/html_split/Student-outcomes.html | 73 + .../Summary-of-Modules-and-Topics.html | 106 ++ 0.0.9/html_split/Testing-and-Debugging.html | 59 + 0.0.9/html_split/Tooling.html | 57 + 0.0.9/html_split/Topic-introduction.html | 55 + 0.0.9/html_split/Use-of-This-Document.html | 58 + .../User_002dDefined-Types-Classes.html | 69 + ...ed-to-C_002b_002b-Teaching-Guidelines.html | 69 + 0.0.9/html_split/_0023advanced.html | 40 + 0.0.9/html_split/_0023advanced_002d1.html | 40 + 0.0.9/html_split/_0023advanced_002d2.html | 40 + 0.0.9/html_split/_0023advanced_002d3.html | 40 + ..._0023backgroundrequired_002dknowledge.html | 40 + ...ackgroundrequired_002dknowledge_002d1.html | 40 + ...ackgroundrequired_002dknowledge_002d2.html | 40 + ...ackgroundrequired_002dknowledge_002d3.html | 40 + ...ackgroundrequired_002dknowledge_002d4.html | 40 + ...ackgroundrequired_002dknowledge_002d5.html | 40 + ...ackgroundrequired_002dknowledge_002d6.html | 40 + ...ackgroundrequired_002dknowledge_002d7.html | 40 + ...ackgroundrequired_002dknowledge_002d8.html | 40 + ...ackgroundrequired_002dknowledge_002d9.html | 40 + ...d_002dcontrol_002dflow_002dconstructs.html | 40 + 0.0.9/html_split/_0023building.html | 40 + ...ject_002dmodel_002dcopy_002dsemantics.html | 40 + 0.0.9/html_split/_0023caveats.html | 40 + 0.0.9/html_split/_0023caveats_002d1.html | 40 + 0.0.9/html_split/_0023caveats_002d2.html | 40 + 0.0.9/html_split/_0023caveats_002d3.html | 40 + 0.0.9/html_split/_0023caveats_002d4.html | 40 + 0.0.9/html_split/_0023caveats_002d5.html | 40 + 0.0.9/html_split/_0023caveats_002d6.html | 40 + 0.0.9/html_split/_0023caveats_002d7.html | 40 + 0.0.9/html_split/_0023caveats_002d8.html | 40 + 0.0.9/html_split/_0023caveats_002d9.html | 40 + .../_0023compilation_002dmodel.html | 40 + ..._0023compile_002dtime_002dcomputation.html | 40 + ...and_002daim_002dof_002dthis_002dguide.html | 40 + ...ributing_002dto_002dthis_002ddocument.html | 40 + 0.0.9/html_split/_0023contributors.html | 40 + ...02dfor_002dmodules_002dand_002dtopics.html | 40 + 0.0.9/html_split/_0023disclaimer.html | 40 + 0.0.9/html_split/_0023error_002dhandling.html | 40 + ...mples_002dof_002dcourse_002dcurricula.html | 40 + ...2e_002dnon_002dstandard_002dlibraries.html | 40 + ...ith_002da_002dconstant_002dexpression.html | 40 + ..._002dwhen_002dare_002dcopies_002dmade.html | 40 + ...ns_002dwith_002ddefault_002darguments.html | 40 + .../_0023foundational_002dusing_002dudls.html | 40 + ...dwriting_002drequires_002dexpressions.html | 40 + 0.0.9/html_split/_0023functions.html | 40 + ...023functions_002ddefault_002dargument.html | 40 + ...ons_002duser_002ddefined_002dliterals.html | 40 + ...generic_002dprogramming_002dtemplates.html | 40 + 0.0.9/html_split/_0023glossary.html | 40 + .../_0023how_002dto_002dcontribute.html | 40 + ...nce_002dand_002dclass_002dhierarchies.html | 40 + 0.0.9/html_split/_0023license.html | 40 + ...023main_002dadvanced_002drequirements.html | 40 + ...ntracts_002dand_002dstatic_005fassert.html | 40 + .../_0023main_002dimplementing.html | 40 + .../_0023main_002dimplementing_002dudls.html | 40 + ...r_002ddefined_002dcopy_002doperations.html | 40 + ...or_002dhandling_002dstatic_005fassert.html | 40 + ...002dname_002drequires_002dexpressions.html | 40 + 0.0.9/html_split/_0023motivation.html | 40 + 0.0.9/html_split/_0023motivation_002d1.html | 40 + 0.0.9/html_split/_0023motivation_002d2.html | 40 + 0.0.9/html_split/_0023motivation_002d3.html | 40 + 0.0.9/html_split/_0023motivation_002d4.html | 40 + ...ion_002dand_002dalternate_002dformats.html | 40 + ...nization_002dof_002dthis_002ddocument.html | 40 + 0.0.9/html_split/_0023overview.html | 40 + 0.0.9/html_split/_0023overview_002d1.html | 40 + 0.0.9/html_split/_0023overview_002d2.html | 40 + 0.0.9/html_split/_0023overview_002d3.html | 40 + 0.0.9/html_split/_0023overview_002d4.html | 40 + .../_0023points_002dto_002dcover.html | 40 + .../_0023points_002dto_002dcover_002d1.html | 40 + .../_0023points_002dto_002dcover_002d2.html | 40 + .../_0023points_002dto_002dcover_002d3.html | 40 + .../_0023points_002dto_002dcover_002d4.html | 40 + .../_0023points_002dto_002dcover_002d5.html | 40 + .../_0023points_002dto_002dcover_002d6.html | 40 + .../_0023points_002dto_002dcover_002d7.html | 40 + .../_0023points_002dto_002dcover_002d8.html | 40 + 0.0.9/html_split/_0023preprocessor.html | 40 + 0.0.9/html_split/_0023references.html | 40 + ...nces_002don_002dlearning_002doutcomes.html | 40 + .../html_split/_0023software_002ddesign.html | 40 + .../html_split/_0023standard_002dlibrary.html | 40 + .../html_split/_0023student_002doutcomes.html | 40 + .../_0023student_002doutcomes_002d1.html | 40 + .../_0023student_002doutcomes_002d2.html | 40 + .../_0023student_002doutcomes_002d3.html | 40 + .../_0023student_002doutcomes_002d4.html | 40 + .../_0023student_002doutcomes_002d5.html | 40 + .../_0023student_002doutcomes_002d6.html | 40 + .../_0023student_002doutcomes_002d7.html | 40 + .../_0023student_002doutcomes_002d8.html | 40 + .../_0023student_002doutcomes_002d9.html | 40 + ...002dof_002dmodules_002dand_002dtopics.html | 40 + .../_0023testing_002dand_002ddebugging.html | 40 + 0.0.9/html_split/_0023tooling.html | 40 + .../_0023topic_002dintroduction.html | 40 + .../_0023topic_002dintroduction_002d1.html | 40 + .../_0023topic_002dintroduction_002d2.html | 40 + .../_0023topic_002dintroduction_002d3.html | 40 + .../_0023topic_002dintroduction_002d4.html | 40 + ..._0023use_002dof_002dthis_002ddocument.html | 40 + ...ser_002ddefined_002dtypes_002dclasses.html | 40 + ...dto_002dc_002dteaching_002dguidelines.html | 40 + 0.0.9/html_split/index.html | 240 +++ 0.0.9/html_split/unknown_node.html | 763 +++++++++ latest/index.html | 15 +- 165 files changed, 10132 insertions(+), 8 deletions(-) create mode 100644 0.0.9/guidelines.epub create mode 100644 0.0.9/html/images/cpp_logo.png create mode 100644 0.0.9/html/index.html create mode 100644 0.0.9/html_split/Advanced.html create mode 100644 0.0.9/html_split/Background_002fRequired-Knowledge.html create mode 100644 0.0.9/html_split/Background_002frequired-knowledge.html create mode 100644 0.0.9/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html create mode 100644 0.0.9/html_split/Building.html create mode 100644 0.0.9/html_split/C_002b_002b-object-model-copy-semantics.html create mode 100644 0.0.9/html_split/Caveats.html create mode 100644 0.0.9/html_split/Compilation-Model.html create mode 100644 0.0.9/html_split/Compile_002dTime-Computation.html create mode 100644 0.0.9/html_split/Context-and-Aim-of-This-Guide.html create mode 100644 0.0.9/html_split/Contributing-to-This-Document.html create mode 100644 0.0.9/html_split/Contributors.html create mode 100644 0.0.9/html_split/Detailed-Information-for-Modules-and-Topics.html create mode 100644 0.0.9/html_split/Disclaimer.html create mode 100644 0.0.9/html_split/Error-Handling.html create mode 100644 0.0.9/html_split/Examples-of-Course-Curricula.html create mode 100644 0.0.9/html_split/External-ie-Non-Standard-Libraries.html create mode 100644 0.0.9/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html create mode 100644 0.0.9/html_split/Foundational-How-and-when-are-copies-made.html create mode 100644 0.0.9/html_split/Foundational-Using-UDLs.html create mode 100644 0.0.9/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html create mode 100644 0.0.9/html_split/Foundational-Writing-requires_002dexpressions.html create mode 100644 0.0.9/html_split/Functions-default-argument.html create mode 100644 0.0.9/html_split/Functions-user_002ddefined-literals.html create mode 100644 0.0.9/html_split/Functions.html create mode 100644 0.0.9/html_split/Generic-Programming-Templates.html create mode 100644 0.0.9/html_split/Glossary.html create mode 100644 0.0.9/html_split/How-To-Contribute.html create mode 100644 0.0.9/html_split/Inheritance-and-Class-Hierarchies.html create mode 100644 0.0.9/html_split/License.html create mode 100644 0.0.9/html_split/Main-Advanced-requirements.html create mode 100644 0.0.9/html_split/Main-Contracts-and-static_005fassert.html create mode 100644 0.0.9/html_split/Main-Implementing-user_002ddefined-copy-operations.html create mode 100644 0.0.9/html_split/Main-implementing-UDLs.html create mode 100644 0.0.9/html_split/Main-implementing-_002a.html create mode 100644 0.0.9/html_split/Meta_002derror-handling-static_005fassert.html create mode 100644 0.0.9/html_split/Module-name-Requires-Expressions.html create mode 100644 0.0.9/html_split/Motivation.html create mode 100644 0.0.9/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html create mode 100644 0.0.9/html_split/Organization-of-This-Document.html create mode 100644 0.0.9/html_split/Overview.html create mode 100644 0.0.9/html_split/Points-to-cover.html create mode 100644 0.0.9/html_split/Preprocessor.html create mode 100644 0.0.9/html_split/References-on-Learning-Outcomes.html create mode 100644 0.0.9/html_split/References.html create mode 100644 0.0.9/html_split/Software-Design.html create mode 100644 0.0.9/html_split/Standard-Library.html create mode 100644 0.0.9/html_split/Student-outcomes.html create mode 100644 0.0.9/html_split/Summary-of-Modules-and-Topics.html create mode 100644 0.0.9/html_split/Testing-and-Debugging.html create mode 100644 0.0.9/html_split/Tooling.html create mode 100644 0.0.9/html_split/Topic-introduction.html create mode 100644 0.0.9/html_split/Use-of-This-Document.html create mode 100644 0.0.9/html_split/User_002dDefined-Types-Classes.html create mode 100644 0.0.9/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html create mode 100644 0.0.9/html_split/_0023advanced.html create mode 100644 0.0.9/html_split/_0023advanced_002d1.html create mode 100644 0.0.9/html_split/_0023advanced_002d2.html create mode 100644 0.0.9/html_split/_0023advanced_002d3.html create mode 100644 0.0.9/html_split/_0023backgroundrequired_002dknowledge.html create mode 100644 0.0.9/html_split/_0023backgroundrequired_002dknowledge_002d1.html create mode 100644 0.0.9/html_split/_0023backgroundrequired_002dknowledge_002d2.html create mode 100644 0.0.9/html_split/_0023backgroundrequired_002dknowledge_002d3.html create mode 100644 0.0.9/html_split/_0023backgroundrequired_002dknowledge_002d4.html create mode 100644 0.0.9/html_split/_0023backgroundrequired_002dknowledge_002d5.html create mode 100644 0.0.9/html_split/_0023backgroundrequired_002dknowledge_002d6.html create mode 100644 0.0.9/html_split/_0023backgroundrequired_002dknowledge_002d7.html create mode 100644 0.0.9/html_split/_0023backgroundrequired_002dknowledge_002d8.html create mode 100644 0.0.9/html_split/_0023backgroundrequired_002dknowledge_002d9.html create mode 100644 0.0.9/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html create mode 100644 0.0.9/html_split/_0023building.html create mode 100644 0.0.9/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html create mode 100644 0.0.9/html_split/_0023caveats.html create mode 100644 0.0.9/html_split/_0023caveats_002d1.html create mode 100644 0.0.9/html_split/_0023caveats_002d2.html create mode 100644 0.0.9/html_split/_0023caveats_002d3.html create mode 100644 0.0.9/html_split/_0023caveats_002d4.html create mode 100644 0.0.9/html_split/_0023caveats_002d5.html create mode 100644 0.0.9/html_split/_0023caveats_002d6.html create mode 100644 0.0.9/html_split/_0023caveats_002d7.html create mode 100644 0.0.9/html_split/_0023caveats_002d8.html create mode 100644 0.0.9/html_split/_0023caveats_002d9.html create mode 100644 0.0.9/html_split/_0023compilation_002dmodel.html create mode 100644 0.0.9/html_split/_0023compile_002dtime_002dcomputation.html create mode 100644 0.0.9/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html create mode 100644 0.0.9/html_split/_0023contributing_002dto_002dthis_002ddocument.html create mode 100644 0.0.9/html_split/_0023contributors.html create mode 100644 0.0.9/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html create mode 100644 0.0.9/html_split/_0023disclaimer.html create mode 100644 0.0.9/html_split/_0023error_002dhandling.html create mode 100644 0.0.9/html_split/_0023examples_002dof_002dcourse_002dcurricula.html create mode 100644 0.0.9/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html create mode 100644 0.0.9/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html create mode 100644 0.0.9/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html create mode 100644 0.0.9/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html create mode 100644 0.0.9/html_split/_0023foundational_002dusing_002dudls.html create mode 100644 0.0.9/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html create mode 100644 0.0.9/html_split/_0023functions.html create mode 100644 0.0.9/html_split/_0023functions_002ddefault_002dargument.html create mode 100644 0.0.9/html_split/_0023functions_002duser_002ddefined_002dliterals.html create mode 100644 0.0.9/html_split/_0023generic_002dprogramming_002dtemplates.html create mode 100644 0.0.9/html_split/_0023glossary.html create mode 100644 0.0.9/html_split/_0023how_002dto_002dcontribute.html create mode 100644 0.0.9/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html create mode 100644 0.0.9/html_split/_0023license.html create mode 100644 0.0.9/html_split/_0023main_002dadvanced_002drequirements.html create mode 100644 0.0.9/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html create mode 100644 0.0.9/html_split/_0023main_002dimplementing.html create mode 100644 0.0.9/html_split/_0023main_002dimplementing_002dudls.html create mode 100644 0.0.9/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html create mode 100644 0.0.9/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html create mode 100644 0.0.9/html_split/_0023module_002dname_002drequires_002dexpressions.html create mode 100644 0.0.9/html_split/_0023motivation.html create mode 100644 0.0.9/html_split/_0023motivation_002d1.html create mode 100644 0.0.9/html_split/_0023motivation_002d2.html create mode 100644 0.0.9/html_split/_0023motivation_002d3.html create mode 100644 0.0.9/html_split/_0023motivation_002d4.html create mode 100644 0.0.9/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html create mode 100644 0.0.9/html_split/_0023organization_002dof_002dthis_002ddocument.html create mode 100644 0.0.9/html_split/_0023overview.html create mode 100644 0.0.9/html_split/_0023overview_002d1.html create mode 100644 0.0.9/html_split/_0023overview_002d2.html create mode 100644 0.0.9/html_split/_0023overview_002d3.html create mode 100644 0.0.9/html_split/_0023overview_002d4.html create mode 100644 0.0.9/html_split/_0023points_002dto_002dcover.html create mode 100644 0.0.9/html_split/_0023points_002dto_002dcover_002d1.html create mode 100644 0.0.9/html_split/_0023points_002dto_002dcover_002d2.html create mode 100644 0.0.9/html_split/_0023points_002dto_002dcover_002d3.html create mode 100644 0.0.9/html_split/_0023points_002dto_002dcover_002d4.html create mode 100644 0.0.9/html_split/_0023points_002dto_002dcover_002d5.html create mode 100644 0.0.9/html_split/_0023points_002dto_002dcover_002d6.html create mode 100644 0.0.9/html_split/_0023points_002dto_002dcover_002d7.html create mode 100644 0.0.9/html_split/_0023points_002dto_002dcover_002d8.html create mode 100644 0.0.9/html_split/_0023preprocessor.html create mode 100644 0.0.9/html_split/_0023references.html create mode 100644 0.0.9/html_split/_0023references_002don_002dlearning_002doutcomes.html create mode 100644 0.0.9/html_split/_0023software_002ddesign.html create mode 100644 0.0.9/html_split/_0023standard_002dlibrary.html create mode 100644 0.0.9/html_split/_0023student_002doutcomes.html create mode 100644 0.0.9/html_split/_0023student_002doutcomes_002d1.html create mode 100644 0.0.9/html_split/_0023student_002doutcomes_002d2.html create mode 100644 0.0.9/html_split/_0023student_002doutcomes_002d3.html create mode 100644 0.0.9/html_split/_0023student_002doutcomes_002d4.html create mode 100644 0.0.9/html_split/_0023student_002doutcomes_002d5.html create mode 100644 0.0.9/html_split/_0023student_002doutcomes_002d6.html create mode 100644 0.0.9/html_split/_0023student_002doutcomes_002d7.html create mode 100644 0.0.9/html_split/_0023student_002doutcomes_002d8.html create mode 100644 0.0.9/html_split/_0023student_002doutcomes_002d9.html create mode 100644 0.0.9/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html create mode 100644 0.0.9/html_split/_0023testing_002dand_002ddebugging.html create mode 100644 0.0.9/html_split/_0023tooling.html create mode 100644 0.0.9/html_split/_0023topic_002dintroduction.html create mode 100644 0.0.9/html_split/_0023topic_002dintroduction_002d1.html create mode 100644 0.0.9/html_split/_0023topic_002dintroduction_002d2.html create mode 100644 0.0.9/html_split/_0023topic_002dintroduction_002d3.html create mode 100644 0.0.9/html_split/_0023topic_002dintroduction_002d4.html create mode 100644 0.0.9/html_split/_0023use_002dof_002dthis_002ddocument.html create mode 100644 0.0.9/html_split/_0023user_002ddefined_002dtypes_002dclasses.html create mode 100644 0.0.9/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html create mode 100644 0.0.9/html_split/index.html create mode 100644 0.0.9/html_split/unknown_node.html diff --git a/0.0.9/guidelines.epub b/0.0.9/guidelines.epub new file mode 100644 index 0000000000000000000000000000000000000000..b6b73422af3f6c2e972fbbfae713bf3c21fc97d7 GIT binary patch literal 31450 zcmZr%V{|9qmW^#E9ox2T+qTuQZQJ<8w$rigbZpy6Cz+o4&-?J+%!jk8R;_hEoLl>x zz3;A5iZY;JXh0xPKtS!rMk)?QRkUb8KtTT;e;)zaS=pJndODgJIXc=}nHafRIoLCp zIsP=J@v?GM{NI&O|FaUQM)9ut?~0GVf$=xw#8idoq~ygJOdRZ8jjZg=oasI6Z1v*$ zVFnnHL~s1W)~c3H<%Cs)=9(ZsfSIZASxAmUUGop;&2% z&I7q#W=ygc6fizdebMFoEIIXl7w5D$HtwwjL#=VC94UyxlZ)R}j~~UGb`Pskez3ah zViG}d*&N1~rA>w(!~T1I?ryIO?tk+t_#1Tpo}V54e{YW&y_KsA55aJv;y*O+_S;En^09kFHCxjbvfxKK|1l6VICJ|ThnAu zI!nj4L;Do1Y`*Z1cdZA12IK4;s1F%X7;Z1 z4vyv}>66MEjA&smzA&+!R^bh1Tw!1exEQjNuFK%Ai|{0*T=Tm+X4pw>H;K0OL|9WE zplOd6Jec_=R2R{{d4-S_Hfk8qrG5d4v>sHd4RW{n+4dzCQY6IIv z^0zY?)Z~YEck>!W(x1u>QdnRz%IZ|&a)n=P3o61G;w94OV3U;{!O-!>s#ckmzCp`+ zTHC8k=bDIQ7VdH*kNp~@RHj!=l@oy3$sEhXBz67-PiF^HBi|~%h@jnR%#f81R$0bD zZ3UD5{M;IxTrLT43g%=kP7Ty^l?5^M;2Q!_bGiWd{sVq?zz}1%Tyb=}RZ7GlS+pij zu2-O>2m?$}Xd4X4wbE;oHo&$Y!$(fP-m6!MJelt|Jl!YE7_&+Oeo7k7mgLA^e9j$> zN1AXM#Rtm5QM!e27$GUgD>D>uu*QhsNSyd@>33~9OlvmS6#%iP+uwP<((Y4 zj%XGtYh@$U#!Ts9!1RtcR~3x|H`x>C9Ea=U(y|T?;yaw1gvb2{(jO zpz*$c)yUWz50-6KsW?jF=FyAc)Hr3%qPwiyYR%vx#H(;c)9`}PRn=@<&*n? z8*6DeFOYDtu7H^t;obVYY_3j4Y#4yy?A0OP&Iftde!2p|t?2t`?97LtvPMH^Sq2@u z1|8c5nR5v>WfgFJYc95J^JGDLmZILvQXFRXPCaC`-#f?ac)MS+2kBb3Ka1?OSon-H zIg6$3x?g8FY)Wyn;Q7dP?!ae%|9dTAsOm|cK>`6uu>%49EvJ8K$<@Jx-rmHcM`y!% zgB{8DM#FF^y_t&kj#ztT?2Oed$8;o)rD1{J%@8GNE-3^gC~d3mCWvFa6%80E2Q!{B zIoc&)D_GB%?d_9aW*!e6{NT-MmIvn%Y1$;O-pB9v2X{|j@%D{_U)JH>=R3VWBbISp z`0ji+=M^15H}2ze+4^S+k~%N06VuH%W=>2|Z)X$Y?6bFnpRi?P0jUzfu8BCA5ZCyr z6+>d%K@u4s+Jo+bZr-zWV!X_&^(8@a!qfl}J}C=9crarhi9k#Pq`!E73>ayIcloa^ zbK!L72BYN-&$7cLK>m16-W_xLk9asY{-i|jr@k`gt`g%()MP&yx1?K-2~+7GB1zkm z95;b@a$54RtOp=+RFRmBN2ixh7gE1EiyIr>PDv@;HB8qv1EXhij!+s7n^*OBh3dZC zeFw=pN~}IY=f{?>KFi3-;bl}KUYpCVuVg~6Z^)*G=0Ana&%Aoy>B?_Fo}WRV=bmav zX*CGTVATs;@YAvTum;J*G`bT`VPny21#A$-NEPM?DgeY3Nky>q%*3#;Zg<9vx7Nl2 z4;Wx+Kp+(GQ0+yWpm3V1SdOS>6nNu>Pc3oTCo*<(Q<{%Y%mmId~4lUL^PL@QOcqd+#2FP-IR!IPv6 zijhbWttDjl6NAd-;OAQSvNV*Njx@ST5)Tp6re@>{d)gmH_IW>c+j`sa1uv-p2sr|hoiJa9_ogbj2!&D~ic?g*IsSLrQ{~$X3~)?@ zTff%83wYN%h*LT$!>zeTBdO>e!}LGlBPjfTq!yHY@2>r*0$^!@bvGr~!crCoERGaX z!EVtE06r!3FjNz-XXI95A2sN93h8bU^b@@5aYrDRq3D_hn3sxns37@^*rd8rJ<6xc zTGCNL7{A&hplSXD(tknuPGPDtO5JCy_!ZX|BgViG6FLFtG4_hlBNfw!oQlQK6o}d? z=%ux!lB2;hv;zswg9r*=Si{jHgmPbX6KGYupR1^*(+KPAbH?I?0Wy1FJ*Xhkv530@ ziXKyVgnlpmF!v455bTOUnG~X=r%78ubpo7%zAjdw+Ws3)f)7>Fy8z~g}$N$WAm>YG*= zz*VEFw}&_U@r%914FDyGRVPC&$0Ga=VPlvW8LorP1L1kxMw zZe#=R4y6JlD<+N#5!pbuXJ{zSDeO<`Udb)3%S;qI%}3kpzADIqjTPwUdi3;qH&6m+ zo(`a2>XKE)yF>6vZn-s(?{2WTk`KfV#Z0{cwG1(5^(zk`5S*msxy_e)T@@bRSbdPu zV1@{E%Fu@tKMUG9W7}A=84ZCm)iRi4m3c#M-w!JYOiN@=t>2ny%R$hzT8FDPsn@Wi z%2Jv^>MkgHTfsL^K?Y-}wp?KqF81Yr?T<27m}Dt#(VJJ**0%dNH(m)t)Mo1Nz!0uY zDT*#01Y=~Kzz(_sd98Ahr&nH_qfCd|EGxC)u6!zsCb{aW_{ZwZLR$Ck~ zN(WWKeEd;rs3fr{QcOzhBP54d%{NJD17)DO_%c8DLVZPQR9<+EVc#sa4oa8KER7nr zs~oTPhoPSu4^_@pwYQsun|8G-HUV_`H)SRk^=Q>nCwgmI;bd&N$+2)#xVY5_(gNIQ z)>eZP-MYw?1`Kj%QIerH9teGwNFNjR61MH1Hf|V9dX&50__bGOqU&>%Y7zR1?IJcW z%+kBlnIO27fMFcr98;i^na77m5uh>#*<-Bnz+^`gt2Uxw~M618AEn)D%7mVKd zS*2-<=zr98CQH&@EY{yphoUCQ1GY~SNSyQY1WHXSUOMecFW}5hv`(N&k3>_|Laoht z4@xL0xoJWToib4-2d9(6XzgUH^hes6V-HrEon|k`{g}6b^cpjcL(R$>IV=OpTF?*V zHDg!&W_8@3osB$wEBKxM{+wev9a`z76fPwc~?T{lZf(4q^Crjn=SsN zGRebRC};-f4wK`x6YuNB?k|-hTd>`DP>uY9iTO<}eFM&rt|#CHJf(J^U-W*hRxJ7g zn)8I{f}3El9DLA$(`}>4P+tzI5&OoJHa+)LM_O6f(q&j#b$%j=`UG0X@eTU#lAwbr zZ6@RInTeee2ngX{lEB``jo!o3)y_6o+s0+173DL}Ah6QKVj)|(S>KPckvo<^%KVZW zmFDVk5icTyl$Ed_q`+)P_S+ki5Ly}mI`|$l8l~R5z3apf+W2|WWMB>yIqCkfo8y$= z2}z0sf6>)<`=hZPLEih;8;^O24i^j4V6x>+@B37A*0m|QoM3LM#N7mqs zikjak`yn|mE2Lx~H1uAS`xV4gG1HDX59K)3<;JF8{AEl=tYj!P?SimD#qgU1ogNS7 z7#Jdth81~OLg!SVi&4Clj7d1?%>GCy_jX-{QDDr2$eBg535GO|&(HbJP(Jz3WvWts_c2sxceJU8``n3z#RUs7dJV8o8G)N`e zRRakVd+DW+1c8Mf(U7UaOhI$NXv%{#i^uyO7qpf$zkT;L2pp@RI=ONmB~tAbJ-w>m&jY>&71y6Br3wh+9smod;3$ z#<42z{>4I&VV7$QhNEfjm-1P2xhbcnd8C@WR))~=E=a^Gj)X3(_oQc1q1V0jC4pNQ zt+M@eF?7K*HQZ(N1(|(wqJYDiB?887OA$zI#G{h>kz7=6&HiOp{NT8u9g=(ls%TPIZE)KZpA)atT!)a==$( z9G*f|iQ|7SJI}RqtIpN=7V6-&fwv3ATHwJEha;_ueBkLxi)5bd?Gd;cwE0Eup zsl&x;>lwYCM)xznnRF5bQRj#Q#sc#q_!Uoofzd7l_^@IdZG#(b#he>wQBY_NOPDb` zm{Y94=gNoCfgHZeQomn1&j85vVRhj0D0JO*n52RBvK=T3l%41?RfxTuGt{^m!h&Uw zz)8Tqi=E3gDsndt-D2lsmE>qbF=8?HrzlC^OXurU@fu%wHT?Q~Szi%_tIZ1U0>wLm z6f~>?sgAm-rzz9!9O>H;)y}<>RMB|z1l(#adpGmv$3c=!OEw7lNoKu&kC;5E4o>bT z`CwIkurqp3?5@^3J>PgbPhBT8EyF>5SJEDU3cTPze z%ao<))Clp4h$*%`iOXx(6BRW-mnrj84?<|(4MDDNekZ-I$lL$irYuTzQK40opGzL{ zT!I&!wy^`d!m$EhEU)ScMW+4fa)elPZR>$xTp4ae8HYHhcb2qe55=1g0^H9&MkDR` z!LnAbWb)G2&xewjkTKwV7C%4HPsgjFFfXBLFDFyp!npdWr28yU3h)$JRf^L$X@B6m?dFA@9_I=f5{;B5J?{~ z{~_!8-ittiCOBum8-yK9v)UK)fm?=$7X)T6hYG3xXOGJrNN5hV9Tn?i*m9t-Jp6W{ zBIF4kC94~?4QMELA7_BDNm<|T`%`g1Vz#8$GHYWMgSr}CA)Q+Gjdew;lSvuWY9Hd> z*4TL0cdM{-lnZ>t#RM0(=@BkZiFU#-(EAL}>%jb#H`=V94?$K@{K>yus0&Wk*W>RA zzt^f{*f-AncK?hEJYObvak?k{V&lW}Huo1y#uVKR-Q*1Ipw6~;W~_K#}k?(hW@NO zp^0A94zl0l;wLnBw^O;Um7ACS^_`0u_N{@H7kbPSpOyXkv}oc`{^iAZcU8v2c{2wm z+xfhRXNddvCTE~qgMABax4nj_y-yZ1q1Z2~73cyL?$)JJu?D%OZ4d43bAwZqA}+rT z@;DYYPPHNY2?R3>hzB#+w@>fsV6D#6QY~rZX}3B=9KYc@2H>}Yb*C$dBHDrUSHeAm zYTm4-mp)#Mz?#75sg`R06(bmMang=4;-sm0S~VQE4pCM$4B^?PevI`zBu5|S^ggqq zm)$$nC#_x%D9`=39qt7wW$rZUUOYDaHb_^%mdY1GKc|eQ+fy_>u6tL0yxdHB*63%4 zcrmtCT|_~Fv|RmgrIEp<`oE_KB#>El~Py@MW|NtK2?lSi=`3dW1=8)_d6Bg&W>k8&^4)QLSv* z*29lgqAm|_IE&#nDRYqasDTT#ydD`t94og6hbx1tm8-3pfuoUy**|*5H>ux#gAp$5#urAuF91ID3NTnd+^{IJ3eM9a z*f;NiUG#6J^NwSV|T=4+xNkVr^&4<+>Hs8wzz)} zA%imKCBl`yRMq%iE=km!)A4MS$qB~AH6B?M6jIQ&u(iwd&x9ApjMP$k@c9%sE@h#9s0t z{GPaqfV(g9M)0^BMu)DmQbJb5y(Gi$m%8j@;uqaP$n*VJ&FVA`)Yn^+rvygLc_cNu z9z5Kk!J8w(`!oUeRGHrll?xUN`J>|;pXZ4Gu4!i=LZK+Y|Jq!C{o)`0!h?&er>&U_ z!#@{GGc#8vdJ`9y8VxCj19r6D6ODQV2rWZT(_uFhZ17{|(-O+4qPG6#0?~>63>3Af z)?}*tosV`acXCRU(YUEL2Lc0UHOI#raN$f!HN~bIR`E&3KlPy`P5|bEeKg+Da`}>7 z-Fyg&tjkOoG~Y%LVDcS=7VD#+B7Pa)j&?~fPj+&Z{?M5DBkPvmUWm-Pj0n$ug~HcZ zdBrwa*mxl zQcjf6A?Zq=%!LQ~n|tOhBcc!4w#Zp9(7-T^+EEKqLlWvNVp0ao(1YP~OoyHFpu_rD zWl?xm@fk)w1YYa1fbic5!$N1(Ly||;qN0@bRvGpOoRmW^1*JKqzj+3?V->GaeDG>k zT}=6fU-dS(Y`YM+f(tJAmUdqp$H{goy(#2UkzaB_V?(M3tJk=s7pbQ?4=1@MNIZ7> zy}=#olN`Lrbm-F$YGYRjezU`;lpCY1U$embJNuL*fFG|Y8+galA?I+qhdCnAt!USk zijicMZN>@$Qnh2PVmG}+A5x|hQ0VdT==O-WzFm+ich-MAEaq<2v#bG^VS{;{kgG}x zm+-*0)SccxoXnPE`C#!|iGmYR`gA9^I z;e(dA@?7U2P_FY=lIDuEgYmyW1IG-CE$9DX#1*n4l2+2-1TQ>RV)@)U=#(B7Vg^b| z%BzLQ`6T9Trw(8ld8UH&fq`?0*>&V`!pI@5g#%VL>=hIy8~zX^SSu3dl#X(Kk#XcPfPVprYFgNuv^&dDACw4GFhiTX}Jd^B%Ob zVE}rKbx1mozOiJ6)vVKu@&sCO6O>^z#B}NPek%PAs>c?pw-a&Bg#?T(BKX9C<%87P ze`KcTYtJa6yXaOCPGeKxt(Ufml>Oj(0)>t4g7^WQpY*~gxYXf>6-n!3g0j$5!nfKy z;w!v;*bRBL9dNM~mKrr7?YPM0h>TorJg^{QJSkAE*blYW%8$K)x49JKG~5hGma1rF z0*0@wPz9+n2QTi3R2a|*a#$0$)Cs#rEtn`t>_@BQ5oDb9&Ti&zoE_8XO0||^FJ1rQyZen^U!wy%NJ%{hVR|V|J z=ZvT53)(vpEbLd#%t0Cyz{%i9lgN=y%R^M#RdohWtg{_=36NPvQVCL# zl@y+7;1arIEz_0I4GV@-T~vgUsIYt;lWw^38oHJdWTB@ zP7+H6-s{=z3+g?|Z5dIK_YPPt)C3hIIVAMg>nlMY2=~+;NXFh59~ojIYqkw3QZK*% zw%~*&s=|eURyWQDzg5Zkqp=a7_bk6u%G^_6K>zh0oF!4R(JBQ|jN9esXIgP? zk8GE(KrR5a@fK2CR6WTOP&7W!6j=G?Nn)Y0YJA zsc{<-0*^g<;*~UuK;C4X7^Km8qQgFE7WJ_34M5bKhxo&F3WNsgw*;J<2)q~jvj(mg zNrW}-Vo;qV#7=?|#6GB;7d7CO=;_vet306M#x#`66=AU@d29JsG4xgTRGadJwA+`x z(CK2Tt2A?Ed;Wd2$;bB6X*09Os6;87dfFQ5HtuuXGk%MgZRHrlE*i}$ZdNWIfj4$>YEe@huH+j!&ZQ>O>o*7{Qbe|Zkv-!y z)Ailc;eNL)F;Hn)qA*cR7afN{84`kl+bjV2UIz}Z`V@jHpUfqFs8s=4=~ITVw$X28 z2o+40jJVVsWr)btjDA-p(}W3883ptzr%*2(8hdRF+Usk0P?7XFiLz3M6F75e;RH2k zgQ}F%&88xn_2|7pApg|}L(D#2qfyjTty;i>v;0pAD`!TwGI`9SODU1PuvIO34;xHB-y9Q`P5Orqt<)CgixEy}hlVW)$Uqc;DNEDr z-vrB4M6*njFO}g2FG+I|;%L!PDZzxc_xwJ;4irc>M;-Z5UDvB{GFxZcee=NFv?C~p z_{pwVaKyC}2U451MK&%9xIYCAzRf_sQAP5#S+OgH|yaR1?Ws<7jp`!g^S z?urc~TBtfQvgBS@#~t=WHFRYjw;&VBCB;`U+V1i&^f%CKf1$l^{1@>@cDO0;d7j_E z`5NYG)?iHT9>HIeJ!EMcUz;%403MEG9!I7yp|Pspo;FG|fvEL`RK|$Ov)k z`8WP)p@fM-M5u|*v!G!4ch5mzBY`y<)!kIK#jN+i@g1usr?Kovmpbi42axN8&4F9Z zYtNgK4|@EC*2CV}N!xV3!A@aW|2?;VfQ+8Cm;&0r^fUi;<*;){wLCUSZ2``p(FcT; z>nZu=pwCyyJyGOTlyaQ~&~yN)&=WH`KpnUIz(nvV$=SJ2{c_GI<**p&2(Qq@HbLI| z365L@V^x8iie@^Xp`tc1N5-`k$`xTs)T2nc#0M$^UmfW0SOHWt8ejlNc*r=0x%z9H z5ZB!d2hbuN=6d!DHmoF0g15{#9G&A4Ex;K&j}xBWZC0q{c^%MFx0lzcVd+Af+7{lg z*DTdP;Q~KmCfU%Uf2Fa`$t?X_Si8vt;obb2<1H!BcQ!97 z4%--568vK?sGp}g8ia8Jp{Gp>(J9iCdL^IhJmPM}39Qn9KU69~kl4VBl+Cl{?A%GN zM<_G0!}=Z+R6%KKVi(?$0wZc zcb+Qar2XWRQ(^P1_E}qQb9Z-tN*+RUnM(?H@FSN_td*wb5a}+4{COg#50CG!l_f}A19s6hUD^*4k3A8e>~Lj zx|9X%NG#q~<^_}TmIj+ihXW6j6|X2A7yW@$e)T+;-DgISen<-IJ3?D>{JvoVyU|1U zHmgw=@v)z8+pIE7k&&6Wk>P5OAss!D*^%ZZo;b`+*8s zg&@N$FFaB6^#0IenHi(rs=9KiNb09AmaDjH)XuDMwL;r zK|h-bA}lih4Y~Rb z$!J_?1;m>jnFQiH@Umds!9(Z|3{1{>x0J2mM{)-_9Z>u>dlE|$$l1Qc>liHMG{3ID; zTMPvpgner`rmkJsfy5)Toz0_VAnl|Z#AjTUUJDWr4jv22BsFLM`6$45_RdSqByN#$ zhN3j$#d7hbd?7mnlbGBT)}RB%d|NxLC#JMtgllZR0*o1fxklHVWF$SZERG0~W=l!~ zD#cV8Jx)Z=HU7YU6zLJ*31D*O`7Jxv0TG~QD)d4rdzX9;$-`1SiUgQlJK5x{XD>Jv z-DdhV!`%IBe4qp>njn>E=ZzuRQ(H-CjIXO-H^E@ZV=glogLlFy&%CUGV$sQ(2IC5B z>h@`C$lsKtxMx z-f<*8!E^L5M!`&+Rdy|By_`LjN6W~7?pTQPLql(oYOlt?f?%%@Jm2J$@s-q89mDZcvw+(dtj#Q(&4Hqwq5UeLK8fn0U-28;TYMf zv}2aqoG^DZykd}^sT6HIwK-L1KX%3kABRIO=?QGjWvtp!U&cwISQ+Adue3AoCh^?^ zc2c6_?g3NytHtpN{NJ0(ncc}|$zMvU{@YmoFD0@5(^P({?l>$mBKhqYIDy?YlUuzJ zX{Nae>j@g)`akBQ#5B$ zG}&eWQPXibg84HJo!#}H zY=$}$^0UJ7KF8i>a1U}~7}A#Zm>u80Koz>AcBDy-XF82$Sxdc4!Ib&{-|@l+p1jJd zS(Yezz-g4CJInPXz<~3H;j>UT%(kcLRmG(`iZ_Y?3xi8`CT88x2Z!i8lBIR=C|FQsz9rnsIT~9c@r?{kz2EuX4L~Km` zp@&BZr3c4qw8MNe4`GLQKZh3)1@<%JocoDXQad&%AuNfjF?on@LaTYuRw+y?mv|4q z`D`quvUUsXx@`%w5aZS%H}a^Ob?C50ePeibqwA>>OR%h~a7FoiJJ10M*Ao`7TOLtM z_C!`s)W|CkUeXGc&m%O->YI*?JdmD!bpHHt9vR=xw^0bwXe+slVO_QHo%9E0V(9#< zGJ1vX3C?yl#Po-=)guJst5=geL4=~j!Z?B)$U8q0o7dcw7!_6lDci?g2ymy>#d93zn|wmB|&{B|cXC%#p8Y`Ech zz3wITBHY)(Fr3KR;zujx3EZ4?S@Ra_<;lIwT_j&~)BE(|%ji)ZL4INJHsIw?K#H}= zAUCmr6Mviummj6x+U@Yx7T%6USZ)E#XT6u0_0cM-H%q?%;fzFDRgvNqT)}lB*qD4s z#8Q3WiWS`MED?>D?HU9fgb+Pr!VJpqAuprUWXud!Y+C{q#?xg%D=I?BNqGqmXXjHD z>1hSU5fVH&5Ii4h`F09=lRVf`0~GLhlQQV&)6gLppFU%_ft_zIlC#aU2Fwx3y#uG* zcMKln=6cnBSN+328^3y(;CYPr4zohV&Surd;vk#Ttis3Ilo_}lK5D!kit<`EcakB#4boj%vkfJ={`)X6*ELLo%ixJt)Yf>mMTm@{aHFw!$<=a;h1%Mls$ z8U1)!!>&RYcDZ6*qRt|4!yTqZ;eM&vo2B5W%LD#73PE5rk`c91e-Uk$PrK=wKSc#_}xOtOyhK_!pQX6OZ(OJ zm&eiB&hM_Y^k-v&9jtg6H@TIBwQW0OG)FrX!#v76;8^M=IGh;V?KynWg-Gq0#~1!~ztBV)0J5=_Aa3XUX1fV-%*3P;!NQKuAq9$4M#6mNJj*pDK~DK0DOiKcd>W7- ziG-eT!Yi1q?g%93WwG&eBS7*;Shx6@gE+=chA3)noU)a41ZcSkif}VJp5RMJ{{A4` zKlI@bt2W-7)CN)@W_bTb4(9f+0Fhk;bW-3p!JLdn4t# z0?T+1%8Lyg<&z=~mwGELWk9IcHM9g#JR|BI$R@D1+O=2vq+ljYxh8vzD|rR@H#jw{ zBiHhz72zpHubY^L4x7(Q6wX{~CZf}M%Rq&K@o!jVY9{v9Du)=7`h?79I#I%LY@>oR zI(R%&8Kr?NrLvV97|y0Mci&KoPjNirVsX_Cqm;Zc5}Fj&XM6!+IESkFN-2A^fF5= z47K5{1Ze2o$AJb1P~&+zT!)X6Kh=K`ct+L#HUo#vl%Vhzz{|Dl!9Vsu@U3L|X(`uZ z(nd%IH6*1Q`x~(EF=`cKZf!gA20Y~)bSA|nZlsq35PkC0S0p0NCygc#yUC_RB<(u2|sy-ti?eQoDe8i%m5f# z1goW@tba>ZUrA*&>a zq$0R|^jo^^wYXO)h;6>2MDBYaK9DnZ1#jyjNv+7)2Mc3vaoR4+!}2~xno-`lT;)z@ zjZAOii3#H6c=q-H2`mH00G;hMtcnw-)^MOZRZdNpH#MK6cVd8MvOHHsejar5>a@28YPE`WuAlF zgAY~~4S#(UJcJK61^4IA#ILQDqHH{d@6AnJf}7YpY%%7@mtCC|w=PJve_pOP-6p+* z^)AvM4m(zqMLZ;4bTzd+k*an;M^N9ke*`qh!=yD?PPG7cVWPQ(*w#CKQ5{fSf8QScf2tQmujQdg3n&k zyWHqJ8g=+54i}V+?Sjg!M-eGgqGg$+FXx{lH)J%EkVUh8Ai*Zf@NbwA7t_}is?HC) zG?t(vr_<4k1+i97*83j6iM#;=I8%=GG=6UDZ1mQlLXNuC5Lc$vT9FiRkIPgqS4hfXwaQn9RTfrK!NO zb(|EJmS)>>H5d!4WTe$A*z+{i1$_$?Itgx{hA`>F9AHdc2Gc_5#QkkPD$TMx-|o{e z&e`M>p-&OofaNOlkm?dK)pQt+^rTxA88Hd1b%WHgEE@T~=*~=y6d$J>LqtN_N)o!= zk4osv8RZw?9itkRBo(KAkGju^j!p%$V&0=9=Q}0!g`M2@Qyi{p;JraIq)AkkkmO68 z7$t&q3AskXOSJctB6^-rNz0bg1nm$>uOOCwZKN#zm;d``+xORrK|cT2$6gB;%Tp#5 zM~tKkmx)M(hfzSg_*1eRvsvV{+)Mo}_KAdE$z~T}mMT^-DS=;Pe~i$CvHeKiufIOk zlqbB{rV^Q)K9TP*;g~&rKghlIjAWX>L4Z?_4frLhr@8r=q7+WJ?&y_#29LleEJ%vF z)`G7KJ7*D=Tddwau(8Q?LYhGVva%WN495cX&&wx+E87N*fnNGBtlJJ|kV2PZT}$-~ zS){m;ZTB$62RV8nbqN8E-64XzG5e$_6nSm;+A5R+i!i~q-7Ykk2vy|z3YPeqV^DiA zW=>?r(7*ra$e_fl$v5%%zhpV@shf(>dt&Tyi0&>C0`^G9j4Bh7aO5csfBQdGYKLS5 zFPh=5J8?EP;lwq!(U5Wpib0*(MJs}!%$q<`b?lb>B74^Ak!5k*>Fg2FwHWz&(<8s^ z{#lK5gr`S;;-Jtmc3gvbHx#Mg3ti*(tBMNRAiY%G>GC*s-pnI%OW+D}>r;NLtDNM= zM;+)iiwcaGZsuFrXC1#6!ZB)*aZ{?f&sEC(^g}hZCiHV`^aI2LlG{WR7%+#GcDYN4 z&=Bv?HFy^ry)l7v+#3|FxZq+^-tK+qYygezBb_*TiRG(o)giDtuJ-r}Q)%r|A6j7q)QZ2) zx9fr-k(w32DW4Y%caMfC|BhflvVgmMt2z5wD9w+JgLosrZDEAfDx`z@6z(D`JeFop z)Ceb>YV9XGWB=Arh`b^^D7*DeQhI9exkqlndkIYC0dchSIw*`lmza4Y1Ph+~X?=K%A%V+9~BT62_k|9U~kUPjqVo>CI(hRej1;LvN+P$F?Ba z)cF24!@f$zVzj~ZU!BZPJi&$M^=LL7sI2)$&9b?XugZ^E&$r z{oL)3?E@ubX6N{oxj^RBkcs<*Ka2E zz8@zK82sKR%GLNoVQD`Tc7M+jq39aJ$c}W1#Qa=w;J$XkW8nD6#w?$~PN_vH@7(gp zt0PCkFZUU#b-Dx5s3t8Y3(P(G`cvSk=fmKjy&fH%Qgft8BjW~|!$G?JO(SW5P7J|q z&txC|BIBcaHm~!$PJ_gamYmVy6T8`(mMv=TESUbY7b6Y}-dD0A?0!_=K!?}rPmP8y z$LX`obz4Ysmg_Fo(y z#Zr5z?Y0*wf~~m{O)LoIH8Uxw0t1Tw=@cqT# zg~?&608YPEncSQ6XqGhM;^?=S@=bpf!C%QeL!4<`-_<|Hdn+&XEbtO6)~K}+#j#;X z^Y72w0UJLhzb6m2*sAV;cxpjm?<60U)``1Gzuf02+7>LeIULsHm1%eCrbIZ4)Civ? zK~{q)7RHL58}c!f*V)4L?QA_|Zw?YmUB}9xaR;qHQ`)~H! z2{9A!l%if&EMU4jH33|a*lVlT>ymk5A>RI~p- z?Zx?z_PXM;alqwB+IgU9N4*@7J}$)Ovz2Ld*5~SAb8CV&ChHJE!s6S?!LEHzHE$b< zG9nb%@5Oa|`D+x_R=!$3+u+-;YZ<5u9nQ0A(I!3B5`XMBX()}^dy6GS*U(t~etSBxO_d<}6Z_40iZe+Otd>`1kv#6zgI^av zBGsBBOCaFK>ltbXQ8|yT5baq~0<{3%l8cAWpF>)KOQ?Dco=(8zhJ3ea@-;C@I-3s{ z-LBPk1MHpnFL4%LhVFbPV*FSD#et@Q6_Z zB7ZGiN-;#2`E;;0S@reaxTw?6B6BA+=g6H3F7-jER7q zhJ|0-Lf`94oFnk&pdqH4@v%p>S05;e$)>IL+KAU5;J^H7Yn(uEpt|Qq`ylXPd4lhtb{&g8W4%Xf=ergP%pO$ zMYunyBqnOsSt*ydNhVt6>^DTgy3Gm`mao23gKj@q*}?iam$%AI7CDF;^^ZH9HG0pH zeXwKDDr|D>Ae}qe!;@+z_YVNfZH$DKAEaTfl4nSbYcb6lxkpYPH|>C_?}&XU+Czc~ z>gIrT)4N|DXs0qI95X%$ecKZ1YR>}GePc<0xC(xQh%IpLhR)ogf3yc7FZpN8Lq?DN z0L|S~6mLI$t4dZsh;aVZ8jZEBJuqD@kg+f~uAEbkGJ{|oL8wpSBJENFXLNhSF|W4} zPzEgY*wN36cS^!y6L2$Z-a2VQSM9}h?QlwKpWfmCw<6|ab}CCb-k za*jth&`dI%$GDaE z0d*O&!pNF})#4JY9=SS}RXQF8v9xdvtujKyN~WM>Ts;Yvl5%zpoFVxx;==AVp@Y28 zpr^y+`SoQ)bC4gV`_J*YUuEIjd)++(zGBWOmL!n(_wZAk^3El?l>si0w}ZQPdzTGo zz#;U)MS;(^RPWU>}N?R%& zH^9bu|AQW3xGw0A>{bZcyua*bqSQ|6&h7n}kUb)H$+0RfYW{ell(n?3{Aeb#dRise zt98?lnQeWr1kV3L;FV_DJL8c>#-HBE zAMn`q`Y1NxyB8|wmb!pv?&tM>s?;(Go1k>pxI%SIC*NxfwhuPH=Y06Cx?TTWRIFn`ek7nLHxKo~veO`j4Sku;t*ZpxrUUj@9 zfGrQ63aFzLJ^93NM+Qaze--wQ(UErDqIPWC?AW$#+v(VL(s8?p`{h< zAbJ5g`lTl!veW7R%Dw@zkw28U91^TH>Y;E~o*jkO#=QXvAxrZE!=Q-ZYw`k_4N^_A zqEmzPRkOc~yR8iE3y)4d3+{8Xm}+{yRZ1ND0EESmjten`5nvi7mdCd^#RQP0qjPh5 z+6JS}#*v3$S4Soi$@VoXe8spV=nkCalG*ROGz4nLa7loa5`vRV0F`(>q5H__Wfjx+ zV$v6TodIpq^~(Tam5O8rn#81ePWIK2o>@`M2K_i?)Geb=Ew_1h2}VfiMzkqMtjXzUrV|3C8d$2*7WJ z{j=ZSwAd2TS%SXlpi2M!yxh@HKlh#t*w}(M_5BLR6l$$$ES5+Gzs!2+_6i?Wju}5g z_Ac)iFyUf(oauZJ_7oFvw=?L}=O)s7@L|CB&Xt8rs$BL<+I$+m>Uoi7$|c=>Y|pIuBS1B_S@@HBD85onT1eq`znOc71~^45`|weJS@bGyX4o3 z2obt)o}uxg9rVL61ne#+L7-|#`sH9}>SBU$@hI#F0)HO#CW-4Z^R1Jin`$fdk=AP5 zNgs1(z=}2~^JhmV_58lmg$oZ-w1$0mr(WXL%Ws=ri|e^yoBYlsrzV?T(`mKqnc5jP zzIJ0PFFznK@Pkqq?7l}Py<8xU&K#HQmttr>gE;bL;OBp6;G-u(SH`JPz zz8&OnhLcccdW{^0+9(_oP)Ij1YSc5PruP7C+l<$B962bm5r_#MzF$V`SQ|Oe5imTz zcz$*b5dsAtvkb`0J)f?0+vtExC0y#LUNv?x(qw>r5)RrN7ODvBK~7N zbgk{Hu`5J!nu+%}dPXUiVbwoz0?x7U z`m%*En=9c!2!L6%JbdSXK`LQ5{D=@;h8+RDkJ=5%^o4H3RgI5kZC)povFXp_!-U?& z$!V$5j}~u}qPT%at6P%!m6ozW>SRQUTah9!Q6do4agB)O<>|R;gEzd*;!e!J?W&Yr z!1DWxpcN(U$$`}gfO`zQ-f@gk=zWhyis_Hxkx$vjw9kCYtluN^C?3&vr|3~grD8aj zW@zsd2UWtre$m0=>)X!tkjlnIp;RRFcfgp-ATvN70wO2}nott74#T^#X-;||wJ)oz zLTQ6C*2}vy1S9#5gsFpegF_yadttW5-eUz(ZWj>dDOL_J8!sYGO5Wly@J*$ox=}1- zO2+~m>>VHpwVOi8c|vWYLYy(l1y)9ff-ob;SJbxDV5vuU-5kX3)(96kmMVtv5Fj2; z;@&qZ={v$3Mp#o{`5xI}Q`bQNLu(Uxz_4-&yVAckArUsM*9QU3F;t~MWr~ODN8`$1G{$r<(yQqK82rgK z3wHS>Y|lPovX)3lx(cvHMCj6+F$6XLV46u%0AO}R-UUvw(>5DZ>PkDFL;x5IP!rsI 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 literal 0 HcmV?d00001 diff --git a/0.0.9/html/index.html b/0.0.9/html/index.html new file mode 100644 index 0000000..64feef8 --- /dev/null +++ b/0.0.9/html/index.html @@ -0,0 +1,1429 @@ + + + + + + + Guidelines for Teaching C++ + + + + + + + + + + + + + + + + + + + + + Guidelines for Teaching C++ + + + + + + + +
      + +
      + +
      + +
      + +
      +

      Guidelines for Teaching C++

      + +

      Version 0.0.9

      + +

      SG20 (ISO C++ Study Group on Education)

      +
      +
      + +
      +
      +
      + +
      +
      + +
      +

      1 Obtaining This Document: The Most Recent Version and Alternate Formats

      +

      The most recent version of this document is available as an online HTML document at: https://cplusplus.github.io/SG20/latest/.

      +

      The version of the document that you are currently reading is available in the following formats:

      +
        +
      1. online (HTML) format as a single large HTML document: https://cplusplus.github.io/SG20/0.0.9/html

      2. +
      3. EPUB format: https:/cplusplus.github.io/SG20/0.0.9/guidelines.epub

      4. +
      5. online (HTML) format, split across multiple HTML documents: https://cplusplus.github.io/SG20/0.0.9/html_split/ [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

      6. +
      +

      Older versions of this document are also available. In general version ver is available at https://cplusplus.github.io/SG20/ver/html. For example, version 0.1.0 (assuming that this version exists) would be available at https://cplusplus.github.io/SG20/0.1.0/html.

      +

      2 Disclaimer

      +

      This document is intended as a proof of concept to solicit feedback from others. This document is incomplete. This document likely has at least a few errors.

      +

      3 Context and Aim of This Guide

      +

      This document is intended to serve as a resource for instructors to assist in the preparation of courses on C++ in a variety of settings, including university, college, and industry environments. The main objectives of this document are as follows:

      +
        +
      • to provide guidelines for content to be covered by courses of various difficulty levels on C++ (e.g., topics and learning outcomes)
      • +
      • to note some common misunderstandings and problematic points that may be encountered when teaching particular topics
      • +
      • to suggest resources useful for teaching C++
      • +
      • to present examples of curriculum for specific courses
      • +
      +

      This document does not itself provide a curriculum for a single specific course, but is rather a set of guidelines that can be used to prepare curricula for a wide variety of courses that differ in focus and level of sophistication. (This said, however, some links to other documents with examples of curricula for specific courses may be included herein.) This document only intends to target the teaching of the most recently ratified version of the C++ standard. (This said, however, since older versions of this document are also available, these older versions may be of some use to those who need guidance in older versions of the standard, at least versions that do not predate C++20.)

      +

      4 Use of This Document

      +

      [NOTE: This document follows the same license model as the C++ Core Guidelines. The LICENSE document is taken verbatim from the C++ Core Guidelines.] This document is made available under a MIT-style license. In simple terms, this license permits copying, use, modification, and creation of derivative works. A copy of the license is included in the section LICENSE.

      +

      5 Contributing to This Document

      +

      Contributions to this document are welcome. If you would like to help with this project as a contributor, please read the section How to Contribute.

      +

      6 Organization of This Document

      +

      The various concepts (i.e., ideas) to potentially be covered are partitioned into modules. A module is very broad in scope and consists of numerous topics. [Note: Can I suggest that we use the term “area” or “unit” instead of “module”? I think that these other choices are better and also avoid any potential confusion over what is meant by “module” (i.e., C++ term versus plain English term).]

      +

      For each module, topics related to the module are identified. Then, for each topic, learning outcomes are specified. In order to address a wide variety of courses on C++, each topic is addressed at three proficiency levels. These proficiency levels allow each topic to be covered at more than one level of detail. This allows target audiences with different background and learning objectives to be accommodated. The three proficiency levels are as follows:

      +
        +
      • foundational. This level gives the learner the idea that a facility exists, what benefits it offers, and the basic ways of using it. [Note: Isn’t this just “novice”/“beginner”?]

      • +
      • main. This level shows mainstream uses and techniques. For abstraction and organizational mechanisms it also demonstrates how to build them. This level should also give the learner a basic (but not detailed) understanding of how a facility might be implemented so that the learner can have a first-order understanding of any costs involved. [Note: The term “main” is not very descriptive/helpful. Could I suggest using “intermediate”?]

      • +
      • advanced. This level gives information suitable for an expert. For most topics there is an expert level of knowledge that most programmers rarely need and techniques that require detailed understanding of language rules or library implementation.

      • +
      +

      The remainder of this document is organized as follows. The various topics are listed grouped by module. In cases where a topic might be classified into more than one module, the topic is listed under the module of most direct relevance. This is done in order to avoid duplication of content. (In the case that a topic is equally relevant to multiple modules, the decision of which to select is made by a proverbial coin toss.) The order in which modules and topics are presented is not meant to imply any order of coverage in a course. The order in which items are listed is essentially arbitrary.

      +

      7 Summary of Modules and Topics

      +

      In the sections that follow, the various modules and topics are presented. There is one section per module. For each module, a table listing the various topics in that module is provided. The ID for a topic is linked to the detailed coverage of that topic that comes later in the document. If a topic has any learning outcomes at a given proficiency level, this is indicated by a checkmark (“✔️”). If a topic has no learning outcomes (simply because there are not any, not because the information is missing), this is indicated by an em dash (“—”). In the case that the information for a topic is completely missing, a question mark (“?”) symbol is used.

      +

      [NOTE: These topics are taken mostly from the SG20 GitHub repository. They are not intended to be complete in any sense. In fact, by gathering together all topics in one place where they are easily viewed, it is hoped that missing and unbalanced items will be more obvious.]

      +

      7.1 Compilation Model

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Translation Units???
      [?]Headers???
      [?]Modules???
      [?]Name Mangling???
      [?]Phases of Translation???
      [?]Separate Compilation???
      [?]Linkage???
      +

      7.2 Preprocessor

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Preprocessor Metaprogramming???
      [?]Inclusion???
      [?]Macros???
      +

      7.3 Basics Types, Objects, Values, Expressions, Statements, and Control-Flow Constructs

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Constant Objects???
      [?]Declarations and Definitions???
      [?]Selection Constructs (e.g., if, ternary)???
      [?]Looping Constructs (e.g., for, while, etc.)???
      +

      7.4 Functions

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Calling Functions???
      [?]Parameter Passing (e.g., Passing By Value and Reference)???
      [func-args]Default Arguments✔️
      [?]Returning Multiple Values???
      [?]Overloading???
      [udl]User-Defined Literals✔️✔️
      +

      7.5 User-Defined Types (Classes)

      + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Special Member Functions???
      [?]Types???
      [?]Conversions???
      [?]Constructors and Destructors???
      [?]Move/Copy Constructors and Assignment Operators???
      [?]Member Functions???
      [?]Sum Types???
      [?]User-Defined Literals???
      [?]Special Member Functions???
      [?]Guidelines for Special Member Functions (e.g., Rule of Five, Rule of Zero)???
      [copy]Copy Semantics✔️✔️
      [?]Moving and Copying???
      [?]Lambdas???
      +

      7.6 Inheritance and Class Hierarchies

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Virtual Functions???
      [?]Run-Time Type Information???
      +

      7.7 Compile-Time Computation

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Constant Expressions and Constant Evaluation???
      [static-assert]static_assert✔️✔️
      +

      7.8 Generic Programming (Templates)

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Concepts???
      [?]SFINAE???
      [?]Template Metaprogramming???
      [?]Function Templates???
      [?]Requires Clauses???
      [req-expr]Requires Expressions✔️✔️
      +

      7.9 Error Handling

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Classes of Errors???
      [?]errno???
      [?]Error Codes???
      [?]Exception Handling???
      +

      7.10 Standard Library

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Input/Output (I/O)???
      [?]Containers, Iterators, and Algorithms???
      +

      7.11 External (i.e., Non Standard) Libraries

      + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Graphical User Interfaces???
      +

      7.12 Building

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Software Build Tools???
      [?]Strategies for Handling Build Problems???
      +

      7.13 Testing and Debugging

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Source-Level Debuggers???
      [?]Code Sanitizers???
      [?]Test Frameworks???
      [?]Debugging Strategies???
      +

      7.14 Tooling

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Compiler Toolchains???
      [?]IDEs???
      +

      7.15 Software Design

      + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Design by Contract???
      +

      8 Detailed Information for Modules and Topics

      +

      8.1 C++ object model: copy semantics

      +

      Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

      +

      8.1.1 Overview

      +

      Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

      + ++++ + + + + + + + + + + + + + + + + + + + + +
      LevelObjectives
      Foundationalunderstanding how and when are copies made
      Mainimplementing user-defined copy operations
      Advancedspecial cases: copy elision
      +

      8.1.2 Motivation

      +

      Why is this important? Why do we want to learn/teach this topic?

      +

      Copy semantics allows the user to define how objects of a class get replicated and interact on a value level.

      +

      8.1.3 Topic introduction

      +

      Very brief introduction to the topic.

      +

      Explains when and how objects are copied.

      +

      8.1.4 Foundational: How and when are copies made

      +

      8.1.4.1 Background/Required Knowledge

      +

      A student is able to: * explain what a C++ type is? [C++ object model: types] * explain what an object is? [C++ object model: objects], [C++ object model: constant objects] * define and understand class invariants?

      +

      It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain special member functions [C++ object model: special member functions]

      +

      8.1.4.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      +

      A student should be able to:

      +
        +
      1. explain what copy semantics accomplish
      2. +
      +
        +
      • establishing “equivalent” object state in another object
      • +
      +
        +
      1. explain difference between copying a reference and copying a value*
      2. +
      3. explain where copies are made
      4. +
      +

      * In other languages these differences are sometimes referred to as shallow and deep copy.

      +

      8.1.4.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      +
        +
      • Compiler-provided copy operations may result in ownership problems (e.g., char*). These ownership problems can generally be solved by using types whose copy operations have the appropriate semantics, e.g., std::string instead of char* to hold string values.
      • +
      +

      8.1.4.4 Points to cover

      +

      This section lists important details for each point.

      +
        +
      • Principle of copying +
          +
        • Copying of types, which follow the rule of zero
        • +
        • Copying of types, with user defined copy operations
        • +
        • Copying an object does not change the original
        • +
      • +
      • Practical applications +
          +
        • std::unique_ptr (has no copy)
        • +
        • Strings (copies the value)
        • +
      • +
      +

      8.1.5 Main: Implementing user-defined copy operations

      +

      8.1.5.1 Background/Required Knowledge

      +

      A student is able to: * identify special member functions [C++ object model: special member functions]

      +

      It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain the rule of zero [C++ object model: rule-of-zero] * explain the rule of five [C++ object model: rule-of-five]

      +

      8.1.5.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      +

      A student should be able to: * explain when they have to implement the copy operations for their own type * Copy constructor * Copy assignment operator * implement copy operations for their own types * Optional: explain when copying with basic and strong exception guarantees is useful

      +

      8.1.5.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      +
        +
      • Intricacies when implementing copy operations: +
          +
        • Examples of how not to write copy operations (e.g., C++03 std::auto_ptr)
        • +
      • +
      +

      8.1.5.4 Points to cover

      +

      This section lists important details for each point.

      +
        +
      • Copy constructors and copy assignment operators +
          +
        • How compiler generates default copy operations
        • +
        • =default, =delete (No copy)
        • +
        • How-to write your own copy operations
        • +
        • Rule-of-five
        • +
        • Copy assignment operators can be ref-qualified to avoid assigning into temporary objects.
        • +
      • +
      +

      8.1.6 Advanced

      +

      These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

      +

      When can copies be elided and when does the standard guarantee copy elision. References: * Abseil tip of the Week #166 * cppreference - Copy elision

      +

      8.2 Functions: user-defined literals

      +

      Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

      +

      8.2.1 Overview

      +

      Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

      + ++++ + + + + + + + + + + + + + + + + + + + + +
      LevelObjectives
      Foundationalusing and understanding UDLs
      Mainimplementing your own UDLs
      AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
      +

      8.2.2 Motivation

      +

      Why is this important? Why do we want to learn/teach this topic?

      +
        +
      • Allows clearer expression of intent in C++.
      • +
      • std::string: "Hello, world!"s
      • +
      • std::chrono: 3h + 10min + 5s
      • +
      +

      8.2.3 Topic introduction

      +

      Very brief introduction to the topic.

      +
        +
      • Explain the existence of user defined literals. Example: 12min + 17s is terse, expressive and type safe.
      • +
      +

      8.2.4 Foundational: Using UDLs

      +

      8.2.4.1 Background/Required Knowledge

      +

      A student: * knows how to form numeric literals, e.g., 1.5f means a float of value 1.5. * is familiar with the major C++ types: * bool (Boolean type) * int (Integer type) * double (Floating-point type) * std::string (Text type) * std::vector (Collection type) * knows that namespaces exist, and namespace std. * knows what using-declarations and using-directives are. [C++ object model: declarations]

      +

      8.2.4.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      +

      A student should be able to:

      +
        +
      1. use using namespace std::string_literals[1].
      2. +
      3. recognise UDLs in code that they are reading.
      4. +
      5. figure out which UDL definitions for a used type exist.
      6. +
      7. identify parts of the standard library that make use of UDLs.
      8. +
      9. prevent the dangers of temporaries created with "blah"s as well as with std::string{"blah"}.
      10. +
      11. effectively selects the right set of namespaces in using-directives from the sub-namespaces std::literals.
      12. +
      +

      [1]: explain that it’s okay to use a using-directive to “activate” UDLs.

      +

      8.2.4.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      +
        +
      • A student gets confused by the similarities and differences between built-in suffixes and UDLs and between UDLs from different namespaces.
      • +
      • A student “activates” two suffixes with the same signature from different namespaces.
      • +
      +

      8.2.4.4 Points to cover

      +

      This section lists important details for each point.

      +

      8.2.5 Main: implementing UDLs

      +

      8.2.5.1 Background/Required Knowledge

      +
        +
      • All of the above.
      • +
      +

      8.2.5.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      +

      A student should be able to:

      +
        +
      1. write a UDL operator of their own.
      2. +
      3. separate unrelated UDLs into distinct namespaces.
      4. +
      +

      8.2.5.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      +

      No caveats at present. #### Points to cover

      +

      This section lists important details for each point.

      +

      No caveats at present. ### Advanced {#udl-advanced}

      +

      These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

      +

      8.3 Functions: default argument

      +

      Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

      +

      8.3.1 Overview

      +

      Functions in C++ may be overloaded with different numbers and types of parameters. It may be of value to specify default arguments for some number of parameters, to allow a caller to avoid specifying arguments that rarely change, or to enable expanding the set of parameters while maintaining backward compatibility with existing callers.

      + ++++ + + + + + + + + + + + + + + + + + + + + +
      LevelObjective
      FoundationalDefine and use functions with default arguments
      Main
      Advancedrefinement of default arguments through multiple declarations
      +

      8.3.2 Motivation

      +

      Default arguments allow the omission of arguments with obvious or common values. Also may be utilized to extend an existing function signature without forcing changes to existing calling code.

      +

      8.3.3 Topic introduction

      +

      Explain how default arguments work and how to define them.

      +

      8.3.4 Foundational: Using and defining functions with default arguments

      +

      8.3.4.1 Background/Required Knowledge

      +

      A student is able to:

      + +

      8.3.4.2 Student outcomes

      +

      A student should be able to:

      +
        +
      1. Call to a function with a default argument with or without that argument specified
      2. +
      3. Declare a function with a default argument, and omit the default in the definition’s signature
      4. +
      5. Explain when the lifetime of a default argument begins and ends
      6. +
      +

      8.3.4.3 Caveats

      +
        +
      • When no forward-declaration exists, the definition serves as the declaration
      • +
      • When multiple declarations exist, only one may specify the default for any particular parameter, but multiple declarations may specify the defaults for different parameters.
      • +
      • Additional default values may be specified for other parameters in repeat declarations
      • +
      • Calling an overloaded function with fewer arguments may be ambiguous with regard to an overload with default arguments
      • +
      +

      8.3.4.4 Points to cover

      +
        +
      • Default value may only be specified once for each parameter among all declarations
      • +
      • Default values must start from the rightmost parameter and continue leftward without gaps
      • +
      • Considerations of when to use default arguments vs overload set
      • +
      +

      8.3.5 Main: implementing *

      +

      8.3.5.1 Background/required knowledge

      +
        +
      • All of the above.
      • +
      +

      8.3.5.2 Student outcomes

      +

      A student should be able to:

      +

      8.3.5.3 Caveats

      +

      8.3.5.4 Points to cover

      +

      8.3.6 Advanced

      +

      Subsequent redeclarations of the same function may add default argument values, which are then usable by callers. Though a single parameter cannot be given a default argument twice in the same translation unit, it is legal, though ill-advised, to give the same function different default arguments in different translation units.

      +

      8.4 Module name: Requires Expressions

      +

      Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

      +

      8.4.1 Overview

      + ++++ + + + + + + + + + + + + + + + + + + + + +
      LevelObjectives
      FoundationalDefine and use requires-expressions to check satisfaction of expressions by given parameters
      MainDefine and use requires-expressions to check properties of expressions
      Advanced
      +

      8.4.2 Motivation

      +

      Requires-expressions allow a developer to perform compile-time evaluation on the validity of other expressions. These are fundamental to the ability to write concepts. [Compile-time programming: concepts]

      +

      8.5 Topic introduction

      +

      Requires-expressions are compile-time predicates which evaluate to true when their specified set of expressions are all valid for a given set of inputs.

      +

      8.5.1 Foundational: Writing requires-expressions

      +

      8.5.1.1 Background/Required Knowledge

      +

      A student is able to:

      + +

      It is helpful if:

      +
        +
      • The student is aware that attempting to specialize the template with types or values which do not match otherwise unstated assumptions will cause errors within the template.
      • +
      +

      8.5.1.2 Student outcomes

      +

      A student should be able to:

      +
        +
      1. Write a simple-requirement to assert the validity of an expression
      2. +
      3. Write a type-requirement to check the existence of a type by its identifier
      4. +
      5. Write a compound-requirement to test the resulting type of an expression
      6. +
      7. Write a nested-requirement to test the constexpr value of an operation, as opposed to just the syntactic validity
      8. +
      9. Use a requires-expression within a concept, requires-clause, or if constexpr condition
      10. +
      +

      8.5.1.3 Caveats

      +

      To require that expressions, which evaluate to a boolean value like sizeof(t) == 4, evaluate to true a nested-requirement is needed (e.g., requires sizeof(t) == 4;). Omitting the requires results in a simple-requirement, which is satisfied based purely on syntactic validity, not on the result of the operation.

      +

      8.5.1.4 Points to cover

      +
        +
      • All requires-expression requirements terminate with a semicolon.
      • +
      • simple-requirements are used to check that an expression is well-formed.
      • +
      • nested-requirements are introduced with requires and primarily used to check the result of an expression computable by the compiler, including concepts or other requires-expressions.
      • +
      • type-requirements are introduced with typename and used to verify the existence of a type with a particular identifier.
      • +
      • compound-requirements are enclosed in braces and can be used to check the resulting type of an expression.
      • +
      • Checks are performed by the compiler, not at run time.
      • +
      • If covering usage of requires-expression with requires-clause, [Compile-time programming: requires clause] demonstrate requires requires and show how to ever avoid writing it by using a concept. [Compile-time programming: concepts]
      • +
      +

      8.5.2 Main: Advanced requirements

      +

      8.5.2.1 Background/required knowledge

      +
        +
      • All of the above.
      • +
      • Knowledge of noexcept
      • +
      +

      A student is able to:

      + +

      8.5.2.2 Student outcomes

      +

      A student should be able to:

      +
        +
      1. Write compound-requirements which test the noexceptness of an expression.
      2. +
      3. Use a concept as the target of a compound-requirement.
      4. +
      +

      8.5.2.3 Caveats

      +

      8.5.2.4 Points to cover

      +
        +
      • Compound-requirements allow the optional ability to test whether an expression is marked as noexcept, by using a trailing noexcept keyword.
      • +
      + +
        +
      • If the return-type-requirement of a compound-requirement is a concept, that concept is given the resulting type as the first parameter, followed by the specified parameters in the compound-requirement. { ++x } -> C<int> would substitute C<decltype((++x)), int> and check that concept C is satisfied for those parameters.
      • +
      +

      8.5.3 Advanced

      +

      8.6 Meta-error handling: static_assert

      +

      Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

      +

      8.6.1 Overview

      +

      Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

      + ++++ + + + + + + + + + + + + + + + + + + + + +
      LevelObjectives
      FoundationalCalling static_assert with a constant expression
      MainUsing static_assert to detect contract violations and improve error messages
      Advanced
      +

      8.6.2 Motivation

      +

      Why is this important? Why do we want to learn/teach this topic?

      +

      static_assert allows the developer to enforce that conditions which can be checked during compilation will force build errors when violated. Additionally, they are the best mechanism by which a developer can pass useful information to other developers regarding what violation occurred or what must be done, instead.

      +

      8.6.3 Topic introduction

      +

      Very brief introduction to the topic.

      +

      static_assert is a compile-time evaluated function that asserts the truth of a supplied predicate, issuing an optional user-supplied error message if the predicate is false.

      +

      8.6.4 Foundational: Calling static_assert with a constant expression

      +

      8.6.4.1 Background/Required Knowledge

      +

      A student:

      +
        +
      • Should be able to explain the difference between code evaluated at compile-time and run-time
      • +
      • Should be able to cite some examples of compile-time known information, such as sizeof(T)
      • +
      +

      8.6.4.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      +

      A student should be able to:

      +
        +
      1. Assert the expected size of a structure using static_assert
      2. +
      +

      8.6.4.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      +

      8.6.4.4 Points to cover

      +

      This section lists important details for each point.

      +
        +
      • X
      • +
      • In addition to what is wrong, a good error message will inform the user of how to correct it
      • +
      +

      8.6.5 Main: Contracts and static_assert

      +

      8.6.5.1 Background/Required Knowledge

      +
        +
      • All of the above.
      • +
      • General understanding of compile-time requirements
      • +
      +

      8.6.5.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      +

      A student should be able to:

      +
        +
      1. Utilize static_assert to verify preconditions of a meta-function
      2. +
      3. Utilize static_assert to verify the results of meta-functions for known values
      4. +
      +

      8.6.5.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      +

      8.6.5.4 Points to cover

      +

      This section lists important details for each point.

      +
        +
      • When writing a meta-function, use static_assert to test the results
      • +
      • Write static_assert calls at the scope of the code they are guarding
      • +
      + +

      8.6.6 Advanced

      +

      These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

      +

      9 Examples of Course Curricula

      +

      [NOTE: Anyone have any suggestions of items to add here?] The following are examples of curricula for course on C++: …

      +

      10 License

      +

      [NOTE: This license is copied verbatim from the C++ Core Guidelines.]

      +
      Copyright (c) Standard C++ Foundation and its contributors
      +
      +Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
      +perpetual license to copy, use, modify, and create derivative works from this
      +project for your personal or internal business use only. The above copyright
      +notice and this permission notice shall be included in all copies or
      +substantial portions of the project. This license does not grant permission
      +to use the trade names, trademarks, service marks, or product names of the
      +licensor, except as required for reasonable and customary use in describing
      +the origin of the project.
      +
      +Standard C++ Foundation reserves the right to accept contributions to the
      +project at its discretion.
      +
      +By contributing material to this project, you grant Standard C++ Foundation,
      +and those who receive the material directly or indirectly from Standard C++
      +Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
      +transferrable license to reproduce, prepare derivative works of, publicly
      +display, publicly perform, and distribute your contributed material and such
      +derivative works, and to sublicense any or all of the foregoing rights to third
      +parties for commercial or non-commercial use.  You also grant Standard C++
      +Foundation, and those who receive the material directly or indirectly from
      +Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
      +irrevocable license under your patent claims that directly read on your
      +contributed material to make, have made, use, offer to sell, sell and import
      +or otherwise dispose of the material. You warrant that your material is your
      +original work, or that you have the right to grant the above licenses.
      +
      +THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
      +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
      +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
      +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
      +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
      +OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
      +PROJECT.
      +
      +If you believe that anything in the project infringes your copyright, please
      +contact us at admin@isocpp.org with your contact information and a detailed
      +description of your intellectual property, including a specific URL where you
      +believe your intellectual property is being infringed.
      +
      +

      11 Contributors

      +
      Christopher Di Bella
      +Florian Sattler
      +Michael Adams
      +rwdougla
      +

      12 How To Contribute

      +

      Before attempting to contribute any content for consideration for inclusion in this document, please read the information below and and the referenced documents as appropriate.

      +

      All contributions to this project must be made in accordance with the license in section License. This teaching-guidelines document only offers guidance on teaching C++ as it is specified in the current version of the C++ standard. So, content should be presented relative to the most-recently ratified version of the standard. A detailed explanation of how to present the material for a topic is given in:

      +
        +
      • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.
      • +
      +

      Any potential contributors should ensure that they read this document. The following document may also be helpful in providing some general background on the modular approach to teaching followed herein:

      + +

      In order to prepare content, it is important to understand what learning outcomes are, and how to prepare good ones. Some information on learning outcomes can be found in the References section. The following document offers a concise introduction to learning outcomes:

      + +

      13 Glossary

      +

      Some possible terms to include in the glossary:

      +
        +
      • learning objective
      • +
      • learning outcome
      • +
      +

      14 References

      +

      14.1 References on Learning Outcomes

      + + +
        +
      • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — Standing Document for SG20: Guidelines for Teaching C++ to Beginners. https://wg21.link/p1389.

      • +
      • Christopher Di Bella. P1725R0 — Modular Topic Design. https://wg21.link/p1725.

      • +
      • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.

      • +
      • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study Group: C++ Education. https://wg21.link/p1231.

      • +
      • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 — Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0.

      • +
      +
      +
      + +
      + + diff --git a/0.0.9/html_split/Advanced.html b/0.0.9/html_split/Advanced.html new file mode 100644 index 0000000..c4d659a --- /dev/null +++ b/0.0.9/html_split/Advanced.html @@ -0,0 +1,60 @@ + + + + + +Advanced (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      8.1.6 Advanced

      +

      These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

      +

      When can copies be elided and when does the standard guarantee copy +elision. References: * Abseil tip of +the Week #166 * +cppreference +- Copy elision +

      + + + + + diff --git a/0.0.9/html_split/Background_002fRequired-Knowledge.html b/0.0.9/html_split/Background_002fRequired-Knowledge.html new file mode 100644 index 0000000..d3ee185 --- /dev/null +++ b/0.0.9/html_split/Background_002fRequired-Knowledge.html @@ -0,0 +1,65 @@ + + + + + +Background/Required Knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1.4.1 Background/Required Knowledge

      +

      A student is able to: * explain what a C++ type is? +[C++ object model: types] +* explain what an object is? +[C++ object +model: objects], +[C++ object model: +constant objects] * define and understand class invariants? +

      +

      It helps when a student is able to: * use move semantics +[C++ object model: move +semantics] * explain special member functions +[C++ object model: +special member functions] +

      + + + + + diff --git a/0.0.9/html_split/Background_002frequired-knowledge.html b/0.0.9/html_split/Background_002frequired-knowledge.html new file mode 100644 index 0000000..79fd94d --- /dev/null +++ b/0.0.9/html_split/Background_002frequired-knowledge.html @@ -0,0 +1,54 @@ + + + + + +Background/required knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      8.3.5.1 Background/required knowledge

      +
        +
      • All of the above. +
      + + + + + + diff --git a/0.0.9/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html b/0.0.9/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html new file mode 100644 index 0000000..3e850b1 --- /dev/null +++ b/0.0.9/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html @@ -0,0 +1,60 @@ + + + + + +Basics Types Objects Values Expressions Statements and Control-Flow Constructs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.3 Basics Types, Objects, Values, Expressions, Statements, and

      +

      Control-Flow Constructs +

      + + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Constant Objects???
      [‘?’]Declarations and Definitions???
      [‘?’]Selection Constructs (e.g., if, ternary)???
      [‘?’]Looping Constructs (e.g., for, while, etc.)???
      + + + + + + diff --git a/0.0.9/html_split/Building.html b/0.0.9/html_split/Building.html new file mode 100644 index 0000000..e628fd0 --- /dev/null +++ b/0.0.9/html_split/Building.html @@ -0,0 +1,57 @@ + + + + + +Building (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.12 Building

      + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Software Build Tools???
      [‘?’]Strategies for Handling Build Problems???
      + + + + + + diff --git a/0.0.9/html_split/C_002b_002b-object-model-copy-semantics.html b/0.0.9/html_split/C_002b_002b-object-model-copy-semantics.html new file mode 100644 index 0000000..6d7350c --- /dev/null +++ b/0.0.9/html_split/C_002b_002b-object-model-copy-semantics.html @@ -0,0 +1,69 @@ + + + + + +C++ object model copy semantics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1 C++ object model: copy semantics

      +

      Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

      + + + + + + + + + + + + + + diff --git a/0.0.9/html_split/Caveats.html b/0.0.9/html_split/Caveats.html new file mode 100644 index 0000000..c5303c9 --- /dev/null +++ b/0.0.9/html_split/Caveats.html @@ -0,0 +1,62 @@ + + + + + +Caveats (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1.4.3 Caveats

      +

      This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

      +
        +
      • Compiler-provided copy operations may result in ownership problems +(e.g., char*). These ownership problems can generally be solved +by using types whose copy operations have the appropriate semantics, +e.g., std::string instead of char* to hold string values. +
      + + + + + + diff --git a/0.0.9/html_split/Compilation-Model.html b/0.0.9/html_split/Compilation-Model.html new file mode 100644 index 0000000..de11703 --- /dev/null +++ b/0.0.9/html_split/Compilation-Model.html @@ -0,0 +1,62 @@ + + + + + +Compilation Model (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.1 Compilation Model

      + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Translation Units???
      [‘?’]Headers???
      [‘?’]Modules???
      [‘?’]Name Mangling???
      [‘?’]Phases of Translation???
      [‘?’]Separate Compilation???
      [‘?’]Linkage???
      + + + + + + diff --git a/0.0.9/html_split/Compile_002dTime-Computation.html b/0.0.9/html_split/Compile_002dTime-Computation.html new file mode 100644 index 0000000..b9aaa0e --- /dev/null +++ b/0.0.9/html_split/Compile_002dTime-Computation.html @@ -0,0 +1,57 @@ + + + + + +Compile-Time Computation (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.7 Compile-Time Computation

      + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Constant Expressions and Constant Evaluation???
      [‘static-assert’]static_assert‘✔️’‘✔️’
      + + + + + + diff --git a/0.0.9/html_split/Context-and-Aim-of-This-Guide.html b/0.0.9/html_split/Context-and-Aim-of-This-Guide.html new file mode 100644 index 0000000..60efa61 --- /dev/null +++ b/0.0.9/html_split/Context-and-Aim-of-This-Guide.html @@ -0,0 +1,76 @@ + + + + + +Context and Aim of This Guide (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      +Next: , Previous: , Up: Top   [Contents]

      +
      +
      +

      3 Context and Aim of This Guide

      +

      This document is intended to serve as a resource for instructors to +assist in the preparation of courses on C++ in a variety of settings, +including university, college, and industry environments. The main +objectives of this document are as follows: +

      +
        +
      • to provide guidelines for content to be covered by courses of various +difficulty levels on C++ (e.g., topics and learning outcomes) +
      • to note some common misunderstandings and problematic points that may be +encountered when teaching particular topics +
      • to suggest resources useful for teaching C++ +
      • to present examples of curriculum for specific courses +
      + +

      This document does not itself provide a curriculum for a single specific +course, but is rather a set of guidelines that can be used to prepare +curricula for a wide variety of courses that differ in focus and level +of sophistication. (This said, however, some links to other documents +with examples of curricula for specific courses may be included herein.) +This document only intends to target the teaching of the most recently +ratified version of the C++ standard. (This said, however, since older +versions of this document are also available, these older versions may +be of some use to those who need guidance in older versions of the +standard, at least versions that do not predate C++20.) +

      + + + + + diff --git a/0.0.9/html_split/Contributing-to-This-Document.html b/0.0.9/html_split/Contributing-to-This-Document.html new file mode 100644 index 0000000..eac6c28 --- /dev/null +++ b/0.0.9/html_split/Contributing-to-This-Document.html @@ -0,0 +1,55 @@ + + + + + +Contributing to This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      5 Contributing to This Document

      +

      Contributions to this document are welcome. If you would like to help +with this project as a contributor, please read the section +‘How to Contribute’. +

      + + + + + diff --git a/0.0.9/html_split/Contributors.html b/0.0.9/html_split/Contributors.html new file mode 100644 index 0000000..53ba0ef --- /dev/null +++ b/0.0.9/html_split/Contributors.html @@ -0,0 +1,57 @@ + + + + + +Contributors (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      +Next: , Previous: , Up: Top   [Contents]

      +
      +
      +

      11 Contributors

      + +
      Christopher Di Bella
      +Florian Sattler
      +Michael Adams
      +rwdougla
      +
      + + + + + diff --git a/0.0.9/html_split/Detailed-Information-for-Modules-and-Topics.html b/0.0.9/html_split/Detailed-Information-for-Modules-and-Topics.html new file mode 100644 index 0000000..c8c9fcd --- /dev/null +++ b/0.0.9/html_split/Detailed-Information-for-Modules-and-Topics.html @@ -0,0 +1,67 @@ + + + + + +Detailed Information for Modules and Topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8 Detailed Information for Modules and Topics

      + + + + + + + + + + + + + + + diff --git a/0.0.9/html_split/Disclaimer.html b/0.0.9/html_split/Disclaimer.html new file mode 100644 index 0000000..a911983 --- /dev/null +++ b/0.0.9/html_split/Disclaimer.html @@ -0,0 +1,55 @@ + + + + + +Disclaimer (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      2 Disclaimer

      +

      This document is intended as a proof of concept to solicit feedback from +others. This document is incomplete. This document likely has at least a +few errors. +

      + + + + + diff --git a/0.0.9/html_split/Error-Handling.html b/0.0.9/html_split/Error-Handling.html new file mode 100644 index 0000000..1f8d3e0 --- /dev/null +++ b/0.0.9/html_split/Error-Handling.html @@ -0,0 +1,59 @@ + + + + + +Error Handling (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.9 Error Handling

      + + + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Classes of Errors???
      [‘?’]errno???
      [‘?’]Error Codes???
      [‘?’]Exception Handling???
      + + + + + + diff --git a/0.0.9/html_split/Examples-of-Course-Curricula.html b/0.0.9/html_split/Examples-of-Course-Curricula.html new file mode 100644 index 0000000..64eb64b --- /dev/null +++ b/0.0.9/html_split/Examples-of-Course-Curricula.html @@ -0,0 +1,53 @@ + + + + + +Examples of Course Curricula (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      9 Examples of Course Curricula

      +

      [NOTE: Anyone have any suggestions of items to add here?] The +following are examples of curricula for course on C++: … +

      + + + + + diff --git a/0.0.9/html_split/External-ie-Non-Standard-Libraries.html b/0.0.9/html_split/External-ie-Non-Standard-Libraries.html new file mode 100644 index 0000000..2bf081e --- /dev/null +++ b/0.0.9/html_split/External-ie-Non-Standard-Libraries.html @@ -0,0 +1,56 @@ + + + + + +External ie Non Standard Libraries (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.11 External (i.e., Non Standard) Libraries

      + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Graphical User Interfaces???
      + + + + + + diff --git a/0.0.9/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html b/0.0.9/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html new file mode 100644 index 0000000..ce2c1b0 --- /dev/null +++ b/0.0.9/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html @@ -0,0 +1,62 @@ + + + + + +Foundational Calling static_assert with a constant expression (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
      +

      8.6.4 Foundational: Calling static_assert with a constant

      +

      expression +

      + + + + + + + + + + + + diff --git a/0.0.9/html_split/Foundational-How-and-when-are-copies-made.html b/0.0.9/html_split/Foundational-How-and-when-are-copies-made.html new file mode 100644 index 0000000..4cec33b --- /dev/null +++ b/0.0.9/html_split/Foundational-How-and-when-are-copies-made.html @@ -0,0 +1,63 @@ + + + + + +Foundational How and when are copies made (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1.4 Foundational: How and when are copies made

      + + + + + + + + + + + + + diff --git a/0.0.9/html_split/Foundational-Using-UDLs.html b/0.0.9/html_split/Foundational-Using-UDLs.html new file mode 100644 index 0000000..adb461e --- /dev/null +++ b/0.0.9/html_split/Foundational-Using-UDLs.html @@ -0,0 +1,61 @@ + + + + + +Foundational Using UDLs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
      +

      8.2.4 Foundational: Using UDLs

      + + + + + + + + + + + + + diff --git a/0.0.9/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html b/0.0.9/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html new file mode 100644 index 0000000..e37a992 --- /dev/null +++ b/0.0.9/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html @@ -0,0 +1,62 @@ + + + + + +Foundational Using and defining functions with default arguments (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
      +

      8.3.4 Foundational: Using and defining functions with default

      +

      arguments +

      + + + + + + + + + + + + diff --git a/0.0.9/html_split/Foundational-Writing-requires_002dexpressions.html b/0.0.9/html_split/Foundational-Writing-requires_002dexpressions.html new file mode 100644 index 0000000..6846c6e --- /dev/null +++ b/0.0.9/html_split/Foundational-Writing-requires_002dexpressions.html @@ -0,0 +1,60 @@ + + + + + +Foundational Writing requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +
      +

      8.5.1 Foundational: Writing requires-expressions

      + + + + + + + + + + + + + diff --git a/0.0.9/html_split/Functions-default-argument.html b/0.0.9/html_split/Functions-default-argument.html new file mode 100644 index 0000000..2571ca9 --- /dev/null +++ b/0.0.9/html_split/Functions-default-argument.html @@ -0,0 +1,67 @@ + + + + + +Functions default argument (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
      +

      8.3 Functions: default argument

      +

      Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

      + + + + + + + + + + + + + + diff --git a/0.0.9/html_split/Functions-user_002ddefined-literals.html b/0.0.9/html_split/Functions-user_002ddefined-literals.html new file mode 100644 index 0000000..7e41de9 --- /dev/null +++ b/0.0.9/html_split/Functions-user_002ddefined-literals.html @@ -0,0 +1,66 @@ + + + + + +Functions user-defined literals (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      8.2 Functions: user-defined literals

      +

      Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

      + + + + + + + + + + + + + diff --git a/0.0.9/html_split/Functions.html b/0.0.9/html_split/Functions.html new file mode 100644 index 0000000..82175a5 --- /dev/null +++ b/0.0.9/html_split/Functions.html @@ -0,0 +1,61 @@ + + + + + +Functions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.4 Functions

      + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Calling Functions???
      [‘?’]Parameter Passing (e.g., Passing By Value and Reference)???
      [‘func-args’]Default Arguments‘✔️’
      [‘?’]Returning Multiple Values???
      [‘?’]Overloading???
      [‘udl’]User-Defined Literals‘✔️’‘✔️’
      + + + + + + diff --git a/0.0.9/html_split/Generic-Programming-Templates.html b/0.0.9/html_split/Generic-Programming-Templates.html new file mode 100644 index 0000000..1a22cd7 --- /dev/null +++ b/0.0.9/html_split/Generic-Programming-Templates.html @@ -0,0 +1,61 @@ + + + + + +Generic Programming Templates (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.8 Generic Programming (Templates)

      + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Concepts???
      [‘?’]SFINAE???
      [‘?’]Template Metaprogramming???
      [‘?’]Function Templates???
      [‘?’]Requires Clauses???
      [‘req-expr’]Requires Expressions‘✔️’‘✔️’
      + + + + + + diff --git a/0.0.9/html_split/Glossary.html b/0.0.9/html_split/Glossary.html new file mode 100644 index 0000000..2bf24f2 --- /dev/null +++ b/0.0.9/html_split/Glossary.html @@ -0,0 +1,58 @@ + + + + + +Glossary (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      +Next: , Previous: , Up: Top   [Contents]

      +
      +
      +

      13 Glossary

      +

      Some possible terms to include in the glossary: +

      +
        +
      • learning objective +
      • learning outcome +
      + + + + + + diff --git a/0.0.9/html_split/How-To-Contribute.html b/0.0.9/html_split/How-To-Contribute.html new file mode 100644 index 0000000..f1963d5 --- /dev/null +++ b/0.0.9/html_split/How-To-Contribute.html @@ -0,0 +1,89 @@ + + + + + +How To Contribute (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      +Next: , Previous: , Up: Top   [Contents]

      +
      +
      +

      12 How To Contribute

      +

      Before attempting to contribute any content for consideration for +inclusion in this document, please read the information below and and +the referenced documents as appropriate. +

      +

      All contributions to this project must be made in accordance with the +license in section License. This teaching-guidelines +document only offers guidance on teaching C++ as it is specified in the +current version of the C++ standard. So, content should be presented +relative to the most-recently ratified version of the standard. A +detailed explanation of how to present the material for a topic is given +in: +

      +
        +
      • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to +structure a teaching topic. https://wg21.link/p2193. +
      + +

      Any potential contributors should ensure that they read this document. +The following document may also be helpful in providing some general +background on the modular approach to teaching followed herein: +

      + + +

      In order to prepare content, it is important to understand what learning +outcomes are, and how to prepare good ones. Some information on learning +outcomes can be found in the References section. The +following document offers a concise introduction to learning outcomes: +

      + + + + + + + diff --git a/0.0.9/html_split/Inheritance-and-Class-Hierarchies.html b/0.0.9/html_split/Inheritance-and-Class-Hierarchies.html new file mode 100644 index 0000000..1a394b0 --- /dev/null +++ b/0.0.9/html_split/Inheritance-and-Class-Hierarchies.html @@ -0,0 +1,57 @@ + + + + + +Inheritance and Class Hierarchies (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.6 Inheritance and Class Hierarchies

      + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Virtual Functions???
      [‘?’]Run-Time Type Information???
      + + + + + + diff --git a/0.0.9/html_split/License.html b/0.0.9/html_split/License.html new file mode 100644 index 0000000..38d2d8d --- /dev/null +++ b/0.0.9/html_split/License.html @@ -0,0 +1,100 @@ + + + + + +License (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      +Next: , Previous: , Up: Top   [Contents]

      +
      +
      +

      10 License

      +

      [NOTE: This license is copied verbatim from the C++ Core +Guidelines.] +

      +
      Copyright (c) Standard C++ Foundation and its contributors
      +
      +Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
      +perpetual license to copy, use, modify, and create derivative works from this
      +project for your personal or internal business use only. The above copyright
      +notice and this permission notice shall be included in all copies or
      +substantial portions of the project. This license does not grant permission
      +to use the trade names, trademarks, service marks, or product names of the
      +licensor, except as required for reasonable and customary use in describing
      +the origin of the project.
      +
      +Standard C++ Foundation reserves the right to accept contributions to the
      +project at its discretion.
      +
      +By contributing material to this project, you grant Standard C++ Foundation,
      +and those who receive the material directly or indirectly from Standard C++
      +Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
      +transferrable license to reproduce, prepare derivative works of, publicly
      +display, publicly perform, and distribute your contributed material and such
      +derivative works, and to sublicense any or all of the foregoing rights to third
      +parties for commercial or non-commercial use.  You also grant Standard C++
      +Foundation, and those who receive the material directly or indirectly from
      +Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
      +irrevocable license under your patent claims that directly read on your
      +contributed material to make, have made, use, offer to sell, sell and import
      +or otherwise dispose of the material. You warrant that your material is your
      +original work, or that you have the right to grant the above licenses.
      +
      +THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
      +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
      +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
      +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
      +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
      +OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
      +PROJECT.
      +
      +If you believe that anything in the project infringes your copyright, please
      +contact us at admin@isocpp.org with your contact information and a detailed
      +description of your intellectual property, including a specific URL where you
      +believe your intellectual property is being infringed.
      +
      +
      +
      +

      +Next: , Previous: , Up: Top   [Contents]

      +
      + + + + + diff --git a/0.0.9/html_split/Main-Advanced-requirements.html b/0.0.9/html_split/Main-Advanced-requirements.html new file mode 100644 index 0000000..6c4ac0e --- /dev/null +++ b/0.0.9/html_split/Main-Advanced-requirements.html @@ -0,0 +1,60 @@ + + + + + +Main Advanced requirements (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +
      +

      8.5.2 Main: Advanced requirements

      + + + + + + + + + + + + + diff --git a/0.0.9/html_split/Main-Contracts-and-static_005fassert.html b/0.0.9/html_split/Main-Contracts-and-static_005fassert.html new file mode 100644 index 0000000..6c0ba46 --- /dev/null +++ b/0.0.9/html_split/Main-Contracts-and-static_005fassert.html @@ -0,0 +1,61 @@ + + + + + +Main Contracts and static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
      +

      8.6.5 Main: Contracts and static_assert

      + + + + + + + + + + + + + diff --git a/0.0.9/html_split/Main-Implementing-user_002ddefined-copy-operations.html b/0.0.9/html_split/Main-Implementing-user_002ddefined-copy-operations.html new file mode 100644 index 0000000..e38dfd6 --- /dev/null +++ b/0.0.9/html_split/Main-Implementing-user_002ddefined-copy-operations.html @@ -0,0 +1,62 @@ + + + + + +Main Implementing user-defined copy operations (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      8.1.5 Main: Implementing user-defined copy operations

      + + + + + + + + + + + + + diff --git a/0.0.9/html_split/Main-implementing-UDLs.html b/0.0.9/html_split/Main-implementing-UDLs.html new file mode 100644 index 0000000..1f6f381 --- /dev/null +++ b/0.0.9/html_split/Main-implementing-UDLs.html @@ -0,0 +1,59 @@ + + + + + +Main implementing UDLs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
      +

      8.2.5 Main: implementing UDLs

      + + + + + + + + + + + + diff --git a/0.0.9/html_split/Main-implementing-_002a.html b/0.0.9/html_split/Main-implementing-_002a.html new file mode 100644 index 0000000..b661f2d --- /dev/null +++ b/0.0.9/html_split/Main-implementing-_002a.html @@ -0,0 +1,62 @@ + + + + + +Main implementing * (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      8.3.5 Main: implementing *

      + + + + + + + + + + + + + diff --git a/0.0.9/html_split/Meta_002derror-handling-static_005fassert.html b/0.0.9/html_split/Meta_002derror-handling-static_005fassert.html new file mode 100644 index 0000000..f81a34e --- /dev/null +++ b/0.0.9/html_split/Meta_002derror-handling-static_005fassert.html @@ -0,0 +1,67 @@ + + + + + +Meta-error handling static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
      +

      8.6 Meta-error handling: static_assert

      +

      Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

      + + + + + + + + + + + + + + diff --git a/0.0.9/html_split/Module-name-Requires-Expressions.html b/0.0.9/html_split/Module-name-Requires-Expressions.html new file mode 100644 index 0000000..8bab76c --- /dev/null +++ b/0.0.9/html_split/Module-name-Requires-Expressions.html @@ -0,0 +1,59 @@ + + + + + +Module name Requires Expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
      +

      8.4 Module name: Requires Expressions

      +

      Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

      + + + + + + + + + + diff --git a/0.0.9/html_split/Motivation.html b/0.0.9/html_split/Motivation.html new file mode 100644 index 0000000..40b0ec9 --- /dev/null +++ b/0.0.9/html_split/Motivation.html @@ -0,0 +1,57 @@ + + + + + +Motivation (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1.2 Motivation

      +

      Why is this important? Why do we want to learn/teach this +topic? +

      +

      Copy semantics allows the user to define how objects of a class get +replicated and interact on a value level. +

      + + + + + diff --git a/0.0.9/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html b/0.0.9/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html new file mode 100644 index 0000000..2199561 --- /dev/null +++ b/0.0.9/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html @@ -0,0 +1,77 @@ + + + + + +Obtaining This Document The Most Recent Version and Alternate Formats (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      +Next: , Previous: , Up: Top   [Contents]

      +
      +
      +

      1 Obtaining This Document: The Most Recent Version and Alternate

      +

      Formats +The most recent version of this document is available as an online HTML +document at: https://cplusplus.github.io/SG20/latest/. +

      +

      The version of the document that you are currently reading is available +in the following formats: +

      +
        +
      1. online (HTML) format as a single large HTML document: +https://cplusplus.github.io/SG20/0.0.9/html + +
      2. EPUB format: https:/cplusplus.github.io/SG20/0.0.9/guidelines.epub + +
      3. online (HTML) format, split across multiple HTML documents: +https://cplusplus.github.io/SG20/0.0.9/html_split/ [Note: +The support for this format needs more work (in order to beautify and +fix linking issues).] + +
      + +

      Older versions of this document are also available. In general version +ver is available at +https://cplusplus.github.io/SG20/ver/html. For example, version +0.1.0 (assuming that this version exists) would be available at +https://cplusplus.github.io/SG20/0.1.0/html. +

      + + + + + diff --git a/0.0.9/html_split/Organization-of-This-Document.html b/0.0.9/html_split/Organization-of-This-Document.html new file mode 100644 index 0000000..3e48985 --- /dev/null +++ b/0.0.9/html_split/Organization-of-This-Document.html @@ -0,0 +1,101 @@ + + + + + +Organization of This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      6 Organization of This Document

      +

      The various concepts (i.e., ideas) to potentially be covered are +partitioned into modules. A module is very broad in scope and consists +of numerous topics. [Note: Can I suggest that we use the term +“area” or “unit” instead of “module”? I think that these other +choices are better and also avoid any potential confusion over what is +meant by “module” (i.e., C++ term versus plain English term).] +

      +

      For each module, topics related to the module are identified. Then, for +each topic, learning outcomes are specified. In order to address a wide +variety of courses on C++, each topic is addressed at three proficiency +levels. These proficiency levels allow each topic to be covered at more +than one level of detail. This allows target audiences with different +background and learning objectives to be accommodated. The three +proficiency levels are as follows: +

      +
        +
      • foundational. This level gives the learner the idea that a facility +exists, what benefits it offers, and the basic ways of using it. +[Note: Isn’t this just “novice”/“beginner”?] + +
      • main. This level shows mainstream uses and techniques. For abstraction +and organizational mechanisms it also demonstrates how to build them. +This level should also give the learner a basic (but not detailed) +understanding of how a facility might be implemented so that the learner +can have a first-order understanding of any costs involved. +[Note: The term “main” is not very descriptive/helpful. Could +I suggest using “intermediate”?] + +
      • advanced. This level gives information suitable for an expert. For most +topics there is an expert level of knowledge that most programmers +rarely need and techniques that require detailed understanding of +language rules or library implementation. + +
      + +

      The remainder of this document is organized as follows. The various +topics are listed grouped by module. In cases where a topic might be +classified into more than one module, the topic is listed under the +module of most direct relevance. This is done in order to avoid +duplication of content. (In the case that a topic is equally relevant to +multiple modules, the decision of which to select is made by a +proverbial coin toss.) The order in which modules and topics are +presented is not meant to imply any order of coverage in a course. The +order in which items are listed is essentially arbitrary. +

      +
      + + + + + + diff --git a/0.0.9/html_split/Overview.html b/0.0.9/html_split/Overview.html new file mode 100644 index 0000000..be44bfa --- /dev/null +++ b/0.0.9/html_split/Overview.html @@ -0,0 +1,61 @@ + + + + + +Overview (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1.1 Overview

      +

      Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

      + + + + + +
      LevelObjectives
      Foundationalunderstanding how and when are copies made
      Mainimplementing user-defined copy operations
      Advancedspecial cases: copy elision
      + + + + + + diff --git a/0.0.9/html_split/Points-to-cover.html b/0.0.9/html_split/Points-to-cover.html new file mode 100644 index 0000000..ba4b5cc --- /dev/null +++ b/0.0.9/html_split/Points-to-cover.html @@ -0,0 +1,69 @@ + + + + + +Points to cover (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1.4.4 Points to cover

      +

      This section lists important details for each point. +

      +
        +
      • Principle of copying +
          +
        • Copying of types, which follow the rule of zero +
        • Copying of types, with user defined copy operations +
        • Copying an object does not change the original +
        + +
      • Practical applications +
          +
        • std::unique_ptr (has no copy) +
        • Strings (copies the value) +
        + +
      + + + + + + diff --git a/0.0.9/html_split/Preprocessor.html b/0.0.9/html_split/Preprocessor.html new file mode 100644 index 0000000..345e396 --- /dev/null +++ b/0.0.9/html_split/Preprocessor.html @@ -0,0 +1,58 @@ + + + + + +Preprocessor (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.2 Preprocessor

      + + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Preprocessor Metaprogramming???
      [‘?’]Inclusion???
      [‘?’]Macros???
      + + + + + + diff --git a/0.0.9/html_split/References-on-Learning-Outcomes.html b/0.0.9/html_split/References-on-Learning-Outcomes.html new file mode 100644 index 0000000..7b74cad --- /dev/null +++ b/0.0.9/html_split/References-on-Learning-Outcomes.html @@ -0,0 +1,71 @@ + + + + + +References on Learning Outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      14.1 References on Learning Outcomes

      + + + + + + + diff --git a/0.0.9/html_split/References.html b/0.0.9/html_split/References.html new file mode 100644 index 0000000..f595be2 --- /dev/null +++ b/0.0.9/html_split/References.html @@ -0,0 +1,59 @@ + + + + + +References (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      +Previous: , Up: Top   [Contents]

      +
      +
      +

      14 References

      + + + + + + + + + + + diff --git a/0.0.9/html_split/Software-Design.html b/0.0.9/html_split/Software-Design.html new file mode 100644 index 0000000..6b4f6c8 --- /dev/null +++ b/0.0.9/html_split/Software-Design.html @@ -0,0 +1,56 @@ + + + + + +Software Design (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.15 Software Design

      + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Design by Contract???
      + + + + + + diff --git a/0.0.9/html_split/Standard-Library.html b/0.0.9/html_split/Standard-Library.html new file mode 100644 index 0000000..c80c7fc --- /dev/null +++ b/0.0.9/html_split/Standard-Library.html @@ -0,0 +1,57 @@ + + + + + +Standard Library (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.10 Standard Library

      + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Input/Output (I/O)???
      [‘?’]Containers, Iterators, and Algorithms???
      + + + + + + diff --git a/0.0.9/html_split/Student-outcomes.html b/0.0.9/html_split/Student-outcomes.html new file mode 100644 index 0000000..c604549 --- /dev/null +++ b/0.0.9/html_split/Student-outcomes.html @@ -0,0 +1,73 @@ + + + + + +Student outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1.4.2 Student outcomes

      +

      A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

      +

      A student should be able to: +

      +
        +
      1. explain what copy semantics accomplish +
      + +
        +
      • establishing “equivalent” object state in another object +
      + +
        +
      1. explain difference between copying a reference and copying a value* +
      2. explain where copies are made +
      + +

      * In other languages these differences are sometimes referred to as +shallow and deep copy. +

      + + + + + diff --git a/0.0.9/html_split/Summary-of-Modules-and-Topics.html b/0.0.9/html_split/Summary-of-Modules-and-Topics.html new file mode 100644 index 0000000..26b69be --- /dev/null +++ b/0.0.9/html_split/Summary-of-Modules-and-Topics.html @@ -0,0 +1,106 @@ + + + + + +Summary of Modules and Topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7 Summary of Modules and Topics

      +

      In the sections that follow, the various modules and topics are +presented. There is one section per module. For each module, a table +listing the various topics in that module is provided. The ID for a +topic is linked to the detailed coverage of that topic that comes later +in the document. If a topic has any learning outcomes at a given +proficiency level, this is indicated by a checkmark (“✔️”). If a topic +has no learning outcomes (simply because there are not any, not because +the information is missing), this is indicated by an em dash (“—”). +In the case that the information for a topic is completely missing, a +question mark (“?”) symbol is used. +

      +

      [NOTE: These topics are taken mostly from the SG20 GitHub +repository. They are not intended to be complete in any sense. In fact, +by gathering together all topics in one place where they are easily +viewed, it is hoped that missing and unbalanced items will be more +obvious.] +

      + + + + + + + + + + + + + + + + + + +
      + + + + + + diff --git a/0.0.9/html_split/Testing-and-Debugging.html b/0.0.9/html_split/Testing-and-Debugging.html new file mode 100644 index 0000000..da60211 --- /dev/null +++ b/0.0.9/html_split/Testing-and-Debugging.html @@ -0,0 +1,59 @@ + + + + + +Testing and Debugging (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      +Next: , Previous: , Up: Summary of Modules and Topics   [Contents]

      +
      +
      +

      7.13 Testing and Debugging

      + + + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Source-Level Debuggers???
      [‘?’]Code Sanitizers???
      [‘?’]Test Frameworks???
      [‘?’]Debugging Strategies???
      + + + + + + diff --git a/0.0.9/html_split/Tooling.html b/0.0.9/html_split/Tooling.html new file mode 100644 index 0000000..43c3b2f --- /dev/null +++ b/0.0.9/html_split/Tooling.html @@ -0,0 +1,57 @@ + + + + + +Tooling (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.14 Tooling

      + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Compiler Toolchains???
      [‘?’]IDEs???
      + + + + + + diff --git a/0.0.9/html_split/Topic-introduction.html b/0.0.9/html_split/Topic-introduction.html new file mode 100644 index 0000000..fff97f2 --- /dev/null +++ b/0.0.9/html_split/Topic-introduction.html @@ -0,0 +1,55 @@ + + + + + +Topic introduction (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1.3 Topic introduction

      +

      Very brief introduction to the topic. +

      +

      Explains when and how objects are copied. +

      + + + + + diff --git a/0.0.9/html_split/Use-of-This-Document.html b/0.0.9/html_split/Use-of-This-Document.html new file mode 100644 index 0000000..4c820d5 --- /dev/null +++ b/0.0.9/html_split/Use-of-This-Document.html @@ -0,0 +1,58 @@ + + + + + +Use of This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      4 Use of This Document

      +

      [NOTE: This document follows the same license model as the C++ +Core Guidelines. The LICENSE document is taken verbatim from the C++ +Core Guidelines.] This document is made available under a MIT-style +license. In simple terms, this license permits copying, use, +modification, and creation of derivative works. A copy of the license is +included in the section LICENSE. +

      + + + + + diff --git a/0.0.9/html_split/User_002dDefined-Types-Classes.html b/0.0.9/html_split/User_002dDefined-Types-Classes.html new file mode 100644 index 0000000..808279a --- /dev/null +++ b/0.0.9/html_split/User_002dDefined-Types-Classes.html @@ -0,0 +1,69 @@ + + + + + +User-Defined Types Classes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.5 User-Defined Types (Classes)

      + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Special Member Functions???
      [‘?’]Types???
      [‘?’]Conversions???
      [‘?’]Constructors and Destructors???
      [‘?’]Move/Copy Constructors and Assignment Operators???
      [‘?’]Member Functions???
      [‘?’]Sum Types???
      [‘?’]User-Defined Literals???
      [‘?’]Special Member Functions???
      [‘?’]Guidelines for Special Member Functions (e.g., Rule of Five, Rule +of Zero)???
      [‘copy’]Copy Semantics‘✔️’‘✔️’
      [‘?’]Moving and Copying???
      [‘?’]Lambdas???
      + + + + + + diff --git a/0.0.9/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html b/0.0.9/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html new file mode 100644 index 0000000..3f9bf2c --- /dev/null +++ b/0.0.9/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html @@ -0,0 +1,69 @@ + + + + + +Working Group Documents Related to C++ Teaching Guidelines (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      14.2 Working Group Documents Related to C++ Teaching Guidelines

      +
        +
      • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — +Standing Document for SG20: Guidelines for Teaching C++ to Beginners. +https://wg21.link/p1389. + +
      • Christopher Di Bella. P1725R0 — Modular Topic Design. +https://wg21.link/p1725. + +
      • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to +structure a teaching topic. https://wg21.link/p2193. + +
      • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study +Group: C++ Education. https://wg21.link/p1231. + +
      • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 +— Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0. + +
      + + + + + + diff --git a/0.0.9/html_split/_0023advanced.html b/0.0.9/html_split/_0023advanced.html new file mode 100644 index 0000000..d503bfc --- /dev/null +++ b/0.0.9/html_split/_0023advanced.html @@ -0,0 +1,40 @@ + + + + + + +#advanced (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #advanced.

      + diff --git a/0.0.9/html_split/_0023advanced_002d1.html b/0.0.9/html_split/_0023advanced_002d1.html new file mode 100644 index 0000000..282a7b8 --- /dev/null +++ b/0.0.9/html_split/_0023advanced_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #advanced-1.

      + diff --git a/0.0.9/html_split/_0023advanced_002d2.html b/0.0.9/html_split/_0023advanced_002d2.html new file mode 100644 index 0000000..039b3ff --- /dev/null +++ b/0.0.9/html_split/_0023advanced_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #advanced-2.

      + diff --git a/0.0.9/html_split/_0023advanced_002d3.html b/0.0.9/html_split/_0023advanced_002d3.html new file mode 100644 index 0000000..ebf5529 --- /dev/null +++ b/0.0.9/html_split/_0023advanced_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #advanced-3.

      + diff --git a/0.0.9/html_split/_0023backgroundrequired_002dknowledge.html b/0.0.9/html_split/_0023backgroundrequired_002dknowledge.html new file mode 100644 index 0000000..9959745 --- /dev/null +++ b/0.0.9/html_split/_0023backgroundrequired_002dknowledge.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge.

      + diff --git a/0.0.9/html_split/_0023backgroundrequired_002dknowledge_002d1.html b/0.0.9/html_split/_0023backgroundrequired_002dknowledge_002d1.html new file mode 100644 index 0000000..f6f6bd0 --- /dev/null +++ b/0.0.9/html_split/_0023backgroundrequired_002dknowledge_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-1.

      + diff --git a/0.0.9/html_split/_0023backgroundrequired_002dknowledge_002d2.html b/0.0.9/html_split/_0023backgroundrequired_002dknowledge_002d2.html new file mode 100644 index 0000000..b0b297d --- /dev/null +++ b/0.0.9/html_split/_0023backgroundrequired_002dknowledge_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-2.

      + diff --git a/0.0.9/html_split/_0023backgroundrequired_002dknowledge_002d3.html b/0.0.9/html_split/_0023backgroundrequired_002dknowledge_002d3.html new file mode 100644 index 0000000..ae34d91 --- /dev/null +++ b/0.0.9/html_split/_0023backgroundrequired_002dknowledge_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-3.

      + diff --git a/0.0.9/html_split/_0023backgroundrequired_002dknowledge_002d4.html b/0.0.9/html_split/_0023backgroundrequired_002dknowledge_002d4.html new file mode 100644 index 0000000..7417f62 --- /dev/null +++ b/0.0.9/html_split/_0023backgroundrequired_002dknowledge_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-4.

      + diff --git a/0.0.9/html_split/_0023backgroundrequired_002dknowledge_002d5.html b/0.0.9/html_split/_0023backgroundrequired_002dknowledge_002d5.html new file mode 100644 index 0000000..8f0570c --- /dev/null +++ b/0.0.9/html_split/_0023backgroundrequired_002dknowledge_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-5.

      + diff --git a/0.0.9/html_split/_0023backgroundrequired_002dknowledge_002d6.html b/0.0.9/html_split/_0023backgroundrequired_002dknowledge_002d6.html new file mode 100644 index 0000000..a1cdee1 --- /dev/null +++ b/0.0.9/html_split/_0023backgroundrequired_002dknowledge_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-6.

      + diff --git a/0.0.9/html_split/_0023backgroundrequired_002dknowledge_002d7.html b/0.0.9/html_split/_0023backgroundrequired_002dknowledge_002d7.html new file mode 100644 index 0000000..893a0ba --- /dev/null +++ b/0.0.9/html_split/_0023backgroundrequired_002dknowledge_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-7.

      + diff --git a/0.0.9/html_split/_0023backgroundrequired_002dknowledge_002d8.html b/0.0.9/html_split/_0023backgroundrequired_002dknowledge_002d8.html new file mode 100644 index 0000000..6080498 --- /dev/null +++ b/0.0.9/html_split/_0023backgroundrequired_002dknowledge_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-8.

      + diff --git a/0.0.9/html_split/_0023backgroundrequired_002dknowledge_002d9.html b/0.0.9/html_split/_0023backgroundrequired_002dknowledge_002d9.html new file mode 100644 index 0000000..3ea462d --- /dev/null +++ b/0.0.9/html_split/_0023backgroundrequired_002dknowledge_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-9.

      + diff --git a/0.0.9/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html b/0.0.9/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html new file mode 100644 index 0000000..925c568 --- /dev/null +++ b/0.0.9/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html @@ -0,0 +1,40 @@ + + + + + + +#basics-types-objects-values-expressions-statements-and-control-flow-constructs (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #basics-types-objects-values-expressions-statements-and-control-flow-constructs.

      + diff --git a/0.0.9/html_split/_0023building.html b/0.0.9/html_split/_0023building.html new file mode 100644 index 0000000..8ffc9df --- /dev/null +++ b/0.0.9/html_split/_0023building.html @@ -0,0 +1,40 @@ + + + + + + +#building (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #building.

      + diff --git a/0.0.9/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html b/0.0.9/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html new file mode 100644 index 0000000..a7e6bad --- /dev/null +++ b/0.0.9/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html @@ -0,0 +1,40 @@ + + + + + + +#c-object-model-copy-semantics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #c-object-model-copy-semantics.

      + diff --git a/0.0.9/html_split/_0023caveats.html b/0.0.9/html_split/_0023caveats.html new file mode 100644 index 0000000..d4bac8b --- /dev/null +++ b/0.0.9/html_split/_0023caveats.html @@ -0,0 +1,40 @@ + + + + + + +#caveats (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats.

      + diff --git a/0.0.9/html_split/_0023caveats_002d1.html b/0.0.9/html_split/_0023caveats_002d1.html new file mode 100644 index 0000000..64faefd --- /dev/null +++ b/0.0.9/html_split/_0023caveats_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-1.

      + diff --git a/0.0.9/html_split/_0023caveats_002d2.html b/0.0.9/html_split/_0023caveats_002d2.html new file mode 100644 index 0000000..6c66559 --- /dev/null +++ b/0.0.9/html_split/_0023caveats_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-2.

      + diff --git a/0.0.9/html_split/_0023caveats_002d3.html b/0.0.9/html_split/_0023caveats_002d3.html new file mode 100644 index 0000000..479063f --- /dev/null +++ b/0.0.9/html_split/_0023caveats_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-3.

      + diff --git a/0.0.9/html_split/_0023caveats_002d4.html b/0.0.9/html_split/_0023caveats_002d4.html new file mode 100644 index 0000000..9588a55 --- /dev/null +++ b/0.0.9/html_split/_0023caveats_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-4.

      + diff --git a/0.0.9/html_split/_0023caveats_002d5.html b/0.0.9/html_split/_0023caveats_002d5.html new file mode 100644 index 0000000..11edee5 --- /dev/null +++ b/0.0.9/html_split/_0023caveats_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-5.

      + diff --git a/0.0.9/html_split/_0023caveats_002d6.html b/0.0.9/html_split/_0023caveats_002d6.html new file mode 100644 index 0000000..6cea721 --- /dev/null +++ b/0.0.9/html_split/_0023caveats_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-6.

      + diff --git a/0.0.9/html_split/_0023caveats_002d7.html b/0.0.9/html_split/_0023caveats_002d7.html new file mode 100644 index 0000000..2a8f1cd --- /dev/null +++ b/0.0.9/html_split/_0023caveats_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-7.

      + diff --git a/0.0.9/html_split/_0023caveats_002d8.html b/0.0.9/html_split/_0023caveats_002d8.html new file mode 100644 index 0000000..e330642 --- /dev/null +++ b/0.0.9/html_split/_0023caveats_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-8.

      + diff --git a/0.0.9/html_split/_0023caveats_002d9.html b/0.0.9/html_split/_0023caveats_002d9.html new file mode 100644 index 0000000..004e434 --- /dev/null +++ b/0.0.9/html_split/_0023caveats_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-9.

      + diff --git a/0.0.9/html_split/_0023compilation_002dmodel.html b/0.0.9/html_split/_0023compilation_002dmodel.html new file mode 100644 index 0000000..1017867 --- /dev/null +++ b/0.0.9/html_split/_0023compilation_002dmodel.html @@ -0,0 +1,40 @@ + + + + + + +#compilation-model (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #compilation-model.

      + diff --git a/0.0.9/html_split/_0023compile_002dtime_002dcomputation.html b/0.0.9/html_split/_0023compile_002dtime_002dcomputation.html new file mode 100644 index 0000000..59b0c57 --- /dev/null +++ b/0.0.9/html_split/_0023compile_002dtime_002dcomputation.html @@ -0,0 +1,40 @@ + + + + + + +#compile-time-computation (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #compile-time-computation.

      + diff --git a/0.0.9/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html b/0.0.9/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html new file mode 100644 index 0000000..9294adf --- /dev/null +++ b/0.0.9/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html @@ -0,0 +1,40 @@ + + + + + + +#context-and-aim-of-this-guide (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #context-and-aim-of-this-guide.

      + diff --git a/0.0.9/html_split/_0023contributing_002dto_002dthis_002ddocument.html b/0.0.9/html_split/_0023contributing_002dto_002dthis_002ddocument.html new file mode 100644 index 0000000..272d848 --- /dev/null +++ b/0.0.9/html_split/_0023contributing_002dto_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#contributing-to-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #contributing-to-this-document.

      + diff --git a/0.0.9/html_split/_0023contributors.html b/0.0.9/html_split/_0023contributors.html new file mode 100644 index 0000000..a391f9d --- /dev/null +++ b/0.0.9/html_split/_0023contributors.html @@ -0,0 +1,40 @@ + + + + + + +#contributors (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #contributors.

      + diff --git a/0.0.9/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html b/0.0.9/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html new file mode 100644 index 0000000..d32c27e --- /dev/null +++ b/0.0.9/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html @@ -0,0 +1,40 @@ + + + + + + +#detailed-information-for-modules-and-topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #detailed-information-for-modules-and-topics.

      + diff --git a/0.0.9/html_split/_0023disclaimer.html b/0.0.9/html_split/_0023disclaimer.html new file mode 100644 index 0000000..e9658d6 --- /dev/null +++ b/0.0.9/html_split/_0023disclaimer.html @@ -0,0 +1,40 @@ + + + + + + +#disclaimer (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #disclaimer.

      + diff --git a/0.0.9/html_split/_0023error_002dhandling.html b/0.0.9/html_split/_0023error_002dhandling.html new file mode 100644 index 0000000..80cfb94 --- /dev/null +++ b/0.0.9/html_split/_0023error_002dhandling.html @@ -0,0 +1,40 @@ + + + + + + +#error-handling (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #error-handling.

      + diff --git a/0.0.9/html_split/_0023examples_002dof_002dcourse_002dcurricula.html b/0.0.9/html_split/_0023examples_002dof_002dcourse_002dcurricula.html new file mode 100644 index 0000000..99af091 --- /dev/null +++ b/0.0.9/html_split/_0023examples_002dof_002dcourse_002dcurricula.html @@ -0,0 +1,40 @@ + + + + + + +#examples-of-course-curricula (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #examples-of-course-curricula.

      + diff --git a/0.0.9/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html b/0.0.9/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html new file mode 100644 index 0000000..fc9b3eb --- /dev/null +++ b/0.0.9/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html @@ -0,0 +1,40 @@ + + + + + + +#external-i.e.-non-standard-libraries (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #external-i.e.-non-standard-libraries.

      + diff --git a/0.0.9/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html b/0.0.9/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html new file mode 100644 index 0000000..f915680 --- /dev/null +++ b/0.0.9/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-calling-static_assert-with-a-constant-expression (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #foundational-calling-static_assert-with-a-constant-expression.

      + diff --git a/0.0.9/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html b/0.0.9/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html new file mode 100644 index 0000000..88f62bc --- /dev/null +++ b/0.0.9/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-how-and-when-are-copies-made (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #foundational-how-and-when-are-copies-made.

      + diff --git a/0.0.9/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html b/0.0.9/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html new file mode 100644 index 0000000..95ab098 --- /dev/null +++ b/0.0.9/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-using-and-defining-functions-with-default-arguments (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #foundational-using-and-defining-functions-with-default-arguments.

      + diff --git a/0.0.9/html_split/_0023foundational_002dusing_002dudls.html b/0.0.9/html_split/_0023foundational_002dusing_002dudls.html new file mode 100644 index 0000000..2f7afdd --- /dev/null +++ b/0.0.9/html_split/_0023foundational_002dusing_002dudls.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-using-udls (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #foundational-using-udls.

      + diff --git a/0.0.9/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html b/0.0.9/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html new file mode 100644 index 0000000..708f2d3 --- /dev/null +++ b/0.0.9/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-writing-requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #foundational-writing-requires-expressions.

      + diff --git a/0.0.9/html_split/_0023functions.html b/0.0.9/html_split/_0023functions.html new file mode 100644 index 0000000..e304abe --- /dev/null +++ b/0.0.9/html_split/_0023functions.html @@ -0,0 +1,40 @@ + + + + + + +#functions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #functions.

      + diff --git a/0.0.9/html_split/_0023functions_002ddefault_002dargument.html b/0.0.9/html_split/_0023functions_002ddefault_002dargument.html new file mode 100644 index 0000000..ccfbcbb --- /dev/null +++ b/0.0.9/html_split/_0023functions_002ddefault_002dargument.html @@ -0,0 +1,40 @@ + + + + + + +#functions-default-argument (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #functions-default-argument.

      + diff --git a/0.0.9/html_split/_0023functions_002duser_002ddefined_002dliterals.html b/0.0.9/html_split/_0023functions_002duser_002ddefined_002dliterals.html new file mode 100644 index 0000000..b4f78b5 --- /dev/null +++ b/0.0.9/html_split/_0023functions_002duser_002ddefined_002dliterals.html @@ -0,0 +1,40 @@ + + + + + + +#functions-user-defined-literals (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #functions-user-defined-literals.

      + diff --git a/0.0.9/html_split/_0023generic_002dprogramming_002dtemplates.html b/0.0.9/html_split/_0023generic_002dprogramming_002dtemplates.html new file mode 100644 index 0000000..3b91080 --- /dev/null +++ b/0.0.9/html_split/_0023generic_002dprogramming_002dtemplates.html @@ -0,0 +1,40 @@ + + + + + + +#generic-programming-templates (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #generic-programming-templates.

      + diff --git a/0.0.9/html_split/_0023glossary.html b/0.0.9/html_split/_0023glossary.html new file mode 100644 index 0000000..9b46bf6 --- /dev/null +++ b/0.0.9/html_split/_0023glossary.html @@ -0,0 +1,40 @@ + + + + + + +#glossary (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #glossary.

      + diff --git a/0.0.9/html_split/_0023how_002dto_002dcontribute.html b/0.0.9/html_split/_0023how_002dto_002dcontribute.html new file mode 100644 index 0000000..d9cff4a --- /dev/null +++ b/0.0.9/html_split/_0023how_002dto_002dcontribute.html @@ -0,0 +1,40 @@ + + + + + + +#how-to-contribute (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #how-to-contribute.

      + diff --git a/0.0.9/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html b/0.0.9/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html new file mode 100644 index 0000000..def5140 --- /dev/null +++ b/0.0.9/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html @@ -0,0 +1,40 @@ + + + + + + +#inheritance-and-class-hierarchies (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #inheritance-and-class-hierarchies.

      + diff --git a/0.0.9/html_split/_0023license.html b/0.0.9/html_split/_0023license.html new file mode 100644 index 0000000..6b44dd1 --- /dev/null +++ b/0.0.9/html_split/_0023license.html @@ -0,0 +1,40 @@ + + + + + + +#license (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #license.

      + diff --git a/0.0.9/html_split/_0023main_002dadvanced_002drequirements.html b/0.0.9/html_split/_0023main_002dadvanced_002drequirements.html new file mode 100644 index 0000000..8214533 --- /dev/null +++ b/0.0.9/html_split/_0023main_002dadvanced_002drequirements.html @@ -0,0 +1,40 @@ + + + + + + +#main-advanced-requirements (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #main-advanced-requirements.

      + diff --git a/0.0.9/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html b/0.0.9/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html new file mode 100644 index 0000000..22b0484 --- /dev/null +++ b/0.0.9/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html @@ -0,0 +1,40 @@ + + + + + + +#main-contracts-and-static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #main-contracts-and-static_assert.

      + diff --git a/0.0.9/html_split/_0023main_002dimplementing.html b/0.0.9/html_split/_0023main_002dimplementing.html new file mode 100644 index 0000000..260008c --- /dev/null +++ b/0.0.9/html_split/_0023main_002dimplementing.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #main-implementing.

      + diff --git a/0.0.9/html_split/_0023main_002dimplementing_002dudls.html b/0.0.9/html_split/_0023main_002dimplementing_002dudls.html new file mode 100644 index 0000000..a41d194 --- /dev/null +++ b/0.0.9/html_split/_0023main_002dimplementing_002dudls.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing-udls (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #main-implementing-udls.

      + diff --git a/0.0.9/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html b/0.0.9/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html new file mode 100644 index 0000000..1e5a4d8 --- /dev/null +++ b/0.0.9/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing-user-defined-copy-operations (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #main-implementing-user-defined-copy-operations.

      + diff --git a/0.0.9/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html b/0.0.9/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html new file mode 100644 index 0000000..4502ed8 --- /dev/null +++ b/0.0.9/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html @@ -0,0 +1,40 @@ + + + + + + +#meta-error-handling-static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #meta-error-handling-static_assert.

      + diff --git a/0.0.9/html_split/_0023module_002dname_002drequires_002dexpressions.html b/0.0.9/html_split/_0023module_002dname_002drequires_002dexpressions.html new file mode 100644 index 0000000..56a9ebf --- /dev/null +++ b/0.0.9/html_split/_0023module_002dname_002drequires_002dexpressions.html @@ -0,0 +1,40 @@ + + + + + + +#module-name-requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #module-name-requires-expressions.

      + diff --git a/0.0.9/html_split/_0023motivation.html b/0.0.9/html_split/_0023motivation.html new file mode 100644 index 0000000..0141374 --- /dev/null +++ b/0.0.9/html_split/_0023motivation.html @@ -0,0 +1,40 @@ + + + + + + +#motivation (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #motivation.

      + diff --git a/0.0.9/html_split/_0023motivation_002d1.html b/0.0.9/html_split/_0023motivation_002d1.html new file mode 100644 index 0000000..7e4a69e --- /dev/null +++ b/0.0.9/html_split/_0023motivation_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #motivation-1.

      + diff --git a/0.0.9/html_split/_0023motivation_002d2.html b/0.0.9/html_split/_0023motivation_002d2.html new file mode 100644 index 0000000..7901fd3 --- /dev/null +++ b/0.0.9/html_split/_0023motivation_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #motivation-2.

      + diff --git a/0.0.9/html_split/_0023motivation_002d3.html b/0.0.9/html_split/_0023motivation_002d3.html new file mode 100644 index 0000000..ec720ad --- /dev/null +++ b/0.0.9/html_split/_0023motivation_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #motivation-3.

      + diff --git a/0.0.9/html_split/_0023motivation_002d4.html b/0.0.9/html_split/_0023motivation_002d4.html new file mode 100644 index 0000000..f53583a --- /dev/null +++ b/0.0.9/html_split/_0023motivation_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #motivation-4.

      + diff --git a/0.0.9/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html b/0.0.9/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html new file mode 100644 index 0000000..57e8b6e --- /dev/null +++ b/0.0.9/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html @@ -0,0 +1,40 @@ + + + + + + +#obtaining-this-document-the-most-recent-version-and-alternate-formats (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #obtaining-this-document-the-most-recent-version-and-alternate-formats.

      + diff --git a/0.0.9/html_split/_0023organization_002dof_002dthis_002ddocument.html b/0.0.9/html_split/_0023organization_002dof_002dthis_002ddocument.html new file mode 100644 index 0000000..e312b8e --- /dev/null +++ b/0.0.9/html_split/_0023organization_002dof_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#organization-of-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #organization-of-this-document.

      + diff --git a/0.0.9/html_split/_0023overview.html b/0.0.9/html_split/_0023overview.html new file mode 100644 index 0000000..b2d4bdc --- /dev/null +++ b/0.0.9/html_split/_0023overview.html @@ -0,0 +1,40 @@ + + + + + + +#overview (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #overview.

      + diff --git a/0.0.9/html_split/_0023overview_002d1.html b/0.0.9/html_split/_0023overview_002d1.html new file mode 100644 index 0000000..d551764 --- /dev/null +++ b/0.0.9/html_split/_0023overview_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#overview-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #overview-1.

      + diff --git a/0.0.9/html_split/_0023overview_002d2.html b/0.0.9/html_split/_0023overview_002d2.html new file mode 100644 index 0000000..5a34b05 --- /dev/null +++ b/0.0.9/html_split/_0023overview_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#overview-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #overview-2.

      + diff --git a/0.0.9/html_split/_0023overview_002d3.html b/0.0.9/html_split/_0023overview_002d3.html new file mode 100644 index 0000000..f230145 --- /dev/null +++ b/0.0.9/html_split/_0023overview_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#overview-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #overview-3.

      + diff --git a/0.0.9/html_split/_0023overview_002d4.html b/0.0.9/html_split/_0023overview_002d4.html new file mode 100644 index 0000000..2436b9a --- /dev/null +++ b/0.0.9/html_split/_0023overview_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#overview-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #overview-4.

      + diff --git a/0.0.9/html_split/_0023points_002dto_002dcover.html b/0.0.9/html_split/_0023points_002dto_002dcover.html new file mode 100644 index 0000000..424b02b --- /dev/null +++ b/0.0.9/html_split/_0023points_002dto_002dcover.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover.

      + diff --git a/0.0.9/html_split/_0023points_002dto_002dcover_002d1.html b/0.0.9/html_split/_0023points_002dto_002dcover_002d1.html new file mode 100644 index 0000000..2a554bb --- /dev/null +++ b/0.0.9/html_split/_0023points_002dto_002dcover_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover-1.

      + diff --git a/0.0.9/html_split/_0023points_002dto_002dcover_002d2.html b/0.0.9/html_split/_0023points_002dto_002dcover_002d2.html new file mode 100644 index 0000000..053a51a --- /dev/null +++ b/0.0.9/html_split/_0023points_002dto_002dcover_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover-2.

      + diff --git a/0.0.9/html_split/_0023points_002dto_002dcover_002d3.html b/0.0.9/html_split/_0023points_002dto_002dcover_002d3.html new file mode 100644 index 0000000..b0dad48 --- /dev/null +++ b/0.0.9/html_split/_0023points_002dto_002dcover_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover-3.

      + diff --git a/0.0.9/html_split/_0023points_002dto_002dcover_002d4.html b/0.0.9/html_split/_0023points_002dto_002dcover_002d4.html new file mode 100644 index 0000000..94de8fa --- /dev/null +++ b/0.0.9/html_split/_0023points_002dto_002dcover_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover-4.

      + diff --git a/0.0.9/html_split/_0023points_002dto_002dcover_002d5.html b/0.0.9/html_split/_0023points_002dto_002dcover_002d5.html new file mode 100644 index 0000000..39d1eaf --- /dev/null +++ b/0.0.9/html_split/_0023points_002dto_002dcover_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover-5.

      + diff --git a/0.0.9/html_split/_0023points_002dto_002dcover_002d6.html b/0.0.9/html_split/_0023points_002dto_002dcover_002d6.html new file mode 100644 index 0000000..92df88f --- /dev/null +++ b/0.0.9/html_split/_0023points_002dto_002dcover_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover-6.

      + diff --git a/0.0.9/html_split/_0023points_002dto_002dcover_002d7.html b/0.0.9/html_split/_0023points_002dto_002dcover_002d7.html new file mode 100644 index 0000000..6e6c895 --- /dev/null +++ b/0.0.9/html_split/_0023points_002dto_002dcover_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover-7.

      + diff --git a/0.0.9/html_split/_0023points_002dto_002dcover_002d8.html b/0.0.9/html_split/_0023points_002dto_002dcover_002d8.html new file mode 100644 index 0000000..b5574e1 --- /dev/null +++ b/0.0.9/html_split/_0023points_002dto_002dcover_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover-8.

      + diff --git a/0.0.9/html_split/_0023preprocessor.html b/0.0.9/html_split/_0023preprocessor.html new file mode 100644 index 0000000..a3bb5f6 --- /dev/null +++ b/0.0.9/html_split/_0023preprocessor.html @@ -0,0 +1,40 @@ + + + + + + +#preprocessor (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #preprocessor.

      + diff --git a/0.0.9/html_split/_0023references.html b/0.0.9/html_split/_0023references.html new file mode 100644 index 0000000..69fbd6b --- /dev/null +++ b/0.0.9/html_split/_0023references.html @@ -0,0 +1,40 @@ + + + + + + +#references (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #references.

      + diff --git a/0.0.9/html_split/_0023references_002don_002dlearning_002doutcomes.html b/0.0.9/html_split/_0023references_002don_002dlearning_002doutcomes.html new file mode 100644 index 0000000..d28fbbf --- /dev/null +++ b/0.0.9/html_split/_0023references_002don_002dlearning_002doutcomes.html @@ -0,0 +1,40 @@ + + + + + + +#references-on-learning-outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #references-on-learning-outcomes.

      + diff --git a/0.0.9/html_split/_0023software_002ddesign.html b/0.0.9/html_split/_0023software_002ddesign.html new file mode 100644 index 0000000..16f5f54 --- /dev/null +++ b/0.0.9/html_split/_0023software_002ddesign.html @@ -0,0 +1,40 @@ + + + + + + +#software-design (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #software-design.

      + diff --git a/0.0.9/html_split/_0023standard_002dlibrary.html b/0.0.9/html_split/_0023standard_002dlibrary.html new file mode 100644 index 0000000..71956d3 --- /dev/null +++ b/0.0.9/html_split/_0023standard_002dlibrary.html @@ -0,0 +1,40 @@ + + + + + + +#standard-library (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #standard-library.

      + diff --git a/0.0.9/html_split/_0023student_002doutcomes.html b/0.0.9/html_split/_0023student_002doutcomes.html new file mode 100644 index 0000000..df0035d --- /dev/null +++ b/0.0.9/html_split/_0023student_002doutcomes.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes.

      + diff --git a/0.0.9/html_split/_0023student_002doutcomes_002d1.html b/0.0.9/html_split/_0023student_002doutcomes_002d1.html new file mode 100644 index 0000000..e9344b7 --- /dev/null +++ b/0.0.9/html_split/_0023student_002doutcomes_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-1.

      + diff --git a/0.0.9/html_split/_0023student_002doutcomes_002d2.html b/0.0.9/html_split/_0023student_002doutcomes_002d2.html new file mode 100644 index 0000000..6fa7724 --- /dev/null +++ b/0.0.9/html_split/_0023student_002doutcomes_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-2.

      + diff --git a/0.0.9/html_split/_0023student_002doutcomes_002d3.html b/0.0.9/html_split/_0023student_002doutcomes_002d3.html new file mode 100644 index 0000000..195d9d2 --- /dev/null +++ b/0.0.9/html_split/_0023student_002doutcomes_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-3.

      + diff --git a/0.0.9/html_split/_0023student_002doutcomes_002d4.html b/0.0.9/html_split/_0023student_002doutcomes_002d4.html new file mode 100644 index 0000000..3e30430 --- /dev/null +++ b/0.0.9/html_split/_0023student_002doutcomes_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-4.

      + diff --git a/0.0.9/html_split/_0023student_002doutcomes_002d5.html b/0.0.9/html_split/_0023student_002doutcomes_002d5.html new file mode 100644 index 0000000..0a4a7da --- /dev/null +++ b/0.0.9/html_split/_0023student_002doutcomes_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-5.

      + diff --git a/0.0.9/html_split/_0023student_002doutcomes_002d6.html b/0.0.9/html_split/_0023student_002doutcomes_002d6.html new file mode 100644 index 0000000..c5c4ac0 --- /dev/null +++ b/0.0.9/html_split/_0023student_002doutcomes_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-6.

      + diff --git a/0.0.9/html_split/_0023student_002doutcomes_002d7.html b/0.0.9/html_split/_0023student_002doutcomes_002d7.html new file mode 100644 index 0000000..5233f94 --- /dev/null +++ b/0.0.9/html_split/_0023student_002doutcomes_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-7.

      + diff --git a/0.0.9/html_split/_0023student_002doutcomes_002d8.html b/0.0.9/html_split/_0023student_002doutcomes_002d8.html new file mode 100644 index 0000000..f19fd7f --- /dev/null +++ b/0.0.9/html_split/_0023student_002doutcomes_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-8.

      + diff --git a/0.0.9/html_split/_0023student_002doutcomes_002d9.html b/0.0.9/html_split/_0023student_002doutcomes_002d9.html new file mode 100644 index 0000000..735a21f --- /dev/null +++ b/0.0.9/html_split/_0023student_002doutcomes_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-9.

      + diff --git a/0.0.9/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html b/0.0.9/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html new file mode 100644 index 0000000..4801178 --- /dev/null +++ b/0.0.9/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html @@ -0,0 +1,40 @@ + + + + + + +#summary-of-modules-and-topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #summary-of-modules-and-topics.

      + diff --git a/0.0.9/html_split/_0023testing_002dand_002ddebugging.html b/0.0.9/html_split/_0023testing_002dand_002ddebugging.html new file mode 100644 index 0000000..1ae096d --- /dev/null +++ b/0.0.9/html_split/_0023testing_002dand_002ddebugging.html @@ -0,0 +1,40 @@ + + + + + + +#testing-and-debugging (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #testing-and-debugging.

      + diff --git a/0.0.9/html_split/_0023tooling.html b/0.0.9/html_split/_0023tooling.html new file mode 100644 index 0000000..634a8dc --- /dev/null +++ b/0.0.9/html_split/_0023tooling.html @@ -0,0 +1,40 @@ + + + + + + +#tooling (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #tooling.

      + diff --git a/0.0.9/html_split/_0023topic_002dintroduction.html b/0.0.9/html_split/_0023topic_002dintroduction.html new file mode 100644 index 0000000..742d5d9 --- /dev/null +++ b/0.0.9/html_split/_0023topic_002dintroduction.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #topic-introduction.

      + diff --git a/0.0.9/html_split/_0023topic_002dintroduction_002d1.html b/0.0.9/html_split/_0023topic_002dintroduction_002d1.html new file mode 100644 index 0000000..a110644 --- /dev/null +++ b/0.0.9/html_split/_0023topic_002dintroduction_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #topic-introduction-1.

      + diff --git a/0.0.9/html_split/_0023topic_002dintroduction_002d2.html b/0.0.9/html_split/_0023topic_002dintroduction_002d2.html new file mode 100644 index 0000000..986bf37 --- /dev/null +++ b/0.0.9/html_split/_0023topic_002dintroduction_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #topic-introduction-2.

      + diff --git a/0.0.9/html_split/_0023topic_002dintroduction_002d3.html b/0.0.9/html_split/_0023topic_002dintroduction_002d3.html new file mode 100644 index 0000000..3d14fd9 --- /dev/null +++ b/0.0.9/html_split/_0023topic_002dintroduction_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #topic-introduction-3.

      + diff --git a/0.0.9/html_split/_0023topic_002dintroduction_002d4.html b/0.0.9/html_split/_0023topic_002dintroduction_002d4.html new file mode 100644 index 0000000..c73a236 --- /dev/null +++ b/0.0.9/html_split/_0023topic_002dintroduction_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #topic-introduction-4.

      + diff --git a/0.0.9/html_split/_0023use_002dof_002dthis_002ddocument.html b/0.0.9/html_split/_0023use_002dof_002dthis_002ddocument.html new file mode 100644 index 0000000..68d835d --- /dev/null +++ b/0.0.9/html_split/_0023use_002dof_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#use-of-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #use-of-this-document.

      + diff --git a/0.0.9/html_split/_0023user_002ddefined_002dtypes_002dclasses.html b/0.0.9/html_split/_0023user_002ddefined_002dtypes_002dclasses.html new file mode 100644 index 0000000..04771a9 --- /dev/null +++ b/0.0.9/html_split/_0023user_002ddefined_002dtypes_002dclasses.html @@ -0,0 +1,40 @@ + + + + + + +#user-defined-types-classes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #user-defined-types-classes.

      + diff --git a/0.0.9/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html b/0.0.9/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html new file mode 100644 index 0000000..f4b9435 --- /dev/null +++ b/0.0.9/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html @@ -0,0 +1,40 @@ + + + + + + +#working-group-documents-related-to-c-teaching-guidelines (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #working-group-documents-related-to-c-teaching-guidelines.

      + diff --git a/0.0.9/html_split/index.html b/0.0.9/html_split/index.html new file mode 100644 index 0000000..c4e5ff0 --- /dev/null +++ b/0.0.9/html_split/index.html @@ -0,0 +1,240 @@ + + + + + +Top (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +

      Table of Contents

      + +
      + + +
      + + + +
      +

      Guidelines for Teaching C++

      + + + + + + + + + + + + + + + + + + +
      + + + + + + diff --git a/0.0.9/html_split/unknown_node.html b/0.0.9/html_split/unknown_node.html new file mode 100644 index 0000000..5a652e5 --- /dev/null +++ b/0.0.9/html_split/unknown_node.html @@ -0,0 +1,763 @@ + + + + + +Guidelines for Teaching C++ + + + + + + + + + + + + + + + + +
      +

      +   [Contents]

      +
      +
      +

      8.1.5.1 Background/Required Knowledge

      +

      A student is able to: * identify special member functions +[C++ object model: +special member functions] +

      +

      It helps when a student is able to: * use move semantics +[C++ object model: move +semantics] * explain the rule of zero +[C++ object model: rule-of-zero] +* explain the rule of five [C++ +object model: rule-of-five] +

      +
      +

      +   [Contents]

      +
      +

      8.1.5.2 Student outcomes

      +

      A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

      +

      A student should be able to: * explain when they have to implement the +copy operations for their own type * Copy constructor * Copy assignment +operator * implement copy operations for their own types * +Optional: explain when copying with basic and strong exception +guarantees is useful +

      +
      +

      +   [Contents]

      +
      +

      8.1.5.3 Caveats

      +

      This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

      +
        +
      • Intricacies when implementing copy operations: +
          +
        • Examples of how not to write copy operations (e.g., C++03 +std::auto_ptr) +
        + +
      + +
      +

      +   [Contents]

      +
      +

      8.1.5.4 Points to cover

      +

      This section lists important details for each point. +

      +
        +
      • Copy constructors and copy assignment operators +
          +
        • How compiler generates default copy operations +
        • =default, =delete (No copy) +
        • How-to write your own copy operations +
        • Rule-of-five +
        • Copy assignment operators can be ref-qualified to avoid assigning into +temporary objects. +
        + +
      + +
      +

      +   [Contents]

      +
      +

      8.2.1 Overview

      +

      Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

      + + + + + +
      LevelObjectives
      Foundationalusing and understanding UDLs
      Mainimplementing your own UDLs
      AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
      + +
      +

      +   [Contents]

      +
      +

      8.2.2 Motivation

      +

      Why is this important? Why do we want to learn/teach this +topic? +

      +
        +
      • Allows clearer expression of intent in C++. +
      • std::string: "Hello, world!"s +
      • std::chrono: 3h + 10min + 5s +
      + +
      +

      +   [Contents]

      +
      +

      8.2.3 Topic introduction

      +

      Very brief introduction to the topic. +

      +
        +
      • Explain the existence of user defined literals. Example: +12min + 17s is terse, expressive and type safe. +
      + +
      +

      +   [Contents]

      +
      +

      8.2.4.1 Background/Required Knowledge

      +

      A student: * knows how to form numeric literals, e.g., 1.5f means +a float of value 1.5. * is familiar with the major C++ +types: * bool (Boolean type) * int (Integer type) * +double (Floating-point type) * std::string (Text type) * +std::vector (Collection type) * knows that namespaces exist, and +namespace std. * knows what using-declarations and +using-directives are. +[C++ object +model: declarations] +

      +
      +

      +   [Contents]

      +
      +

      8.2.4.2 Student outcomes

      +

      A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

      +

      A student should be able to: +

      +
        +
      1. use using namespace std::string_literals[1]. +
      2. recognise UDLs in code that they are reading. +
      3. figure out which UDL definitions for a used type exist. +
      4. identify parts of the standard library that make use of UDLs. +
      5. prevent the dangers of temporaries created with "blah"s as well +as with std::string{"blah"}. +
      6. effectively selects the right set of namespaces in using-directives from +the sub-namespaces std::literals. +
      + +

      [1]: explain that it’s okay to use a using-directive to “activate” +UDLs. +

      +
      +

      +   [Contents]

      +
      +

      8.2.4.3 Caveats

      +

      This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

      +
        +
      • A student gets confused by the similarities and differences between +built-in suffixes and UDLs and between UDLs from different namespaces. +
      • A student “activates” two suffixes with the same signature from +different namespaces. +
      + +
      +

      +   [Contents]

      +
      +

      8.2.4.4 Points to cover

      +

      This section lists important details for each point. +

      +
      +

      +   [Contents]

      +
      +

      8.2.5.1 Background/Required Knowledge

      +
        +
      • All of the above. +
      + +
      +

      +   [Contents]

      +
      +

      8.2.5.2 Student outcomes

      +

      A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

      +

      A student should be able to: +

      +
        +
      1. write a UDL operator of their own. +
      2. separate unrelated UDLs into distinct namespaces. +
      + +
      +

      +   [Contents]

      +
      +

      8.2.5.3 Caveats

      +

      This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

      +

      No caveats at present. #### Points to cover +

      +

      This section lists important details for each point. +

      +

      No caveats at present. ### Advanced {#udl-advanced} +

      +

      These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

      +
      +

      +   [Contents]

      +
      +

      8.3.1 Overview

      +

      Functions in C++ may be overloaded with different numbers and types of +parameters. It may be of value to specify default arguments for some +number of parameters, to allow a caller to avoid specifying arguments +that rarely change, or to enable expanding the set of parameters while +maintaining backward compatibility with existing callers. +

      + + + + + +
      LevelObjective
      FoundationalDefine and use functions with default arguments
      Main
      Advancedrefinement of default arguments through multiple declarations
      + +
      +

      +   [Contents]

      +
      +

      8.3.2 Motivation

      +

      Default arguments allow the omission of arguments with obvious or common +values. Also may be utilized to extend an existing function signature +without forcing changes to existing calling code. +

      +
      +

      +   [Contents]

      +
      +

      8.3.3 Topic introduction

      +

      Explain how default arguments work and how to define them. +

      +
      +

      +   [Contents]

      +
      +

      8.3.4.1 Background/Required Knowledge

      +

      A student is able to: +

      + + +
      +

      +   [Contents]

      +
      +

      8.3.4.2 Student outcomes

      +

      A student should be able to: +

      +
        +
      1. Call to a function with a default argument with or without that argument +specified +
      2. Declare a function with a default argument, and omit the default in the +definition’s signature +
      3. Explain when the lifetime of a default argument begins and ends +
      + +
      +

      +   [Contents]

      +
      +

      8.3.4.3 Caveats

      +
        +
      • When no forward-declaration exists, the definition serves as the +declaration +
      • When multiple declarations exist, only one may specify the default for +any particular parameter, but multiple declarations may specify the +defaults for different parameters. +
      • Additional default values may be specified for other parameters in +repeat declarations +
      • Calling an overloaded function with fewer arguments may be ambiguous +with regard to an overload with default arguments +
      + +
      +

      +   [Contents]

      +
      +

      8.3.4.4 Points to cover

      +
        +
      • Default value may only be specified once for each parameter among all +declarations +
      • Default values must start from the rightmost parameter and continue +leftward without gaps +
      • Considerations of when to use default arguments vs overload set +
      + +
      +

      +   [Contents]

      +
      +

      8.3.5.2 Student outcomes

      +

      A student should be able to: +

      +
      +

      +   [Contents]

      +
      +

      8.3.5.3 Caveats

      + +
      +

      +   [Contents]

      +
      +

      8.3.5.4 Points to cover

      + +
      +

      +   [Contents]

      +
      +

      8.3.6 Advanced

      +

      Subsequent redeclarations of the same function may add default argument +values, which are then usable by callers. Though a single parameter +cannot be given a default argument twice in the same translation unit, +it is legal, though ill-advised, to give the same function different +default arguments in different translation units. +

      +
      +

      +   [Contents]

      +
      +

      8.4.1 Overview

      + + + + + +
      LevelObjectives
      FoundationalDefine and use requires-expressions to check satisfaction of +expressions by given parameters
      MainDefine and use requires-expressions to check properties of +expressions
      Advanced
      + +
      +

      +   [Contents]

      +
      +

      8.4.2 Motivation

      +

      Requires-expressions allow a developer to perform compile-time +evaluation on the validity of other expressions. These are fundamental +to the ability to write concepts. +[Compile-time programming: +concepts] +

      +
      +

      +   [Contents]

      +
      +

      8.5 Topic introduction

      +

      Requires-expressions are compile-time predicates which evaluate to true +when their specified set of expressions are all valid for a given set of +inputs. +

      + + + + + + +
      +

      +   [Contents]

      +
      +

      8.5.1.1 Background/Required Knowledge

      +

      A student is able to: +

      + + +

      It is helpful if: +

      +
        +
      • The student is aware that attempting to specialize the template with +types or values which do not match otherwise unstated assumptions will +cause errors within the template. +
      + +
      +

      +   [Contents]

      +
      +

      8.5.1.2 Student outcomes

      +

      A student should be able to: +

      +
        +
      1. Write a simple-requirement to assert the validity of an expression +
      2. Write a type-requirement to check the existence of a type by its +identifier +
      3. Write a compound-requirement to test the resulting type of an expression +
      4. Write a nested-requirement to test the constexpr value of an operation, +as opposed to just the syntactic validity +
      5. Use a requires-expression within a concept, requires-clause, or +if constexpr condition +
      + +
      +

      +   [Contents]

      +
      +

      8.5.1.3 Caveats

      +

      To require that expressions, which evaluate to a boolean value like +sizeof(t) == 4, evaluate to true a nested-requirement is +needed (e.g., requires sizeof(t) == 4;). Omitting the +requires results in a simple-requirement, which is satisfied +based purely on syntactic validity, not on the result of the operation. +

      +
      +

      +   [Contents]

      +
      +

      8.5.1.4 Points to cover

      +
        +
      • All requires-expression requirements terminate with a semicolon. +
      • simple-requirements are used to check that an expression is well-formed. +
      • nested-requirements are introduced with requires and primarily +used to check the result of an expression computable by the compiler, +including concepts or other requires-expressions. +
      • type-requirements are introduced with typename and used to verify +the existence of a type with a particular identifier. +
      • compound-requirements are enclosed in braces and can be used to check +the resulting type of an expression. +
      • Checks are performed by the compiler, not at run time. +
      • If covering usage of requires-expression with requires-clause, +[Compile-time +programming: requires clause] demonstrate requires requires and +show how to ever avoid writing it by using a concept. +[Compile-time programming: +concepts] +
      + +
      +

      +   [Contents]

      +
      +

      8.5.2.1 Background/required knowledge

      +
        +
      • All of the above. +
      • Knowledge of noexcept +
      + +

      A student is able to: +

      + + +
      +

      +   [Contents]

      +
      +

      8.5.2.2 Student outcomes

      +

      A student should be able to: +

      +
        +
      1. Write compound-requirements which test the noexceptness of an +expression. +
      2. Use a concept as the target of a compound-requirement. +
      + +
      +

      +   [Contents]

      +
      +

      8.5.2.3 Caveats

      + +
      +

      +   [Contents]

      +
      +

      8.5.2.4 Points to cover

      +
        +
      • Compound-requirements allow the optional ability to test whether an +expression is marked as noexcept, by using a trailing +noexcept keyword. +
      + +
      struct S
      +{
      +    void foo() noexcept {}
      +    void bar() {}
      +};
      +
      +static_assert(requires(S s) { { s.foo() } noexcept; } ); // Succeeds. s.foo() is noexcept
      +static_assert(requires(S s) { { s.bar() } noexcept; } ); // Fails. s.bar() is not noexcept
      +
      +
        +
      • If the return-type-requirement of a compound-requirement is a concept, +that concept is given the resulting type as the first parameter, +followed by the specified parameters in the compound-requirement. +{ ++x } -> C<int> would substitute +C<decltype((++x)), int> and check that concept C is satisfied for +those parameters. +
      + +
      +

      +   [Contents]

      +
      +

      8.5.3 Advanced

      + +
      +

      +   [Contents]

      +
      +

      8.6.1 Overview

      +

      Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

      + + + + + +
      LevelObjectives
      FoundationalCalling static_assert with a constant expression
      MainUsing static_assert to detect contract violations and +improve error messages
      Advanced
      + +
      +

      +   [Contents]

      +
      +

      8.6.2 Motivation

      +

      Why is this important? Why do we want to learn/teach this +topic? +

      +

      static_assert allows the developer to enforce that conditions +which can be checked during compilation will force build errors when +violated. Additionally, they are the best mechanism by which a developer +can pass useful information to other developers regarding what violation +occurred or what must be done, instead. +

      +
      +

      +   [Contents]

      +
      +

      8.6.3 Topic introduction

      +

      Very brief introduction to the topic. +

      +

      static_assert is a compile-time evaluated function that asserts +the truth of a supplied predicate, issuing an optional user-supplied +error message if the predicate is false. +

      +
      +

      +   [Contents]

      +
      +

      8.6.4.1 Background/Required Knowledge

      +

      A student: +

      +
        +
      • Should be able to explain the difference between code evaluated at +compile-time and run-time +
      • Should be able to cite some examples of compile-time known information, +such as sizeof(T) +
      + +
      +

      +   [Contents]

      +
      +

      8.6.4.2 Student outcomes

      +

      A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

      +

      A student should be able to: +

      +
        +
      1. Assert the expected size of a structure using static_assert +
      + +
      +

      +   [Contents]

      +
      +

      8.6.4.3 Caveats

      +

      This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

      +
      +

      +   [Contents]

      +
      +

      8.6.4.4 Points to cover

      +

      This section lists important details for each point. +

      +
        +
      • X +
      • In addition to what is wrong, a good error message will inform the user +of how to correct it +
      + +
      +

      +   [Contents]

      +
      +

      8.6.5.1 Background/Required Knowledge

      +
        +
      • All of the above. +
      • General understanding of compile-time requirements +
      + +
      +

      +   [Contents]

      +
      +

      8.6.5.2 Student outcomes

      +

      A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

      +

      A student should be able to: +

      +
        +
      1. Utilize static_assert to verify preconditions of a meta-function +
      2. Utilize static_assert to verify the results of meta-functions for +known values +
      + +
      +

      +   [Contents]

      +
      +

      8.6.5.3 Caveats

      +

      This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

      +
      +

      +   [Contents]

      +
      +

      8.6.5.4 Points to cover

      +

      This section lists important details for each point. +

      +
        +
      • When writing a meta-function, use static_assert to test the +results +
      • Write static_assert calls at the scope of the code they are +guarding +
      + +
      template<typename T>
      +struct container {
      +    std::map<int, T> vals;
      +
      +    // Test location #1
      +    static_assert(
      +        std::is_default_constructible_v<T>,
      +        "container type T must be default constructible");i
      +
      +    void add(int key, T const& t) {
      +        // Test location #2
      +        static_assert(
      +            std::is_default_constructible_v<T>,
      +            "container type T must be default constructible");
      +        // std::map::operator[] requires default constructible type for 
      +        // the value. This will cause a build failure deep in the 
      +        // implementation of std::map, when T is not default constructible
      +        vals[key] = t;
      +    }
      +};
      +
      +struct NoDefCtor {
      +    NoDefCtor() = delete;
      +    NoDefCtor(double d) {}
      +};
      +
      +container<NoDefCtor> c; // If Test #1 was omitted, this would succeed
      +// This is ill-formed. Test #2 would catch this and provide a better 
      +// error message for the user
      +c.add(42, NoDefCtor(1.0)); 
      +
      +
      +

      +   [Contents]

      +
      +

      8.6.6 Advanced

      +

      These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

      + + + + + diff --git a/latest/index.html b/latest/index.html index e15f98d..64feef8 100644 --- a/latest/index.html +++ b/latest/index.html @@ -106,7 +106,7 @@

      Guidelines for Teaching C++

      -

      Version 0.0.7

      +

      Version 0.0.9

      SG20 (ISO C++ Study Group on Education)

      @@ -200,14 +200,14 @@

      Version 0.0.7

      1 Obtaining This Document: The Most Recent Version and Alternate Formats

      -

      The most recent version of this document is available as an online HTML document at: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/latest/.

      +

      The most recent version of this document is available as an online HTML document at: https://cplusplus.github.io/SG20/latest/.

      The version of the document that you are currently reading is available in the following formats:

        -
      1. online (HTML) format as a single large HTML document: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.7/html [later to be https://cplusplus.github.io/SG20/0.0.7/html?]

      2. -
      3. EPUB format: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.7/guidelines.epub [later to be https:/cplusplus.github.io/SG20/0.0.7/guidelines.epub?]

      4. -
      5. online (HTML) format, split across multiple HTML documents: https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/0.0.7/html_split/ [later to be https://cplusplus.github.io/SG20/0.0.7/html_split/?] [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

      6. +
      7. online (HTML) format as a single large HTML document: https://cplusplus.github.io/SG20/0.0.9/html

      8. +
      9. EPUB format: https:/cplusplus.github.io/SG20/0.0.9/guidelines.epub

      10. +
      11. online (HTML) format, split across multiple HTML documents: https://cplusplus.github.io/SG20/0.0.9/html_split/ [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

      -

      Older versions of this document are also available. In general version ver is available at https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/ver. For example, version v0.1.0 (assuming that this version exists) would be available at [later to be https://mdadams.github.io/sg20_guidelines_for_teaching_cpp/v0.1.0?].

      +

      Older versions of this document are also available. In general version ver is available at https://cplusplus.github.io/SG20/ver/html. For example, version 0.1.0 (assuming that this version exists) would be available at https://cplusplus.github.io/SG20/0.1.0/html.

      2 Disclaimer

      This document is intended as a proof of concept to solicit feedback from others. This document is incomplete. This document likely has at least a few errors.

      3 Context and Aim of This Guide

      @@ -1384,8 +1384,7 @@

      11 Contributors
      Christopher Di Bella
       Florian Sattler
       Michael Adams
      -rwdougla
      -vulder
      +rwdougla

      12 How To Contribute

      Before attempting to contribute any content for consideration for inclusion in this document, please read the information below and and the referenced documents as appropriate.

      All contributions to this project must be made in accordance with the license in section License. This teaching-guidelines document only offers guidance on teaching C++ as it is specified in the current version of the C++ standard. So, content should be presented relative to the most-recently ratified version of the standard. A detailed explanation of how to present the material for a topic is given in:

      From 10ae67b99ba043aa9f226a9858de0eb2a8f694ea Mon Sep 17 00:00:00 2001 From: vulder Date: Mon, 1 Nov 2021 15:18:36 +0000 Subject: [PATCH 12/21] deploy: 0125a73376516d52903bc715b97629a8b73c2f94 --- 0.0.11/guidelines.epub | Bin 0 -> 31479 bytes 0.0.11/html/images/cpp_logo.png | Bin 0 -> 23613 bytes 0.0.11/html/index.html | 1448 +++++++++++++++++ 0.0.11/html_split/Advanced.html | 60 + .../Background_002fRequired-Knowledge.html | 65 + .../Background_002fRequired-knowledge.html | 54 + ...ments-and-Control_002dFlow-Constructs.html | 60 + 0.0.11/html_split/Building.html | 57 + ...002b_002b-object-model-copy-semantics.html | 69 + 0.0.11/html_split/Caveats.html | 62 + 0.0.11/html_split/Compilation-Model.html | 62 + .../Compile_002dTime-Computation.html | 57 + .../Context-and-Aim-of-This-Guide.html | 76 + .../Contributing-to-This-Document.html | 55 + 0.0.11/html_split/Contributors.html | 57 + ...ed-Information-for-Modules-and-Topics.html | 67 + 0.0.11/html_split/Disclaimer.html | 55 + 0.0.11/html_split/Error-Handling.html | 59 + .../Examples-of-Course-Curricula.html | 53 + .../External-ie-Non-Standard-Libraries.html | 56 + ...005fassert-with-a-constant-expression.html | 62 + ...dational-How-and-when-are-copies-made.html | 63 + .../html_split/Foundational-Using-UDLs.html | 61 + ...ning-functions-with-default-arguments.html | 62 + ...onal-Writing-requires_002dexpressions.html | 60 + .../Functions-default-argument.html | 67 + .../Functions-user_002ddefined-literals.html | 66 + 0.0.11/html_split/Functions.html | 61 + .../Generic-Programming-Templates.html | 61 + 0.0.11/html_split/Glossary.html | 58 + 0.0.11/html_split/How-To-Contribute.html | 89 + .../Inheritance-and-Class-Hierarchies.html | 57 + 0.0.11/html_split/License.html | 100 ++ .../Main-Advanced-requirements.html | 60 + .../Main-Contracts-and-static_005fassert.html | 61 + ...ting-user_002ddefined-copy-operations.html | 62 + 0.0.11/html_split/Main-implementing-UDLs.html | 59 + .../html_split/Main-implementing-_002a.html | 62 + ..._002derror-handling-static_005fassert.html | 67 + .../Module-name-Requires-Expressions.html | 59 + 0.0.11/html_split/Motivation.html | 57 + ...-Recent-Version-and-Alternate-Formats.html | 78 + .../Organization-of-This-Document.html | 101 ++ 0.0.11/html_split/Overview.html | 61 + 0.0.11/html_split/Points-to-cover.html | 69 + 0.0.11/html_split/Preprocessor.html | 58 + .../References-on-Learning-Outcomes.html | 71 + 0.0.11/html_split/References.html | 59 + 0.0.11/html_split/Software-Design.html | 56 + 0.0.11/html_split/Standard-Library.html | 57 + 0.0.11/html_split/Student-outcomes.html | 73 + .../Summary-of-Modules-and-Topics.html | 106 ++ 0.0.11/html_split/Testing-and-Debugging.html | 59 + 0.0.11/html_split/Tooling.html | 57 + 0.0.11/html_split/Topic-introduction.html | 55 + 0.0.11/html_split/Use-of-This-Document.html | 58 + .../User_002dDefined-Types-Classes.html | 69 + ...ed-to-C_002b_002b-Teaching-Guidelines.html | 69 + 0.0.11/html_split/_0023advanced.html | 40 + 0.0.11/html_split/_0023advanced_002d1.html | 40 + 0.0.11/html_split/_0023advanced_002d2.html | 40 + 0.0.11/html_split/_0023advanced_002d3.html | 40 + ..._0023backgroundrequired_002dknowledge.html | 40 + ...ackgroundrequired_002dknowledge_002d1.html | 40 + ...ackgroundrequired_002dknowledge_002d2.html | 40 + ...ackgroundrequired_002dknowledge_002d3.html | 40 + ...ackgroundrequired_002dknowledge_002d4.html | 40 + ...ackgroundrequired_002dknowledge_002d5.html | 40 + ...ackgroundrequired_002dknowledge_002d6.html | 40 + ...ackgroundrequired_002dknowledge_002d7.html | 40 + ...ackgroundrequired_002dknowledge_002d8.html | 40 + ...ackgroundrequired_002dknowledge_002d9.html | 40 + ...d_002dcontrol_002dflow_002dconstructs.html | 40 + 0.0.11/html_split/_0023building.html | 40 + ...ject_002dmodel_002dcopy_002dsemantics.html | 40 + 0.0.11/html_split/_0023caveats.html | 40 + 0.0.11/html_split/_0023caveats_002d1.html | 40 + 0.0.11/html_split/_0023caveats_002d2.html | 40 + 0.0.11/html_split/_0023caveats_002d3.html | 40 + 0.0.11/html_split/_0023caveats_002d4.html | 40 + 0.0.11/html_split/_0023caveats_002d5.html | 40 + 0.0.11/html_split/_0023caveats_002d6.html | 40 + 0.0.11/html_split/_0023caveats_002d7.html | 40 + 0.0.11/html_split/_0023caveats_002d8.html | 40 + 0.0.11/html_split/_0023caveats_002d9.html | 40 + .../_0023compilation_002dmodel.html | 40 + ..._0023compile_002dtime_002dcomputation.html | 40 + ...and_002daim_002dof_002dthis_002dguide.html | 40 + ...ributing_002dto_002dthis_002ddocument.html | 40 + 0.0.11/html_split/_0023contributors.html | 40 + ...02dfor_002dmodules_002dand_002dtopics.html | 40 + 0.0.11/html_split/_0023disclaimer.html | 40 + .../html_split/_0023error_002dhandling.html | 40 + ...mples_002dof_002dcourse_002dcurricula.html | 40 + ...2e_002dnon_002dstandard_002dlibraries.html | 40 + ...ith_002da_002dconstant_002dexpression.html | 40 + ..._002dwhen_002dare_002dcopies_002dmade.html | 40 + ...ns_002dwith_002ddefault_002darguments.html | 40 + .../_0023foundational_002dusing_002dudls.html | 40 + ...dwriting_002drequires_002dexpressions.html | 40 + 0.0.11/html_split/_0023functions.html | 40 + ...023functions_002ddefault_002dargument.html | 40 + ...ons_002duser_002ddefined_002dliterals.html | 40 + ...generic_002dprogramming_002dtemplates.html | 40 + 0.0.11/html_split/_0023glossary.html | 40 + .../_0023how_002dto_002dcontribute.html | 40 + ...nce_002dand_002dclass_002dhierarchies.html | 40 + 0.0.11/html_split/_0023license.html | 40 + ...023main_002dadvanced_002drequirements.html | 40 + ...ntracts_002dand_002dstatic_005fassert.html | 40 + .../_0023main_002dimplementing.html | 40 + .../_0023main_002dimplementing_002dudls.html | 40 + ...r_002ddefined_002dcopy_002doperations.html | 40 + ...or_002dhandling_002dstatic_005fassert.html | 40 + ...002dname_002drequires_002dexpressions.html | 40 + 0.0.11/html_split/_0023motivation.html | 40 + 0.0.11/html_split/_0023motivation_002d1.html | 40 + 0.0.11/html_split/_0023motivation_002d2.html | 40 + 0.0.11/html_split/_0023motivation_002d3.html | 40 + 0.0.11/html_split/_0023motivation_002d4.html | 40 + ...ion_002dand_002dalternate_002dformats.html | 40 + ...nization_002dof_002dthis_002ddocument.html | 40 + 0.0.11/html_split/_0023overview.html | 40 + 0.0.11/html_split/_0023overview_002d1.html | 40 + 0.0.11/html_split/_0023overview_002d2.html | 40 + 0.0.11/html_split/_0023overview_002d3.html | 40 + 0.0.11/html_split/_0023overview_002d4.html | 40 + .../_0023points_002dto_002dcover.html | 40 + .../_0023points_002dto_002dcover_002d1.html | 40 + .../_0023points_002dto_002dcover_002d2.html | 40 + .../_0023points_002dto_002dcover_002d3.html | 40 + .../_0023points_002dto_002dcover_002d4.html | 40 + .../_0023points_002dto_002dcover_002d5.html | 40 + .../_0023points_002dto_002dcover_002d6.html | 40 + .../_0023points_002dto_002dcover_002d7.html | 40 + .../_0023points_002dto_002dcover_002d8.html | 40 + 0.0.11/html_split/_0023preprocessor.html | 40 + 0.0.11/html_split/_0023references.html | 40 + ...nces_002don_002dlearning_002doutcomes.html | 40 + .../html_split/_0023software_002ddesign.html | 40 + .../html_split/_0023standard_002dlibrary.html | 40 + .../html_split/_0023student_002doutcomes.html | 40 + .../_0023student_002doutcomes_002d1.html | 40 + .../_0023student_002doutcomes_002d2.html | 40 + .../_0023student_002doutcomes_002d3.html | 40 + .../_0023student_002doutcomes_002d4.html | 40 + .../_0023student_002doutcomes_002d5.html | 40 + .../_0023student_002doutcomes_002d6.html | 40 + .../_0023student_002doutcomes_002d7.html | 40 + .../_0023student_002doutcomes_002d8.html | 40 + .../_0023student_002doutcomes_002d9.html | 40 + ...002dof_002dmodules_002dand_002dtopics.html | 40 + .../_0023testing_002dand_002ddebugging.html | 40 + 0.0.11/html_split/_0023tooling.html | 40 + .../_0023topic_002dintroduction.html | 40 + .../_0023topic_002dintroduction_002d1.html | 40 + .../_0023topic_002dintroduction_002d2.html | 40 + .../_0023topic_002dintroduction_002d3.html | 40 + .../_0023topic_002dintroduction_002d4.html | 40 + ..._0023use_002dof_002dthis_002ddocument.html | 40 + ...ser_002ddefined_002dtypes_002dclasses.html | 40 + ...dto_002dc_002dteaching_002dguidelines.html | 40 + 0.0.11/html_split/index.html | 240 +++ 0.0.11/html_split/unknown_node.html | 820 ++++++++++ latest/index.html | 31 +- 165 files changed, 10227 insertions(+), 6 deletions(-) create mode 100644 0.0.11/guidelines.epub create mode 100644 0.0.11/html/images/cpp_logo.png create mode 100644 0.0.11/html/index.html create mode 100644 0.0.11/html_split/Advanced.html create mode 100644 0.0.11/html_split/Background_002fRequired-Knowledge.html create mode 100644 0.0.11/html_split/Background_002fRequired-knowledge.html create mode 100644 0.0.11/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html create mode 100644 0.0.11/html_split/Building.html create mode 100644 0.0.11/html_split/C_002b_002b-object-model-copy-semantics.html create mode 100644 0.0.11/html_split/Caveats.html create mode 100644 0.0.11/html_split/Compilation-Model.html create mode 100644 0.0.11/html_split/Compile_002dTime-Computation.html create mode 100644 0.0.11/html_split/Context-and-Aim-of-This-Guide.html create mode 100644 0.0.11/html_split/Contributing-to-This-Document.html create mode 100644 0.0.11/html_split/Contributors.html create mode 100644 0.0.11/html_split/Detailed-Information-for-Modules-and-Topics.html create mode 100644 0.0.11/html_split/Disclaimer.html create mode 100644 0.0.11/html_split/Error-Handling.html create mode 100644 0.0.11/html_split/Examples-of-Course-Curricula.html create mode 100644 0.0.11/html_split/External-ie-Non-Standard-Libraries.html create mode 100644 0.0.11/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html create mode 100644 0.0.11/html_split/Foundational-How-and-when-are-copies-made.html create mode 100644 0.0.11/html_split/Foundational-Using-UDLs.html create mode 100644 0.0.11/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html create mode 100644 0.0.11/html_split/Foundational-Writing-requires_002dexpressions.html create mode 100644 0.0.11/html_split/Functions-default-argument.html create mode 100644 0.0.11/html_split/Functions-user_002ddefined-literals.html create mode 100644 0.0.11/html_split/Functions.html create mode 100644 0.0.11/html_split/Generic-Programming-Templates.html create mode 100644 0.0.11/html_split/Glossary.html create mode 100644 0.0.11/html_split/How-To-Contribute.html create mode 100644 0.0.11/html_split/Inheritance-and-Class-Hierarchies.html create mode 100644 0.0.11/html_split/License.html create mode 100644 0.0.11/html_split/Main-Advanced-requirements.html create mode 100644 0.0.11/html_split/Main-Contracts-and-static_005fassert.html create mode 100644 0.0.11/html_split/Main-Implementing-user_002ddefined-copy-operations.html create mode 100644 0.0.11/html_split/Main-implementing-UDLs.html create mode 100644 0.0.11/html_split/Main-implementing-_002a.html create mode 100644 0.0.11/html_split/Meta_002derror-handling-static_005fassert.html create mode 100644 0.0.11/html_split/Module-name-Requires-Expressions.html create mode 100644 0.0.11/html_split/Motivation.html create mode 100644 0.0.11/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html create mode 100644 0.0.11/html_split/Organization-of-This-Document.html create mode 100644 0.0.11/html_split/Overview.html create mode 100644 0.0.11/html_split/Points-to-cover.html create mode 100644 0.0.11/html_split/Preprocessor.html create mode 100644 0.0.11/html_split/References-on-Learning-Outcomes.html create mode 100644 0.0.11/html_split/References.html create mode 100644 0.0.11/html_split/Software-Design.html create mode 100644 0.0.11/html_split/Standard-Library.html create mode 100644 0.0.11/html_split/Student-outcomes.html create mode 100644 0.0.11/html_split/Summary-of-Modules-and-Topics.html create mode 100644 0.0.11/html_split/Testing-and-Debugging.html create mode 100644 0.0.11/html_split/Tooling.html create mode 100644 0.0.11/html_split/Topic-introduction.html create mode 100644 0.0.11/html_split/Use-of-This-Document.html create mode 100644 0.0.11/html_split/User_002dDefined-Types-Classes.html create mode 100644 0.0.11/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html create mode 100644 0.0.11/html_split/_0023advanced.html create mode 100644 0.0.11/html_split/_0023advanced_002d1.html create mode 100644 0.0.11/html_split/_0023advanced_002d2.html create mode 100644 0.0.11/html_split/_0023advanced_002d3.html create mode 100644 0.0.11/html_split/_0023backgroundrequired_002dknowledge.html create mode 100644 0.0.11/html_split/_0023backgroundrequired_002dknowledge_002d1.html create mode 100644 0.0.11/html_split/_0023backgroundrequired_002dknowledge_002d2.html create mode 100644 0.0.11/html_split/_0023backgroundrequired_002dknowledge_002d3.html create mode 100644 0.0.11/html_split/_0023backgroundrequired_002dknowledge_002d4.html create mode 100644 0.0.11/html_split/_0023backgroundrequired_002dknowledge_002d5.html create mode 100644 0.0.11/html_split/_0023backgroundrequired_002dknowledge_002d6.html create mode 100644 0.0.11/html_split/_0023backgroundrequired_002dknowledge_002d7.html create mode 100644 0.0.11/html_split/_0023backgroundrequired_002dknowledge_002d8.html create mode 100644 0.0.11/html_split/_0023backgroundrequired_002dknowledge_002d9.html create mode 100644 0.0.11/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html create mode 100644 0.0.11/html_split/_0023building.html create mode 100644 0.0.11/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html create mode 100644 0.0.11/html_split/_0023caveats.html create mode 100644 0.0.11/html_split/_0023caveats_002d1.html create mode 100644 0.0.11/html_split/_0023caveats_002d2.html create mode 100644 0.0.11/html_split/_0023caveats_002d3.html create mode 100644 0.0.11/html_split/_0023caveats_002d4.html create mode 100644 0.0.11/html_split/_0023caveats_002d5.html create mode 100644 0.0.11/html_split/_0023caveats_002d6.html create mode 100644 0.0.11/html_split/_0023caveats_002d7.html create mode 100644 0.0.11/html_split/_0023caveats_002d8.html create mode 100644 0.0.11/html_split/_0023caveats_002d9.html create mode 100644 0.0.11/html_split/_0023compilation_002dmodel.html create mode 100644 0.0.11/html_split/_0023compile_002dtime_002dcomputation.html create mode 100644 0.0.11/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html create mode 100644 0.0.11/html_split/_0023contributing_002dto_002dthis_002ddocument.html create mode 100644 0.0.11/html_split/_0023contributors.html create mode 100644 0.0.11/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html create mode 100644 0.0.11/html_split/_0023disclaimer.html create mode 100644 0.0.11/html_split/_0023error_002dhandling.html create mode 100644 0.0.11/html_split/_0023examples_002dof_002dcourse_002dcurricula.html create mode 100644 0.0.11/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html create mode 100644 0.0.11/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html create mode 100644 0.0.11/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html create mode 100644 0.0.11/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html create mode 100644 0.0.11/html_split/_0023foundational_002dusing_002dudls.html create mode 100644 0.0.11/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html create mode 100644 0.0.11/html_split/_0023functions.html create mode 100644 0.0.11/html_split/_0023functions_002ddefault_002dargument.html create mode 100644 0.0.11/html_split/_0023functions_002duser_002ddefined_002dliterals.html create mode 100644 0.0.11/html_split/_0023generic_002dprogramming_002dtemplates.html create mode 100644 0.0.11/html_split/_0023glossary.html create mode 100644 0.0.11/html_split/_0023how_002dto_002dcontribute.html create mode 100644 0.0.11/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html create mode 100644 0.0.11/html_split/_0023license.html create mode 100644 0.0.11/html_split/_0023main_002dadvanced_002drequirements.html create mode 100644 0.0.11/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html create mode 100644 0.0.11/html_split/_0023main_002dimplementing.html create mode 100644 0.0.11/html_split/_0023main_002dimplementing_002dudls.html create mode 100644 0.0.11/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html create mode 100644 0.0.11/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html create mode 100644 0.0.11/html_split/_0023module_002dname_002drequires_002dexpressions.html create mode 100644 0.0.11/html_split/_0023motivation.html create mode 100644 0.0.11/html_split/_0023motivation_002d1.html create mode 100644 0.0.11/html_split/_0023motivation_002d2.html create mode 100644 0.0.11/html_split/_0023motivation_002d3.html create mode 100644 0.0.11/html_split/_0023motivation_002d4.html create mode 100644 0.0.11/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html create mode 100644 0.0.11/html_split/_0023organization_002dof_002dthis_002ddocument.html create mode 100644 0.0.11/html_split/_0023overview.html create mode 100644 0.0.11/html_split/_0023overview_002d1.html create mode 100644 0.0.11/html_split/_0023overview_002d2.html create mode 100644 0.0.11/html_split/_0023overview_002d3.html create mode 100644 0.0.11/html_split/_0023overview_002d4.html create mode 100644 0.0.11/html_split/_0023points_002dto_002dcover.html create mode 100644 0.0.11/html_split/_0023points_002dto_002dcover_002d1.html create mode 100644 0.0.11/html_split/_0023points_002dto_002dcover_002d2.html create mode 100644 0.0.11/html_split/_0023points_002dto_002dcover_002d3.html create mode 100644 0.0.11/html_split/_0023points_002dto_002dcover_002d4.html create mode 100644 0.0.11/html_split/_0023points_002dto_002dcover_002d5.html create mode 100644 0.0.11/html_split/_0023points_002dto_002dcover_002d6.html create mode 100644 0.0.11/html_split/_0023points_002dto_002dcover_002d7.html create mode 100644 0.0.11/html_split/_0023points_002dto_002dcover_002d8.html create mode 100644 0.0.11/html_split/_0023preprocessor.html create mode 100644 0.0.11/html_split/_0023references.html create mode 100644 0.0.11/html_split/_0023references_002don_002dlearning_002doutcomes.html create mode 100644 0.0.11/html_split/_0023software_002ddesign.html create mode 100644 0.0.11/html_split/_0023standard_002dlibrary.html create mode 100644 0.0.11/html_split/_0023student_002doutcomes.html create mode 100644 0.0.11/html_split/_0023student_002doutcomes_002d1.html create mode 100644 0.0.11/html_split/_0023student_002doutcomes_002d2.html create mode 100644 0.0.11/html_split/_0023student_002doutcomes_002d3.html create mode 100644 0.0.11/html_split/_0023student_002doutcomes_002d4.html create mode 100644 0.0.11/html_split/_0023student_002doutcomes_002d5.html create mode 100644 0.0.11/html_split/_0023student_002doutcomes_002d6.html create mode 100644 0.0.11/html_split/_0023student_002doutcomes_002d7.html create mode 100644 0.0.11/html_split/_0023student_002doutcomes_002d8.html create mode 100644 0.0.11/html_split/_0023student_002doutcomes_002d9.html create mode 100644 0.0.11/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html create mode 100644 0.0.11/html_split/_0023testing_002dand_002ddebugging.html create mode 100644 0.0.11/html_split/_0023tooling.html create mode 100644 0.0.11/html_split/_0023topic_002dintroduction.html create mode 100644 0.0.11/html_split/_0023topic_002dintroduction_002d1.html create mode 100644 0.0.11/html_split/_0023topic_002dintroduction_002d2.html create mode 100644 0.0.11/html_split/_0023topic_002dintroduction_002d3.html create mode 100644 0.0.11/html_split/_0023topic_002dintroduction_002d4.html create mode 100644 0.0.11/html_split/_0023use_002dof_002dthis_002ddocument.html create mode 100644 0.0.11/html_split/_0023user_002ddefined_002dtypes_002dclasses.html create mode 100644 0.0.11/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html create mode 100644 0.0.11/html_split/index.html create mode 100644 0.0.11/html_split/unknown_node.html diff --git a/0.0.11/guidelines.epub b/0.0.11/guidelines.epub new file mode 100644 index 0000000000000000000000000000000000000000..8017870f7392374b66dd57e39696b320889034c3 GIT binary patch literal 31479 zcmZr%Q*>tCvW;!q<`=tTyJOq7&5mt$zSy>H+a23UC+Q@&@BQz2IOpDn8hejDMm^M8 zRW;|HtCo^1I0Oa=7z_xAvbT|ngHa^|1_%hqf7{m#`NA+j!OUQ3G+XmDAh`LRewF+{~Fd`lNVPNW|UTtU^a2EcQvxIH*;q4w6oQV z>xUZvporc0i?3BKoyv=-2+uV_zk{-DTLab+<>}sDN(3r| z((@pmml>0+1x2inQ$I|3e@kw?jiQ{khKBvM5STR{l_NzlL@J4!s_~fKD?V*@YR04+P-8Y=1Cm*{;RI@d0p$qWKz8!%)u%ZSRS&L&a$q_G^c3l=adAyph>WMd+%rVxsTFOd(}0S^Zmrm*awx=C1XunDFg2p~xlyJGxxs z%A)42g+--=*^F{OtZ4%NiM5EIOh=jV!Mh+?BUTJz|G_s-ieW&PUQtw=6)`~a0H}x{~rr$dOLc~2=0nKrRKHHIO9V%ujg$+XaVuP8SH&;dE9-F*%egR|Zk+3ZNH(y}c zzi8=|-f|4p%mbCDBmCQs;zgoMbGA|Gsg_GX~kQVv*gBbq&Q~6%YrK_10BmpuJEsADP{4*zWwU zoZ0bvzI`psq4hEPYyT?@)*k`v4Q_jS7BYf-&ymTK1x$Yml3B8EvVCtE#*+ivR{*Rh z4_-e$aMh)M9)>#$ekUf7i>;sClTa?CeJ^pQ$b~OH&Xp*4)5{h3aJn^9M4l`8)%h@G z#mX(z;$}9(Yl;-}41$}%=^pd6vN0U7q7RnQu9drAi~L}?It&WX^tsdX6Gc~;W1zB3 zLuapq&ANcidV-K=7jArQEph1PVn@H1qdv@37-RFxJYjS?IwC@TzFxCqcUC&yaDb~7 zIFOA?q;G)ebsF_OQdr15+tXS2a9I0*`uA#LfjM?Kg9ZVS<^%!xTTuU0ldFRXlf8*& zx6Y>XCMSyDjfUY;dJ`?EfDG5-#7&kj(p9kd%~&EE*h)wtH_6{0_zDcL*WJ z9kFcf9MQ|XZA$gz-J3>?ZB%`wwEU;7WMSk)eskDqY>V#NMOllr_m64CWd5Grts_LJ z!h>fNUk>IOZ&_0H1OI?-{d|fHEM)2!=C`lcBBP~rkLUf)kDcs%lq?2Vg+u7y8K^pnQ%4>ZdVHhA@f2u^1Kr<{hXMjR|bOV zaDk;=J2q1K`mKiZ>uwc5(BiD8@QhYwbagGlvp?nF%RPMlgssHyI0v~m#&zj|U$mIC zRtT`p%sXAs?i9s5v~xL5?3CR41LTq?wFZiB%Y>=1SG5Yxz8aJG#G?hJZ#t;E3{{4!iwG=RdlGshymAF|<0o^gpncJU}}m zKs!&(sQ}ZIV`oWNr@_N!P=FCf={XL1h&K`A9~ZM5qNp?IkCJpSv-KpWNp}d*1A%&7 z1PEJMYqM35`!FE;6o@cwWC~C?1o}pfSu{={At5>lGhHJE@19+Q@uQ;HO_3^cYy*h2 z-iX6MHemFkV9cWAiSwP0@(t27O7`lzmKTuJwKs@pwdJBzfh}VC!cJRiv%@xc&=%~m znS?N8g&a{D0`W%!3E}NZuWNloM191vf+H_|SPX4{RRT<_`_JYp7Udw~(?mK;WWQt6 zVJ*3+U?+G_!R$Ua=n7B2M=b0*2g|oQvSEh=$}iITK;(d5O(_AM9=*T%AX`9~>>+`q zXHBuaM)4m~bi|?eB}OgVEsV(%CIK>B zH$}+2+5m10O{?cez4{gMrhAXpcwu(xVKhw9#;%H7tEkqWUjJB4wb-9>E1xD9jmzM4 zQsFLlG3hJ*h@DI>Pj!&qf|plfozTCrTtNa{B!3f9UX+q}4D!RIa2ykb_+eqb!-{!B z@ZXXP-?*o7g<~|#6tMhI5kT`N1c{s=qNFv6Hl+*jXhFnJ#yd|89tlfLh&;-|G5!V4 zuFtx%Dw{-3YreObkfj`+--F0TMPD?OInFenaVQmU8d<|KJ$g!>QmWQTi*8KoQvf^* zqN6pWKP7g5b{qvj_Jvwd6e{6lqdh}=hmt=^I#YKR4N;+Qt?~DX@N~XK4fmlu7TMH} z#&a^sG&OSF0RAh91U$c#cq$U7Tx~5_k)NPiXTD7yd}4^QiI-MgZ8IPU?CZ;cJZ{nz(C);PPb*g2NXLHQ^qtF! zI%-5|D8|quAfyfqQlH+t!Rj-pc4<(~g3@jdb?9Z^o~zf(hnjG}4n7u;=7?gGFc@o1 zaz4#!LF#0P9bgTW&geC&%#^qQ1ul#zScM905$hC|GiAvVh8#PHol@?IDH{0&g1YwS5Qu?Wl&TroN z4L?0Ok$^Exxf%xS=1t0UQ#fs)O~Wn&u%W%>=n#6ZYk0i;WGJ+pcQuzmTrjAU^O*fz z-s`R^Q5j~V2sBrL*FtED*_Z??RfeoUG}^eU_6G6K=(_;Q;+LG%N_(PikYi^@=0ukl zXQiL-pfkr2JXmA37sI(>x?T91%mn((OwbP|lI*gpy-8(h>UqKCH5K{f@`uP>JAaV> zof5ROq|Idf{cGZ+0Rch!7bUPaa%b|ibhWe1)wXfjY(e|TGYG11u~^9d-lXqO)4&@` zENy#{=9s7Nq9ies8 zE`aacr5*{|!op&|h-i@>N?tmR`9)%ZTPL%Au&5|G!J?tG8jWDqfRtS}a)4&Tkn{)d z&5<=EKuPl}Ox6Gtw0pbG!YByVLDbBjatVg?j?d5e&M?0D z&t}26(T-HT)ga$*10jdYv&bI&3If)M^GjJ!@iw`xSRTO{}o8_&8n=Tzbib z*SuzZskuVSb{=pFVo55k#Wax#9;a(j&b2gw_AQ5Z=znDIz!zxq)6!feEOmV|W;sL7 z$pG^=?QBiBQx-Xekw&!i=rP*pF;L*Yq0(vKm$HkBgm+c<;(f~j^8MNcoT^YtgkE69 zU>X!sZK^>ei9JlxC_Q^(7ts$M)lFYH9JSuz?U|n%vz8Z%{q9jxpofTyB7jL zDCF6Rh^GeO9*T3q9vq*aAepyZc z5x3i5x7)en5VwY(ks_!cLk}e-CDIF|$r02D5I!FQ33l*hb!V zLhm?;Vls|Zc?&2Kh7P}6TQD3=^SD&Vn#)Z&HO-^YBFVzAYWLlf1VFX_fj94q*kze~!q$kd>yW9AadfH`LU$YPv&bb; zdB}lWjd6GiQzeVvSazOk<5iuj^()jNY@1PG18y4?ecK$kb>m(~B|_Cr!eoedLS=b; z6H%nPFI7i~)z&lmeHz`*`fAca8cdfX0UQg;i~Oc^+6%$33>3hLZLkfgzZG|Gm_>Y zXov`vK7uBJ`Ym=WSF6b1ICP1hk5y1%2*-%W*q@>$eJ!1@)5dFj=2d^w7s&dIEL?3; zd=o6%6{4nR7ff~3O+8JS_TWn2iL7$&nWT*-oG0d0bJ@R{KR*tZYFx5G(oZt$(eK>i zOLcJaILU{o^oO6(d*XDp-tGP()OqSWp>G}z?z@ul1eOy<Y~D+ zq%fB}`EafN3ExmZ@&8HUQ>=5mDm^V-%E$+#lIh$aqsPVX#f+a88L9}Kjg zbBtcb@ttk0PTAz8uU`NyF(G5X`7C~ZqMwmpLvdbG(_UV-tQoNSp{)BXSpxKuh>}lP z88%!hoAMEI`ctr(yG9JWO7mwd?O{+alK4^Mc*yeb^zBcLK<+hkxN;<)`8Nh)j;P-* zY1w+%g0`Rh#5}{D$6nYcgc;wQE3RMUZom#eYT|R8;g{!Q&j&dx0ur+%4VWA@UVkka z#2%vPBj-P4UEg~XE7FJL{OSVZgwU+=!+zkE<>Lo~+s~mz>38dPxdRK!p|hi9e+*v^ z5>Y_hDO7?!A*5ks3xjh71MSV-|b)hRb zSznL8C;3{dl;zw!^WXb3F8F+z+{x{c)XO12=wlurl#DI57q-P6)=rmg?+hq^Xk>;C zfU(A*oZw|`@wh0XbyRq50YNVOFr`inf5zOT3sex!;ttyeyO8;mu0H=f%;#3qJ0}#L zBZK{@J)w_Y)DE`a=lMor?qR2LT_Zm)*ZY-=9sZ?(lNWZ(7oU~=`)Sd{q3qKeaCcS8 z$9*%0AlLD{NN7m#_a$ebOM`P8W3R26w5?ALJE6!wss-c%9pTocLa7?Hx^*Ap^<$G; zj5;pA75X?9K2Ehh;t32p3xp3l#IH~9>0qta%Tg_AznqKmFF#>M_r>9z?eX!Dmg%Bs>7$ZTEnx|FGb?XpiRm~icZR!uG<0C(M zH)ryl6}#-(tvYG(c0haXzisy@NGbK8SNG<#>9;|-0=4{pA?!9~G~Je>>3Q9=g8yzu3HH{$rNZK0T+IR=k0DK77L<7#=$IAnd&EZ_}%jJlZLt9au1goc^Yu|=&`M(YU#Q&(;(&TKg=k$xCi zlu2;e?j*=`*qJ*}B{QeG1r^tf9sPnUI7{S?jC&7UY6xmkhElDi9rUqXM?&;gSYbn1 zLCG59wFhF(0%#Z7G?8R}szZU>R!49+&kw)uUB7jd&qxJ>6LNqN>eZTj`N?TUcLv)#YKt;g=jD0l8d5>Jy`RCpT_ zXlw~+vy=yA&x=JW{AjC)yj_y$xToVeXp$3*i>f`dsHvr4Yv5~^nVv~5jsbMidWiYd zH!h_m6UoP!CRga5ON^8CbEIhR9?)}MTP;-#vtfnaW~F9Ozgn`-FZCPi?_tJo-nPsy z4#>O}Lce(tC;{(2sTv^TZU7FQXC)-;$ool#UoW-U$7Cr^CmMA~P+Epwro--NxRA%Jr^Pf;KU@2o3dAOU zWuU1=wItKt@4mNLc~H@yjmAy2IuIK;t2sX2K#FA2s3|qxuuDt={?vt$I{{e_eqr#B zmMIkP>E=UGXI*B(VfZzGfl}=vHCrDA|NJKF*WM-t;l)X%(jOKxe`MXf;f>6y3qX4I zFBG}P$t&7r8I4Lcj;r}Y{)YK&$wj>O_*7AS4$tzK`7JhYj`(LErIIzBRtupRmYU*Q zWMdK(k6EWKUrXDn1twK!D&KDf_>bKF94sgtKs#zddPq{8O8wXO&@pz)dssQc#jpvcWgF6RUKM z=1W+;>SFp$%&T_LmDv#qK)(!(#4s9orgcDK3Qf z36-jpNHHILbM5K-De00hETq%z7H+>nLG%4{Fo2OToQ z!mJ=kNqIF;IUi*FZFGTbBhR$ZzHkUGF?)`DPFOhJ4SR${D2LyLh}V9KaLYtF zzsR^GRb9GnkG`>Fh1aarjPe3maTk&W7-GBh_&k+-1=ryU*V&0W=RyO=7Lk18 zAo9U#?B6rf^R;J`FkN&jNv3hB3D-+nMN9E{p1|RwJE8Dl^OIfxLQC!LI6oMCP0$t^ ziv?DjM*Ku}4!fYQb^ZH98porj0YA(jVA@Gl=@-zTfX6L5^gQUI1M)e zlcmdBSU_Q`lL~!Wf;x>hr-x;LZPqodJKTb<*D=b}$SRgiv^kEvsV!yD)#x;mFlPWM zkHp*}o5$O=Re}K!XWiw!;(+ttK<5MX#pbuHy9-^u=^$cb=ne}&=S@sEP59votJm=T z*Q%gB)tvDZQ$bsMf`$FcnK@X!A|xdOx$?b5_kxNxnJ${Eo)GSb`8$fbB3DiGR>@9l zeFOF`JdJNi&-?Ts@}r%^8yzg0Iky900Cr635G8v=Xx*G*RavNNo2t&>iFLN)9x*E0 zNGfqEs2|JRjk@}_|ctQ*G=oSle z-glJg?C*F7a>}*5VE~eNmaM`H+yR+!n`ze&bFM~pfb=2uFh;2$2B)sy8Dug_cVadl z@#mY@Ga@mID?+6z|2ywb{h1jp>!&O;%R0E0^0SzQgM*^!; zpXz1zUl!c3q?H6vu64&^_~@$N?5xK446K_|6Mb%Y^ogx{>9qUzq$eD zzxwO{;H`-z0KoDO)K;qpL?3XXd;|y%FDb2sHKyv)UU?G|+uhVKK6XfUYS0v84Cf6Q zn~h63=hQuRdPuk@$zK<27YCupX5n_f97m{hZM5KVo^~~uCr&kLfmzb&&^PK+5MS?< z7*N+vME`1BZQb4e`20jhf(Aj|D zHCzG9?V7oe=qwo=(uL_nWAE&(a$M@>If=#qh?;La7GNY&)Px+_yn zzy2D5S*XahKs#Rc%YOp8^troy-pcGYs8-IVilLsmi-#Z%iKuzQGh4Ovj!?2vk_d48Ld;%2#+SrN}xDF zJ)W|~gb!ky91x;8^ zL*LbL`EG^6OJ47~c36pl`9zdKZvYQ^7T}cxspCyUX zcxj<}*3~;os?j!W`ouWLToLU&kve)915UW$Wo)-GxbH*VlccSU0PdyLMh*V;_5 zFWPY_gugJkH2p%m^NNq9520%5tm^Y@%4;pod%4-G6Nvd>Q-R`Y~Ni+T1#-KDH+bet>^{8ypU{nUn`F+-t!`+Sg0>xW;#$awi0~ zHIe50^2-taEMs~vsp&??90#BK*S5}{`s-e;REhp7#WZa~DMhZmx4z94A#p4zORSy$ zp@y{Y;?Ng8_Sb)$wPT>`CBuV(fJFT*?f+ZWtpAj?or-+?1^}h|fxaZoTMkS|jgiy{ zdHZ>T=(JGML@_eVMCVyZsO+ozps#`08iV$3D%)b#=ivB`U6b2bZlqJ4VWJ(xb;9Pr zz4~|etFkX<{Ds!T{@F?EbiToEVQK$8Z$O}|p0&6l#=qF}x9f^w=k_WET=JR%yg{RP zC@a@fs>?y&&*FR1A5&4^Yb`*g11W@`SgC;O1Z4*%LQhG~&VA~ab4DqLMIc9ng(kKM z3O-K=RH9g`id3}p(}DHnHHkU0t}QUGNK;~-KV^!2VKRu+LH>>vz(ivJ2k=COjAK}< zK6gk6Jk0Qb%`)MxXTKqal_kgtmjT1kIiAsi+_Cd`5$RoKh00#nfz7r1c^w*-E)1!y z5&e2i()|-Ih$CiF_09TM8tdGwG8-b=jV4I#vqaqAA7+4z0@(FjO$6fY*I*1QJ&N*1YGBl_sUP;l?MV~Qi+4b2VSIYo-JqR zPI5iNSWz9;_hE2~EE-DSw3>7TU%B8p&bYVB)&>6^6cS2mMadvQK+OMNP+y{<%@`G~b z!Uy4MxwLd=Ay1Tjr#gD`yoAJkgKOk!W!NCTH&qZbpHrjq#{czT|L#UGpqS|iYxX`q z;rv&}>36&|HvxGS4!3U*&d;h8r6!`LqigjJo zYHx)o*HV$gCZ>@kV}uHWxSVq@y~{NxrSXX1CXXM4#?VK2wTk`Y6qDJ|JiaoawFtDA7Tog9r>{PbVKL{z=VOe3WZ&gDA*{$?macF*;4idXN(v`^bNkxN3v@nyQ zQK4H*?_oqwq4oHQpxR6~V3_t|>(D4{&qYsqzb2~r2i<5BSog) zmezntG5wAiC#vTfe_%g~@(A<-vN-c?$c?o_1?rg!ztG6tC7(m{u@#M?0B6@uwz%s! z3r@v$SbAqzyPk~?l)=Rkq!aCYu%xJ9-$SW+lriy_UCL&YsF+05D@Z7UJP+=q*x?@2n3x9l2}*2aqVniSol{ zDnk(;*3s~+#u6bN5aEb>1r?QzUu?f)W;uWkE6ME)%#>a_Tvf)l={-+qLgq6Ah5slX zqgs`;&(fKby^4>GZoV2r0WrRw~Oo$)2Y?7It8&zrb&@Rl4)wNQ(vf$Q z_~r>eDcOGafGzUb?Dz!v?@i^*?qsX@FCV%sOx#nuaUo-2{T!_N@#_v7vz8<^jDH_Ptp#s{} zOyq&j58D1s~(e2@ecHszVuea`a zB2mrUiY;YxthIJvy7ci;b>ZbQ59n*~%uY@>D6WVX65MSoT{f^<$D#}cIf7CU0f3>i zyZ)1{FlUl)?C|{0v9}q#gWOn#3?Y0~4FPNP}Y(l1kRCBC3{{D?s( zzZKLhiC|LiHV~RH%m2 zxVt#h=b|ULAiJ`AqU6ko_+kZAu8|lfywGNKLr#->EkI(2z4J`h6Hf1`FBzgi@LV#H z8&dK02uWb{5ZH}&S#Rc{>{6N?PNGz|}KMcMIS7v&j^4{oLe_>>AXl$(n&EtU(OP zc3IA>NUp_o_GrPdbQAps9B7SW+r-p%SaUq|K~@}^H~LSPna}^AT9d!eD4G7|_5S}$ zwK)D4ER*G3{^oV~%`0X!j{Ta~6_GX$cRwisH{AjiRw89=Q(W@+?QUXDe2ebb zaQ*Xo?Mv!Kgr9?91gW(JehbYB!kkQL(>D9%$-V5|4}qq}x9P=~(W6@8{KBFg;LD%D z6l;?~UNQrxZ*e9({xo`Px5L}pgu52uxdm_^b>8CEN2};QZ219)Gm>eQKb5W!3a%3& z#uP#$m+FF6tPu8QN$I_9*Ps}ogqZ*dGiVz_-bSg(*ct4&w!|uc(`6wmS`z3<1xZh5 z=TjA#X+@=CK` z1E<_KEI!nxI@Nwx{lh*R|2nvkd93($vqGhgCe?DI>K($2)L$c zsd`og`v6fN!(c z)XGC64=~3*f}rTO@xQOt=Wz?X^mL<3-t`d_-H2^wR*mqcd;jegj$DO67>RZrD*HVZdtWJ8p@(gi%?>8C6A4nY5RF zRn=V{M`t^~x$g8}L^K<0XXxlz3};2RRJG3zI(Upo)LPTlQ_AdZL^x{D`-R7TKboj-N=s74a*1%# zSKc-lV-6UW0Zax9Y`|w@YH=`#7T~__3=f+qv%%JrgzXsg)upw&n(hpQ){(W{=JMrg z_UZ$%1@nry=?{h6(4+ZLCcP_>;~1^YuoHBf`z8 zhWX&|dT+z>i$dv^U0wZ8r4G`mHTrRHKdPaIQkt-HATowVBMYaLXv(Of`g2oOv+4Nc z=^r^73v#VBq=glQtJtEr@D&F?`sz;=i6t6ca(iCFA=%OqBFQu}PU8m@k8rUqL`R}C zrZhT7eXfpK+hxp4e&RLdT!i2op~8~43XR3c&dw??g2XkJhz@6_#z^_*$&}fWOjbL4 zM_Bx6_=$1l#Tw&~N4f#E;v}nDmi5TG&i;6n`I+8nsGko@Rp#P}$l>>vK57); zd)*9d0h1HUeEl)Z4fy`oW-*7EheC9yg%`_Hxd1kgY5w3$F98;C^;iUyj6%fBN{WQa zrzGLcfc?P3ljO;E!uO~U-*_;iW-J3kqU)Ko!M76fe)e{jx&#bFmPqQ3f?r@-NeCxG z$_R0oCBnZHR3Su3aO$z!16`@uz%2@U_W!8<(iVCrr=8nRTHqD z1|~?MU?!aK3uUW2g2;PYY(CuxlK&CWEqdl6i?Nd>janP0X`vVaS^fz_vK1Xq{3)z( ze-IH6_V9;YoA6b76D0^cqJJ|7d#5*0bPoxW!s8a)0ZEXbcg{+jbXgM>Jp(O`ikp;6 z;XtF44{R`%-9$>WNVDE7fToL@J+RCjdEgqf$N!D}WLgv^OmtD`B-Jh!N$<^B|4)Cg zJb+=6RQVaNI8k*Q;$}D$8(vGI4g?7&0oHehSd463LPbvq%9L5G@g;FaA4YURXG&my zq)bNw31924Jh-0bXC5^ZvFW^JkV2vOSDaEc6MJiwLo6wM64o=FD3Lgh zQK1?DGODcLA&K zp7n26N^p{`2|ep?QrN?1zol2ZVV@5odNY|#AMC|WgvVFx<_MIWe?&xS+a;pEEQ&TW z$u2cB*F>}sV_@;q-6ON(NtkPq(4{f zMiF4Pk;6StMT+_fsisN8gLV0S^l?}1JLTbDp?~o^q#PKPUyWoUPF|sEaZ!gP1j!dM z1BVtNYG`R{q0^YL(r~j-c{>%Jh^cMT!1xVw2CBF6~3;;y7n zRuKQ7CBA+1U%KtFxK}BNZMvdC?Ry|QkT-UPZ0#gZEzkJ{5zgA|v{Rag<8zEM^L_Vn zl{cOJM|vY)OfWy!vyUfOP$?u9=wvwbd|>_>xmQ(bP!$E&6sHkoX`-i+UI!&`zuRE4 zwCJvmR}=95$`2{)nNx$Jny6F*nr#fy57{V?n0p?g=+{BE5MDLfzxS=BH%Jb9S%hEs z{xTna4Y^JftAKi&tprd7J0DMFE!5kqdpP8zw`6o5J87j2PqvpaQHlLRE+N;zPx3`q zYX!vBgBkW3;J1kJSnod+gg=o2x9=q7x?Pg@swO9(H%`}P^N}$l!j)5H(;yz$FQH6yHr>YbQb}3Viw`*RG3#(I>6M=OPYpOR_herh76e3tWDtM#2j}rl$k#JI%Mwyb9PoJg0p^o|G zVB6=?>kZ5&ELT*fA-5@3MFTgBOiJtrKYu^~e}pODdwRJk`kX|WE%Tba10+I&)G(Rs zbFfFq!OEgx?|Z>R#9(7cfBsDT+FA+P=3~VE+|(tciOs_{AV;C}>a3_`LAveZa=r03 z=?$W1k?C;QvAi_$A@QQKvH6KYwH-E+?zZhcuwDT!tfc6p+ z*0i8qjn^=7g28l+>qM*SXGJ5Xx=5=5kam@=MB-9)I1FO24jaErSF8m6O<`$!Efd1r zf(NbD(Q0rE#bD|~w74(gOjFY`Ge@#+(iyS3{P^`DAWiSqZ-tXKo%L7yD?p?~8@&c{ z_L9lvM(5F}Js@$opm=N#Tz)-@^g9hkmPz_@{yA!WMiV(@H2XUWe6sAfO*670rs_h~ z`C*raVocO@MkeuK_Ns~e#`4H3&vb#Ew{_+7P=)W*Y;oO&c!&CXJDDtjh&AVdu^cha z!S0*L?E76e?wf8xejXwYy)#O~Y!XFc*C64OkhW`>byz))tL#InOXO7JVFb#PZsm{2Nm#8Ll=fw@A8(5utaK>xak??2VOaq9Qzzqm0mY2jAPyOrhrrldb{ll$Bx5Gn`W>ZL*(#pFoH zKPAY}A}N+ot0ld~dQPdM=LM9tY`IM^4pH<9Vwu)PO5=M2-acBtK2HqtzkR;%H}kMP zWzurRNV)Ksh(>xE1-3~%CCjs#{g{@2sk_BJk<=^R>Lkfh#R;Jx_W#izBRpYjKa$t` zSEritLKNRprj*ww^&2J`vuElDyVstPN((Rubn3Q&yhQghH$PL7#*5G$y;8{F6a0V& zOHtQa@N?nh{)yurt9K7-Y;v8DW>A3o-Hc&|Yk|(~^2y-Jwq9ePhbbKAww)EM(B)Xy zQvE^>C2nNLBV6f0o=I3;QjlwJi1=>IJ}C-KLEEFI60N`@T&Q)g69X<%6}7IMEx!5~ z+#Z6J8x;`dnG7q77O$qz$QSUE<-D(MD$3-Awa+ECw?qQmrx-J;NJzp{pfTJCc&gA2 z%?MdEBUpFhZfL}dYigyZ;1LpsIkSsa0z;cOfu?QWEAFLy*6NmHbKLFd7S**F`Fz!* zy6keRLOCMTV>)qAY#%$W#=aZ+q2B{r?cQ5S3u};GqV9Bg96N93`D0t~3VQoPVXU)^ z9RIx*e40%KPFy$hwe+L*n>W%i`cLD=RCC{}l>6z2DmqQr=h)~6s0S4HiAD%eE-URa zmr&s${-JBgP7WqxV&}M57zPQU#iYEw`>@HSs}k5sZkWmpgh|hyV3?B&kO2iqm=l;n zZE?exg%?nGtRth+3>HKBd4BoT+soA4s&w%NfXALzDgVNGT3cO%Nw@B3J&{`66Pkwj z-)m$UyxH>ZoPYS-ha(Ky8BT}iDT}j#^tO+T5>&;OzvU_qLDdPg$5&WNYL@yi3L{}w z0(`$*7Ys?&tbk7W{162D^ep*z!~;?Vyk*->+0Vjh{v2Fnn}O~NBkWe8?R2LI7g-Up z^!s8)coDQ~Zk&Mr?V(TwB}8ye>)oXE)R1$}+=91axQYX^Xqn0F5T(99SuqVHs)P29 zaX|@Sso^JECx^w@s?+Ig$VyB~I|DEezA1mQKOS7NB1d#|6gTZP&Pq{bc7E})2)Fuo zVfB#fOHJyZ4q?{A%e?W9uOxtQpT23Ql+8#Qf4sDha9unxt_`F&m5x>ReXksPEdf2Y z1=FS@3b+~eQ!Wx`2x0o{V142XDLk*kuxUqUIA%}h!i6sPon|l~5M8cPAjN8v+cBNj z`L)o`+xFNtP)upoMwxF%FlPur#x9I%M{Moxb2zkfu>1IvLlu)E*F@+1)wcD+PVjC0 zW>W9#aq@uK|81g7?OPZ;!$-p2#w;nCt}&e4NQY>Q+lmA4wG$yT*Lya0*$i$<4O&^p zwr5@~6$(+A??{c)9hgQHMG<9C?$PI;0xvyZW(V!{=;)N{BPDuSckmo8ik&ZdDFaM0 zC|-LO`-m4=U)8gDosC)za(4zQfWrrFlQjcJ)ZAGJ(?<_h91fzNRDJmUsJ?*?ztx{= z4PCC&XW8r4(Bv#t{6UHpLff9)TUVTi5_cr;3kvjrs-z$K68Lv%Y2vkbcw_qT2-1YH zkXzBePBaSbf=E3)SiV}uw80aD!BthA{l*p(*a#3-?!u`jsj>d1orIBWO@J?T8CM9F z`(OoP-TffMMcGZSXb+4>_~Q=_a;l3BsO{ooOn*LCuY$|F)`|!p4{#t8YBvW7bG&^W zj`pNUzBde)g-VjR`e zS?d=|?WNY+9+XIqrV6ZMKI)Zd;mUnKc$Af3`=>`r1+2asD3UUoZ9L)gAjII&`3twX z1FbM3No^B}Pdp9K0309Wz5xda0`q6+br=U@oh*Md;hze#+h&B$K|5mBruZ<{ z>bDbSCFUzZzb;?E_Hb$hx}tKve3tP4xwP$GF6$8%c63zi>e#|vR4B2Gap81$*x6TB z;k>SmFn-cAGrn^OvJtTMgYCV#0^>>{<*-Pc>xkzZx}^$Lu|+#L)!LVk061 zMoa`@#kxEf-k;B-`-^rg7UP*dZ!aq+E5F{}Tw11zP(DWja9m@Ll6P2V7aQj-o3#-& zBnK&UVn*VL1&O)`I0cqZV@ijs7QREA5i0&dd zp4dZwXN8SQkcIMFQ%iy~(2r5YzGQgVOlbVW8CK~0Nk{yOR&V+UE<0pUn?`m5p6UHf z(8Ov4x^hZ(cK4L(){j3W5j(smePY!`$jR}*Y#{o9O=1`MR=C*@6`CJje9GV;Atdl! zS^_4Y<$dfKW@vg&aeyq!09vG^(8Fg$EJhxx5pY*K>tx}w@3Y?rKMZDgDD6F?PBxZq zad~(f4{>HJ#MZ#Ym^%UW2dYIj zubw;Twa+?SI(#pUAN`fbW@`IeIT-(ea@H=GriChz5&iZlS_>=@bsf?JKr6Q%pLCev za1ElhZlkIv|0J*m11==y?*$yhry;jm*O)F_(t`O6$x9R+p_6B<$H!Sz@;J+Fs6{4R740%jmA0T*j-4%tV>oH9-0Lz_I!*5 zGYp6eDQJ6_y&f^7sbf`vZK#tw=Rsd2T-vcwhD)9WawIbH%#Q`G7?HMx81^s=DH!>I ze6J+*8X zAr)AgAt!>WDO4pP$?ln}V_B)=SrE&BP~RdeOr~rKPRY}qU@0YU_f0S~-$g>iqd07k z0T%ppSR%i!lynaI-SqG|KKHXUVrRdqThLG38O@R$`u-kqid(_CShph31^RYy?{5FF z{tPsf$y|JPhwp}hqVC82hj*{-clFh3oefW|n8Jf|-{k|!CPyer|id<(7b z*;D~$mZuLIB*A9jA6{)pgaw$jE%*-ul_ss`QO+9xxD+i+o5y;a!z7fZO z43p+(XTrxDPtK6sm<ih~hQ-+1(V0rvj!sc>D(PR@WGhq)PQk}&*MvZ1-T|Gr`}Uh2 zy8>i&YZDxr08Buu6CJhtVxzbtan~Zyq}WR1&AYn$l^JDjT^Tb?0RR_Vd(4V4=$NyZ zc(h0Yw1<{ul%l@yM@o?+(+g-ncsIgCQzE~Vn{_wc~w`duXp*VGR=88 zaZkmF!38Td$R|so7xT=(ex5>Qqe8j9;!cAPdbd<;s|nj}>4>kp$D7@)hKFlw_7Fe< zVeu{j+=qcks~VEP*FZEjkOQNilho%gBS|yvapdymTj+zVBABf%A zyjGb3BV`;5(Q5~MT%ScW0%^%ERgg_J14H#~2B@6j^l?;+EV^zhiGT}Sc-f5fcH4o0 zO)b4*N_YY}nUNwNu_paQ6zGsC=ziwdM1&^yFtr@zWk;6~r9nqnOfnaV*uzrPsz+h3 zfB>rl=K+N>!qXrYli&7i02;cIq+1@g)f5+!Ltb%MfsF}@z)5=a1*N&E zdkZO+>o|~`!zhcPG7;Al1kPWK3h$n&{yAL7wcyVlxdIf~5WpBWF94TIjGF?;3^?9r z=T^W-gh0{TJQX7U+@~GGZFa!C#-jCB-{HIz#vTp{A=&7>I@Q*E>-|UfJ>D=N4d2x< z=TPT$(mJ93kJN$~Zb_3IOwHe%ziIfG?%ui0r0@y@Hx{knw|a)|C<{Wk&;xpX8L$o7 z{H&Yc-l*!I2QUQi?DAPm7d-lkTL<~?F_!R72lUv03~FPV?xA2~iGq0cYN^3B)~^KV zI{>Xxz(|*sz}%(NEcr=e-=0T565Bx0bP>U<2F45j^_I~lGcO*T;}Bhg?3IXyXfV6& zCphDgyl7<^FyIjXcp@IbJ%AszkZiX2FP$50em(c9CCH^I?pPI#XGb1yvr% zPdtF5^<(;vP5#7fLcCO5o-;G#cyG8n7X`_X22s;eh-!}MtxW2gLL3qGX{Hne9{$N=0Y ziDi@jc^n-z(vAX9NO0vKHusPc7Cq))$0PxW9Dyb+^iu;fyV!y#f~!Vakhzy~NRThfw5OH)ycV<^rq>fJ^ywYG42F;N)e!hJ;$@FaOr8dQ!%gkdO>3}$s`>w9t;y>GRx z0<%z?a4tKJ3DXZL{5WfXADIYk+p@+1CofEsv5ElojwoCHv38vcF{Lha<4FX7u>duJ zE!VC&;snFL1*2^&*or}}Su}5w!G$CVsqup-$Pc2$5yP^e-oK4A2|>Uo;zf!=;Kehj zT)__Mjxq`V4BpEQ5%kw))tKFLlh>p;Tn|4%J`HzEcJ%6OLvBkl;lXerzK(0FtpN2V zKWO^EQl0NA9o8_Lz0Wf!``qj6mpK`=ShGejqx;S-#8l5W##E2L4}5nadb3WgLM4x# z&D^l;Pm5;_?(HnhR9NqRBogYcYS$iP6ePAkuI(+Fi++Y$(4#T@nXptI!_@7(g|xEE z+$AX!kND1BW@uxjtjLGbnC%2?jP#V)B{+$thH^Fm(;NgWudli_<%W1+$md*C>+xNH zH%fr;Ig`FQ(Ip|-!un-m#5)T(rZ8CvFtG;$Wdhl;jYunbj0!l^+Nz6{RX`F4uLTVc z4T@vL16`-R$MLi?<8s!utS+(shX%F_#{s;k(uQvDb=^W&nXshndNufH5& zkhS|&RA2^3H@GvlO`IU(nP&1PyJDv$aHH%`90&xpY!xs*R9$gpsUKT1L_q5z(_Ddq z9CT$#>#6E9)p->M$H`u7T<3EL5-C8of^8!%f5TjC}`pAr2rtS^QtAUF(cZ31dV>cVKenH>F7c--h5lqMy?EH8#FPWzWoOt^i_ z$n?`)J)4*0CgW4@-ec$CYpNFvd;`x6K;Lc-JY62#JbB?NvVrAya2-T5M}QAmAGkZt&<(id`;uC1i-+$rVb zzQX`3BXk=cghyf~?ww^uR>*eW;#TKhcs~p^Vv^!nzyn0b3a0a`n7jp#=Pf zwt(%BtKUoj+C@%7ZlR#OE1|%3g+841c*jbbGrxFxPLP>|L%+I8{cZq&6+CL@QZb7xX7!(E?WRM#!lmYruC3J$>zh86t5g1n)+~`E$b(UJjLpMp{aLa5aoz3k&DI z>D}6Kx;Tcp)gM@8pk!gVlh)IKs3jPAa>76 zAVtfSF8D26h;kytN9d2Mz*=$4iXH}pD}F_*0tMkt9YZ&Al^ztU3vHI`0PYJrU!+@T zSwnSUKw-L9h>REGA`_s!1XbhM?TgmTxIGBqAdu47n~)Wi*b2XtrzQ;~T6V2*L|gGN z5Pl7H$N8qkYM*%3aB?+Jofo$Z2JhQU`}@^Pyg&)%en9biU?-~nZZ%iAjlayH22#l~ zdY#|wf1jZnoAJ7nVD#3 zliftD96C2Sy`8KvZ<|UQ1%D3U{=Q&RNSg|D;V;8Lvv@G|ccrnzorE6}IKlYROwT`u z@*G*Dfb52NvYd0I2w<`@VelV>j<(d}jgE$I*xfJy^0x9lp6~kIGotPsl*-IuSCy|?W z1-8bTMKr|2Xow=6sn!HK>t=nIV?C=RXnpclV3=|2(xPzgJReRV1YS@d$-ziD7 z#tI>5M}d}OIizCiH6mEbsT|luTx?uXM&&mr+%ms!7#! z&n2t=AZb-@he#3t`Xnc_P^43kJKh`guJ@bGOG<^9={*&9?~PvCKS;p_HO7dg1~iOL zMiLoHsJJE@K^#pF{3hV%SVpF1O#XmEBFFjByPsuuN`)pA@ekjtZ z-!DG=(soNm&=*Nd>c%2pzl9Y`yM;X|?$efdJGVFEGrMgLGx2d0GdnC*NTz2b3$9l$ zkmb7NJrbcTd%mZQT;zDjCVX`-sk*MnjA7m_BuXZFu12^A+UBj3O@?ZV7f?b+LtH|W zUpIW2m|H+$#J1wC!qcD`?HwVK%`wtZKXf=W`*37Q3!C=_44Sxm@#yY>WY-2FjwaPA zML=TG6`C@)PSEJj&5(MVYh95cTY=NsALExe+3NBxza1x4i&-^L(Z*IN%QanUdM2*#w=p3le4>YEb+t(!jS1Nirp&SgqHw zH7=U>{$z?w7xZ|jmBi&ml*GwBu$aiT#%v_E58rc*r#TM1HCYW2oi3GX}7$6X?r;E4%9=Fh>{`G>tLZO8R8m zQ<7Y7oGk<pdK(C!f0+3o|K(83v*m zaiUloyjRe&G+BtoH_ruJD0h}n z#7!cU94nGfeF(Q$Ctf~m?ES-w`@w$F8#wq#q|%@zxNqzwxc|iF`I?ugP-Bo+o2h3J zPx@HpSK&Z-xRUR?Zj0^5pmaR43+988iNG#-& z%ss|ty=rLR1ULcA2A0#qr;Kw6#)>J%Q#>b#lorM>?3<#xB(^`q6+Q06PT_wz1ZO-N zK*qCuOj61$0$+puj`j`}SLgd?(_NrpjPVMxBZ#~m}Lx{vC;iLzRSl4yme9lXYf9k71 z#idZh?*Jp@nkS0s!udo)Xl+ya5s_&h8+##QuEN7uSMS=LbLf^;^#-r#viW!DjO8)a zyd@gpMa)GUAk!#<_jzZhX#G)lb;$g^=r?ztbU0In9I#kz`-_vrWP%y)y=1^V6wR3ipCO{2*jQ%mGN%xbXy@8@#U1g3do$k_{d0*NMcr)%IqyG z;DX#nz^Tvs*?D**r;Ai$j>sO?!&MagQG*s=@*3N#&{~(sOt!omohqqX4y%-jdc6%n zjk7~?Y=o-j2x7xKtoLzAI*WP^otHT983ztx()gW#PhT#x+NcBZP10r_Ap*>!wm9NU zKf`c>kxi+EaatarEYeX|H}^?}#Qs!QjVlFko=9;iH)3==-L7m%O;8JL6B4z$KD$+D zteZu=Rj!mjt??O7{G34xZdn^bDT>M&swuPiQKTyf20`?4wRuTHoiiDR%ul5hZ=;Ls ziU%j*`DGxIqOE4iuzyI#Nu!P_US4eODgqr*XV{v6^;k-PS=9c1ODjWL{v|&pxLx{J z6D-YIM`f=6PRo!?wA`?qlb1Zc=tCcoJgMPGk3MVKvZ*&`TuE81j8ab{2B1TcAsK+9 zK2p8)vzSeE+zYKrjK548oFWEbdo(j(^)gLfpL=|)k{V)#)>e49{P{ zX5f?YI6=y9fbTd#_M9#W2vftF#ol`zi~kRK>f_DdQS65d3i7 z)O#i^QuIt@`(?{vGzTnTG`sND8$+K(n-#HRJsBXG#sYO zZxh$;-m~&8v3+PqfVj6wwIOC%1+2mT{s(da?skl1P`#_Lro)8D!2-v_eHdu^D2o+P zp(gtGwY!~I(7lcF!soCC~OEIXf zzu{p8HMZIkrdXL+SgL&$(GH|zukDTp>{pwK5R>IOM+EuH?<#V2DcsyX)(51>aaZ#_ zWX6wM{TFffAG~Xp#dLaci*zmmD@4EP&I#EhB)!#l(lXdmhUA9|85QHy5*6~LyL@L6 zy=IISbE&XB^ddx+Z&t6NhI;0YrC>K^3Gi^5LgU_G;a_zl_J*J01Y9XH84lrr_FK&- zh3fZ!l8pXwQ12yJn&EP_$&$Z9x#0Pn8D;Wb6n7VX?HI~X8g<7`Hg=sM>s8(>9ow2o z$RrX1Ma0`0tKH=rTs?6Wt4wgigL_wc(NgBPY4HZLSHN1AVAnA%wIMaieIW|y;#o%W z`V4<>IknP;e-hi3dglq9v*EVU1??nO>{CXEx3a@{LKJ~wlim0OEaVMBNMK;kG1mIU zm)1WVq#j5y1l@$LICar$PRva6kBbUE?)}M&mm1bOp}~omCCQ@Me*ekoP`PR_)hTEZ zwtJaY7`G1J33(}zctG{>iPJgEE_E%C`(t;dTgx!l$f!)?-oA85(*|F73ft*Kk|Z5?x?V_kSwRqp6Pt3Vm4V8l&m&71oj- zz$gGE5BFg&0BIe3g8ZnDTNnID&$hC>sbXK-^KnPSbrNE-pPkf#gHQ5mc-Yao2yT~% zZe5Gc@$eJ5U7CeNF{HP^v5S#sU-@%XFz}dj+%P9V7oXGj!MUy{mk^eOEw!7$|aFYb}J=+bQxN>K87^wQko{VoRXWV_Yxw)7gBR{T; zG%l7yqXe<$Z}CXvB@3^QO+W8);GDS)DXGBYxN)O0{r%*pDj>L7N_Kf{DNUALGZ) zFBJ8Gyd2Uhg;&-sl2k~hPC2!EWNVDh5@haEc+2ddALYx{a+uT z5)K^-;CS)sQ1ME8g=ii5z!}Tw`m!xE);07MYrFGxQ;d`m3KmG#A#>#v%(=eHX z`nMA%9RK-@fR|Fw=d2q_`y(}8B6~%8Jpsr#nMO`6jt1PmF9P_Yw?w&<)u?l-Dk_p* zU(hw_(hrxUeSW%-w}IP@G4}g$1LbP5!-8p84OA(h;ub{3N7z5LZ{nLVY0e5=Pqt0V z-fy1JLKrIAMd-itR@jUodQ?p~CLI{N=)zA&=iNK#;30)3vZ2oFJp$uP&;mD6$lW1Y^1k65^UERS` zJxz6|&$*OL8QW`WFMA_V)5>jxv=Wpj2qA{u0*og(?1csW*`4p10Szx}vKIYPjp6i>M<7O8*6GN$+|=O^1}Qc4M3-Ap-0W(Rms zDWTgWe6Zi^DIg47TOdmRpKSW9>M|nW+;u0n$f^xYyI&}-PK6SuF#*1GCTB6^P6Q%C zS4c1{xceL!BltfQhr4NTeZJg#!LjbQ5GkAgU-Sa%pQQY=>Fgzd8F%atW2eEA$a1l6) zQZfy8fhP-fcaga&qcOrw*b`#aw6vCPJx=O5S;U2)vm7&FCV7p2tnGa9>mc#(kve`3 zmt6h3;SxrM|Gc&e)O2iin^CO{iDnO364yc*YdBkcG#bEa2C>5rx^1#-R zAWmoH8FAb<23^)vZkdSem2DB+7*i&rrWWgS9tK~)g_5|C?+cI1T4$)k0sMoXPv3Rc zG&0;-AwpJF%v#&Umh1hoDGTy4-<_CC@l9cs{(JM~EzP;|%ErgL4#SvRa~;cQoGu`;QYsV1Fe^~I=`5@rC4Nv_ z-1NaSPm9h3iSEb7H28lo=x?l;tJgUZ+lXqzvmxu?hp$-SzHz)j)8d{;C$C|*%w|s_ zODvJ@msg49sltZNg7s+4VEen*I8MPru6$S8%a#jNK9=;J2puT>6!_x{Z^OMc#C(IX zw6HwJQb@OVOm*P?HK#6~bhOTbh9hB`ZyO6xw9>OHTl?9$fbgpou)ebaNL^U5#R$~j zIDuNI$(d3L>{1H`IZ}V%Z>53*&ZdzlXO=b<)Bh=%hga}8Hn6N(LL-NE5_yJ}AwYel zNZ5f>PoW=3D;FCu+s#T1-JJe&Qxkgt^5y%aI{Nt*%V0|&8BV=zrW>p;jM!M|M0V-x zTD3tN1!y+Juw>otR4eIBU{X6EnQpTKZv8|(B;?r8N=)@p!6vpzG)NwJF=n&MG*C3l zg2fW|6GXHLopoSnw>B(09_&!{i;AI5QfLeg#g4&sBV0_zkS9%%<*mL!7BR0Pb$XRJ z3}QU6RQKrlwsg@7fg8hku!l}zr3##vbz^fUq6S92=lA@UO-qneiAv_kTVqym=@e=> zYn2SuPPoZ)Ff-?Aq#{lDu9L`jt#g49jFwrO0&G9^oY`5YbQ>cAchRJmou?tSQ3fGF(CTFxVLP4YSNPRGO>+XFBmVsz z)AJDR!x5&9+;6y(BYS{5E^9p6fhlxS7T@Nb8HAh~{S|Q#cy601%iqDOs;)n}T)oO- zKQO9#FssOk-U^l@XnPj<^axA$@C2r_as|u|k~MW1p2(Q^Yf-Yc9H^bsam99nN_6ww zxtVGy1V7qvuSuf{0W`jE89amzB1rz~IXU9Q!gp~*d7GUnZhb1+#QS_%1l`W=!l zII`DTy$Z``R)Y&}8xARKL-vx`T^fx~EG~YB)aM;bE|1dd!y|9~Bf``oVAp;;kuF1l(U)thfy$rP$hmUtys0#JS#eK&UXqVt%gnt8*1v`Z zn(B(30`ke~>|POO9A6pU5!@<3%Siyk8m6ZQUxJ&KHZeZPEZUPDu;Ti;WvXFfOky*Y z`36QQ^6il5F{9gzuMxmt$eGbLAnpznz6azKI#?3)jFRtp){D)WbNiQ&p4tay(1=GY zb|R>{7K-aZ7sG@@-0>X%Uc}T%fs8ivG}aGl%&kvi=z`Kw9((ZfSJ!xQ1h*^C%Z;3r zSN;)+B+p;%3}>9y{9WwfwhbXIMXpSEo87Ts>65=$fz^c_3Y2q24XTi{jw@>Bap=$u zbZL-M(lByFnPSi`z6)+cMqG-X;F#KmXB1 z`h@>Kw?IZA0neA8T0s7Pw*_MSM^mKpA6p=VjzelNDI8=r0+2K^4S}Q%!f16k9377p z_0y%8bLI-F_l%m=b(3q-hq1Inx7+lG2X-v>Z1|Ps$octDK+WU$#+S%9_hx#&n$=G8 z%{8x0?$`Hg)IfGD&LVjE5?EYp!*r~PB$JZF$AnuC-OaVNE2G|O=;9uWjZQ&Jmh*29 z>z4O1ZIso&Lj~_a`MC^H2*9_22O`Jq#H;~)K6My|gAeA@VMpA+$5z5pOA_k)d&ul3 z=GB|>GpFa$LsK_WG$uman7>?8gQ<5I?J*UxqtV9!CP%Z06Ah4%u#>qH!_a4+Cs76M zv;q_`i2G3{xLOOjA*uo*VE0^8kgBfhRE{DVU1il0p$dp$ncu)NKiis;_*BPZ+$(i6 z2H$q(d>bJZe?-JZof_-RDJCmobdX0L6|&H1_UHJ)mo=r7>}yyoNH;`nO*_&I_WEKh ze=zy>>{c47I8nm9f@-N@^6y&z>92G?or8?+84n=K5JMz>-m~COne$V{jr+h5$izfE z`h&rpT~hbvv{{JBV}iu@d@~}y;Ymlx+udv@P3* z&Mb=ZI6&&NMSgEKg}%w$@s0UPBZLvfTj9qB_Vmrz)Xi^E!7AK*Yow%x!;kEzFXBj5 z0-!_0Pf?&L)W3O4Vs7LLmGk$;H!pgq?iOtkdRKz7emx9GCbT&P-pGe6mlC!atT0HZ&8>hiO6vMR3 z)3HdMr}6M`Vtl6b;N(m8c6dKIJ9%83ED3GscljgKyz)y!wSP%A)UZSM@HD99w#?Ae z-d=GnSZ;w!ruiJrgWiM0~KdhjI+!hSZ9T$WKq+^wD9O{)_Q6sPDamQnh3g^<{g+Fq@7X9PN7Km5L?ZZ zfMw1dFu{|vPRdZ;6xBGgB~R3XZiC!AhPLg-UXJR5<$T~OX>5390$XVavg9E#{= z;YTav^{gi4WOqkLZ73F+`Larr%`bl3s~U+Dg8evklZ@FTxAuwqZa$1C9-DTVIKJ2Q zM;vK%+AV|zZZknKmkpsY9SGR!QZB|L8ih^F{DuS*r2w!Rou*u}SQwKy+@=DQ}RPw6C42oosSL7S+%wixc51dV?D@bLM-af z1xwp=)KmBo)YNu+2^$hs^t+2ClQHm`6&_vCtrSr6lfC<)XqJs?o7Vy$@~T?c%U^z3KZYrjF3SCBt_s_~W~d8`xQsJGi|+l|0fb&DFBbpgMvDiC(f* zQG?|0$FqZcan%Yx*-w{3q92zEKTnh7m&*lIPfuLaM_th?elL%!9m=qNgennvYGxaU zJCx!f{Wh{YI45uu z)OVKL>V%gXu@koeFVRzvc2*PMN$k}|XW1Q?u+y@*pxZ}zGQuGc?LVgCN7m2GI544B2t@NWGlviGq z=)m(g6gD4slLF5+*IPFKbCvb7e{#C{TxHe&?JE0^_en=-^wYbG(EdW*2;v@Z&O)I% z`k6*?x&$Nx$D_EnVki^?BB8+={_c@fn?W!wvU4$ZW>kFe{<+BN2d^wAs_du!=OUZP z!|O@UTlex~zWwF-cC_zP8m2Fvm*e0Ks9fNNzSH76ld>dn;f>Npl$V^NIXpcZ>Xt^BkJO_4_6pu>WXcdL#Fa9r)1zG*C z`(7$?o2~q~o{Jzm#!y?!r~Py$#taxiPPZ8eS845mH6R-J@u)+$ssE5yV13Ff;CgL7 zbO=$JOmG4i6`x!;6yA0Sexk9?SO5NWhDBtR_v(KJK+tJW#790CjW1rMyPHyYQ4}!E znomlK+59d6vu4Uaiine2wbGhVOcwlHVI%fl(M&650K$s4b>Xz59!Bw`O>r z%cD0wXd;)w%8u6=Oo!r#Q0w114K5J1P2LhV!nY_(4b# zIJQl#fTkKfqFR``qXsd*@J>C}nsjt5AKIv@ec&AvZdy_0sCC#XV3UJy9>QBwfh3BJ zR|1zDa61U2dsU*6d!RCw(mA^pL$17B_k)ow=dXqhoGvJOY-?@ChA*d+$Hv-HSjOOBquigLx(l;>PcA~tt_)rcNo37wwinp^y)KB0YF|>aX@4b z2;x=KfEL?z>Q7wC-aCEa)f1Ctu&ar;&XtwwSbg8S#Q@EePT-sCM;uUeU-zC?cL1TuD_vGTjI z<+&G^(G-==K3%0M@U|6CD=K_0(iUQ8B>B7Rq8|?v6)L#z7>Z)d4!#{wRz$}|cPCC6 zOyn%Qy`(cJ3nq)?caPge)CT*6&Cd7z#FR<|d?`kS#nN8sVTSL2C?P8+SF6^#Cw0`q zp7J)z`q?qy%!C!tiEr&goz1NXExNjgV@0wX+ThG6ozsO5p|B3FZV5Y#AEovk*z=cB zsZ7hr@2MTTn75QldNmIGZO6_SH;U(&x46e6rrX`6K?|6LuxVit%c*G`ivwMwR;E*cxRRan&-{u!S6?HwP~n?@9AK<*p9 zQB>jHuhz)HouSm$(Bq}@7DMz|K!G&Yu#S+~rAdiUvG&`it3NKgbsZR4NlcFHhK@^m z*|X}fM~;a-8)4`!M7XrqS+WZqYgA%EdXZ=ksAstgvCL|qDy`p>lpfTlGk{pmjBB&K z+*VeWR(QYnHdXobwvYn{YLFmt-o6&EpREbOg^h-@^NiS|i-i_)9yb`iN3PKJ6#Y73-GkWpbwN6rpH`xo`mvLeg-YB0c*Br#Z)l{F0)PGd} zlZyDY@@rhu-%1|Xe=7fPc+%I}uQ3IGYXLvQXaDn4|6ORoSI$?x{a+3u#y^~YFT4K= z`s#813$nxg@4wK0vpRo8e09eDMTirAMf`I={T1<59Qqd#Nc1z9Rl{ zto%QSFT=rq5!c*b5&w(|e?@#fJN%14)%l9}=Opnf;_DI7Uxc0B7sP)Z7=1;2ZQuPx zV3>YI{L{?)iul^!`HSE*|BCouuFkKwH-8b{)?X3-%hmaH^ZOT(XY&>Df3Hr^&-1l^ Sg;Jvd{QmrxgzNOLcmD^U2}(f# literal 0 HcmV?d00001 diff --git a/0.0.11/html/images/cpp_logo.png b/0.0.11/html/images/cpp_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..780e8a32bdd384c1dbd0fc999b9ef9ed2e1bdad6 GIT binary patch literal 23613 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 literal 0 HcmV?d00001 diff --git a/0.0.11/html/index.html b/0.0.11/html/index.html new file mode 100644 index 0000000..35f1efb --- /dev/null +++ b/0.0.11/html/index.html @@ -0,0 +1,1448 @@ + + + + + + + Guidelines for Teaching C++ + + + + + + + + + + + + + + + + + + + + + Guidelines for Teaching C++ + + + + + + + + + + diff --git a/0.0.11/html_split/Advanced.html b/0.0.11/html_split/Advanced.html new file mode 100644 index 0000000..c4d659a --- /dev/null +++ b/0.0.11/html_split/Advanced.html @@ -0,0 +1,60 @@ + + + + + +Advanced (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      8.1.6 Advanced

      +

      These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

      +

      When can copies be elided and when does the standard guarantee copy +elision. References: * Abseil tip of +the Week #166 * +cppreference +- Copy elision +

      + + + + + diff --git a/0.0.11/html_split/Background_002fRequired-Knowledge.html b/0.0.11/html_split/Background_002fRequired-Knowledge.html new file mode 100644 index 0000000..d3ee185 --- /dev/null +++ b/0.0.11/html_split/Background_002fRequired-Knowledge.html @@ -0,0 +1,65 @@ + + + + + +Background/Required Knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1.4.1 Background/Required Knowledge

      +

      A student is able to: * explain what a C++ type is? +[C++ object model: types] +* explain what an object is? +[C++ object +model: objects], +[C++ object model: +constant objects] * define and understand class invariants? +

      +

      It helps when a student is able to: * use move semantics +[C++ object model: move +semantics] * explain special member functions +[C++ object model: +special member functions] +

      + + + + + diff --git a/0.0.11/html_split/Background_002fRequired-knowledge.html b/0.0.11/html_split/Background_002fRequired-knowledge.html new file mode 100644 index 0000000..6535d70 --- /dev/null +++ b/0.0.11/html_split/Background_002fRequired-knowledge.html @@ -0,0 +1,54 @@ + + + + + +Background/Required knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      8.3.5.1 Background/Required knowledge

      +
        +
      • All of the above. +
      + + + + + + diff --git a/0.0.11/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html b/0.0.11/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html new file mode 100644 index 0000000..3e850b1 --- /dev/null +++ b/0.0.11/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html @@ -0,0 +1,60 @@ + + + + + +Basics Types Objects Values Expressions Statements and Control-Flow Constructs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.3 Basics Types, Objects, Values, Expressions, Statements, and

      +

      Control-Flow Constructs +

      + + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Constant Objects???
      [‘?’]Declarations and Definitions???
      [‘?’]Selection Constructs (e.g., if, ternary)???
      [‘?’]Looping Constructs (e.g., for, while, etc.)???
      + + + + + + diff --git a/0.0.11/html_split/Building.html b/0.0.11/html_split/Building.html new file mode 100644 index 0000000..e628fd0 --- /dev/null +++ b/0.0.11/html_split/Building.html @@ -0,0 +1,57 @@ + + + + + +Building (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.12 Building

      + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Software Build Tools???
      [‘?’]Strategies for Handling Build Problems???
      + + + + + + diff --git a/0.0.11/html_split/C_002b_002b-object-model-copy-semantics.html b/0.0.11/html_split/C_002b_002b-object-model-copy-semantics.html new file mode 100644 index 0000000..6d7350c --- /dev/null +++ b/0.0.11/html_split/C_002b_002b-object-model-copy-semantics.html @@ -0,0 +1,69 @@ + + + + + +C++ object model copy semantics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1 C++ object model: copy semantics

      +

      Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

      + + + + + + + + + + + + + + diff --git a/0.0.11/html_split/Caveats.html b/0.0.11/html_split/Caveats.html new file mode 100644 index 0000000..c5303c9 --- /dev/null +++ b/0.0.11/html_split/Caveats.html @@ -0,0 +1,62 @@ + + + + + +Caveats (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1.4.3 Caveats

      +

      This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

      +
        +
      • Compiler-provided copy operations may result in ownership problems +(e.g., char*). These ownership problems can generally be solved +by using types whose copy operations have the appropriate semantics, +e.g., std::string instead of char* to hold string values. +
      + + + + + + diff --git a/0.0.11/html_split/Compilation-Model.html b/0.0.11/html_split/Compilation-Model.html new file mode 100644 index 0000000..de11703 --- /dev/null +++ b/0.0.11/html_split/Compilation-Model.html @@ -0,0 +1,62 @@ + + + + + +Compilation Model (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.1 Compilation Model

      + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Translation Units???
      [‘?’]Headers???
      [‘?’]Modules???
      [‘?’]Name Mangling???
      [‘?’]Phases of Translation???
      [‘?’]Separate Compilation???
      [‘?’]Linkage???
      + + + + + + diff --git a/0.0.11/html_split/Compile_002dTime-Computation.html b/0.0.11/html_split/Compile_002dTime-Computation.html new file mode 100644 index 0000000..b9aaa0e --- /dev/null +++ b/0.0.11/html_split/Compile_002dTime-Computation.html @@ -0,0 +1,57 @@ + + + + + +Compile-Time Computation (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.7 Compile-Time Computation

      + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Constant Expressions and Constant Evaluation???
      [‘static-assert’]static_assert‘✔️’‘✔️’
      + + + + + + diff --git a/0.0.11/html_split/Context-and-Aim-of-This-Guide.html b/0.0.11/html_split/Context-and-Aim-of-This-Guide.html new file mode 100644 index 0000000..60efa61 --- /dev/null +++ b/0.0.11/html_split/Context-and-Aim-of-This-Guide.html @@ -0,0 +1,76 @@ + + + + + +Context and Aim of This Guide (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      +Next: , Previous: , Up: Top   [Contents]

      +
      +
      +

      3 Context and Aim of This Guide

      +

      This document is intended to serve as a resource for instructors to +assist in the preparation of courses on C++ in a variety of settings, +including university, college, and industry environments. The main +objectives of this document are as follows: +

      +
        +
      • to provide guidelines for content to be covered by courses of various +difficulty levels on C++ (e.g., topics and learning outcomes) +
      • to note some common misunderstandings and problematic points that may be +encountered when teaching particular topics +
      • to suggest resources useful for teaching C++ +
      • to present examples of curriculum for specific courses +
      + +

      This document does not itself provide a curriculum for a single specific +course, but is rather a set of guidelines that can be used to prepare +curricula for a wide variety of courses that differ in focus and level +of sophistication. (This said, however, some links to other documents +with examples of curricula for specific courses may be included herein.) +This document only intends to target the teaching of the most recently +ratified version of the C++ standard. (This said, however, since older +versions of this document are also available, these older versions may +be of some use to those who need guidance in older versions of the +standard, at least versions that do not predate C++20.) +

      + + + + + diff --git a/0.0.11/html_split/Contributing-to-This-Document.html b/0.0.11/html_split/Contributing-to-This-Document.html new file mode 100644 index 0000000..eac6c28 --- /dev/null +++ b/0.0.11/html_split/Contributing-to-This-Document.html @@ -0,0 +1,55 @@ + + + + + +Contributing to This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      5 Contributing to This Document

      +

      Contributions to this document are welcome. If you would like to help +with this project as a contributor, please read the section +‘How to Contribute’. +

      + + + + + diff --git a/0.0.11/html_split/Contributors.html b/0.0.11/html_split/Contributors.html new file mode 100644 index 0000000..53ba0ef --- /dev/null +++ b/0.0.11/html_split/Contributors.html @@ -0,0 +1,57 @@ + + + + + +Contributors (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      +Next: , Previous: , Up: Top   [Contents]

      +
      +
      +

      11 Contributors

      + +
      Christopher Di Bella
      +Florian Sattler
      +Michael Adams
      +rwdougla
      +
      + + + + + diff --git a/0.0.11/html_split/Detailed-Information-for-Modules-and-Topics.html b/0.0.11/html_split/Detailed-Information-for-Modules-and-Topics.html new file mode 100644 index 0000000..c8c9fcd --- /dev/null +++ b/0.0.11/html_split/Detailed-Information-for-Modules-and-Topics.html @@ -0,0 +1,67 @@ + + + + + +Detailed Information for Modules and Topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8 Detailed Information for Modules and Topics

      + + + + + + + + + + + + + + + diff --git a/0.0.11/html_split/Disclaimer.html b/0.0.11/html_split/Disclaimer.html new file mode 100644 index 0000000..a911983 --- /dev/null +++ b/0.0.11/html_split/Disclaimer.html @@ -0,0 +1,55 @@ + + + + + +Disclaimer (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      2 Disclaimer

      +

      This document is intended as a proof of concept to solicit feedback from +others. This document is incomplete. This document likely has at least a +few errors. +

      + + + + + diff --git a/0.0.11/html_split/Error-Handling.html b/0.0.11/html_split/Error-Handling.html new file mode 100644 index 0000000..1f8d3e0 --- /dev/null +++ b/0.0.11/html_split/Error-Handling.html @@ -0,0 +1,59 @@ + + + + + +Error Handling (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.9 Error Handling

      + + + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Classes of Errors???
      [‘?’]errno???
      [‘?’]Error Codes???
      [‘?’]Exception Handling???
      + + + + + + diff --git a/0.0.11/html_split/Examples-of-Course-Curricula.html b/0.0.11/html_split/Examples-of-Course-Curricula.html new file mode 100644 index 0000000..64eb64b --- /dev/null +++ b/0.0.11/html_split/Examples-of-Course-Curricula.html @@ -0,0 +1,53 @@ + + + + + +Examples of Course Curricula (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      9 Examples of Course Curricula

      +

      [NOTE: Anyone have any suggestions of items to add here?] The +following are examples of curricula for course on C++: … +

      + + + + + diff --git a/0.0.11/html_split/External-ie-Non-Standard-Libraries.html b/0.0.11/html_split/External-ie-Non-Standard-Libraries.html new file mode 100644 index 0000000..2bf081e --- /dev/null +++ b/0.0.11/html_split/External-ie-Non-Standard-Libraries.html @@ -0,0 +1,56 @@ + + + + + +External ie Non Standard Libraries (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.11 External (i.e., Non Standard) Libraries

      + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Graphical User Interfaces???
      + + + + + + diff --git a/0.0.11/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html b/0.0.11/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html new file mode 100644 index 0000000..ce2c1b0 --- /dev/null +++ b/0.0.11/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html @@ -0,0 +1,62 @@ + + + + + +Foundational Calling static_assert with a constant expression (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
      +

      8.6.4 Foundational: Calling static_assert with a constant

      +

      expression +

      + + + + + + + + + + + + diff --git a/0.0.11/html_split/Foundational-How-and-when-are-copies-made.html b/0.0.11/html_split/Foundational-How-and-when-are-copies-made.html new file mode 100644 index 0000000..4cec33b --- /dev/null +++ b/0.0.11/html_split/Foundational-How-and-when-are-copies-made.html @@ -0,0 +1,63 @@ + + + + + +Foundational How and when are copies made (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1.4 Foundational: How and when are copies made

      + + + + + + + + + + + + + diff --git a/0.0.11/html_split/Foundational-Using-UDLs.html b/0.0.11/html_split/Foundational-Using-UDLs.html new file mode 100644 index 0000000..adb461e --- /dev/null +++ b/0.0.11/html_split/Foundational-Using-UDLs.html @@ -0,0 +1,61 @@ + + + + + +Foundational Using UDLs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
      +

      8.2.4 Foundational: Using UDLs

      + + + + + + + + + + + + + diff --git a/0.0.11/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html b/0.0.11/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html new file mode 100644 index 0000000..e37a992 --- /dev/null +++ b/0.0.11/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html @@ -0,0 +1,62 @@ + + + + + +Foundational Using and defining functions with default arguments (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
      +

      8.3.4 Foundational: Using and defining functions with default

      +

      arguments +

      + + + + + + + + + + + + diff --git a/0.0.11/html_split/Foundational-Writing-requires_002dexpressions.html b/0.0.11/html_split/Foundational-Writing-requires_002dexpressions.html new file mode 100644 index 0000000..6846c6e --- /dev/null +++ b/0.0.11/html_split/Foundational-Writing-requires_002dexpressions.html @@ -0,0 +1,60 @@ + + + + + +Foundational Writing requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +
      +

      8.5.1 Foundational: Writing requires-expressions

      + + + + + + + + + + + + + diff --git a/0.0.11/html_split/Functions-default-argument.html b/0.0.11/html_split/Functions-default-argument.html new file mode 100644 index 0000000..2571ca9 --- /dev/null +++ b/0.0.11/html_split/Functions-default-argument.html @@ -0,0 +1,67 @@ + + + + + +Functions default argument (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
      +

      8.3 Functions: default argument

      +

      Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

      + + + + + + + + + + + + + + diff --git a/0.0.11/html_split/Functions-user_002ddefined-literals.html b/0.0.11/html_split/Functions-user_002ddefined-literals.html new file mode 100644 index 0000000..7e41de9 --- /dev/null +++ b/0.0.11/html_split/Functions-user_002ddefined-literals.html @@ -0,0 +1,66 @@ + + + + + +Functions user-defined literals (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      8.2 Functions: user-defined literals

      +

      Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

      + + + + + + + + + + + + + diff --git a/0.0.11/html_split/Functions.html b/0.0.11/html_split/Functions.html new file mode 100644 index 0000000..82175a5 --- /dev/null +++ b/0.0.11/html_split/Functions.html @@ -0,0 +1,61 @@ + + + + + +Functions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.4 Functions

      + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Calling Functions???
      [‘?’]Parameter Passing (e.g., Passing By Value and Reference)???
      [‘func-args’]Default Arguments‘✔️’
      [‘?’]Returning Multiple Values???
      [‘?’]Overloading???
      [‘udl’]User-Defined Literals‘✔️’‘✔️’
      + + + + + + diff --git a/0.0.11/html_split/Generic-Programming-Templates.html b/0.0.11/html_split/Generic-Programming-Templates.html new file mode 100644 index 0000000..1a22cd7 --- /dev/null +++ b/0.0.11/html_split/Generic-Programming-Templates.html @@ -0,0 +1,61 @@ + + + + + +Generic Programming Templates (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.8 Generic Programming (Templates)

      + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Concepts???
      [‘?’]SFINAE???
      [‘?’]Template Metaprogramming???
      [‘?’]Function Templates???
      [‘?’]Requires Clauses???
      [‘req-expr’]Requires Expressions‘✔️’‘✔️’
      + + + + + + diff --git a/0.0.11/html_split/Glossary.html b/0.0.11/html_split/Glossary.html new file mode 100644 index 0000000..2bf24f2 --- /dev/null +++ b/0.0.11/html_split/Glossary.html @@ -0,0 +1,58 @@ + + + + + +Glossary (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      +Next: , Previous: , Up: Top   [Contents]

      +
      +
      +

      13 Glossary

      +

      Some possible terms to include in the glossary: +

      +
        +
      • learning objective +
      • learning outcome +
      + + + + + + diff --git a/0.0.11/html_split/How-To-Contribute.html b/0.0.11/html_split/How-To-Contribute.html new file mode 100644 index 0000000..f1963d5 --- /dev/null +++ b/0.0.11/html_split/How-To-Contribute.html @@ -0,0 +1,89 @@ + + + + + +How To Contribute (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      +Next: , Previous: , Up: Top   [Contents]

      +
      +
      +

      12 How To Contribute

      +

      Before attempting to contribute any content for consideration for +inclusion in this document, please read the information below and and +the referenced documents as appropriate. +

      +

      All contributions to this project must be made in accordance with the +license in section License. This teaching-guidelines +document only offers guidance on teaching C++ as it is specified in the +current version of the C++ standard. So, content should be presented +relative to the most-recently ratified version of the standard. A +detailed explanation of how to present the material for a topic is given +in: +

      +
        +
      • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to +structure a teaching topic. https://wg21.link/p2193. +
      + +

      Any potential contributors should ensure that they read this document. +The following document may also be helpful in providing some general +background on the modular approach to teaching followed herein: +

      + + +

      In order to prepare content, it is important to understand what learning +outcomes are, and how to prepare good ones. Some information on learning +outcomes can be found in the References section. The +following document offers a concise introduction to learning outcomes: +

      + + + + + + + diff --git a/0.0.11/html_split/Inheritance-and-Class-Hierarchies.html b/0.0.11/html_split/Inheritance-and-Class-Hierarchies.html new file mode 100644 index 0000000..1a394b0 --- /dev/null +++ b/0.0.11/html_split/Inheritance-and-Class-Hierarchies.html @@ -0,0 +1,57 @@ + + + + + +Inheritance and Class Hierarchies (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.6 Inheritance and Class Hierarchies

      + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Virtual Functions???
      [‘?’]Run-Time Type Information???
      + + + + + + diff --git a/0.0.11/html_split/License.html b/0.0.11/html_split/License.html new file mode 100644 index 0000000..38d2d8d --- /dev/null +++ b/0.0.11/html_split/License.html @@ -0,0 +1,100 @@ + + + + + +License (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      +Next: , Previous: , Up: Top   [Contents]

      +
      +
      +

      10 License

      +

      [NOTE: This license is copied verbatim from the C++ Core +Guidelines.] +

      +
      Copyright (c) Standard C++ Foundation and its contributors
      +
      +Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
      +perpetual license to copy, use, modify, and create derivative works from this
      +project for your personal or internal business use only. The above copyright
      +notice and this permission notice shall be included in all copies or
      +substantial portions of the project. This license does not grant permission
      +to use the trade names, trademarks, service marks, or product names of the
      +licensor, except as required for reasonable and customary use in describing
      +the origin of the project.
      +
      +Standard C++ Foundation reserves the right to accept contributions to the
      +project at its discretion.
      +
      +By contributing material to this project, you grant Standard C++ Foundation,
      +and those who receive the material directly or indirectly from Standard C++
      +Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
      +transferrable license to reproduce, prepare derivative works of, publicly
      +display, publicly perform, and distribute your contributed material and such
      +derivative works, and to sublicense any or all of the foregoing rights to third
      +parties for commercial or non-commercial use.  You also grant Standard C++
      +Foundation, and those who receive the material directly or indirectly from
      +Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
      +irrevocable license under your patent claims that directly read on your
      +contributed material to make, have made, use, offer to sell, sell and import
      +or otherwise dispose of the material. You warrant that your material is your
      +original work, or that you have the right to grant the above licenses.
      +
      +THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
      +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
      +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
      +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
      +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
      +OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
      +PROJECT.
      +
      +If you believe that anything in the project infringes your copyright, please
      +contact us at admin@isocpp.org with your contact information and a detailed
      +description of your intellectual property, including a specific URL where you
      +believe your intellectual property is being infringed.
      +
      +
      +
      +

      +Next: , Previous: , Up: Top   [Contents]

      +
      + + + + + diff --git a/0.0.11/html_split/Main-Advanced-requirements.html b/0.0.11/html_split/Main-Advanced-requirements.html new file mode 100644 index 0000000..d8a1d02 --- /dev/null +++ b/0.0.11/html_split/Main-Advanced-requirements.html @@ -0,0 +1,60 @@ + + + + + +Main Advanced requirements (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +
      +

      8.5.2 Main: Advanced requirements

      + + + + + + + + + + + + + diff --git a/0.0.11/html_split/Main-Contracts-and-static_005fassert.html b/0.0.11/html_split/Main-Contracts-and-static_005fassert.html new file mode 100644 index 0000000..6c0ba46 --- /dev/null +++ b/0.0.11/html_split/Main-Contracts-and-static_005fassert.html @@ -0,0 +1,61 @@ + + + + + +Main Contracts and static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
      +

      8.6.5 Main: Contracts and static_assert

      + + + + + + + + + + + + + diff --git a/0.0.11/html_split/Main-Implementing-user_002ddefined-copy-operations.html b/0.0.11/html_split/Main-Implementing-user_002ddefined-copy-operations.html new file mode 100644 index 0000000..e38dfd6 --- /dev/null +++ b/0.0.11/html_split/Main-Implementing-user_002ddefined-copy-operations.html @@ -0,0 +1,62 @@ + + + + + +Main Implementing user-defined copy operations (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      8.1.5 Main: Implementing user-defined copy operations

      + + + + + + + + + + + + + diff --git a/0.0.11/html_split/Main-implementing-UDLs.html b/0.0.11/html_split/Main-implementing-UDLs.html new file mode 100644 index 0000000..1f6f381 --- /dev/null +++ b/0.0.11/html_split/Main-implementing-UDLs.html @@ -0,0 +1,59 @@ + + + + + +Main implementing UDLs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
      +

      8.2.5 Main: implementing UDLs

      + + + + + + + + + + + + diff --git a/0.0.11/html_split/Main-implementing-_002a.html b/0.0.11/html_split/Main-implementing-_002a.html new file mode 100644 index 0000000..8ce971d --- /dev/null +++ b/0.0.11/html_split/Main-implementing-_002a.html @@ -0,0 +1,62 @@ + + + + + +Main implementing * (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      8.3.5 Main: implementing *

      + + + + + + + + + + + + + diff --git a/0.0.11/html_split/Meta_002derror-handling-static_005fassert.html b/0.0.11/html_split/Meta_002derror-handling-static_005fassert.html new file mode 100644 index 0000000..f81a34e --- /dev/null +++ b/0.0.11/html_split/Meta_002derror-handling-static_005fassert.html @@ -0,0 +1,67 @@ + + + + + +Meta-error handling static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
      +

      8.6 Meta-error handling: static_assert

      +

      Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

      + + + + + + + + + + + + + + diff --git a/0.0.11/html_split/Module-name-Requires-Expressions.html b/0.0.11/html_split/Module-name-Requires-Expressions.html new file mode 100644 index 0000000..8bab76c --- /dev/null +++ b/0.0.11/html_split/Module-name-Requires-Expressions.html @@ -0,0 +1,59 @@ + + + + + +Module name Requires Expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
      +

      8.4 Module name: Requires Expressions

      +

      Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

      + + + + + + + + + + diff --git a/0.0.11/html_split/Motivation.html b/0.0.11/html_split/Motivation.html new file mode 100644 index 0000000..40b0ec9 --- /dev/null +++ b/0.0.11/html_split/Motivation.html @@ -0,0 +1,57 @@ + + + + + +Motivation (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1.2 Motivation

      +

      Why is this important? Why do we want to learn/teach this +topic? +

      +

      Copy semantics allows the user to define how objects of a class get +replicated and interact on a value level. +

      + + + + + diff --git a/0.0.11/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html b/0.0.11/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html new file mode 100644 index 0000000..cb9f10d --- /dev/null +++ b/0.0.11/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html @@ -0,0 +1,78 @@ + + + + + +Obtaining This Document The Most Recent Version and Alternate Formats (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      +Next: , Previous: , Up: Top   [Contents]

      +
      +
      +

      1 Obtaining This Document: The Most Recent Version and Alternate

      +

      Formats +The most recent version of this document is available as an online HTML +document at: https://cplusplus.github.io/SG20/latest/. +

      +

      The version of the document that you are currently reading is available +in the following formats: +

      +
        +
      1. online (HTML) format as a single large HTML document: +https://cplusplus.github.io/SG20/0.0.11/html + +
      2. EPUB format: +https://cplusplus.github.io/SG20/0.0.11/guidelines.epub + +
      3. online (HTML) format, split across multiple HTML documents: +https://cplusplus.github.io/SG20/0.0.11/html_split/ [Note: +The support for this format needs more work (in order to beautify and +fix linking issues).] + +
      + +

      Older versions of this document are also available. In general version +ver is available at +https://cplusplus.github.io/SG20/ver/html. For example, version +0.1.0 (assuming that this version exists) would be available at +https://cplusplus.github.io/SG20/0.1.0/html. +

      + + + + + diff --git a/0.0.11/html_split/Organization-of-This-Document.html b/0.0.11/html_split/Organization-of-This-Document.html new file mode 100644 index 0000000..3e48985 --- /dev/null +++ b/0.0.11/html_split/Organization-of-This-Document.html @@ -0,0 +1,101 @@ + + + + + +Organization of This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      6 Organization of This Document

      +

      The various concepts (i.e., ideas) to potentially be covered are +partitioned into modules. A module is very broad in scope and consists +of numerous topics. [Note: Can I suggest that we use the term +“area” or “unit” instead of “module”? I think that these other +choices are better and also avoid any potential confusion over what is +meant by “module” (i.e., C++ term versus plain English term).] +

      +

      For each module, topics related to the module are identified. Then, for +each topic, learning outcomes are specified. In order to address a wide +variety of courses on C++, each topic is addressed at three proficiency +levels. These proficiency levels allow each topic to be covered at more +than one level of detail. This allows target audiences with different +background and learning objectives to be accommodated. The three +proficiency levels are as follows: +

      +
        +
      • foundational. This level gives the learner the idea that a facility +exists, what benefits it offers, and the basic ways of using it. +[Note: Isn’t this just “novice”/“beginner”?] + +
      • main. This level shows mainstream uses and techniques. For abstraction +and organizational mechanisms it also demonstrates how to build them. +This level should also give the learner a basic (but not detailed) +understanding of how a facility might be implemented so that the learner +can have a first-order understanding of any costs involved. +[Note: The term “main” is not very descriptive/helpful. Could +I suggest using “intermediate”?] + +
      • advanced. This level gives information suitable for an expert. For most +topics there is an expert level of knowledge that most programmers +rarely need and techniques that require detailed understanding of +language rules or library implementation. + +
      + +

      The remainder of this document is organized as follows. The various +topics are listed grouped by module. In cases where a topic might be +classified into more than one module, the topic is listed under the +module of most direct relevance. This is done in order to avoid +duplication of content. (In the case that a topic is equally relevant to +multiple modules, the decision of which to select is made by a +proverbial coin toss.) The order in which modules and topics are +presented is not meant to imply any order of coverage in a course. The +order in which items are listed is essentially arbitrary. +

      +
      + + + + + + diff --git a/0.0.11/html_split/Overview.html b/0.0.11/html_split/Overview.html new file mode 100644 index 0000000..be44bfa --- /dev/null +++ b/0.0.11/html_split/Overview.html @@ -0,0 +1,61 @@ + + + + + +Overview (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1.1 Overview

      +

      Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

      + + + + + +
      LevelObjectives
      Foundationalunderstanding how and when are copies made
      Mainimplementing user-defined copy operations
      Advancedspecial cases: copy elision
      + + + + + + diff --git a/0.0.11/html_split/Points-to-cover.html b/0.0.11/html_split/Points-to-cover.html new file mode 100644 index 0000000..ba4b5cc --- /dev/null +++ b/0.0.11/html_split/Points-to-cover.html @@ -0,0 +1,69 @@ + + + + + +Points to cover (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1.4.4 Points to cover

      +

      This section lists important details for each point. +

      +
        +
      • Principle of copying +
          +
        • Copying of types, which follow the rule of zero +
        • Copying of types, with user defined copy operations +
        • Copying an object does not change the original +
        + +
      • Practical applications +
          +
        • std::unique_ptr (has no copy) +
        • Strings (copies the value) +
        + +
      + + + + + + diff --git a/0.0.11/html_split/Preprocessor.html b/0.0.11/html_split/Preprocessor.html new file mode 100644 index 0000000..345e396 --- /dev/null +++ b/0.0.11/html_split/Preprocessor.html @@ -0,0 +1,58 @@ + + + + + +Preprocessor (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.2 Preprocessor

      + + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Preprocessor Metaprogramming???
      [‘?’]Inclusion???
      [‘?’]Macros???
      + + + + + + diff --git a/0.0.11/html_split/References-on-Learning-Outcomes.html b/0.0.11/html_split/References-on-Learning-Outcomes.html new file mode 100644 index 0000000..7b74cad --- /dev/null +++ b/0.0.11/html_split/References-on-Learning-Outcomes.html @@ -0,0 +1,71 @@ + + + + + +References on Learning Outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      14.1 References on Learning Outcomes

      + + + + + + + diff --git a/0.0.11/html_split/References.html b/0.0.11/html_split/References.html new file mode 100644 index 0000000..f595be2 --- /dev/null +++ b/0.0.11/html_split/References.html @@ -0,0 +1,59 @@ + + + + + +References (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      +Previous: , Up: Top   [Contents]

      +
      +
      +

      14 References

      + + + + + + + + + + + diff --git a/0.0.11/html_split/Software-Design.html b/0.0.11/html_split/Software-Design.html new file mode 100644 index 0000000..6b4f6c8 --- /dev/null +++ b/0.0.11/html_split/Software-Design.html @@ -0,0 +1,56 @@ + + + + + +Software Design (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.15 Software Design

      + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Design by Contract???
      + + + + + + diff --git a/0.0.11/html_split/Standard-Library.html b/0.0.11/html_split/Standard-Library.html new file mode 100644 index 0000000..c80c7fc --- /dev/null +++ b/0.0.11/html_split/Standard-Library.html @@ -0,0 +1,57 @@ + + + + + +Standard Library (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.10 Standard Library

      + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Input/Output (I/O)???
      [‘?’]Containers, Iterators, and Algorithms???
      + + + + + + diff --git a/0.0.11/html_split/Student-outcomes.html b/0.0.11/html_split/Student-outcomes.html new file mode 100644 index 0000000..c604549 --- /dev/null +++ b/0.0.11/html_split/Student-outcomes.html @@ -0,0 +1,73 @@ + + + + + +Student outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1.4.2 Student outcomes

      +

      A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

      +

      A student should be able to: +

      +
        +
      1. explain what copy semantics accomplish +
      + +
        +
      • establishing “equivalent” object state in another object +
      + +
        +
      1. explain difference between copying a reference and copying a value* +
      2. explain where copies are made +
      + +

      * In other languages these differences are sometimes referred to as +shallow and deep copy. +

      + + + + + diff --git a/0.0.11/html_split/Summary-of-Modules-and-Topics.html b/0.0.11/html_split/Summary-of-Modules-and-Topics.html new file mode 100644 index 0000000..26b69be --- /dev/null +++ b/0.0.11/html_split/Summary-of-Modules-and-Topics.html @@ -0,0 +1,106 @@ + + + + + +Summary of Modules and Topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7 Summary of Modules and Topics

      +

      In the sections that follow, the various modules and topics are +presented. There is one section per module. For each module, a table +listing the various topics in that module is provided. The ID for a +topic is linked to the detailed coverage of that topic that comes later +in the document. If a topic has any learning outcomes at a given +proficiency level, this is indicated by a checkmark (“✔️”). If a topic +has no learning outcomes (simply because there are not any, not because +the information is missing), this is indicated by an em dash (“—”). +In the case that the information for a topic is completely missing, a +question mark (“?”) symbol is used. +

      +

      [NOTE: These topics are taken mostly from the SG20 GitHub +repository. They are not intended to be complete in any sense. In fact, +by gathering together all topics in one place where they are easily +viewed, it is hoped that missing and unbalanced items will be more +obvious.] +

      + + + + + + + + + + + + + + + + + + +
      + + + + + + diff --git a/0.0.11/html_split/Testing-and-Debugging.html b/0.0.11/html_split/Testing-and-Debugging.html new file mode 100644 index 0000000..da60211 --- /dev/null +++ b/0.0.11/html_split/Testing-and-Debugging.html @@ -0,0 +1,59 @@ + + + + + +Testing and Debugging (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      +Next: , Previous: , Up: Summary of Modules and Topics   [Contents]

      +
      +
      +

      7.13 Testing and Debugging

      + + + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Source-Level Debuggers???
      [‘?’]Code Sanitizers???
      [‘?’]Test Frameworks???
      [‘?’]Debugging Strategies???
      + + + + + + diff --git a/0.0.11/html_split/Tooling.html b/0.0.11/html_split/Tooling.html new file mode 100644 index 0000000..43c3b2f --- /dev/null +++ b/0.0.11/html_split/Tooling.html @@ -0,0 +1,57 @@ + + + + + +Tooling (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.14 Tooling

      + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Compiler Toolchains???
      [‘?’]IDEs???
      + + + + + + diff --git a/0.0.11/html_split/Topic-introduction.html b/0.0.11/html_split/Topic-introduction.html new file mode 100644 index 0000000..fff97f2 --- /dev/null +++ b/0.0.11/html_split/Topic-introduction.html @@ -0,0 +1,55 @@ + + + + + +Topic introduction (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1.3 Topic introduction

      +

      Very brief introduction to the topic. +

      +

      Explains when and how objects are copied. +

      + + + + + diff --git a/0.0.11/html_split/Use-of-This-Document.html b/0.0.11/html_split/Use-of-This-Document.html new file mode 100644 index 0000000..4c820d5 --- /dev/null +++ b/0.0.11/html_split/Use-of-This-Document.html @@ -0,0 +1,58 @@ + + + + + +Use of This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      4 Use of This Document

      +

      [NOTE: This document follows the same license model as the C++ +Core Guidelines. The LICENSE document is taken verbatim from the C++ +Core Guidelines.] This document is made available under a MIT-style +license. In simple terms, this license permits copying, use, +modification, and creation of derivative works. A copy of the license is +included in the section LICENSE. +

      + + + + + diff --git a/0.0.11/html_split/User_002dDefined-Types-Classes.html b/0.0.11/html_split/User_002dDefined-Types-Classes.html new file mode 100644 index 0000000..808279a --- /dev/null +++ b/0.0.11/html_split/User_002dDefined-Types-Classes.html @@ -0,0 +1,69 @@ + + + + + +User-Defined Types Classes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.5 User-Defined Types (Classes)

      + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Special Member Functions???
      [‘?’]Types???
      [‘?’]Conversions???
      [‘?’]Constructors and Destructors???
      [‘?’]Move/Copy Constructors and Assignment Operators???
      [‘?’]Member Functions???
      [‘?’]Sum Types???
      [‘?’]User-Defined Literals???
      [‘?’]Special Member Functions???
      [‘?’]Guidelines for Special Member Functions (e.g., Rule of Five, Rule +of Zero)???
      [‘copy’]Copy Semantics‘✔️’‘✔️’
      [‘?’]Moving and Copying???
      [‘?’]Lambdas???
      + + + + + + diff --git a/0.0.11/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html b/0.0.11/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html new file mode 100644 index 0000000..3f9bf2c --- /dev/null +++ b/0.0.11/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html @@ -0,0 +1,69 @@ + + + + + +Working Group Documents Related to C++ Teaching Guidelines (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      14.2 Working Group Documents Related to C++ Teaching Guidelines

      +
        +
      • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — +Standing Document for SG20: Guidelines for Teaching C++ to Beginners. +https://wg21.link/p1389. + +
      • Christopher Di Bella. P1725R0 — Modular Topic Design. +https://wg21.link/p1725. + +
      • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to +structure a teaching topic. https://wg21.link/p2193. + +
      • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study +Group: C++ Education. https://wg21.link/p1231. + +
      • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 +— Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0. + +
      + + + + + + diff --git a/0.0.11/html_split/_0023advanced.html b/0.0.11/html_split/_0023advanced.html new file mode 100644 index 0000000..d503bfc --- /dev/null +++ b/0.0.11/html_split/_0023advanced.html @@ -0,0 +1,40 @@ + + + + + + +#advanced (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #advanced.

      + diff --git a/0.0.11/html_split/_0023advanced_002d1.html b/0.0.11/html_split/_0023advanced_002d1.html new file mode 100644 index 0000000..282a7b8 --- /dev/null +++ b/0.0.11/html_split/_0023advanced_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #advanced-1.

      + diff --git a/0.0.11/html_split/_0023advanced_002d2.html b/0.0.11/html_split/_0023advanced_002d2.html new file mode 100644 index 0000000..039b3ff --- /dev/null +++ b/0.0.11/html_split/_0023advanced_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #advanced-2.

      + diff --git a/0.0.11/html_split/_0023advanced_002d3.html b/0.0.11/html_split/_0023advanced_002d3.html new file mode 100644 index 0000000..ebf5529 --- /dev/null +++ b/0.0.11/html_split/_0023advanced_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #advanced-3.

      + diff --git a/0.0.11/html_split/_0023backgroundrequired_002dknowledge.html b/0.0.11/html_split/_0023backgroundrequired_002dknowledge.html new file mode 100644 index 0000000..9959745 --- /dev/null +++ b/0.0.11/html_split/_0023backgroundrequired_002dknowledge.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge.

      + diff --git a/0.0.11/html_split/_0023backgroundrequired_002dknowledge_002d1.html b/0.0.11/html_split/_0023backgroundrequired_002dknowledge_002d1.html new file mode 100644 index 0000000..f6f6bd0 --- /dev/null +++ b/0.0.11/html_split/_0023backgroundrequired_002dknowledge_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-1.

      + diff --git a/0.0.11/html_split/_0023backgroundrequired_002dknowledge_002d2.html b/0.0.11/html_split/_0023backgroundrequired_002dknowledge_002d2.html new file mode 100644 index 0000000..b0b297d --- /dev/null +++ b/0.0.11/html_split/_0023backgroundrequired_002dknowledge_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-2.

      + diff --git a/0.0.11/html_split/_0023backgroundrequired_002dknowledge_002d3.html b/0.0.11/html_split/_0023backgroundrequired_002dknowledge_002d3.html new file mode 100644 index 0000000..ae34d91 --- /dev/null +++ b/0.0.11/html_split/_0023backgroundrequired_002dknowledge_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-3.

      + diff --git a/0.0.11/html_split/_0023backgroundrequired_002dknowledge_002d4.html b/0.0.11/html_split/_0023backgroundrequired_002dknowledge_002d4.html new file mode 100644 index 0000000..7417f62 --- /dev/null +++ b/0.0.11/html_split/_0023backgroundrequired_002dknowledge_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-4.

      + diff --git a/0.0.11/html_split/_0023backgroundrequired_002dknowledge_002d5.html b/0.0.11/html_split/_0023backgroundrequired_002dknowledge_002d5.html new file mode 100644 index 0000000..d23012c --- /dev/null +++ b/0.0.11/html_split/_0023backgroundrequired_002dknowledge_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-5.

      + diff --git a/0.0.11/html_split/_0023backgroundrequired_002dknowledge_002d6.html b/0.0.11/html_split/_0023backgroundrequired_002dknowledge_002d6.html new file mode 100644 index 0000000..a1cdee1 --- /dev/null +++ b/0.0.11/html_split/_0023backgroundrequired_002dknowledge_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-6.

      + diff --git a/0.0.11/html_split/_0023backgroundrequired_002dknowledge_002d7.html b/0.0.11/html_split/_0023backgroundrequired_002dknowledge_002d7.html new file mode 100644 index 0000000..893a0ba --- /dev/null +++ b/0.0.11/html_split/_0023backgroundrequired_002dknowledge_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-7.

      + diff --git a/0.0.11/html_split/_0023backgroundrequired_002dknowledge_002d8.html b/0.0.11/html_split/_0023backgroundrequired_002dknowledge_002d8.html new file mode 100644 index 0000000..6080498 --- /dev/null +++ b/0.0.11/html_split/_0023backgroundrequired_002dknowledge_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-8.

      + diff --git a/0.0.11/html_split/_0023backgroundrequired_002dknowledge_002d9.html b/0.0.11/html_split/_0023backgroundrequired_002dknowledge_002d9.html new file mode 100644 index 0000000..3ea462d --- /dev/null +++ b/0.0.11/html_split/_0023backgroundrequired_002dknowledge_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-9.

      + diff --git a/0.0.11/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html b/0.0.11/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html new file mode 100644 index 0000000..925c568 --- /dev/null +++ b/0.0.11/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html @@ -0,0 +1,40 @@ + + + + + + +#basics-types-objects-values-expressions-statements-and-control-flow-constructs (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #basics-types-objects-values-expressions-statements-and-control-flow-constructs.

      + diff --git a/0.0.11/html_split/_0023building.html b/0.0.11/html_split/_0023building.html new file mode 100644 index 0000000..8ffc9df --- /dev/null +++ b/0.0.11/html_split/_0023building.html @@ -0,0 +1,40 @@ + + + + + + +#building (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #building.

      + diff --git a/0.0.11/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html b/0.0.11/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html new file mode 100644 index 0000000..a7e6bad --- /dev/null +++ b/0.0.11/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html @@ -0,0 +1,40 @@ + + + + + + +#c-object-model-copy-semantics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #c-object-model-copy-semantics.

      + diff --git a/0.0.11/html_split/_0023caveats.html b/0.0.11/html_split/_0023caveats.html new file mode 100644 index 0000000..d4bac8b --- /dev/null +++ b/0.0.11/html_split/_0023caveats.html @@ -0,0 +1,40 @@ + + + + + + +#caveats (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats.

      + diff --git a/0.0.11/html_split/_0023caveats_002d1.html b/0.0.11/html_split/_0023caveats_002d1.html new file mode 100644 index 0000000..64faefd --- /dev/null +++ b/0.0.11/html_split/_0023caveats_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-1.

      + diff --git a/0.0.11/html_split/_0023caveats_002d2.html b/0.0.11/html_split/_0023caveats_002d2.html new file mode 100644 index 0000000..6c66559 --- /dev/null +++ b/0.0.11/html_split/_0023caveats_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-2.

      + diff --git a/0.0.11/html_split/_0023caveats_002d3.html b/0.0.11/html_split/_0023caveats_002d3.html new file mode 100644 index 0000000..479063f --- /dev/null +++ b/0.0.11/html_split/_0023caveats_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-3.

      + diff --git a/0.0.11/html_split/_0023caveats_002d4.html b/0.0.11/html_split/_0023caveats_002d4.html new file mode 100644 index 0000000..9588a55 --- /dev/null +++ b/0.0.11/html_split/_0023caveats_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-4.

      + diff --git a/0.0.11/html_split/_0023caveats_002d5.html b/0.0.11/html_split/_0023caveats_002d5.html new file mode 100644 index 0000000..11edee5 --- /dev/null +++ b/0.0.11/html_split/_0023caveats_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-5.

      + diff --git a/0.0.11/html_split/_0023caveats_002d6.html b/0.0.11/html_split/_0023caveats_002d6.html new file mode 100644 index 0000000..6cea721 --- /dev/null +++ b/0.0.11/html_split/_0023caveats_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-6.

      + diff --git a/0.0.11/html_split/_0023caveats_002d7.html b/0.0.11/html_split/_0023caveats_002d7.html new file mode 100644 index 0000000..2a8f1cd --- /dev/null +++ b/0.0.11/html_split/_0023caveats_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-7.

      + diff --git a/0.0.11/html_split/_0023caveats_002d8.html b/0.0.11/html_split/_0023caveats_002d8.html new file mode 100644 index 0000000..e330642 --- /dev/null +++ b/0.0.11/html_split/_0023caveats_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-8.

      + diff --git a/0.0.11/html_split/_0023caveats_002d9.html b/0.0.11/html_split/_0023caveats_002d9.html new file mode 100644 index 0000000..004e434 --- /dev/null +++ b/0.0.11/html_split/_0023caveats_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-9.

      + diff --git a/0.0.11/html_split/_0023compilation_002dmodel.html b/0.0.11/html_split/_0023compilation_002dmodel.html new file mode 100644 index 0000000..1017867 --- /dev/null +++ b/0.0.11/html_split/_0023compilation_002dmodel.html @@ -0,0 +1,40 @@ + + + + + + +#compilation-model (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #compilation-model.

      + diff --git a/0.0.11/html_split/_0023compile_002dtime_002dcomputation.html b/0.0.11/html_split/_0023compile_002dtime_002dcomputation.html new file mode 100644 index 0000000..59b0c57 --- /dev/null +++ b/0.0.11/html_split/_0023compile_002dtime_002dcomputation.html @@ -0,0 +1,40 @@ + + + + + + +#compile-time-computation (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #compile-time-computation.

      + diff --git a/0.0.11/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html b/0.0.11/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html new file mode 100644 index 0000000..9294adf --- /dev/null +++ b/0.0.11/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html @@ -0,0 +1,40 @@ + + + + + + +#context-and-aim-of-this-guide (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #context-and-aim-of-this-guide.

      + diff --git a/0.0.11/html_split/_0023contributing_002dto_002dthis_002ddocument.html b/0.0.11/html_split/_0023contributing_002dto_002dthis_002ddocument.html new file mode 100644 index 0000000..272d848 --- /dev/null +++ b/0.0.11/html_split/_0023contributing_002dto_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#contributing-to-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #contributing-to-this-document.

      + diff --git a/0.0.11/html_split/_0023contributors.html b/0.0.11/html_split/_0023contributors.html new file mode 100644 index 0000000..a391f9d --- /dev/null +++ b/0.0.11/html_split/_0023contributors.html @@ -0,0 +1,40 @@ + + + + + + +#contributors (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #contributors.

      + diff --git a/0.0.11/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html b/0.0.11/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html new file mode 100644 index 0000000..d32c27e --- /dev/null +++ b/0.0.11/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html @@ -0,0 +1,40 @@ + + + + + + +#detailed-information-for-modules-and-topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #detailed-information-for-modules-and-topics.

      + diff --git a/0.0.11/html_split/_0023disclaimer.html b/0.0.11/html_split/_0023disclaimer.html new file mode 100644 index 0000000..e9658d6 --- /dev/null +++ b/0.0.11/html_split/_0023disclaimer.html @@ -0,0 +1,40 @@ + + + + + + +#disclaimer (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #disclaimer.

      + diff --git a/0.0.11/html_split/_0023error_002dhandling.html b/0.0.11/html_split/_0023error_002dhandling.html new file mode 100644 index 0000000..80cfb94 --- /dev/null +++ b/0.0.11/html_split/_0023error_002dhandling.html @@ -0,0 +1,40 @@ + + + + + + +#error-handling (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #error-handling.

      + diff --git a/0.0.11/html_split/_0023examples_002dof_002dcourse_002dcurricula.html b/0.0.11/html_split/_0023examples_002dof_002dcourse_002dcurricula.html new file mode 100644 index 0000000..99af091 --- /dev/null +++ b/0.0.11/html_split/_0023examples_002dof_002dcourse_002dcurricula.html @@ -0,0 +1,40 @@ + + + + + + +#examples-of-course-curricula (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #examples-of-course-curricula.

      + diff --git a/0.0.11/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html b/0.0.11/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html new file mode 100644 index 0000000..fc9b3eb --- /dev/null +++ b/0.0.11/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html @@ -0,0 +1,40 @@ + + + + + + +#external-i.e.-non-standard-libraries (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #external-i.e.-non-standard-libraries.

      + diff --git a/0.0.11/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html b/0.0.11/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html new file mode 100644 index 0000000..f915680 --- /dev/null +++ b/0.0.11/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-calling-static_assert-with-a-constant-expression (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #foundational-calling-static_assert-with-a-constant-expression.

      + diff --git a/0.0.11/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html b/0.0.11/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html new file mode 100644 index 0000000..88f62bc --- /dev/null +++ b/0.0.11/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-how-and-when-are-copies-made (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #foundational-how-and-when-are-copies-made.

      + diff --git a/0.0.11/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html b/0.0.11/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html new file mode 100644 index 0000000..95ab098 --- /dev/null +++ b/0.0.11/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-using-and-defining-functions-with-default-arguments (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #foundational-using-and-defining-functions-with-default-arguments.

      + diff --git a/0.0.11/html_split/_0023foundational_002dusing_002dudls.html b/0.0.11/html_split/_0023foundational_002dusing_002dudls.html new file mode 100644 index 0000000..2f7afdd --- /dev/null +++ b/0.0.11/html_split/_0023foundational_002dusing_002dudls.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-using-udls (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #foundational-using-udls.

      + diff --git a/0.0.11/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html b/0.0.11/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html new file mode 100644 index 0000000..708f2d3 --- /dev/null +++ b/0.0.11/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-writing-requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #foundational-writing-requires-expressions.

      + diff --git a/0.0.11/html_split/_0023functions.html b/0.0.11/html_split/_0023functions.html new file mode 100644 index 0000000..e304abe --- /dev/null +++ b/0.0.11/html_split/_0023functions.html @@ -0,0 +1,40 @@ + + + + + + +#functions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #functions.

      + diff --git a/0.0.11/html_split/_0023functions_002ddefault_002dargument.html b/0.0.11/html_split/_0023functions_002ddefault_002dargument.html new file mode 100644 index 0000000..ccfbcbb --- /dev/null +++ b/0.0.11/html_split/_0023functions_002ddefault_002dargument.html @@ -0,0 +1,40 @@ + + + + + + +#functions-default-argument (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #functions-default-argument.

      + diff --git a/0.0.11/html_split/_0023functions_002duser_002ddefined_002dliterals.html b/0.0.11/html_split/_0023functions_002duser_002ddefined_002dliterals.html new file mode 100644 index 0000000..b4f78b5 --- /dev/null +++ b/0.0.11/html_split/_0023functions_002duser_002ddefined_002dliterals.html @@ -0,0 +1,40 @@ + + + + + + +#functions-user-defined-literals (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #functions-user-defined-literals.

      + diff --git a/0.0.11/html_split/_0023generic_002dprogramming_002dtemplates.html b/0.0.11/html_split/_0023generic_002dprogramming_002dtemplates.html new file mode 100644 index 0000000..3b91080 --- /dev/null +++ b/0.0.11/html_split/_0023generic_002dprogramming_002dtemplates.html @@ -0,0 +1,40 @@ + + + + + + +#generic-programming-templates (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #generic-programming-templates.

      + diff --git a/0.0.11/html_split/_0023glossary.html b/0.0.11/html_split/_0023glossary.html new file mode 100644 index 0000000..9b46bf6 --- /dev/null +++ b/0.0.11/html_split/_0023glossary.html @@ -0,0 +1,40 @@ + + + + + + +#glossary (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #glossary.

      + diff --git a/0.0.11/html_split/_0023how_002dto_002dcontribute.html b/0.0.11/html_split/_0023how_002dto_002dcontribute.html new file mode 100644 index 0000000..d9cff4a --- /dev/null +++ b/0.0.11/html_split/_0023how_002dto_002dcontribute.html @@ -0,0 +1,40 @@ + + + + + + +#how-to-contribute (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #how-to-contribute.

      + diff --git a/0.0.11/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html b/0.0.11/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html new file mode 100644 index 0000000..def5140 --- /dev/null +++ b/0.0.11/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html @@ -0,0 +1,40 @@ + + + + + + +#inheritance-and-class-hierarchies (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #inheritance-and-class-hierarchies.

      + diff --git a/0.0.11/html_split/_0023license.html b/0.0.11/html_split/_0023license.html new file mode 100644 index 0000000..6b44dd1 --- /dev/null +++ b/0.0.11/html_split/_0023license.html @@ -0,0 +1,40 @@ + + + + + + +#license (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #license.

      + diff --git a/0.0.11/html_split/_0023main_002dadvanced_002drequirements.html b/0.0.11/html_split/_0023main_002dadvanced_002drequirements.html new file mode 100644 index 0000000..8214533 --- /dev/null +++ b/0.0.11/html_split/_0023main_002dadvanced_002drequirements.html @@ -0,0 +1,40 @@ + + + + + + +#main-advanced-requirements (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #main-advanced-requirements.

      + diff --git a/0.0.11/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html b/0.0.11/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html new file mode 100644 index 0000000..22b0484 --- /dev/null +++ b/0.0.11/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html @@ -0,0 +1,40 @@ + + + + + + +#main-contracts-and-static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #main-contracts-and-static_assert.

      + diff --git a/0.0.11/html_split/_0023main_002dimplementing.html b/0.0.11/html_split/_0023main_002dimplementing.html new file mode 100644 index 0000000..260008c --- /dev/null +++ b/0.0.11/html_split/_0023main_002dimplementing.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #main-implementing.

      + diff --git a/0.0.11/html_split/_0023main_002dimplementing_002dudls.html b/0.0.11/html_split/_0023main_002dimplementing_002dudls.html new file mode 100644 index 0000000..a41d194 --- /dev/null +++ b/0.0.11/html_split/_0023main_002dimplementing_002dudls.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing-udls (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #main-implementing-udls.

      + diff --git a/0.0.11/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html b/0.0.11/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html new file mode 100644 index 0000000..1e5a4d8 --- /dev/null +++ b/0.0.11/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing-user-defined-copy-operations (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #main-implementing-user-defined-copy-operations.

      + diff --git a/0.0.11/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html b/0.0.11/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html new file mode 100644 index 0000000..4502ed8 --- /dev/null +++ b/0.0.11/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html @@ -0,0 +1,40 @@ + + + + + + +#meta-error-handling-static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #meta-error-handling-static_assert.

      + diff --git a/0.0.11/html_split/_0023module_002dname_002drequires_002dexpressions.html b/0.0.11/html_split/_0023module_002dname_002drequires_002dexpressions.html new file mode 100644 index 0000000..56a9ebf --- /dev/null +++ b/0.0.11/html_split/_0023module_002dname_002drequires_002dexpressions.html @@ -0,0 +1,40 @@ + + + + + + +#module-name-requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #module-name-requires-expressions.

      + diff --git a/0.0.11/html_split/_0023motivation.html b/0.0.11/html_split/_0023motivation.html new file mode 100644 index 0000000..0141374 --- /dev/null +++ b/0.0.11/html_split/_0023motivation.html @@ -0,0 +1,40 @@ + + + + + + +#motivation (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #motivation.

      + diff --git a/0.0.11/html_split/_0023motivation_002d1.html b/0.0.11/html_split/_0023motivation_002d1.html new file mode 100644 index 0000000..7e4a69e --- /dev/null +++ b/0.0.11/html_split/_0023motivation_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #motivation-1.

      + diff --git a/0.0.11/html_split/_0023motivation_002d2.html b/0.0.11/html_split/_0023motivation_002d2.html new file mode 100644 index 0000000..7901fd3 --- /dev/null +++ b/0.0.11/html_split/_0023motivation_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #motivation-2.

      + diff --git a/0.0.11/html_split/_0023motivation_002d3.html b/0.0.11/html_split/_0023motivation_002d3.html new file mode 100644 index 0000000..ec720ad --- /dev/null +++ b/0.0.11/html_split/_0023motivation_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #motivation-3.

      + diff --git a/0.0.11/html_split/_0023motivation_002d4.html b/0.0.11/html_split/_0023motivation_002d4.html new file mode 100644 index 0000000..f53583a --- /dev/null +++ b/0.0.11/html_split/_0023motivation_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #motivation-4.

      + diff --git a/0.0.11/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html b/0.0.11/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html new file mode 100644 index 0000000..57e8b6e --- /dev/null +++ b/0.0.11/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html @@ -0,0 +1,40 @@ + + + + + + +#obtaining-this-document-the-most-recent-version-and-alternate-formats (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #obtaining-this-document-the-most-recent-version-and-alternate-formats.

      + diff --git a/0.0.11/html_split/_0023organization_002dof_002dthis_002ddocument.html b/0.0.11/html_split/_0023organization_002dof_002dthis_002ddocument.html new file mode 100644 index 0000000..e312b8e --- /dev/null +++ b/0.0.11/html_split/_0023organization_002dof_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#organization-of-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #organization-of-this-document.

      + diff --git a/0.0.11/html_split/_0023overview.html b/0.0.11/html_split/_0023overview.html new file mode 100644 index 0000000..b2d4bdc --- /dev/null +++ b/0.0.11/html_split/_0023overview.html @@ -0,0 +1,40 @@ + + + + + + +#overview (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #overview.

      + diff --git a/0.0.11/html_split/_0023overview_002d1.html b/0.0.11/html_split/_0023overview_002d1.html new file mode 100644 index 0000000..d551764 --- /dev/null +++ b/0.0.11/html_split/_0023overview_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#overview-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #overview-1.

      + diff --git a/0.0.11/html_split/_0023overview_002d2.html b/0.0.11/html_split/_0023overview_002d2.html new file mode 100644 index 0000000..5a34b05 --- /dev/null +++ b/0.0.11/html_split/_0023overview_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#overview-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #overview-2.

      + diff --git a/0.0.11/html_split/_0023overview_002d3.html b/0.0.11/html_split/_0023overview_002d3.html new file mode 100644 index 0000000..f230145 --- /dev/null +++ b/0.0.11/html_split/_0023overview_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#overview-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #overview-3.

      + diff --git a/0.0.11/html_split/_0023overview_002d4.html b/0.0.11/html_split/_0023overview_002d4.html new file mode 100644 index 0000000..2436b9a --- /dev/null +++ b/0.0.11/html_split/_0023overview_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#overview-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #overview-4.

      + diff --git a/0.0.11/html_split/_0023points_002dto_002dcover.html b/0.0.11/html_split/_0023points_002dto_002dcover.html new file mode 100644 index 0000000..424b02b --- /dev/null +++ b/0.0.11/html_split/_0023points_002dto_002dcover.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover.

      + diff --git a/0.0.11/html_split/_0023points_002dto_002dcover_002d1.html b/0.0.11/html_split/_0023points_002dto_002dcover_002d1.html new file mode 100644 index 0000000..2a554bb --- /dev/null +++ b/0.0.11/html_split/_0023points_002dto_002dcover_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover-1.

      + diff --git a/0.0.11/html_split/_0023points_002dto_002dcover_002d2.html b/0.0.11/html_split/_0023points_002dto_002dcover_002d2.html new file mode 100644 index 0000000..053a51a --- /dev/null +++ b/0.0.11/html_split/_0023points_002dto_002dcover_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover-2.

      + diff --git a/0.0.11/html_split/_0023points_002dto_002dcover_002d3.html b/0.0.11/html_split/_0023points_002dto_002dcover_002d3.html new file mode 100644 index 0000000..b0dad48 --- /dev/null +++ b/0.0.11/html_split/_0023points_002dto_002dcover_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover-3.

      + diff --git a/0.0.11/html_split/_0023points_002dto_002dcover_002d4.html b/0.0.11/html_split/_0023points_002dto_002dcover_002d4.html new file mode 100644 index 0000000..94de8fa --- /dev/null +++ b/0.0.11/html_split/_0023points_002dto_002dcover_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover-4.

      + diff --git a/0.0.11/html_split/_0023points_002dto_002dcover_002d5.html b/0.0.11/html_split/_0023points_002dto_002dcover_002d5.html new file mode 100644 index 0000000..39d1eaf --- /dev/null +++ b/0.0.11/html_split/_0023points_002dto_002dcover_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover-5.

      + diff --git a/0.0.11/html_split/_0023points_002dto_002dcover_002d6.html b/0.0.11/html_split/_0023points_002dto_002dcover_002d6.html new file mode 100644 index 0000000..92df88f --- /dev/null +++ b/0.0.11/html_split/_0023points_002dto_002dcover_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover-6.

      + diff --git a/0.0.11/html_split/_0023points_002dto_002dcover_002d7.html b/0.0.11/html_split/_0023points_002dto_002dcover_002d7.html new file mode 100644 index 0000000..6e6c895 --- /dev/null +++ b/0.0.11/html_split/_0023points_002dto_002dcover_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover-7.

      + diff --git a/0.0.11/html_split/_0023points_002dto_002dcover_002d8.html b/0.0.11/html_split/_0023points_002dto_002dcover_002d8.html new file mode 100644 index 0000000..b5574e1 --- /dev/null +++ b/0.0.11/html_split/_0023points_002dto_002dcover_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover-8.

      + diff --git a/0.0.11/html_split/_0023preprocessor.html b/0.0.11/html_split/_0023preprocessor.html new file mode 100644 index 0000000..a3bb5f6 --- /dev/null +++ b/0.0.11/html_split/_0023preprocessor.html @@ -0,0 +1,40 @@ + + + + + + +#preprocessor (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #preprocessor.

      + diff --git a/0.0.11/html_split/_0023references.html b/0.0.11/html_split/_0023references.html new file mode 100644 index 0000000..69fbd6b --- /dev/null +++ b/0.0.11/html_split/_0023references.html @@ -0,0 +1,40 @@ + + + + + + +#references (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #references.

      + diff --git a/0.0.11/html_split/_0023references_002don_002dlearning_002doutcomes.html b/0.0.11/html_split/_0023references_002don_002dlearning_002doutcomes.html new file mode 100644 index 0000000..d28fbbf --- /dev/null +++ b/0.0.11/html_split/_0023references_002don_002dlearning_002doutcomes.html @@ -0,0 +1,40 @@ + + + + + + +#references-on-learning-outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #references-on-learning-outcomes.

      + diff --git a/0.0.11/html_split/_0023software_002ddesign.html b/0.0.11/html_split/_0023software_002ddesign.html new file mode 100644 index 0000000..16f5f54 --- /dev/null +++ b/0.0.11/html_split/_0023software_002ddesign.html @@ -0,0 +1,40 @@ + + + + + + +#software-design (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #software-design.

      + diff --git a/0.0.11/html_split/_0023standard_002dlibrary.html b/0.0.11/html_split/_0023standard_002dlibrary.html new file mode 100644 index 0000000..71956d3 --- /dev/null +++ b/0.0.11/html_split/_0023standard_002dlibrary.html @@ -0,0 +1,40 @@ + + + + + + +#standard-library (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #standard-library.

      + diff --git a/0.0.11/html_split/_0023student_002doutcomes.html b/0.0.11/html_split/_0023student_002doutcomes.html new file mode 100644 index 0000000..df0035d --- /dev/null +++ b/0.0.11/html_split/_0023student_002doutcomes.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes.

      + diff --git a/0.0.11/html_split/_0023student_002doutcomes_002d1.html b/0.0.11/html_split/_0023student_002doutcomes_002d1.html new file mode 100644 index 0000000..e9344b7 --- /dev/null +++ b/0.0.11/html_split/_0023student_002doutcomes_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-1.

      + diff --git a/0.0.11/html_split/_0023student_002doutcomes_002d2.html b/0.0.11/html_split/_0023student_002doutcomes_002d2.html new file mode 100644 index 0000000..6fa7724 --- /dev/null +++ b/0.0.11/html_split/_0023student_002doutcomes_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-2.

      + diff --git a/0.0.11/html_split/_0023student_002doutcomes_002d3.html b/0.0.11/html_split/_0023student_002doutcomes_002d3.html new file mode 100644 index 0000000..195d9d2 --- /dev/null +++ b/0.0.11/html_split/_0023student_002doutcomes_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-3.

      + diff --git a/0.0.11/html_split/_0023student_002doutcomes_002d4.html b/0.0.11/html_split/_0023student_002doutcomes_002d4.html new file mode 100644 index 0000000..3e30430 --- /dev/null +++ b/0.0.11/html_split/_0023student_002doutcomes_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-4.

      + diff --git a/0.0.11/html_split/_0023student_002doutcomes_002d5.html b/0.0.11/html_split/_0023student_002doutcomes_002d5.html new file mode 100644 index 0000000..0a4a7da --- /dev/null +++ b/0.0.11/html_split/_0023student_002doutcomes_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-5.

      + diff --git a/0.0.11/html_split/_0023student_002doutcomes_002d6.html b/0.0.11/html_split/_0023student_002doutcomes_002d6.html new file mode 100644 index 0000000..c5c4ac0 --- /dev/null +++ b/0.0.11/html_split/_0023student_002doutcomes_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-6.

      + diff --git a/0.0.11/html_split/_0023student_002doutcomes_002d7.html b/0.0.11/html_split/_0023student_002doutcomes_002d7.html new file mode 100644 index 0000000..5233f94 --- /dev/null +++ b/0.0.11/html_split/_0023student_002doutcomes_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-7.

      + diff --git a/0.0.11/html_split/_0023student_002doutcomes_002d8.html b/0.0.11/html_split/_0023student_002doutcomes_002d8.html new file mode 100644 index 0000000..f19fd7f --- /dev/null +++ b/0.0.11/html_split/_0023student_002doutcomes_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-8.

      + diff --git a/0.0.11/html_split/_0023student_002doutcomes_002d9.html b/0.0.11/html_split/_0023student_002doutcomes_002d9.html new file mode 100644 index 0000000..735a21f --- /dev/null +++ b/0.0.11/html_split/_0023student_002doutcomes_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-9.

      + diff --git a/0.0.11/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html b/0.0.11/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html new file mode 100644 index 0000000..4801178 --- /dev/null +++ b/0.0.11/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html @@ -0,0 +1,40 @@ + + + + + + +#summary-of-modules-and-topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #summary-of-modules-and-topics.

      + diff --git a/0.0.11/html_split/_0023testing_002dand_002ddebugging.html b/0.0.11/html_split/_0023testing_002dand_002ddebugging.html new file mode 100644 index 0000000..1ae096d --- /dev/null +++ b/0.0.11/html_split/_0023testing_002dand_002ddebugging.html @@ -0,0 +1,40 @@ + + + + + + +#testing-and-debugging (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #testing-and-debugging.

      + diff --git a/0.0.11/html_split/_0023tooling.html b/0.0.11/html_split/_0023tooling.html new file mode 100644 index 0000000..634a8dc --- /dev/null +++ b/0.0.11/html_split/_0023tooling.html @@ -0,0 +1,40 @@ + + + + + + +#tooling (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #tooling.

      + diff --git a/0.0.11/html_split/_0023topic_002dintroduction.html b/0.0.11/html_split/_0023topic_002dintroduction.html new file mode 100644 index 0000000..742d5d9 --- /dev/null +++ b/0.0.11/html_split/_0023topic_002dintroduction.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #topic-introduction.

      + diff --git a/0.0.11/html_split/_0023topic_002dintroduction_002d1.html b/0.0.11/html_split/_0023topic_002dintroduction_002d1.html new file mode 100644 index 0000000..a110644 --- /dev/null +++ b/0.0.11/html_split/_0023topic_002dintroduction_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #topic-introduction-1.

      + diff --git a/0.0.11/html_split/_0023topic_002dintroduction_002d2.html b/0.0.11/html_split/_0023topic_002dintroduction_002d2.html new file mode 100644 index 0000000..986bf37 --- /dev/null +++ b/0.0.11/html_split/_0023topic_002dintroduction_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #topic-introduction-2.

      + diff --git a/0.0.11/html_split/_0023topic_002dintroduction_002d3.html b/0.0.11/html_split/_0023topic_002dintroduction_002d3.html new file mode 100644 index 0000000..3d14fd9 --- /dev/null +++ b/0.0.11/html_split/_0023topic_002dintroduction_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #topic-introduction-3.

      + diff --git a/0.0.11/html_split/_0023topic_002dintroduction_002d4.html b/0.0.11/html_split/_0023topic_002dintroduction_002d4.html new file mode 100644 index 0000000..c73a236 --- /dev/null +++ b/0.0.11/html_split/_0023topic_002dintroduction_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #topic-introduction-4.

      + diff --git a/0.0.11/html_split/_0023use_002dof_002dthis_002ddocument.html b/0.0.11/html_split/_0023use_002dof_002dthis_002ddocument.html new file mode 100644 index 0000000..68d835d --- /dev/null +++ b/0.0.11/html_split/_0023use_002dof_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#use-of-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #use-of-this-document.

      + diff --git a/0.0.11/html_split/_0023user_002ddefined_002dtypes_002dclasses.html b/0.0.11/html_split/_0023user_002ddefined_002dtypes_002dclasses.html new file mode 100644 index 0000000..04771a9 --- /dev/null +++ b/0.0.11/html_split/_0023user_002ddefined_002dtypes_002dclasses.html @@ -0,0 +1,40 @@ + + + + + + +#user-defined-types-classes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #user-defined-types-classes.

      + diff --git a/0.0.11/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html b/0.0.11/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html new file mode 100644 index 0000000..f4b9435 --- /dev/null +++ b/0.0.11/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html @@ -0,0 +1,40 @@ + + + + + + +#working-group-documents-related-to-c-teaching-guidelines (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #working-group-documents-related-to-c-teaching-guidelines.

      + diff --git a/0.0.11/html_split/index.html b/0.0.11/html_split/index.html new file mode 100644 index 0000000..8f486f7 --- /dev/null +++ b/0.0.11/html_split/index.html @@ -0,0 +1,240 @@ + + + + + +Top (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +

      Table of Contents

      + +
      + + +
      + + + +
      +

      Guidelines for Teaching C++

      + + + + + + + + + + + + + + + + + + +
      + + + + + + diff --git a/0.0.11/html_split/unknown_node.html b/0.0.11/html_split/unknown_node.html new file mode 100644 index 0000000..a2cefde --- /dev/null +++ b/0.0.11/html_split/unknown_node.html @@ -0,0 +1,820 @@ + + + + + +Guidelines for Teaching C++ + + + + + + + + + + + + + + + + +
      +

      +   [Contents]

      +
      +
      +

      8.1.5.1 Background/Required Knowledge

      +

      A student is able to: * identify special member functions +[C++ object model: +special member functions] +

      +

      It helps when a student is able to: * use move semantics +[C++ object model: move +semantics] * explain the rule of zero +[C++ object model: rule-of-zero] +* explain the rule of five [C++ +object model: rule-of-five] +

      +
      +

      +   [Contents]

      +
      +

      8.1.5.2 Student outcomes

      +

      A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

      +

      A student should be able to: * explain when they have to implement the +copy operations for their own type * Copy constructor * Copy assignment +operator * implement copy operations for their own types * +Optional: explain when copying with basic and strong exception +guarantees is useful +

      +
      +

      +   [Contents]

      +
      +

      8.1.5.3 Caveats

      +

      This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

      +
        +
      • Intricacies when implementing copy operations: +
          +
        • Examples of how not to write copy operations (e.g., C++03 +std::auto_ptr) +
        + +
      + +
      +

      +   [Contents]

      +
      +

      8.1.5.4 Points to cover

      +

      This section lists important details for each point. +

      +
        +
      • Copy constructors and copy assignment operators +
          +
        • How compiler generates default copy operations +
        • =default, =delete (No copy) +
        • How-to write your own copy operations +
        • Rule-of-five +
        • Copy assignment operators can be ref-qualified to avoid assigning into +temporary objects. +
        + +
      + +
      +

      +   [Contents]

      +
      +

      8.2.1 Overview

      +

      Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

      + + + + + +
      LevelObjectives
      Foundationalusing and understanding UDLs
      Mainimplementing your own UDLs
      AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
      + +
      +

      +   [Contents]

      +
      +

      8.2.2 Motivation

      +

      Why is this important? Why do we want to learn/teach this +topic? +

      +
        +
      • Allows clearer expression of intent in C++. +
      • std::string: "Hello, world!"s +
      • std::chrono: 3h + 10min + 5s +
      + +
      +

      +   [Contents]

      +
      +

      8.2.3 Topic introduction

      +

      Very brief introduction to the topic. +

      +
        +
      • Explain the existence of user defined literals. Example: +12min + 17s is terse, expressive and type safe. +
      + +
      +

      +   [Contents]

      +
      +

      8.2.4.1 Background/Required Knowledge

      +

      A student: * knows how to form numeric literals, e.g., 1.5f means +a float of value 1.5. * is familiar with the major C++ +types: * bool (Boolean type) * int (Integer type) * +double (Floating-point type) * std::string (Text type) * +std::vector (Collection type) * knows that namespaces exist, and +namespace std. * knows what using-declarations and +using-directives are. +[C++ object +model: declarations] +

      +
      +

      +   [Contents]

      +
      +

      8.2.4.2 Student outcomes

      +

      A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

      +

      A student should be able to: +

      +
        +
      1. use using namespace std::string_literals[1]. +
      2. recognise UDLs in code that they are reading. +
      3. figure out which UDL definitions for a used type exist. +
      4. identify parts of the standard library that make use of UDLs. +
      5. prevent the dangers of temporaries created with "blah"s as well +as with std::string{"blah"}. +
      6. effectively selects the right set of namespaces in using-directives from +the sub-namespaces std::literals. +
      + +

      [1]: explain that it’s okay to use a using-directive to “activate” +UDLs. +

      +
      +

      +   [Contents]

      +
      +

      8.2.4.3 Caveats

      +

      This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

      +
        +
      • A student gets confused by the similarities and differences between +built-in suffixes and UDLs and between UDLs from different namespaces. +
      • A student “activates” two suffixes with the same signature from +different namespaces. +
      + +
      +

      +   [Contents]

      +
      +

      8.2.4.4 Points to cover

      +

      This section lists important details for each point. +

      +
      +

      +   [Contents]

      +
      +

      8.2.5.1 Background/Required Knowledge

      +
        +
      • All of the above. +
      + +
      +

      +   [Contents]

      +
      +

      8.2.5.2 Student outcomes

      +

      A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

      +

      A student should be able to: +

      +
        +
      1. write a UDL operator of their own. +
      2. separate unrelated UDLs into distinct namespaces. +
      + +
      +

      +   [Contents]

      +
      +

      8.2.5.3 Caveats

      +

      This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

      +

      No caveats at present. #### Points to cover +

      +

      This section lists important details for each point. +

      +

      No caveats at present. ### Advanced {#udl-advanced} +

      +

      These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

      +
      +

      +   [Contents]

      +
      +

      8.3.1 Overview

      +

      Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

      +

      Functions in C++ may be overloaded with different numbers and types of +parameters. It may be of value to specify default arguments for some +number of parameters, to allow a caller to avoid specifying arguments +that rarely change, or to enable expanding the set of parameters while +maintaining backward compatibility with existing callers. +

      + + + + + +
      LevelObjective
      FoundationalDefine and use functions with default arguments
      Main
      Advancedrefinement of default arguments through multiple declarations
      + +
      +

      +   [Contents]

      +
      +

      8.3.2 Motivation

      +

      Why is this important? Why do we want to learn/teach this +topic? +

      +

      Default arguments allow the omission of arguments with obvious or common +values. Also may be utilized to extend an existing function signature +without forcing changes to existing calling code. +

      +
      +

      +   [Contents]

      +
      +

      8.3.3 Topic introduction

      +

      Very brief introduction to the topic. +

      +

      Explain how default arguments work and how to define them. +

      +
      +

      +   [Contents]

      +
      +

      8.3.4.1 Background/Required Knowledge

      +

      A student is able to: +

      + + +
      +

      +   [Contents]

      +
      +

      8.3.4.2 Student outcomes

      +

      A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

      +

      A student should be able to: +

      +
        +
      1. Call to a function with a default argument with or without that argument +specified +
      2. Declare a function with a default argument, and omit the default in the +definition’s signature +
      3. Explain when the lifetime of a default argument begins and ends +
      + +
      +

      +   [Contents]

      +
      +

      8.3.4.3 Caveats

      +

      This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

      +
        +
      • When no forward-declaration exists, the definition serves as the +declaration +
      • When multiple declarations exist, only one may specify the default for +any particular parameter, but multiple declarations may specify the +defaults for different parameters. +
      • Additional default values may be specified for other parameters in +repeat declarations +
      • Calling an overloaded function with fewer arguments may be ambiguous +with regard to an overload with default arguments +
      + +
      +

      +   [Contents]

      +
      +

      8.3.4.4 Points to cover

      +

      This section lists important details for each point. +

      +
        +
      • Default value may only be specified once for each parameter among all +declarations +
      • Default values must start from the rightmost parameter and continue +leftward without gaps +
      • Considerations of when to use default arguments vs overload set +
      + +
      +

      +   [Contents]

      +
      +

      8.3.5.2 Student outcomes

      +

      A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

      +

      A student should be able to: +

      +
      +

      +   [Contents]

      +
      +

      8.3.5.3 Caveats

      +

      This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

      +
      +

      +   [Contents]

      +
      +

      8.3.5.4 Points to cover

      +

      This section lists important details for each point. +

      +
      +

      +   [Contents]

      +
      +

      8.3.6 Advanced

      +

      These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

      +

      Subsequent redeclarations of the same function may add default argument +values, which are then usable by callers. Though a single parameter +cannot be given a default argument twice in the same translation unit, +it is legal, though ill-advised, to give the same function different +default arguments in different translation units. +

      +
      +

      +   [Contents]

      +
      +

      8.4.1 Overview

      +

      Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

      + + + + + +
      LevelObjectives
      FoundationalDefine and use requires-expressions to check satisfaction of +expressions by given parameters
      MainDefine and use requires-expressions to check properties of +expressions
      Advanced
      + +
      +

      +   [Contents]

      +
      +

      8.4.2 Motivation

      +

      Why is this important? Why do we want to learn/teach this +topic? +

      +

      Requires-expressions allow a developer to perform compile-time +evaluation on the validity of other expressions. These are fundamental +to the ability to write concepts. +[Compile-time programming: +concepts] +

      +
      +

      +   [Contents]

      +
      +

      8.5 Topic introduction

      +

      Very brief introduction to the topic. +

      +

      Requires-expressions are compile-time predicates which evaluate to true +when their specified set of expressions are all valid for a given set of +inputs. +

      + + + + + + +
      +

      +   [Contents]

      +
      +

      8.5.1.1 Background/Required Knowledge

      +

      A student is able to: +

      + + +

      It is helpful if: +

      +
        +
      • The student is aware that attempting to specialize the template with +types or values which do not match otherwise unstated assumptions will +cause errors within the template. +
      + +
      +

      +   [Contents]

      +
      +

      8.5.1.2 Student outcomes

      +

      A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

      +

      A student should be able to: +

      +
        +
      1. Write a simple-requirement to assert the validity of an expression +
      2. Write a type-requirement to check the existence of a type by its +identifier +
      3. Write a compound-requirement to test the resulting type of an expression +
      4. Write a nested-requirement to test the constexpr value of an operation, +as opposed to just the syntactic validity +
      5. Use a requires-expression within a concept, requires-clause, or +if constexpr condition +
      + +
      +

      +   [Contents]

      +
      +

      8.5.1.3 Caveats

      +

      This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

      +

      To require that expressions, which evaluate to a boolean value like +sizeof(t) == 4, evaluate to true a nested-requirement is +needed (e.g., requires sizeof(t) == 4;). Omitting the +requires results in a simple-requirement, which is satisfied +based purely on syntactic validity, not on the result of the operation. +

      +
      +

      +   [Contents]

      +
      +

      8.5.1.4 Points to cover

      +

      This section lists important details for each point. +

      +
        +
      • All requires-expression requirements terminate with a semicolon. +
      • simple-requirements are used to check that an expression is well-formed. +
      • nested-requirements are introduced with requires and primarily +used to check the result of an expression computable by the compiler, +including concepts or other requires-expressions. +
      • type-requirements are introduced with typename and used to verify +the existence of a type with a particular identifier. +
      • compound-requirements are enclosed in braces and can be used to check +the resulting type of an expression. +
      • Checks are performed by the compiler, not at run time. +
      • If covering usage of requires-expression with requires-clause, +[Compile-time +programming: requires clause] demonstrate requires requires and +show how to ever avoid writing it by using a concept. +[Compile-time programming: +concepts] +
      + +
      +

      +   [Contents]

      +
      +

      8.5.2.1 Background/Required Knowledge

      +
        +
      • All of the above. +
      • Knowledge of noexcept +
      + +

      A student is able to: +

      + + +
      +

      +   [Contents]

      +
      +

      8.5.2.2 Student outcomes

      +

      A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

      +

      A student should be able to: +

      +
        +
      1. Write compound-requirements which test the noexceptness of an +expression. +
      2. Use a concept as the target of a compound-requirement. +
      + +
      +

      +   [Contents]

      +
      +

      8.5.2.3 Caveats

      +

      This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

      +
      +

      +   [Contents]

      +
      +

      8.5.2.4 Points to cover

      +

      This section lists important details for each point. +

      +
        +
      • Compound-requirements allow the optional ability to test whether an +expression is marked as noexcept, by using a trailing +noexcept keyword. +
      + +
      struct S
      +{
      +    void foo() noexcept {}
      +    void bar() {}
      +};
      +
      +static_assert(requires(S s) { { s.foo() } noexcept; } ); // Succeeds. s.foo() is noexcept
      +static_assert(requires(S s) { { s.bar() } noexcept; } ); // Fails. s.bar() is not noexcept
      +
      +
        +
      • If the return-type-requirement of a compound-requirement is a concept, +that concept is given the resulting type as the first parameter, +followed by the specified parameters in the compound-requirement. +{ ++x } -> C<int> would substitute +C<decltype((++x)), int> and check that concept C is satisfied for +those parameters. +
      + +
      +

      +   [Contents]

      +
      +

      8.5.3 Advanced

      + +
      +

      +   [Contents]

      +
      +

      8.6.1 Overview

      +

      Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

      + + + + + +
      LevelObjectives
      FoundationalCalling static_assert with a constant expression
      MainUsing static_assert to detect contract violations and +improve error messages
      Advanced
      + +
      +

      +   [Contents]

      +
      +

      8.6.2 Motivation

      +

      Why is this important? Why do we want to learn/teach this +topic? +

      +

      static_assert allows the developer to enforce that conditions +which can be checked during compilation will force build errors when +violated. Additionally, they are the best mechanism by which a developer +can pass useful information to other developers regarding what violation +occurred or what must be done, instead. +

      +
      +

      +   [Contents]

      +
      +

      8.6.3 Topic introduction

      +

      Very brief introduction to the topic. +

      +

      static_assert is a compile-time evaluated function that asserts +the truth of a supplied predicate, issuing an optional user-supplied +error message if the predicate is false. +

      +
      +

      +   [Contents]

      +
      +

      8.6.4.1 Background/Required Knowledge

      +

      A student: +

      +
        +
      • Should be able to explain the difference between code evaluated at +compile-time and run-time +
      • Should be able to cite some examples of compile-time known information, +such as sizeof(T) +
      + +
      +

      +   [Contents]

      +
      +

      8.6.4.2 Student outcomes

      +

      A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

      +

      A student should be able to: +

      +
        +
      1. Assert the expected size of a structure using static_assert +
      + +
      +

      +   [Contents]

      +
      +

      8.6.4.3 Caveats

      +

      This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

      +
      +

      +   [Contents]

      +
      +

      8.6.4.4 Points to cover

      +

      This section lists important details for each point. +

      +
        +
      • X +
      • In addition to what is wrong, a good error message will inform the user +of how to correct it +
      + +
      +

      +   [Contents]

      +
      +

      8.6.5.1 Background/Required Knowledge

      +
        +
      • All of the above. +
      • General understanding of compile-time requirements +
      + +
      +

      +   [Contents]

      +
      +

      8.6.5.2 Student outcomes

      +

      A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

      +

      A student should be able to: +

      +
        +
      1. Utilize static_assert to verify preconditions of a meta-function +
      2. Utilize static_assert to verify the results of meta-functions for +known values +
      + +
      +

      +   [Contents]

      +
      +

      8.6.5.3 Caveats

      +

      This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

      +
      +

      +   [Contents]

      +
      +

      8.6.5.4 Points to cover

      +

      This section lists important details for each point. +

      +
        +
      • When writing a meta-function, use static_assert to test the +results +
      • Write static_assert calls at the scope of the code they are +guarding +
      + +
      template<typename T>
      +struct container {
      +    std::map<int, T> vals;
      +
      +    // Test location #1
      +    static_assert(
      +        std::is_default_constructible_v<T>,
      +        "container type T must be default constructible");i
      +
      +    void add(int key, T const& t) {
      +        // Test location #2
      +        static_assert(
      +            std::is_default_constructible_v<T>,
      +            "container type T must be default constructible");
      +        // std::map::operator[] requires default constructible type for 
      +        // the value. This will cause a build failure deep in the 
      +        // implementation of std::map, when T is not default constructible
      +        vals[key] = t;
      +    }
      +};
      +
      +struct NoDefCtor {
      +    NoDefCtor() = delete;
      +    NoDefCtor(double d) {}
      +};
      +
      +container<NoDefCtor> c; // If Test #1 was omitted, this would succeed
      +// This is ill-formed. Test #2 would catch this and provide a better 
      +// error message for the user
      +c.add(42, NoDefCtor(1.0)); 
      +
      +
      +

      +   [Contents]

      +
      +

      8.6.6 Advanced

      +

      These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

      + + + + + diff --git a/latest/index.html b/latest/index.html index 64feef8..35f1efb 100644 --- a/latest/index.html +++ b/latest/index.html @@ -106,7 +106,7 @@

      Guidelines for Teaching C++

      -

      Version 0.0.9

      +

      Version 0.0.11

      SG20 (ISO C++ Study Group on Education)

      @@ -203,9 +203,9 @@

      <

      The most recent version of this document is available as an online HTML document at: https://cplusplus.github.io/SG20/latest/.

      The version of the document that you are currently reading is available in the following formats:

        -
      1. online (HTML) format as a single large HTML document: https://cplusplus.github.io/SG20/0.0.9/html

      2. -
      3. EPUB format: https:/cplusplus.github.io/SG20/0.0.9/guidelines.epub

      4. -
      5. online (HTML) format, split across multiple HTML documents: https://cplusplus.github.io/SG20/0.0.9/html_split/ [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

      6. +
      7. online (HTML) format as a single large HTML document: https://cplusplus.github.io/SG20/0.0.11/html

      8. +
      9. EPUB format: https://cplusplus.github.io/SG20/0.0.11/guidelines.epub

      10. +
      11. online (HTML) format, split across multiple HTML documents: https://cplusplus.github.io/SG20/0.0.11/html_split/ [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

      Older versions of this document are also available. In general version ver is available at https://cplusplus.github.io/SG20/ver/html. For example, version 0.1.0 (assuming that this version exists) would be available at https://cplusplus.github.io/SG20/0.1.0/html.

      2 Disclaimer

      @@ -1056,6 +1056,7 @@

      8.2.5.3 Caveats8.3 Functions: default argument

      Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

      8.3.1 Overview

      +

      Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

      Functions in C++ may be overloaded with different numbers and types of parameters. It may be of value to specify default arguments for some number of parameters, to allow a caller to avoid specifying arguments that rarely change, or to enable expanding the set of parameters while maintaining backward compatibility with existing callers.

      @@ -1084,8 +1085,10 @@

      8.3.1 Overview

      8.3.2 Motivation

      +

      Why is this important? Why do we want to learn/teach this topic?

      Default arguments allow the omission of arguments with obvious or common values. Also may be utilized to extend an existing function signature without forcing changes to existing calling code.

      8.3.3 Topic introduction

      +

      Very brief introduction to the topic.

      Explain how default arguments work and how to define them.

      8.3.4 Foundational: Using and defining functions with default arguments

      8.3.4.1 Background/Required Knowledge

      @@ -1097,6 +1100,7 @@

      8.3.
    4. Explain what a default constructor is and does [C++ object model: constructors]
    5. 8.3.4.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      A student should be able to:

      1. Call to a function with a default argument with or without that argument specified
      2. @@ -1104,6 +1108,7 @@

        8.3.4.2 S
      3. Explain when the lifetime of a default argument begins and ends

      8.3.4.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      • When no forward-declaration exists, the definition serves as the declaration
      • When multiple declarations exist, only one may specify the default for any particular parameter, but multiple declarations may specify the defaults for different parameters.
      • @@ -1111,25 +1116,31 @@

        8.3.4.3 CaveatsCalling an overloaded function with fewer arguments may be ambiguous with regard to an overload with default arguments

      8.3.4.4 Points to cover

      +

      This section lists important details for each point.

      • Default value may only be specified once for each parameter among all declarations
      • Default values must start from the rightmost parameter and continue leftward without gaps
      • Considerations of when to use default arguments vs overload set

      8.3.5 Main: implementing *

      -

      8.3.5.1 Background/required knowledge

      +

      8.3.5.1 Background/Required knowledge

      • All of the above.

      8.3.5.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      A student should be able to:

      8.3.5.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      8.3.5.4 Points to cover

      +

      This section lists important details for each point.

      8.3.6 Advanced

      +

      These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

      Subsequent redeclarations of the same function may add default argument values, which are then usable by callers. Though a single parameter cannot be given a default argument twice in the same translation unit, it is legal, though ill-advised, to give the same function different default arguments in different translation units.

      8.4 Module name: Requires Expressions

      Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

      8.4.1 Overview

      +

      Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

      @@ -1157,8 +1168,10 @@

      8.4.1 Overview

      8.4.2 Motivation

      +

      Why is this important? Why do we want to learn/teach this topic?

      Requires-expressions allow a developer to perform compile-time evaluation on the validity of other expressions. These are fundamental to the ability to write concepts. [Compile-time programming: concepts]

      8.5 Topic introduction

      +

      Very brief introduction to the topic.

      Requires-expressions are compile-time predicates which evaluate to true when their specified set of expressions are all valid for a given set of inputs.

      8.5.1 Foundational: Writing requires-expressions

      8.5.1.1 Background/Required Knowledge

      @@ -1172,6 +1185,7 @@

      8.5.
    6. The student is aware that attempting to specialize the template with types or values which do not match otherwise unstated assumptions will cause errors within the template.
    7. 8.5.1.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      A student should be able to:

      1. Write a simple-requirement to assert the validity of an expression
      2. @@ -1181,8 +1195,10 @@

        8.5.1.2 S
      3. Use a requires-expression within a concept, requires-clause, or if constexpr condition

      8.5.1.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      To require that expressions, which evaluate to a boolean value like sizeof(t) == 4, evaluate to true a nested-requirement is needed (e.g., requires sizeof(t) == 4;). Omitting the requires results in a simple-requirement, which is satisfied based purely on syntactic validity, not on the result of the operation.

      8.5.1.4 Points to cover

      +

      This section lists important details for each point.

      • All requires-expression requirements terminate with a semicolon.
      • simple-requirements are used to check that an expression is well-formed.
      • @@ -1193,7 +1209,7 @@

        8.5.1.4 Po
      • If covering usage of requires-expression with requires-clause, [Compile-time programming: requires clause] demonstrate requires requires and show how to ever avoid writing it by using a concept. [Compile-time programming: concepts]

      8.5.2 Main: Advanced requirements

      -

      8.5.2.1 Background/required knowledge

      +

      8.5.2.1 Background/Required Knowledge

      8.5.2.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      A student should be able to:

      1. Write compound-requirements which test the noexceptness of an expression.
      2. Use a concept as the target of a compound-requirement.

      8.5.2.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      8.5.2.4 Points to cover

      +

      This section lists important details for each point.

      • Compound-requirements allow the optional ability to test whether an expression is marked as noexcept, by using a trailing noexcept keyword.
      From f05c273332af4508a021a9a64d883c99f1bb89dc Mon Sep 17 00:00:00 2001 From: vulder Date: Mon, 1 Nov 2021 20:43:57 +0000 Subject: [PATCH 13/21] deploy: 6e435f2b347b63b1bc8aa2f4a9459d4a40941c2d --- 0.0.12/guidelines.epub | Bin 0 -> 31530 bytes 0.0.12/html/images/cpp_logo.png | Bin 0 -> 23613 bytes 0.0.12/html/index.html | 1450 +++++++++++++++++ 0.0.12/html_split/Advanced.html | 60 + .../Background_002fRequired-Knowledge.html | 64 + .../Background_002fRequired-knowledge.html | 54 + ...ments-and-Control_002dFlow-Constructs.html | 60 + 0.0.12/html_split/Building.html | 57 + ...002b_002b-object-model-copy-semantics.html | 69 + 0.0.12/html_split/Caveats.html | 62 + 0.0.12/html_split/Compilation-Model.html | 62 + .../Compile_002dTime-Computation.html | 57 + .../Context-and-Aim-of-This-Guide.html | 76 + .../Contributing-to-This-Document.html | 55 + 0.0.12/html_split/Contributors.html | 57 + ...ed-Information-for-Modules-and-Topics.html | 67 + 0.0.12/html_split/Disclaimer.html | 55 + 0.0.12/html_split/Error-Handling.html | 59 + .../Examples-of-Course-Curricula.html | 53 + .../External-ie-Non-Standard-Libraries.html | 56 + ...005fassert-with-a-constant-expression.html | 62 + ...dational-How-and-when-are-copies-made.html | 63 + .../html_split/Foundational-Using-UDLs.html | 61 + ...ning-functions-with-default-arguments.html | 62 + ...onal-Writing-requires_002dexpressions.html | 60 + .../Functions-default-argument.html | 67 + .../Functions-user_002ddefined-literals.html | 65 + 0.0.12/html_split/Functions.html | 61 + .../Generic-Programming-Templates.html | 61 + 0.0.12/html_split/Glossary.html | 58 + 0.0.12/html_split/How-To-Contribute.html | 89 + .../Inheritance-and-Class-Hierarchies.html | 57 + 0.0.12/html_split/License.html | 100 ++ .../Main-Advanced-requirements.html | 60 + .../Main-Contracts-and-static_005fassert.html | 61 + ...ting-user_002ddefined-copy-operations.html | 62 + 0.0.12/html_split/Main-implementing-UDLs.html | 59 + .../html_split/Main-implementing-_002a.html | 62 + ..._002derror-handling-static_005fassert.html | 67 + .../Module-name-Requires-Expressions.html | 60 + 0.0.12/html_split/Motivation.html | 57 + ...-Recent-Version-and-Alternate-Formats.html | 78 + .../Organization-of-This-Document.html | 101 ++ 0.0.12/html_split/Overview.html | 61 + 0.0.12/html_split/Points-to-cover.html | 69 + 0.0.12/html_split/Preprocessor.html | 58 + .../References-on-Learning-Outcomes.html | 71 + 0.0.12/html_split/References.html | 59 + 0.0.12/html_split/Software-Design.html | 56 + 0.0.12/html_split/Standard-Library.html | 57 + 0.0.12/html_split/Student-outcomes.html | 73 + .../Summary-of-Modules-and-Topics.html | 106 ++ 0.0.12/html_split/Testing-and-Debugging.html | 59 + 0.0.12/html_split/Tooling.html | 57 + 0.0.12/html_split/Topic-introduction.html | 55 + 0.0.12/html_split/Use-of-This-Document.html | 58 + .../User_002dDefined-Types-Classes.html | 69 + ...ed-to-C_002b_002b-Teaching-Guidelines.html | 69 + 0.0.12/html_split/_0023advanced.html | 40 + 0.0.12/html_split/_0023advanced_002d1.html | 40 + 0.0.12/html_split/_0023advanced_002d2.html | 40 + 0.0.12/html_split/_0023advanced_002d3.html | 40 + ..._0023backgroundrequired_002dknowledge.html | 40 + ...ackgroundrequired_002dknowledge_002d1.html | 40 + ...ackgroundrequired_002dknowledge_002d2.html | 40 + ...ackgroundrequired_002dknowledge_002d3.html | 40 + ...ackgroundrequired_002dknowledge_002d4.html | 40 + ...ackgroundrequired_002dknowledge_002d5.html | 40 + ...ackgroundrequired_002dknowledge_002d6.html | 40 + ...ackgroundrequired_002dknowledge_002d7.html | 40 + ...ackgroundrequired_002dknowledge_002d8.html | 40 + ...ackgroundrequired_002dknowledge_002d9.html | 40 + ...d_002dcontrol_002dflow_002dconstructs.html | 40 + 0.0.12/html_split/_0023building.html | 40 + ...ject_002dmodel_002dcopy_002dsemantics.html | 40 + 0.0.12/html_split/_0023caveats.html | 40 + 0.0.12/html_split/_0023caveats_002d1.html | 40 + 0.0.12/html_split/_0023caveats_002d2.html | 40 + 0.0.12/html_split/_0023caveats_002d3.html | 40 + 0.0.12/html_split/_0023caveats_002d4.html | 40 + 0.0.12/html_split/_0023caveats_002d5.html | 40 + 0.0.12/html_split/_0023caveats_002d6.html | 40 + 0.0.12/html_split/_0023caveats_002d7.html | 40 + 0.0.12/html_split/_0023caveats_002d8.html | 40 + 0.0.12/html_split/_0023caveats_002d9.html | 40 + .../_0023compilation_002dmodel.html | 40 + ..._0023compile_002dtime_002dcomputation.html | 40 + ...and_002daim_002dof_002dthis_002dguide.html | 40 + ...ributing_002dto_002dthis_002ddocument.html | 40 + 0.0.12/html_split/_0023contributors.html | 40 + ...02dfor_002dmodules_002dand_002dtopics.html | 40 + 0.0.12/html_split/_0023disclaimer.html | 40 + .../html_split/_0023error_002dhandling.html | 40 + ...mples_002dof_002dcourse_002dcurricula.html | 40 + ...2e_002dnon_002dstandard_002dlibraries.html | 40 + ...ith_002da_002dconstant_002dexpression.html | 40 + ..._002dwhen_002dare_002dcopies_002dmade.html | 40 + ...ns_002dwith_002ddefault_002darguments.html | 40 + .../_0023foundational_002dusing_002dudls.html | 40 + ...dwriting_002drequires_002dexpressions.html | 40 + 0.0.12/html_split/_0023functions.html | 40 + ...023functions_002ddefault_002dargument.html | 40 + ...ons_002duser_002ddefined_002dliterals.html | 40 + ...generic_002dprogramming_002dtemplates.html | 40 + 0.0.12/html_split/_0023glossary.html | 40 + .../_0023how_002dto_002dcontribute.html | 40 + ...nce_002dand_002dclass_002dhierarchies.html | 40 + 0.0.12/html_split/_0023license.html | 40 + ...023main_002dadvanced_002drequirements.html | 40 + ...ntracts_002dand_002dstatic_005fassert.html | 40 + .../_0023main_002dimplementing.html | 40 + .../_0023main_002dimplementing_002dudls.html | 40 + ...r_002ddefined_002dcopy_002doperations.html | 40 + ...or_002dhandling_002dstatic_005fassert.html | 40 + ...002dname_002drequires_002dexpressions.html | 40 + 0.0.12/html_split/_0023motivation.html | 40 + 0.0.12/html_split/_0023motivation_002d1.html | 40 + 0.0.12/html_split/_0023motivation_002d2.html | 40 + 0.0.12/html_split/_0023motivation_002d3.html | 40 + 0.0.12/html_split/_0023motivation_002d4.html | 40 + ...ion_002dand_002dalternate_002dformats.html | 40 + ...nization_002dof_002dthis_002ddocument.html | 40 + 0.0.12/html_split/_0023overview.html | 40 + 0.0.12/html_split/_0023overview_002d1.html | 40 + 0.0.12/html_split/_0023overview_002d2.html | 40 + 0.0.12/html_split/_0023overview_002d3.html | 40 + 0.0.12/html_split/_0023overview_002d4.html | 40 + .../_0023points_002dto_002dcover.html | 40 + .../_0023points_002dto_002dcover_002d1.html | 40 + .../_0023points_002dto_002dcover_002d2.html | 40 + .../_0023points_002dto_002dcover_002d3.html | 40 + .../_0023points_002dto_002dcover_002d4.html | 40 + .../_0023points_002dto_002dcover_002d5.html | 40 + .../_0023points_002dto_002dcover_002d6.html | 40 + .../_0023points_002dto_002dcover_002d7.html | 40 + .../_0023points_002dto_002dcover_002d8.html | 40 + 0.0.12/html_split/_0023preprocessor.html | 40 + 0.0.12/html_split/_0023references.html | 40 + ...nces_002don_002dlearning_002doutcomes.html | 40 + .../html_split/_0023software_002ddesign.html | 40 + .../html_split/_0023standard_002dlibrary.html | 40 + .../html_split/_0023student_002doutcomes.html | 40 + .../_0023student_002doutcomes_002d1.html | 40 + .../_0023student_002doutcomes_002d2.html | 40 + .../_0023student_002doutcomes_002d3.html | 40 + .../_0023student_002doutcomes_002d4.html | 40 + .../_0023student_002doutcomes_002d5.html | 40 + .../_0023student_002doutcomes_002d6.html | 40 + .../_0023student_002doutcomes_002d7.html | 40 + .../_0023student_002doutcomes_002d8.html | 40 + .../_0023student_002doutcomes_002d9.html | 40 + ...002dof_002dmodules_002dand_002dtopics.html | 40 + .../_0023testing_002dand_002ddebugging.html | 40 + 0.0.12/html_split/_0023tooling.html | 40 + .../_0023topic_002dintroduction.html | 40 + .../_0023topic_002dintroduction_002d1.html | 40 + .../_0023topic_002dintroduction_002d2.html | 40 + .../_0023topic_002dintroduction_002d3.html | 40 + .../_0023topic_002dintroduction_002d4.html | 40 + ..._0023use_002dof_002dthis_002ddocument.html | 40 + ...ser_002ddefined_002dtypes_002dclasses.html | 40 + ...dto_002dc_002dteaching_002dguidelines.html | 40 + 0.0.12/html_split/index.html | 240 +++ 0.0.12/html_split/unknown_node.html | 818 ++++++++++ latest/index.html | 324 ++-- 165 files changed, 10364 insertions(+), 161 deletions(-) create mode 100644 0.0.12/guidelines.epub create mode 100644 0.0.12/html/images/cpp_logo.png create mode 100644 0.0.12/html/index.html create mode 100644 0.0.12/html_split/Advanced.html create mode 100644 0.0.12/html_split/Background_002fRequired-Knowledge.html create mode 100644 0.0.12/html_split/Background_002fRequired-knowledge.html create mode 100644 0.0.12/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html create mode 100644 0.0.12/html_split/Building.html create mode 100644 0.0.12/html_split/C_002b_002b-object-model-copy-semantics.html create mode 100644 0.0.12/html_split/Caveats.html create mode 100644 0.0.12/html_split/Compilation-Model.html create mode 100644 0.0.12/html_split/Compile_002dTime-Computation.html create mode 100644 0.0.12/html_split/Context-and-Aim-of-This-Guide.html create mode 100644 0.0.12/html_split/Contributing-to-This-Document.html create mode 100644 0.0.12/html_split/Contributors.html create mode 100644 0.0.12/html_split/Detailed-Information-for-Modules-and-Topics.html create mode 100644 0.0.12/html_split/Disclaimer.html create mode 100644 0.0.12/html_split/Error-Handling.html create mode 100644 0.0.12/html_split/Examples-of-Course-Curricula.html create mode 100644 0.0.12/html_split/External-ie-Non-Standard-Libraries.html create mode 100644 0.0.12/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html create mode 100644 0.0.12/html_split/Foundational-How-and-when-are-copies-made.html create mode 100644 0.0.12/html_split/Foundational-Using-UDLs.html create mode 100644 0.0.12/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html create mode 100644 0.0.12/html_split/Foundational-Writing-requires_002dexpressions.html create mode 100644 0.0.12/html_split/Functions-default-argument.html create mode 100644 0.0.12/html_split/Functions-user_002ddefined-literals.html create mode 100644 0.0.12/html_split/Functions.html create mode 100644 0.0.12/html_split/Generic-Programming-Templates.html create mode 100644 0.0.12/html_split/Glossary.html create mode 100644 0.0.12/html_split/How-To-Contribute.html create mode 100644 0.0.12/html_split/Inheritance-and-Class-Hierarchies.html create mode 100644 0.0.12/html_split/License.html create mode 100644 0.0.12/html_split/Main-Advanced-requirements.html create mode 100644 0.0.12/html_split/Main-Contracts-and-static_005fassert.html create mode 100644 0.0.12/html_split/Main-Implementing-user_002ddefined-copy-operations.html create mode 100644 0.0.12/html_split/Main-implementing-UDLs.html create mode 100644 0.0.12/html_split/Main-implementing-_002a.html create mode 100644 0.0.12/html_split/Meta_002derror-handling-static_005fassert.html create mode 100644 0.0.12/html_split/Module-name-Requires-Expressions.html create mode 100644 0.0.12/html_split/Motivation.html create mode 100644 0.0.12/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html create mode 100644 0.0.12/html_split/Organization-of-This-Document.html create mode 100644 0.0.12/html_split/Overview.html create mode 100644 0.0.12/html_split/Points-to-cover.html create mode 100644 0.0.12/html_split/Preprocessor.html create mode 100644 0.0.12/html_split/References-on-Learning-Outcomes.html create mode 100644 0.0.12/html_split/References.html create mode 100644 0.0.12/html_split/Software-Design.html create mode 100644 0.0.12/html_split/Standard-Library.html create mode 100644 0.0.12/html_split/Student-outcomes.html create mode 100644 0.0.12/html_split/Summary-of-Modules-and-Topics.html create mode 100644 0.0.12/html_split/Testing-and-Debugging.html create mode 100644 0.0.12/html_split/Tooling.html create mode 100644 0.0.12/html_split/Topic-introduction.html create mode 100644 0.0.12/html_split/Use-of-This-Document.html create mode 100644 0.0.12/html_split/User_002dDefined-Types-Classes.html create mode 100644 0.0.12/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html create mode 100644 0.0.12/html_split/_0023advanced.html create mode 100644 0.0.12/html_split/_0023advanced_002d1.html create mode 100644 0.0.12/html_split/_0023advanced_002d2.html create mode 100644 0.0.12/html_split/_0023advanced_002d3.html create mode 100644 0.0.12/html_split/_0023backgroundrequired_002dknowledge.html create mode 100644 0.0.12/html_split/_0023backgroundrequired_002dknowledge_002d1.html create mode 100644 0.0.12/html_split/_0023backgroundrequired_002dknowledge_002d2.html create mode 100644 0.0.12/html_split/_0023backgroundrequired_002dknowledge_002d3.html create mode 100644 0.0.12/html_split/_0023backgroundrequired_002dknowledge_002d4.html create mode 100644 0.0.12/html_split/_0023backgroundrequired_002dknowledge_002d5.html create mode 100644 0.0.12/html_split/_0023backgroundrequired_002dknowledge_002d6.html create mode 100644 0.0.12/html_split/_0023backgroundrequired_002dknowledge_002d7.html create mode 100644 0.0.12/html_split/_0023backgroundrequired_002dknowledge_002d8.html create mode 100644 0.0.12/html_split/_0023backgroundrequired_002dknowledge_002d9.html create mode 100644 0.0.12/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html create mode 100644 0.0.12/html_split/_0023building.html create mode 100644 0.0.12/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html create mode 100644 0.0.12/html_split/_0023caveats.html create mode 100644 0.0.12/html_split/_0023caveats_002d1.html create mode 100644 0.0.12/html_split/_0023caveats_002d2.html create mode 100644 0.0.12/html_split/_0023caveats_002d3.html create mode 100644 0.0.12/html_split/_0023caveats_002d4.html create mode 100644 0.0.12/html_split/_0023caveats_002d5.html create mode 100644 0.0.12/html_split/_0023caveats_002d6.html create mode 100644 0.0.12/html_split/_0023caveats_002d7.html create mode 100644 0.0.12/html_split/_0023caveats_002d8.html create mode 100644 0.0.12/html_split/_0023caveats_002d9.html create mode 100644 0.0.12/html_split/_0023compilation_002dmodel.html create mode 100644 0.0.12/html_split/_0023compile_002dtime_002dcomputation.html create mode 100644 0.0.12/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html create mode 100644 0.0.12/html_split/_0023contributing_002dto_002dthis_002ddocument.html create mode 100644 0.0.12/html_split/_0023contributors.html create mode 100644 0.0.12/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html create mode 100644 0.0.12/html_split/_0023disclaimer.html create mode 100644 0.0.12/html_split/_0023error_002dhandling.html create mode 100644 0.0.12/html_split/_0023examples_002dof_002dcourse_002dcurricula.html create mode 100644 0.0.12/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html create mode 100644 0.0.12/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html create mode 100644 0.0.12/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html create mode 100644 0.0.12/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html create mode 100644 0.0.12/html_split/_0023foundational_002dusing_002dudls.html create mode 100644 0.0.12/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html create mode 100644 0.0.12/html_split/_0023functions.html create mode 100644 0.0.12/html_split/_0023functions_002ddefault_002dargument.html create mode 100644 0.0.12/html_split/_0023functions_002duser_002ddefined_002dliterals.html create mode 100644 0.0.12/html_split/_0023generic_002dprogramming_002dtemplates.html create mode 100644 0.0.12/html_split/_0023glossary.html create mode 100644 0.0.12/html_split/_0023how_002dto_002dcontribute.html create mode 100644 0.0.12/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html create mode 100644 0.0.12/html_split/_0023license.html create mode 100644 0.0.12/html_split/_0023main_002dadvanced_002drequirements.html create mode 100644 0.0.12/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html create mode 100644 0.0.12/html_split/_0023main_002dimplementing.html create mode 100644 0.0.12/html_split/_0023main_002dimplementing_002dudls.html create mode 100644 0.0.12/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html create mode 100644 0.0.12/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html create mode 100644 0.0.12/html_split/_0023module_002dname_002drequires_002dexpressions.html create mode 100644 0.0.12/html_split/_0023motivation.html create mode 100644 0.0.12/html_split/_0023motivation_002d1.html create mode 100644 0.0.12/html_split/_0023motivation_002d2.html create mode 100644 0.0.12/html_split/_0023motivation_002d3.html create mode 100644 0.0.12/html_split/_0023motivation_002d4.html create mode 100644 0.0.12/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html create mode 100644 0.0.12/html_split/_0023organization_002dof_002dthis_002ddocument.html create mode 100644 0.0.12/html_split/_0023overview.html create mode 100644 0.0.12/html_split/_0023overview_002d1.html create mode 100644 0.0.12/html_split/_0023overview_002d2.html create mode 100644 0.0.12/html_split/_0023overview_002d3.html create mode 100644 0.0.12/html_split/_0023overview_002d4.html create mode 100644 0.0.12/html_split/_0023points_002dto_002dcover.html create mode 100644 0.0.12/html_split/_0023points_002dto_002dcover_002d1.html create mode 100644 0.0.12/html_split/_0023points_002dto_002dcover_002d2.html create mode 100644 0.0.12/html_split/_0023points_002dto_002dcover_002d3.html create mode 100644 0.0.12/html_split/_0023points_002dto_002dcover_002d4.html create mode 100644 0.0.12/html_split/_0023points_002dto_002dcover_002d5.html create mode 100644 0.0.12/html_split/_0023points_002dto_002dcover_002d6.html create mode 100644 0.0.12/html_split/_0023points_002dto_002dcover_002d7.html create mode 100644 0.0.12/html_split/_0023points_002dto_002dcover_002d8.html create mode 100644 0.0.12/html_split/_0023preprocessor.html create mode 100644 0.0.12/html_split/_0023references.html create mode 100644 0.0.12/html_split/_0023references_002don_002dlearning_002doutcomes.html create mode 100644 0.0.12/html_split/_0023software_002ddesign.html create mode 100644 0.0.12/html_split/_0023standard_002dlibrary.html create mode 100644 0.0.12/html_split/_0023student_002doutcomes.html create mode 100644 0.0.12/html_split/_0023student_002doutcomes_002d1.html create mode 100644 0.0.12/html_split/_0023student_002doutcomes_002d2.html create mode 100644 0.0.12/html_split/_0023student_002doutcomes_002d3.html create mode 100644 0.0.12/html_split/_0023student_002doutcomes_002d4.html create mode 100644 0.0.12/html_split/_0023student_002doutcomes_002d5.html create mode 100644 0.0.12/html_split/_0023student_002doutcomes_002d6.html create mode 100644 0.0.12/html_split/_0023student_002doutcomes_002d7.html create mode 100644 0.0.12/html_split/_0023student_002doutcomes_002d8.html create mode 100644 0.0.12/html_split/_0023student_002doutcomes_002d9.html create mode 100644 0.0.12/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html create mode 100644 0.0.12/html_split/_0023testing_002dand_002ddebugging.html create mode 100644 0.0.12/html_split/_0023tooling.html create mode 100644 0.0.12/html_split/_0023topic_002dintroduction.html create mode 100644 0.0.12/html_split/_0023topic_002dintroduction_002d1.html create mode 100644 0.0.12/html_split/_0023topic_002dintroduction_002d2.html create mode 100644 0.0.12/html_split/_0023topic_002dintroduction_002d3.html create mode 100644 0.0.12/html_split/_0023topic_002dintroduction_002d4.html create mode 100644 0.0.12/html_split/_0023use_002dof_002dthis_002ddocument.html create mode 100644 0.0.12/html_split/_0023user_002ddefined_002dtypes_002dclasses.html create mode 100644 0.0.12/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html create mode 100644 0.0.12/html_split/index.html create mode 100644 0.0.12/html_split/unknown_node.html diff --git a/0.0.12/guidelines.epub b/0.0.12/guidelines.epub new file mode 100644 index 0000000000000000000000000000000000000000..0abed29327f85afb06ae608ffa1c10d1cfc8d380 GIT binary patch literal 31530 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 RSfc_Ae*PrMIsfO;{|7#CnCSoj literal 0 HcmV?d00001 diff --git a/0.0.12/html/images/cpp_logo.png b/0.0.12/html/images/cpp_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..780e8a32bdd384c1dbd0fc999b9ef9ed2e1bdad6 GIT binary patch literal 23613 zcmaI7WmsH6vo(rKa0u=m!DVpw;KAM98QfiiyIT?*f;$Aa!DVoF7~F#8PTq6Q_uU`& z+<6#grk}3r+TGQ?t5&TYt)e7@@s8vj3=9m0oUG(m7#LV<=sOJs3EDDuY=;Z|Aa;|| zc2je*bn`TEwSW;bcQUo0l5;SzviNFYV(#rSY9R;%15an8uI;9+sK9ULzPft%4PfivmS1VR_K0dyGIyg9(p*@&^-i~f2Ud)a_+W*lY zX#q5IwQ+W{adM>kr_sdJ$=ywe25RYlU4n!2|557*{O@UkP8h3~i8CuZ3){a-`k#)9 zivRyz9UT5oZ=l;(i~noy|EFT0y0^0h>sJe)le?=Kbm1&%{|)8LFX3uo;^yS4?&M_u zKeMP}?d0YJw03f)l28LseNZ$pvvK^_@bNzqii-SljzBjPM>7jKNg*1j4i+05bAEOJ z8@D(QyA(SQCxD$@iicN9LQGPOO@d3BgH4*7SMq;kC7sON9V{H({zumQ|H?}Lud@G~ z!ND0ivZRHpjfaJ~w5yW?)qgIU-{ya}MdE+e_usPS|GO=c|Enx3)EL%(OZ)#?>i=ni z`p>_w|HpBmKmL#FTR1}f-4*KC+tq{0FfiJ+a*|@|UMpvL$j15$GtEXezG@l1JWESM z0Ot3kxIXM%bg9^~;^Mfn)QQ+W@37%0P|M%XQ8#9qX1ipV>m*xfR6cApRj#Mq zPOSmMF`8UH-#kOG?=vk>!q}{cml4fNkNeJu4<72Qr|9(F+IlW#!=K>m zc}4~#a3l*6O%Mi>{d3NA>+yyktr~t8RIPTIlaA!mJrgbmp?6_BqKRSmMc1b6C%^iW z4R|}{mi?{KfAvHQL20D&i%&BzNECv{x5~FBIPQ7Idu>92wi|m{CcTn=ns@$6)R~`h z3%+)GZ9@ImKGNpNsBXQTWAgaaUEb3yV3CJHGaZuDDo)t*%=S|CO=WAw$gJiq8&M2F zH%d32=9zLCh@zP5-N-a+bVKq=g7B}MwFM6usi^Qbz(;SPqp@?LA_wTp2deo_K~?^No>i&@I;qSIwZ?@ zDh?uugX;bYv$yQH2sqXzeY|03-eu`|M#zPe^ItPsJhnUzvT%{R8gX6{W~7@aAjttVORUBPuiO-64cPf=TJ&Z7t9MM zoDB!j5{v}l1Ht>*MRn|80%7>l&?{7ME@rcA1g$xG6SqHJa`%TQQPO-l^8`_R^<36| z96)aAW{S+MFCA17(r%>rA9InUA{4#HjrT_nU!XeBVR%4O49|g4lYqh*>EeLedYt7* za_D6B1!#-k8Q^PS!5*RV8%HDg*rs;BVD)tPM-ubdX4KV?c)i0Qzj%bcJ z6Gh-Z2^m#S!9r&Xg%)Jq6H+1B@g<`Fm;R5bV54K8IMhaQ^p=`E{bi$MK67651c?GP z#Kh*GP)kO%<(dg9-1q&6F}Hyr@ZpfIf6YJ35!lF2Iy*4TOUIp2khk3YYXpm?$p5Vd zvT5PhO0UyTjM8Yd`yEefZ5jpgPZw83x+hmI9d<#NLn=Zd)A;LcTSn286x13j%+MI*Zh4PJ^hj*e_{GDW&rfUb zB?~d4(N3bDFh}s*sb9AEvMQ%kGteVZ8k1TnI#z?eOd(L~vmXPwj0ze;P~6mkBc=1MNaU4++y1}$i!1QwF*w{ zs7oKCL?hY#gxAbe4*N$#-}hSQ)=a$)Qym(|h(_Y%#<-!Wf11VMAPec;=2j`JMNRoP z=!do-rkpdAdS2*`n7%x+qtP>>4MDjLt4FWU*gZ9uH|Iq#sb!i0kC6CJKv!?~3(azY z+mz@^(7V1%UKu0Kz*%r26`at)3(=>^7c=5_Vu{>zaO4zKG^-Uo&&uiB*kPfj_1)>s zCwB7K!4&vtBZgGao}a^)F$nei$6eK6qhZfZvA z54KO8M8gQZq9skS@d<$Xzol7vya z&HR*|{|SzK`6ZVL%ax{%N|F?OYWJ*(b2PF`Q_oZ%If84>f+nusXZI{tCapjiEgC5j znbIYFZ&bg}5s27}%`^vov1>j*8oqlus?`WG%ad_ z=|&A3!2s=@n*(+*Ce9i{E+;1iV-5}QD|VPrX0e@wWD9qkWUwKMJ4k@Cgcdp{VoQ_~ z4vJc*E7Wj8N|$1(`lj zY^QpOowCazC?VKa`XzRlb_r4lJ{OnE<`NE~1{_uhVws})OY4hV_LDRi$ic$NXXIsb z{#YsAG$`UII%Re<0_^}|%|f-2H}P~ik95$#+hA0Ko5NFVjRtiuS@EVX+A_p^lmjbF zh}fKzY+jg{3hfrFIM5iT7xs-81yV3CV)vI=y}DH~J za<#y}&@a=w*2W#uRxog#;rGx;ntZ-$712(Te4ZEEC@q!Nfad zaNQbfNwCJ8j+}JNOmBlJZ0jQ@+1)S`&|`ebA@*}6h!^3N$X%ijnYD?&_&Bq=& z_9Gq7m|1cU7W)WdOFMoUSHvQW+Ly6!Uk)V`Q%n$H2JV5~>@-zYL$41Ey`G<%R8SJ) z!o-USJY+Y+$BGUlql%rc3iHf+s5&roMU|rf%2|{r?nxg!9}sb5Xn-i*qvMv|&U?AM zWc*Sw!VicdL=%ijlT4?gN*WmixZ7+hx%~))akPZgQQ9)}uw{*c!qd$>sc;ilge(cU zv=4Ocf))`Hgpe*V=JmLKe5MhZsW`Bpg-MvH;+I^#h3H0H+|w}@ND=KY1kZqgxmsDA zN>z?;dEIbISt~m&-xswJLDO<)sKUn^)d;dFi)Vj?QBA z#Gu1S&5@*?G7QCa*)EwSWJ0x(|HKRJ#Bbmv8rxbJ?NX;6f%xGF$CBk}OMi=K#gml| z%X>dWvWiOnN_O5>&_vk>=+eQkNRQE_>w_;wsbU))(_HQ{1uPX%Vzzr zJ4u4BJt=3x#G50LcH%y-@O$jfO+-iDGD<_`k&Jfv4cH{Sqj+d2whJd4orrlCmRk_sP>?awsCy6>MMQKZRuZl?YLagF85&XXvJ6ZzQ zjL@I>a1KY%t=#^E=sH4@j~#Ij%6ZSRN29(mM3~M)XM1PA`tC!`g&0S4-i^06*D^fEaFlmempgkNnflT%ad@TMkyaDE3f?e8P0ppFlik~s zzAvIlo(gLhv;fT^hQ6%^Z8TF;Q;+Ltk%GFeFy7V{X`w8cA!gUkgGGv-#l!7AsnJ&3 zeJ%z0#?jwIQP-BN`J3vIcj48}I*Pha-@WFxu_!MHV|x5VZ(+A)8JJ{DSti2+1RlpBb}*N0vNS3{W1o5U;Lxe zBK~<)lQEU&sdfP6Px@t-buG)SFvMsMwm!lom8FQl+REa#+0y+^`7ee?;mh_M)EhQ3 zE#OE{@+b4N3h`gV$gO8|lMHV(=Y9`yU8uJTWsUsQ-?}V?d&4-nlyq{xUE~2`9hMdUM~f(1v)|J2CX0WRRj+oYMw8V^7;33SfCjYdm3idzc-U1Pf4 zBhkMH6d7^~3~RQM1JnV{Td$Dt5vC8JQj_^>cmi zMNVVMKIluB%r4=cA`DCFJ7f@ka%@Xa<`EjLu?Yz)TUQN<|64%ygos>H#){3( z=sxuR^i_08Jqd)|ZXF6|x#D3X-{nD9kSR37}sN}fJn44w7V8T*k zL+8RG<1c|`OstXnN0iAbSXezmFm(r%Me=HWa&5Q2vdQbxjvj-J8{quJM8`kjW$TZT zysinMGO=lGT(vtOYM67Ba**#}01fKrS98xhS3K@5B`g#%O{Vod@xTtiod~ea*?A(7m2vN)4?!cpXdW z6-(nQuvHL=S3Ax|z-v90YJH~Yt4J4^uPS(s<#8iii zW;^7xI3JvEt^kU}UQt3ut$>#d4g z^^-{O(K4Dr^9l*qhS}Dn!8RXgEu>_8qN`MZL^pymfy2QVRI8@+P*n|TWwM5s$UB|laRY?aL0Qg&@W9Hw=J zDch2V9R)1S5Inp&G}#xo@uvyn8JrrAt^p>m1HoQ8c&p8wcqvsQjEaYQhZh(n@I`L37d7axfoD1)okhfv-#317TnC#b z8V^%(U}`ESHgbb$L7ZI4&iqiW0en^u>~0~($6#LisvR-5!l3cWQ|DrdbEFarEDXfP zfcWcvTGts@vrq|(+WQ=vJTnJQ5b05i|A^|BZm2NO^qJfio}{!17BV!v96s`~R%2L^ zycMGinubSnF8_v6Sv~3BXH@8?H%d+gQrGLa5703aycW1GWG2~1Mhhm&P9GKV0&~Y< zYej+-z3F8)HBgPLSWz1=e(?=+7U&@G>*KdqEXQ(Y{McD#oJzdHE)Myur7#z7;44%D z+n`3a%?w)dUwc11iB@sa^y&A{p8)rH^|i1)&REe%QnJ!Y$E)oTK9|=0wKfhaadnqn z;)a>Ecgr2&QT@E0HqqyzARQ=exAaHixE}OL&LkvwI_!U)n#fLL6alLxF6w! z7U93#G^#0|^gQoKSliL(yr<@O(N@$Y6f9*Xs9q0FEZu}GBc&?G%Y9}VZlL@@3$%)U z=jObkZ?7OpKJWofC}QBqLE;bf7<1);Eu$uiI2R}VhID@8Cvy|DaA~ZQAqP>uMSb4`~0*#BHD165|HV}B~?qEVc-ntP!Cn4oVZTfuSBp-)@-svcakI2mmZ|A{(YHkdJ% zm8~$%707RpE3t8dU}oAfuw!*NvCw(A;Swd&aNtThEs1-09YN69DU4?~=TTfaUKzG* z8c$+E5KJKve!x{ysiibLn?*s4)jNG@bE}`aFg?R#smnKy#6>?Des9RSXnr>EnY6j2 zy+$X`mgCAnlzsr`V^LhY2W5OVX(>5A9SWRt?@UTvS0~=_5Av1K+Y$_S>-}X0yq!D` zw`V`?0=;jIJ6{ld{prR$@Moh!cpJQ?cei;{4nc>g*T=)I?^>w*(kb(}WzZhneL`t5 z-OrYh<{h*gL<@{sFmmc+vCk+`VgZFT(fg<}+nVzeJh6e>dTs zuT`BJ@evh3j3ve^TDF_bIyHTQa6i9Pq`WH|CWJ|PU3q%d$GG}SxB;fSJLuCCAPfC7 zXh$sJQzI-_GB2g@Tqs&XJ`?n6`?o+pK5A!xL-en||Dj8N3x-`lnzt0=Zh>WHl93B* zg2l(;N56W&vi&HrDdheWJ%Z|6(8YB2wi2*0%%cT%-7v^%)Q%q_hcQ{wptS@oJFLd)yr&q!;5~XGTSc{G; z@r(B!zb#e!n6}YzjzS5nuk-bwc|iFZDoZT-2*U4=ItvcM^UZff?Sqy6dp|EBU9i=g z9!80hS=~Pi!m@G>&@nGVOT}I>(%xizC4{F_!?O`{2KhH^q(kOH%v)$1K?Hz1DHzHIGqqoc-YCBJuHDw+nx8c|jC6 zZhOs~9t2+ubzQR~At2uaPJ<9MS)(IPWDilp=OJvOuKrFwc-N)7ov>bPI^Y*J8@6u5 zA>0w~P^MT_fFRIOjAqlZa(t)#E73#g-;MYxl7VKKdAk}uNpmesAb%qSYY~5LYc^*) zmyUau20F~{w$O8EXzN*PIR}xMD1~=9CB$A#S|`%ugfF(9fY2kW|9}rC*1cXJeIu87 z&j8C*#)7dqt$DYH7=zctP*BM*_Zy;`fh(toj6^9`j~{?M(DyTP;Z&0|QUN?Ko11AN z6t*4O0GdTo%1p-fvp2GZ&osm#{K-3Gs79oxWXc}EI>v<*u&g@!MNQR4n{A9z;G1rP zU!R(hItx}qN^FF48wBykE#>|?9X!+?Zndyl7B*E8XDajwa;o+bL+wZN+}eqh`^wJi zs9is4sHqmG<>-)O+9v zX%3h3Wj2!7I1J?~hwX?lbb+~0987zH{ZpkaTl)cW&o)T5zJzr;fm^*=4%6Kz_Kt)&h9`k&PZx*B11<@O@5{sB+?i!r}_v?;RV*>dgi=!I%@D%c+FQ zMs$=(kId26KxE{SmGYg_hD@_2yM1*~PnS`7xNwbt#m{s#a>Wl_bT^f-@e_x;jq4RzTSHHY60tS zuu^8kczho26}TBtiPYo6f{_ErfWt&%VWuyyZA`6AUs z%|zhqZuN?UD8XmibC1XxZ`)#WA+E@`E0Z+Mm+Rez1MBjzBxyM_!gGVXc*f1ieSI}! z-4HG=++fVQ8-<(NF2*Rd`0T1XN9=nHD{H}P55AKXzsw|4@Zxz8lVNpOZiA2|H0oei zl1d@u$>WqcrKUjjvLU>^gl_7K@m1`y3l$g34!s?y+ZRQ)9IfSS&-bTTu-&&nCTxbx zF0`yCqAX_|L)DJVApwgy2Uf&_0KccnbyoasWGm1j2{@8-s&+M8K+{QTc~X~Z^hX~t zt`$KrCgDX}lRy+JWqQ=8i)-pax0jDUhNe^10tJFA=~RGD=X2OF1N~%-qZ4-EqfyqP z@=JEg&&c)DwXaK2tNAM-?xY^&*JsOL^O@nuJ@nKj9(qS(>F+yPDU9@reoVXMD3O*< zjlxlAj)YQDxi$}TlG;MCCMQ8oK}^ybyN8|g1)ImizplX)lx+0*H^_G?5o>xlM{FUK zn69?-Nx<)H7EUkug1@17LL(E#BrJggMX)TE_&D-mov(vlsK>}}XoyTW3%;GUTlU%t zM{m?>tl$Nj77t`e754LV&dB9s5E9GE&#+!!>izI?lHr7+RoJAT?Yy|q@moMY+4bek zMgzO=UZM$)!E<9SQ*$;Wqg4nykXa;k1pXJ)TdY2b)#)@eTnjeg;ew5io6M8R7VgtD z6J{ecuK|t?i{Fk9G=PkIo)=Y)!;rrlVLT#C>a3>esaCO~GAOxIzK;qm_wxoz6FtH; zLwc*EgFp)Tqyuu&IC?G0?v#b^d1+p+HVs3N2bZJse5>Z2BpzU^q~=(IR3R;E=l0FR zuKdmSDqrP|rNy8_0N7Nzn4IA%cUX8$%xvtCy1TK-aQwD)Pu|SP{qZq7uk~Wkq3p9Q z41=6^Gm0C+4ptc;(w_V-DQ{^!uDG5c^7Z$b*=1U2UQw}%I;%ElCP&2Oqv z5C}x$@vh-`sr|=$=jHE$dIi17}_ea*1nJKbt2?h2GyTP3U5omt&F{DX;XF zj`1=*_Gfc2pY>)@l>BJz#_KW6i&(hWgYBhiJMziZIX4+Fee|(3G7duESF(ib6^f_y zX-FOVZX_V6G2s2O&3-`J6Y>i0bvc21i-;us!s&AyurATpc@%N@>uCY{q^9CyLsPRMJgzXHeqf|C;8WE5j+ zcVl?5s31%i%}QGVcQO%MW^ZntaDY0+Ad`8SbOm*__6Lu(72?GyvE6&y~@l=B#6175On;Q5-h2 zv>G~YF2T#)>zC{difR||VY%(`pwQHhZ4v$a^;6`Z=Q{b!vQf0Ug6Xgt0UciLD7QUe z4ZA~>FKc}BhFo012RCeg@2;#Q$jPz-w$dQluKf*F@0872z1)IKa^#=+HJ z&K2X+ctOwnJvnn#gLzW9{j~GF#8MZB&0Di(R>mGNh_#L%`-PO91}B+tAqbI;u=v68 z0gu|1KRDN&SL5<*9x1Q$9S*d$6=q>Rl5OcFZq?77PsThOO^BK4aT*4)8oieMlL5T* zBe|hg`vwu}$y+GPE8@`;*wP@7kPXigwCY%Z%b19HYQ{7_uaIL0m!L7gC%FSELeCleRv%&c9Y3|C zz8RHDnS|mn(T*9Oo=B~*?e9(Q`(2-@wb<7B!Akt2C`<)=-u^GeXHaBqX(QTU5PwNk zbDX|9Xs)IdG|G#LL}R$CdBhono=o5>+2PO)XZrdGF#Q$iJ_8=Gdq<6I=BNa4JMR6S?O1b8@^H)Lc z7s*%2`Z0lRk4(wjVIQU75&{ob1~XOtxu6NeeQSGr#H#e81WwP#%iV?y@QWh z5$9+I`-oDM3{|~&)wGo~Pj6k(Ny%0Gq4yn-$-!(lPYD6}DXFd!j#w(~$o@3>+FlId z$@mHxxhdkv53?xA`U0c4c(igq5Uu1r6oC(24H`1lGDy+PH&EN`8!m)#p#ede2TNYl zm^WSn*ZtW$?G%tyOxg&Kp+3829p>8uODTW5|3cYSODULKcqL8|KJ+m~iBfW{B#E=^ zhVzVN`!w+|+T5{mm>d8KbEnoI(48p|lcf4J&Nx9U&8p#$>0kc@Nb%~bSniCHcZ$|( zc5E)XS-i0)sY*U8pTz3T_A5XVo+`auh~p9 z0@qm!CL#)2w(UzUu}n6^RAc)S7ri(NQq@NeoKpRK%)h32H^g35L?LSEE&%riAKPw% zkiA*PJJ8$3`%N;Ehj+~z@2(HzAiA3eX!N)@?VmJQG9(#v5S2NbecI068@k^#;G*t1 z2U*Oy92nJ-Ts{0S{EMD#CjdJo{B(T#n3PDA(D=+cPgZ|*P_;kjvRIOlpc0G3zB_cN zsZm|{ne=IaEr29#@a#Cr0X;PX~H9{Rqno82j|R(Zq_9%&&)B>p62aIet7Tc z&}`8hj6KC`x=X})chU*FX1!|XWeun!UT4RCI=zb^aa~Kr<|F#_5JN6U>z(rY8oH9c z@ZqV`igY@jf>n5uWnrvAgH%Ppp$HlTL760ao?iugK%$d$BHvIjosneRj2a27e%gIY zxS77gq-yy71cHnY)ca6&hufb0Ge(mgTM+ongWsf1S4CGdzWNV+*)dhZvU&Qy zt*(n8zmX_T4+2!;JGP)gDr8YY&eXIz`56co6W&SX9;Gkn&Tdsu#gNNtwFu|77=Jx)` z7TK@s%XgisKd_R4DwP<*lsY!2pb3dh_lw?cg)lC6k6#RaFg%zTCJ9 z1B)-tc)OmTAFWt~HShS1#T=bzYTI)J?Vofz-hL-aP(rzkqAFYA>9(x3dT4(S(g8iST;<-QG%sn(F^YNjJZ!|9qc}I=S5eN?w z40YK)HennR;|9h}kPU%N02t3YnZbhA^wWN~DM?#z;9!(hZfgfoIltZA-RV_uq~h^v zQc@b4k$hzgC*weZphJ8EKkwVjoD|#zeNy`4trfBXAN#hxjUCB}A5ZJw)2-UN2p8}d zNYfyC?Qkn}FM0L{Z&CRLn4!7}qPl&jWA|G@N)0^77SK3hlBb5)_6s77r5+B(-z_b{svh)-Lg@|IEmGv6dpWh;%y+te>s; zzT6JA7xX6_Z$8?^cir6Kcs4vkJeB9ODdWOC8|<8iH+jCb<`@7=mHiV?8oRk{X8*vy zULt+N_f;sC`#q5yK~WzLtp@yB-F911)zC|*UaeQvZIq9O@dcTA``nja9m7m-lns~S z9Vz}UC#b~Po%^YMJ9p0Uxxv-^weVCx6*$OF`{vGFEi|&G0;dp7>MdeD7a*>;mxp8% zXJw@s*GlQO@Ixm45lSQA2h6(D@k?)DW%tX?V)U#XPw|Ba;WV1N^m2D@5sUar_Ke5L9X}w z#fIgbuMhuiV<)c#8Rm8$A>Yjx6r6}ky1lm%>6^k7A+sjDx!+?g z-)CqT+gW0sjDLon9-;A^2~XtuwSs$(ZfL0P3Hc(B#V)4N0%+hi?2qB`^sQ<7vHT^~ zi*$^{ce^ff!>)PN-Z_OA%*90$8rDYDBO7h1pBv!g5!Iy;Fx^jZS^3zgoS?i)HWa4} zjpgw053Db^^BK7q7lPgYFe8IhNR&+gH!f-vJpAqLS64&TvQv|TF#a`zSrZ4BrvR(j z8|&qi^SPT+K4FLEFS_|qjEZFv=cBr>@^5DzZ^sHXffGC95Kg{`9S{>JS2r~+r&a^j zV}Yk4pSU31Dza`Vi|ORf-Sdov^pNaCyI~9t2Lb1(E?BB!j`ZbLtX7rRtpe?%izZ}* z>KQ>JrW{a+sa>s^s;O?%r?013LoouW6cq4lG3?l#BcFi&!xT~z-I;?%CB0_cz$jW# z8gkK)In&HjCFg8*fx%!qpj?kkfl-?>(k^>VGC_}&#R(@StRxGQgUDJY zQ0T205G}UOLJzQFdjiuT#IXY^A+Qw^USDXI(ao2^XF{MCh8~~^CvAOGs#-U1Xh(SdZzpr2C-&TMnz5xao`Tp*&`C75wNK zbUr~&nXgTyCH~5-Zs~g;R|2uYy=hUqTocgidkQ>ReU0$r5jIsKYtC?|NrJ|K2Xm!R zLLf_HW7BTR#PJA)EquF`cXLs*6_l#jC5l$M-{t}3F&;d+b&>}LSTPE(>F^XgjaS=h z?9Z6ET*$s(1H6c|$0ywUSG3)9L0(%Gnt36ZG$%(XB&{RkAOy=)Kpxq_Dm>r}XRv+l>8B}i8jME77qNR~}6KX{HqiL@S8A2UQ;G>%M<^40bUNogQxtirvnCijd5C`49x_W9KNeR)J zrlGuqZ2s2|4o3@L&%cdS&@ygAs-$mkF-(WPBe;1yY?WZ>B_*Xq2G_7eb1G{unN2nS zG}MS5vGFFbvHL{Cg+wmDs!-cQ*+KG+^uT#KXC7KfmMLwa%<>NRI)_e0v&(0s$0){V z&PdU+iBB&x>zIx6<-(Nf{-SC;s7<{qtnY>htoNmIepPl4PxJi!_G7fHdMWy$zz3h) z!9f(RfXo!%1QTE4$|n9UBh|#CkBUXmiXGLXm##I!za1)e${^X`%Ho7%cTe9LA#dRV8TEk1;L~;?3i9-522GT0{_YOC-IsOOjVrC zg#Lr&<1PpLpLs8w_lAei%&;~?$1MH!lg(VtWBMC=o=(Oje(hd;cDYbi3Z8TPDh|0I zEFuVw-$6UfLk>Erz62~A5GjPF=ko}l72Z$xZwaje~lEWibG}@m>K^G=VvRYSG(3P zyP;3+{)XjPngF1U$oF9b`I00!t11ks^bdncc==<0) zB1VP%nuS^cmw8ptfHOtdO@561Ut=!rg7>@<`-hfebqH5lor6k@0 z_vI_EzX_Y@qvNe^gGEbMOKGitOG|%C0S(87`q#YQWBGVymb5RF3Vp~;x6a7A;_D7L z;CSzLYkVjpVB>2Kp6wgBAz@$&@P~y2Z&`o?5S?DmPpJd=*m-S6xvtBwq)7Sbmc89S zt%hDyqBMo^_PJsVy84E~PUINYQK|kMGHgBDqc4nO=U6;&eu^E-NMHPp>>O-u>h2S~ z0`U7QbGS7sz=E2SL2yyOUA%j^J-EawY2Lp>q1zvRpbtwqWbMOeJe%B3yhW`QxixQe4doiPnUdp^1 zpgzr&AOs&y-~Fl0A#N)swC4=}flhV5hco)9rmSDWJ%$>z&^Qmptu>sVWaX9D-zJ7( zsc(ZXHSF;8kTTA}BCbr974h-Xpd(C>tF~>t^v+HAPu0HHMJ;$YQ{t!OB+IOQU%3ou z0N+R$q1qpI?_hD}?)KQmyPg7CIQzDMTN%#xD7O7FszjXlihc2GNAHjvqo+Rvnn?pk zIbMIT6JAeqYjN9kM0W)EP~>+WayWdWNlN8KW)Zr=CTs9|=fUk>4CsN~LT8NpcLqtc zO~NoQ)chDvfKq|Rg3v?f;20#2#KF&KHuec2xR+IOH_@}<^!aWNeU4|Ix604ZgcUREtnVA0TpKB71N8Vq&Y*}C zD*6C1{Slz>ArT8{LFkwgWelG%1VeVY6~)cE^T+_BOPebEGcB}c z7G0ay{eGB|lM-Xy|HDKj(u$8)xJfOo{*;(NwHadQpq@kP{CFFxH2qx;U|V7 zpJGqudmA-5MdIRe9bich{TkTj?oV##GPbW)S%!qbc`@EVA;D!PfH-Gv}T9<$tAgXhkgG&K~KliGlF) zE+vP&)PwBnfE$}zv?!%<9KiFbiEa3zMo0fQ8fUcs|v-a?{1 zV}o<#a)YVs*LqX@=Rcf-Z|s&5ntU5;>QODD9UH1Dm4ccPX6?BZJcjfSWX(j=h*^V~ z&lbOiGe{z72`7Gg8)YZlC}{_oWq?w1xZdRlh+ugN6$FoU`cQ@M4VtNW&qFgDZQmJ( zbulPvy^~}|VAoX=ensu8CA2a1p*OwL)}EGkSngUzWH+5I9;naza#9#MUD>P<}JPG*N4s7s@yF9`p6M2XLqA{~@R$76u3s0UtI-LnfTQ`=uAtYr1dHItkK`hAz{Ms4*sG2wLG{ z(oze%ZqPC1=2bLpy&sA!Uh#N&I%f9rP$S-IoO>lsU224m%O;CA3UMoRq9XV~|KssF zZrF5@E?O!g2FeuWN^VNwcAFh`q-^gBxJ}ZAJ|&dRqBp|XtUGbJR4wbg%FfptJ;001 zK;N2ZUg*~9yc@3k&UvtQ1BT(pY>wr(bP1L-qrxAh2LWNrwspUEU5e^{U}WhCBsN&W zcaz%pbvzi+!@sBbx|5fUnlyZ$Oj6iPvQ-bKOk>>iF^PgKv3D8Sb#K8ij1K@HkVCzS zqE@z7(`Cr_-&fo-H;3g^yWFrN_7bVoNBV*-{d=)bSMYJTWz<&*#!pC8o_ux1XNX@NT<|90I` z=$?|oJ_+!ied+xpHa{;p{}a*&QLae|#tSpK?8s;_1~Yp9zNMp|M9+w5I0S{PNuO5z zpg6jLW0;&~A1yp4dZOM|$>p1bh|9|`&Ng^Z`N{}y{fORisbmV85^=EP=~yk*$lC9^ z2Qp<-TWp2=V*QlE&;A?|nF`%$Q|laL6ypZjX!4d*mrtnMW&uw&cE( zXBrRFU;r2{uX-AH34@{lkSdC$h?OuN?v;Q%Xo2r_eAiNU9_oGsIfqTg)xax&-?w(% zfPl>R{4--WyBl>hi>S`Rhr#Bir+TYFIv;H($ecweOAxZOKA~|%3i))XkMx^^hAkpc zU4B8)uH`K^ewDfDs78n74=igxnhhPn-9iViiVWw}GlZh|l_LH1d|&+;P$W`$JdDp( ztV6pFXVkH5y=QOzJs7vX6eeKa-5{Z-h>*WhV-i?4jE3zEARrt?1h%@M<@??-zdt;f z!)SqZp?H0N(3|vTjIVZszH!R_v{nA$Y0ncH&}u3 z{ys`Km|`B0Cm3PLvc*hqQi-{M&#Yh52mV~k2I%XH^8b`@-_dYAZ5+TO(Ypvju+bB3 z_1+00YV=N!5Z%hEi|C?7@0}3cM(-uDx&*OS?{yKq^IpIA?|aVd%-uQn%z5Vfd_?j+ zJSn!P>e?R&OPp4gtH?gz^ZZB$pC6|8vt0?0t3VXDhzG2TC1oQXI>Hrh3=~Z*K4_jf z&2h7FQWB`Jv&YqQ;RqJ3m7<6dX*dWt)q|T%!~XNZ9OPoT)%sHR3ULwz`_trDH;#i& z`Kq$S=2TuZj^vY^by6IvMwi=K4l^5=?Z{jAbqyt5!t}QHEr0P-W+E=XQCeHCKL=Nl z;$rJg&nmAB^~{I;UbRC93(kK&L^}PNz)UIE>2h)RzDfObaF>C( zfM-pnXSA$}>Nt2mFC9C~XTl!tcHsMd=-}sD?FYfu>o{aRghNZpqs|*^V8VA2v{o6k zB+_a_5NDX8Ua5sLck7XtJGvC)?@EvF;}SlGtbj{SXC#Rz8TyLlV|l+Aq1BkL8Ql6A zbIrJmvAC`wl((?2@B01-ldkwDxf_(dz9S_FBym|^uGghGd%7R{@1V>$K=k_xc%QV&rgXziWxT;%LR$2a|`m}?1!)-%96{_Uy_2`&2xDPsNygl`|8d1oG2Pas@e*1#4Q2 z_2kj+Ez*OoN&l>&V4gCmrWyu#wTQLC1O9@NsKFl%1?~Ap6zR+?3dubFr>0?*UF9ce z&wmY7jPs6&-IS`YN!$vwv2Ark9&<O=KH##5%x|NOD<{%+4ogS*13)I6_xgZo4KKfKr z)78|}qFztY+m`y?9`AcC5?5uam3?TZdwM{3*LDU&tiJw#(3bAdLzrsZR+2DxXasV<-CzwrOyIU8?zB7HrRnHIEniB0pQ z`6A-r56h5GH+jahmw$?G7L(a5^XIxeMy2GQ$lw}hUwE=r-W+r&*P?UQ&y=`WZveX4)K2jq! zHv@K~aZ7a9v(Op6@upE8x2L+-2Q>hJq5@W5P;D?sjZfAZ{wl76yVkvDYjluE#`2!^ zXCn9!t$^Bv=I1q0Y^7xY7kn`{!SY^EWrgVqwNTLQwcYv6&G}XlB7zauvd4UWI`mm1 zf5FUy>?5-xtyqn#tAI&tmfy5F*;DWXKOjQ9K_+bmeD2a}T@*d4^z9#|XJ4w0 z{N4(mcj3<&!9FD*K``3>OI_{VaWOP6!2h~rDbz15#5f}nTIOpU_Mza3sLsM0u z_gD5n`^3_7y867<($HYhXGycz6NL>Jy5`JhzPR)3u2Ig4eDttYE`eJ2rC&ba6jw6V z%rgHYKE1mgc?&&u(YKUj8{kd%A*azalIj!aj-A)a0fd3^5tffR<51y6_d&uzRA@eV|zxdn5vd3M70sx01hah z^|f{w{ajTSZB}cn`|t}7$sJufqO=x+KY64(Bi5H(X()|(g)!=xXwq=wzi)TB5-lbX z5Y?!1WE@`ZVF?OjZPtz$<}&N;usqHNmw{-si@{gp@c9vGO%mdv^J@5SRDfH)pl<^- zhu9S@pa=K`o?$Uqwo3*Ha|Sn^x{c_2p_)*C` zxmy*WBl^&F$S^y%jUn&^g80zd|Loq9eaa zd({gsUV1waN|_}@ls5}yLY5h)hFPhfSx&g0V!8Y>9bEzYd!?KXx%R%4N#n_j(Uqh7 zSN2h%Qf4*YRYk|_0*_UScRQ!F$3pc$dlj*r zvWV67e3}W?~YOhm&2&LWiAmE-)7wPpE5!-Cwv)(qj)aswz(f{hBJKYX0{f zgZA`yY4KST#48F-x2v>CFVN#;xR%|0p8_}@qI)p})_KWH-ypF|gq8Vb{ttn`r+0s` z5Q`Bl+`rr_Pag-vH2;o;?Cis^_FL=J=+HF#iC+~WgxnBKwGeAfZS%i>g)^2k%;A5Q=`~$zMPqor;;BW{yc{DgYhv90pSp9r> zG#P!tw4SQA&gb75oAruiDm^WFIC_F)3g5YV1AmN zKIwFQOyay$lp<92UI{H4iKO)#p+w{x=GN6pjQ-~T+;m*EmV>LWeXwr=<5jD%1k zJ;~hN%F*?Ewl7ztlN*JII>*aGowc7Eq8yFFe& zNo!%wlQ?CBgHmyMPEwU zAOoK_?Y7mr^7trRF`L=>0zQ+|BVJYf$aPgvLw!n;Dp)zN410gR%xUF#0lkwUVj48Q z_tqLX$Icm?rSHsqmLV<9tbcL_+b1kH5PQ?hitp)c&%1Yhb=7yyY+hHICEy-Y9HoXi zMwq0xLHAvTf0oTVGRiWzn_iIW$=`ZAf(y8=((;JCdM_Dps;r5S5n9z*?)sav$Tbbz zk$?J_?|u7xG=ed0rN4e}2c(wTuwa$^v2UP{JJ~f#CbXO0*FnpH^H7Lt$$5V*x2A{y z@`0HtDR%a8clJ=X(d^-dVB^J-uvVgWp2Yi?nqROhS&V;lfJMFn^Z31>1Z|G`fJq?e zW7Jv_bkk>$5{6h9mh*y%udBWJX>EwM>}Nx*oo^NFF9OXJpG~-hmacxHsNa60Bbrq_ zJ^$RkDZ>yW*>sN)AYTNuZD&g*r7IEKZvRMLxuSyMaiomK)!;pvbmHo@s`|EcLgE&n z4(4IOa8ahPc;ZThy6L&-j>8pzFrfpK=<>qeLzp{4rF3Q<44mkf`-&JWHQ}Qk>?G=Pp~G z4xH=YoM`(|lbEvpb@ikfiEQirQUt#}q&mHvyNaedRp)6BRoI7xHidnXPRgk zetv*sfo4bfJmH=2X|9Vj5d*#Z@NF?ZfpTeJoEU+{K@ya za+@`grog<&^i;sxWaH920cYbX{|*u22ffLR0`VJ!Qcmo@3YG^M2mUCF>R=4;7npy+ zVf#(!p?!%3pfHq8Y+Bp84QC}ddU)KN#(a-9=sO;4#SGJv+ zxCGD!edn<40N7jFu$SLNkNP^ABx}gu6h~_FMT?%ZUBdW35Bl4KTXl8 zv#@uS9O&ntH=D;4@OUX(pL!xxC3FxU-M^oQuRh)D{4%;qhNLD6onoERCn@;6+}PJG z7@UhKE|M$ZR7}D9nqE}}YIQrIFqD%SV8^@+`NnJ^8;^{iovi+Zt%9U3kQw3K$-ov0)|&V1reR?nt}L-nq#cQ2S2>f+lh}~iwf{n#owfJ zez=BZMUZVWG;Te{`5pV!htrmEmxSGl%o^jv{>(?M5E>`}XSxhWTnv+}hiLh9&KxlT zT8JQ1h#&SnqLv?RWUpA$Ol}FSBb6`eumMDbZsn5Q5e~0CbOYG%hWCovwED_AtPtJI1 zdd+cWI&}H1d6C@AXx^>dgi^dqTtuKRcoie=zA6pnAh!L%#iO`B#aQf)duQY~k@76R z2|<{huecXduE4l*sof-ZjZ=l9PdX$LKMS;5aQjQ(TVERd!H_7jAAvPvhY&5L5A_#E9C?`nh8**e62Nv@BvkSux6{d?!9Mjj z-teT$2YUU!k1;I?OU49kiYj?6-xMawA5dCHv}47^W5|*!_T*MFydh;^m{2a&-wniH zhLmp_rr84;RltW&yN$-k`0(eCpW#3G3d=&9zy;Dg0-vM91WY;FEA5pO$olEbC%@7u zK_3~m4av)rp5~e%Ls#4@!j<#$Sg1f|K2K2~8+H7^T>CD|W+4TEKV$qgLFo4-%tuHY zKm0%jFH>Yd#wWFK&-{w-j@+nMnvQA^>vrHl-yh`lt7dEkqCeB0t_9(1n#Iu#gVz+n zC55KuD}yJ3pic@{HKZi6MUxT?5JS@ZFKowkH<|+Gg=8bU-d>rqMQeok+LQ(Y}xPU@I3*-$ptBB zC_DtW;730ugNm1yxqZWqy#|nCrhKJYe5C^9m7e;9P6wD(RtW;hB^@C3bAx9XL>Ts* z_6gCY(U;Bpe%B>LPTpI;TTXcfTzDv;mBk9(%;jYKXyxi*!0lOfgbiOSn9Bn<3ys~o zMEY^2%Jtfz@}#E&>aghYz}h>C&%_wco7r8Xq_Q|#_}wDoMO6`NmoxyCDX%Dv+Rt+n z0i`UF5{|4~8lAVb3jr~%>fB_sB0R}@AAkd~S75Ncg_0^jcNF79DL}C&c=v7YDLn0O zqbK~wP2g}DCCpJdUFA7>N`T+XkII#5pxTC*-g9~nt7x@W zhiN3j!(}baB2EL$<*D@iHDFV$s2JR$%F;my~~(Jng{1ynr(91Ll# z4V_}+{$}8TRySmW>e3{BhyhR!38|T{q)QBz7Jvt2haRv!iNaBq{}9HHeU)tDWN-hn z(59Z9G`Y1&dEASb52tYdQY{(5AKzn+iJOoWLfAd#D2MB*ve0~+KE%;u>DhW|BBGk} z3|JKDyGG&tsy<42?<1PD4=1AkIFw1;$ZQ$VFT%v;0$XDGwdRe5MamG6A*8EYDz*X$l_q!sfY8<*!+&Zecb4Wayum)R1i-j7 z8{c08ANz0si`D8>he!60unfj6g^Rcy`*_s&fw6!e#W$3%r!B3sE+bT$8ZTWaTf1xn zY(1<;ofRyip%-k_U#izME+ymdcXS|z9dk%lzpJw_!Bhr{ zW!O%r)YpgH@4~v2yfVw47`h2<+?^#Q!4IwM3F^|r64Jnmnh)O(M?j10iGj1q3i9qaPU z;NG&hVl@R7a2)dj?Vf;@x`<`E_qX50S0zh|6(L7oeJ_QEFOe6BhMh4`<2w>k z%B!1E0aN73r)!x>Z-3Xhzuyu+4{%X(a74joIz6&#i>#^benV^tB+My81sGelt^r`y zX`<@&{lFy*4YdeB z`<(<|CFqV=eKySu@G+z6d~NsI>OqC@5k*YS-2BisAQ$EwEv5{ k<+^65`#d>g;2pU00k&`(N>hQ}@E-Jj{YqV-QqCgqe>C@%9smFU literal 0 HcmV?d00001 diff --git a/0.0.12/html/index.html b/0.0.12/html/index.html new file mode 100644 index 0000000..d8dd476 --- /dev/null +++ b/0.0.12/html/index.html @@ -0,0 +1,1450 @@ + + + + + + + Guidelines for Teaching C++ + + + + + + + + + + + + + + + + + + + + + Guidelines for Teaching C++ + + + + + + + +
      + +
      + +
      + +
      + +
      +

      Guidelines for Teaching C++

      + +

      Version 0.0.12

      + +

      SG20 (ISO C++ Study Group on Education)

      +
      +
      + +
      +
      +
      + +
      +
      + +
      +

      1 Obtaining This Document: The Most Recent Version and Alternate Formats

      +

      The most recent version of this document is available as an online HTML document at: https://cplusplus.github.io/SG20/latest/.

      +

      The version of the document that you are currently reading is available in the following formats:

      +
        +
      1. online (HTML) format as a single large HTML document: https://cplusplus.github.io/SG20/0.0.12/html

      2. +
      3. EPUB format: https://cplusplus.github.io/SG20/0.0.12/guidelines.epub

      4. +
      5. online (HTML) format, split across multiple HTML documents: https://cplusplus.github.io/SG20/0.0.12/html_split/ [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

      6. +
      +

      Older versions of this document are also available. In general version ver is available at https://cplusplus.github.io/SG20/ver/html. For example, version 0.1.0 (assuming that this version exists) would be available at https://cplusplus.github.io/SG20/0.1.0/html.

      +

      2 Disclaimer

      +

      This document is intended as a proof of concept to solicit feedback from others. This document is incomplete. This document likely has at least a few errors.

      +

      3 Context and Aim of This Guide

      +

      This document is intended to serve as a resource for instructors to assist in the preparation of courses on C++ in a variety of settings, including university, college, and industry environments. The main objectives of this document are as follows:

      +
        +
      • to provide guidelines for content to be covered by courses of various difficulty levels on C++ (e.g., topics and learning outcomes)
      • +
      • to note some common misunderstandings and problematic points that may be encountered when teaching particular topics
      • +
      • to suggest resources useful for teaching C++
      • +
      • to present examples of curriculum for specific courses
      • +
      +

      This document does not itself provide a curriculum for a single specific course, but is rather a set of guidelines that can be used to prepare curricula for a wide variety of courses that differ in focus and level of sophistication. (This said, however, some links to other documents with examples of curricula for specific courses may be included herein.) This document only intends to target the teaching of the most recently ratified version of the C++ standard. (This said, however, since older versions of this document are also available, these older versions may be of some use to those who need guidance in older versions of the standard, at least versions that do not predate C++20.)

      +

      4 Use of This Document

      +

      [NOTE: This document follows the same license model as the C++ Core Guidelines. The LICENSE document is taken verbatim from the C++ Core Guidelines.] This document is made available under a MIT-style license. In simple terms, this license permits copying, use, modification, and creation of derivative works. A copy of the license is included in the section LICENSE.

      +

      5 Contributing to This Document

      +

      Contributions to this document are welcome. If you would like to help with this project as a contributor, please read the section How to Contribute.

      +

      6 Organization of This Document

      +

      The various concepts (i.e., ideas) to potentially be covered are partitioned into modules. A module is very broad in scope and consists of numerous topics. [Note: Can I suggest that we use the term “area” or “unit” instead of “module”? I think that these other choices are better and also avoid any potential confusion over what is meant by “module” (i.e., C++ term versus plain English term).]

      +

      For each module, topics related to the module are identified. Then, for each topic, learning outcomes are specified. In order to address a wide variety of courses on C++, each topic is addressed at three proficiency levels. These proficiency levels allow each topic to be covered at more than one level of detail. This allows target audiences with different background and learning objectives to be accommodated. The three proficiency levels are as follows:

      +
        +
      • foundational. This level gives the learner the idea that a facility exists, what benefits it offers, and the basic ways of using it. [Note: Isn’t this just “novice”/“beginner”?]

      • +
      • main. This level shows mainstream uses and techniques. For abstraction and organizational mechanisms it also demonstrates how to build them. This level should also give the learner a basic (but not detailed) understanding of how a facility might be implemented so that the learner can have a first-order understanding of any costs involved. [Note: The term “main” is not very descriptive/helpful. Could I suggest using “intermediate”?]

      • +
      • advanced. This level gives information suitable for an expert. For most topics there is an expert level of knowledge that most programmers rarely need and techniques that require detailed understanding of language rules or library implementation.

      • +
      +

      The remainder of this document is organized as follows. The various topics are listed grouped by module. In cases where a topic might be classified into more than one module, the topic is listed under the module of most direct relevance. This is done in order to avoid duplication of content. (In the case that a topic is equally relevant to multiple modules, the decision of which to select is made by a proverbial coin toss.) The order in which modules and topics are presented is not meant to imply any order of coverage in a course. The order in which items are listed is essentially arbitrary.

      +

      7 Summary of Modules and Topics

      +

      In the sections that follow, the various modules and topics are presented. There is one section per module. For each module, a table listing the various topics in that module is provided. The ID for a topic is linked to the detailed coverage of that topic that comes later in the document. If a topic has any learning outcomes at a given proficiency level, this is indicated by a checkmark (“✔️”). If a topic has no learning outcomes (simply because there are not any, not because the information is missing), this is indicated by an em dash (“—”). In the case that the information for a topic is completely missing, a question mark (“?”) symbol is used.

      +

      [NOTE: These topics are taken mostly from the SG20 GitHub repository. They are not intended to be complete in any sense. In fact, by gathering together all topics in one place where they are easily viewed, it is hoped that missing and unbalanced items will be more obvious.]

      +

      7.1 Compilation Model

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Translation Units???
      [?]Headers???
      [?]Modules???
      [?]Name Mangling???
      [?]Phases of Translation???
      [?]Separate Compilation???
      [?]Linkage???
      +

      7.2 Preprocessor

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Preprocessor Metaprogramming???
      [?]Inclusion???
      [?]Macros???
      +

      7.3 Basics Types, Objects, Values, Expressions, Statements, and Control-Flow Constructs

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Constant Objects???
      [?]Declarations and Definitions???
      [?]Selection Constructs (e.g., if, ternary)???
      [?]Looping Constructs (e.g., for, while, etc.)???
      +

      7.4 Functions

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Calling Functions???
      [?]Parameter Passing (e.g., Passing By Value and Reference)???
      [func-args]Default Arguments✔️
      [?]Returning Multiple Values???
      [?]Overloading???
      [udl]User-Defined Literals✔️✔️
      +

      7.5 User-Defined Types (Classes)

      + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Special Member Functions???
      [?]Types???
      [?]Conversions???
      [?]Constructors and Destructors???
      [?]Move/Copy Constructors and Assignment Operators???
      [?]Member Functions???
      [?]Sum Types???
      [?]User-Defined Literals???
      [?]Special Member Functions???
      [?]Guidelines for Special Member Functions (e.g., Rule of Five, Rule of Zero)???
      [copy]Copy Semantics✔️✔️
      [?]Moving and Copying???
      [?]Lambdas???
      +

      7.6 Inheritance and Class Hierarchies

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Virtual Functions???
      [?]Run-Time Type Information???
      +

      7.7 Compile-Time Computation

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Constant Expressions and Constant Evaluation???
      [static-assert]static_assert✔️✔️
      +

      7.8 Generic Programming (Templates)

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Concepts???
      [?]SFINAE???
      [?]Template Metaprogramming???
      [?]Function Templates???
      [?]Requires Clauses???
      [req-expr]Requires Expressions✔️✔️
      +

      7.9 Error Handling

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Classes of Errors???
      [?]errno???
      [?]Error Codes???
      [?]Exception Handling???
      +

      7.10 Standard Library

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Input/Output (I/O)???
      [?]Containers, Iterators, and Algorithms???
      +

      7.11 External (i.e., Non Standard) Libraries

      + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Graphical User Interfaces???
      +

      7.12 Building

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Software Build Tools???
      [?]Strategies for Handling Build Problems???
      +

      7.13 Testing and Debugging

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Source-Level Debuggers???
      [?]Code Sanitizers???
      [?]Test Frameworks???
      [?]Debugging Strategies???
      +

      7.14 Tooling

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Compiler Toolchains???
      [?]IDEs???
      +

      7.15 Software Design

      + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Design by Contract???
      +

      8 Detailed Information for Modules and Topics

      +

      8.1 C++ object model: copy semantics

      +

      Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

      +

      8.1.1 Overview

      +

      Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

      + ++++ + + + + + + + + + + + + + + + + + + + + +
      LevelObjectives
      Foundationalunderstanding how and when are copies made
      Mainimplementing user-defined copy operations
      Advancedspecial cases: copy elision
      +

      8.1.2 Motivation

      +

      Why is this important? Why do we want to learn/teach this topic?

      +

      Copy semantics allows the user to define how objects of a class get replicated and interact on a value level.

      +

      8.1.3 Topic introduction

      +

      Very brief introduction to the topic.

      +

      Explains when and how objects are copied.

      +

      8.1.4 Foundational: How and when are copies made

      +

      8.1.4.1 Background/Required Knowledge

      +

      A student is able to: * explain what a C++ type is? [C++ object model: types] * explain what an object is? [C++ object model: objects], [C++ object model: constant objects] * define and understand class invariants?

      +

      It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain special member functions [C++ object model: special member functions]

      +

      8.1.4.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      +

      A student should be able to:

      +
        +
      1. explain what copy semantics accomplish
      2. +
      +
        +
      • establishing “equivalent” object state in another object
      • +
      +
        +
      1. explain difference between copying a reference and copying a value*
      2. +
      3. explain where copies are made
      4. +
      +

      * In other languages these differences are sometimes referred to as shallow and deep copy.

      +

      8.1.4.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      +
        +
      • Compiler-provided copy operations may result in ownership problems (e.g., char*). These ownership problems can generally be solved by using types whose copy operations have the appropriate semantics, e.g., std::string instead of char* to hold string values.
      • +
      +

      8.1.4.4 Points to cover

      +

      This section lists important details for each point.

      +
        +
      • Principle of copying +
          +
        • Copying of types, which follow the rule of zero
        • +
        • Copying of types, with user defined copy operations
        • +
        • Copying an object does not change the original
        • +
      • +
      • Practical applications +
          +
        • std::unique_ptr (has no copy)
        • +
        • Strings (copies the value)
        • +
      • +
      +

      8.1.5 Main: Implementing user-defined copy operations

      +

      8.1.5.1 Background/Required Knowledge

      +

      A student is able to: * identify special member functions [C++ object model: special member functions]

      +

      It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain the rule of zero [C++ object model: rule-of-zero] * explain the rule of five [C++ object model: rule-of-five]

      +

      8.1.5.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      +

      A student should be able to: * explain when they have to implement the copy operations for their own type * Copy constructor * Copy assignment operator * implement copy operations for their own types * Optional: explain when copying with basic and strong exception guarantees is useful

      +

      8.1.5.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      +
        +
      • Intricacies when implementing copy operations: +
          +
        • Examples of how not to write copy operations (e.g., C++03 std::auto_ptr)
        • +
      • +
      +

      8.1.5.4 Points to cover

      +

      This section lists important details for each point.

      +
        +
      • Copy constructors and copy assignment operators +
          +
        • How compiler generates default copy operations
        • +
        • =default, =delete (No copy)
        • +
        • How-to write your own copy operations
        • +
        • Rule-of-five
        • +
        • Copy assignment operators can be ref-qualified to avoid assigning into temporary objects.
        • +
      • +
      +

      8.1.6 Advanced

      +

      These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

      +

      When can copies be elided and when does the standard guarantee copy elision. References: * Abseil tip of the Week #166 * cppreference - Copy elision

      +

      8.2 Module name: Requires Expressions

      +

      Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

      +

      8.2.1 Overview

      +

      Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

      + ++++ + + + + + + + + + + + + + + + + + + + + +
      LevelObjectives
      FoundationalDefine and use requires-expressions to check satisfaction of expressions by given parameters
      MainDefine and use requires-expressions to check properties of expressions
      Advanced
      +

      8.2.2 Motivation

      +

      Why is this important? Why do we want to learn/teach this topic?

      +

      Requires-expressions allow a developer to perform compile-time evaluation on the validity of other expressions. These are fundamental to the ability to write concepts. [Compile-time programming: concepts]

      +

      8.3 Topic introduction

      +

      Very brief introduction to the topic.

      +

      Requires-expressions are compile-time predicates which evaluate to true when their specified set of expressions are all valid for a given set of inputs.

      +

      8.3.1 Foundational: Writing requires-expressions

      +

      8.3.1.1 Background/Required Knowledge

      +

      A student is able to:

      + +

      It is helpful if:

      +
        +
      • The student is aware that attempting to specialize the template with types or values which do not match otherwise unstated assumptions will cause errors within the template.
      • +
      +

      8.3.1.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      +

      A student should be able to:

      +
        +
      1. Write a simple-requirement to assert the validity of an expression
      2. +
      3. Write a type-requirement to check the existence of a type by its identifier
      4. +
      5. Write a compound-requirement to test the resulting type of an expression
      6. +
      7. Write a nested-requirement to test the constexpr value of an operation, as opposed to just the syntactic validity
      8. +
      9. Use a requires-expression within a concept, requires-clause, or if constexpr condition
      10. +
      +

      8.3.1.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      +

      To require that expressions, which evaluate to a boolean value like sizeof(t) == 4, evaluate to true a nested-requirement is needed (e.g., requires sizeof(t) == 4;). Omitting the requires results in a simple-requirement, which is satisfied based purely on syntactic validity, not on the result of the operation.

      +

      8.3.1.4 Points to cover

      +

      This section lists important details for each point.

      +
        +
      • All requires-expression requirements terminate with a semicolon.
      • +
      • simple-requirements are used to check that an expression is well-formed.
      • +
      • nested-requirements are introduced with requires and primarily used to check the result of an expression computable by the compiler, including concepts or other requires-expressions.
      • +
      • type-requirements are introduced with typename and used to verify the existence of a type with a particular identifier.
      • +
      • compound-requirements are enclosed in braces and can be used to check the resulting type of an expression.
      • +
      • Checks are performed by the compiler, not at run time.
      • +
      • If covering usage of requires-expression with requires-clause, [Compile-time programming: requires clause] demonstrate requires requires and show how to ever avoid writing it by using a concept. [Compile-time programming: concepts]
      • +
      +

      8.3.2 Main: Advanced requirements

      +

      8.3.2.1 Background/Required Knowledge

      +
        +
      • All of the above.
      • +
      • Knowledge of noexcept
      • +
      +

      A student is able to:

      + +

      8.3.2.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      +

      A student should be able to:

      +
        +
      1. Write compound-requirements which test the noexceptness of an expression.
      2. +
      3. Use a concept as the target of a compound-requirement.
      4. +
      +

      8.3.2.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      +

      8.3.2.4 Points to cover

      +

      This section lists important details for each point.

      +
        +
      • Compound-requirements allow the optional ability to test whether an expression is marked as noexcept, by using a trailing noexcept keyword.
      • +
      + +
        +
      • If the return-type-requirement of a compound-requirement is a concept, that concept is given the resulting type as the first parameter, followed by the specified parameters in the compound-requirement. { ++x } -> C<int> would substitute C<decltype((++x)), int> and check that concept C is satisfied for those parameters.
      • +
      +

      8.3.3 Advanced

      +

      See user-defined-literals.

      +

      8.4 Functions: user-defined literals

      +

      Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

      +

      8.4.1 Overview

      +

      Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

      + ++++ + + + + + + + + + + + + + + + + + + + + +
      LevelObjectives
      Foundationalusing and understanding UDLs
      Mainimplementing your own UDLs
      AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
      +

      8.4.2 Motivation

      +

      Why is this important? Why do we want to learn/teach this topic?

      +
        +
      • Allows clearer expression of intent in C++.
      • +
      • std::string: "Hello, world!"s
      • +
      • std::chrono: 3h + 10min + 5s
      • +
      +

      8.4.3 Topic introduction

      +

      Very brief introduction to the topic.

      +
        +
      • Explain the existence of user defined literals. Example: 12min + 17s is terse, expressive and type safe.
      • +
      +

      8.4.4 Foundational: Using UDLs

      +

      8.4.4.1 Background/Required Knowledge

      +

      A student: * knows how to form numeric literals, e.g., 1.5f means a float of value 1.5. * is familiar with the major C++ types: * bool (Boolean type) * int (Integer type) * double (Floating-point type) * std::string (Text type) * std::vector (Collection type) * knows that namespaces exist, and namespace std. * knows what using-declarations and using-directives are. [C++ object model: declarations]

      +

      8.4.4.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      +

      A student should be able to:

      +
        +
      1. use using namespace std::string_literals[1].
      2. +
      3. recognise UDLs in code that they are reading.
      4. +
      5. figure out which UDL definitions for a used type exist.
      6. +
      7. identify parts of the standard library that make use of UDLs.
      8. +
      9. prevent the dangers of temporaries created with "blah"s as well as with std::string{"blah"}.
      10. +
      11. effectively selects the right set of namespaces in using-directives from the sub-namespaces std::literals.
      12. +
      +

      [1]: explain that it’s okay to use a using-directive to “activate” UDLs.

      +

      8.4.4.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      +
        +
      • A student gets confused by the similarities and differences between built-in suffixes and UDLs and between UDLs from different namespaces.
      • +
      • A student “activates” two suffixes with the same signature from different namespaces.
      • +
      +

      8.4.4.4 Points to cover

      +

      This section lists important details for each point.

      +

      8.4.5 Main: implementing UDLs

      +

      8.4.5.1 Background/Required Knowledge

      +
        +
      • All of the above.
      • +
      +

      8.4.5.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      +

      A student should be able to:

      +
        +
      1. write a UDL operator of their own.
      2. +
      3. separate unrelated UDLs into distinct namespaces.
      4. +
      +

      8.4.5.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      +

      No caveats at present. #### Points to cover

      +

      This section lists important details for each point.

      +

      No caveats at present. ### Advanced {#udl-advanced}

      +

      These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

      +

      8.5 Functions: default argument

      +

      Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

      +

      8.5.1 Overview

      +

      Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

      +

      Functions in C++ may be overloaded with different numbers and types of parameters. It may be of value to specify default arguments for some number of parameters, to allow a caller to avoid specifying arguments that rarely change, or to enable expanding the set of parameters while maintaining backward compatibility with existing callers.

      + ++++ + + + + + + + + + + + + + + + + + + + + +
      LevelObjective
      FoundationalDefine and use functions with default arguments
      Main
      Advancedrefinement of default arguments through multiple declarations
      +

      8.5.2 Motivation

      +

      Why is this important? Why do we want to learn/teach this topic?

      +

      Default arguments allow the omission of arguments with obvious or common values. Also may be utilized to extend an existing function signature without forcing changes to existing calling code.

      +

      8.5.3 Topic introduction

      +

      Very brief introduction to the topic.

      +

      Explain how default arguments work and how to define them.

      +

      8.5.4 Foundational: Using and defining functions with default arguments

      +

      8.5.4.1 Background/Required Knowledge

      +

      A student is able to:

      + +

      8.5.4.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      +

      A student should be able to:

      +
        +
      1. Call to a function with a default argument with or without that argument specified
      2. +
      3. Declare a function with a default argument, and omit the default in the definition’s signature
      4. +
      5. Explain when the lifetime of a default argument begins and ends
      6. +
      +

      8.5.4.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      +
        +
      • When no forward-declaration exists, the definition serves as the declaration
      • +
      • When multiple declarations exist, only one may specify the default for any particular parameter, but multiple declarations may specify the defaults for different parameters.
      • +
      • Additional default values may be specified for other parameters in repeat declarations
      • +
      • Calling an overloaded function with fewer arguments may be ambiguous with regard to an overload with default arguments
      • +
      +

      8.5.4.4 Points to cover

      +

      This section lists important details for each point.

      +
        +
      • Default value may only be specified once for each parameter among all declarations
      • +
      • Default values must start from the rightmost parameter and continue leftward without gaps
      • +
      • Considerations of when to use default arguments vs overload set
      • +
      +

      8.5.5 Main: implementing *

      +

      8.5.5.1 Background/Required knowledge

      +
        +
      • All of the above.
      • +
      +

      8.5.5.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      +

      A student should be able to:

      +

      8.5.5.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      +

      8.5.5.4 Points to cover

      +

      This section lists important details for each point.

      +

      8.5.6 Advanced

      +

      These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

      +

      Subsequent redeclarations of the same function may add default argument values, which are then usable by callers. Though a single parameter cannot be given a default argument twice in the same translation unit, it is legal, though ill-advised, to give the same function different default arguments in different translation units.

      +

      See concepts.

      +

      8.6 Meta-error handling: static_assert

      +

      Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

      +

      8.6.1 Overview

      +

      Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

      + ++++ + + + + + + + + + + + + + + + + + + + + +
      LevelObjectives
      FoundationalCalling static_assert with a constant expression
      MainUsing static_assert to detect contract violations and improve error messages
      Advanced
      +

      8.6.2 Motivation

      +

      Why is this important? Why do we want to learn/teach this topic?

      +

      static_assert allows the developer to enforce that conditions which can be checked during compilation will force build errors when violated. Additionally, they are the best mechanism by which a developer can pass useful information to other developers regarding what violation occurred or what must be done, instead.

      +

      8.6.3 Topic introduction

      +

      Very brief introduction to the topic.

      +

      static_assert is a compile-time evaluated function that asserts the truth of a supplied predicate, issuing an optional user-supplied error message if the predicate is false.

      +

      8.6.4 Foundational: Calling static_assert with a constant expression

      +

      8.6.4.1 Background/Required Knowledge

      +

      A student:

      +
        +
      • Should be able to explain the difference between code evaluated at compile-time and run-time
      • +
      • Should be able to cite some examples of compile-time known information, such as sizeof(T)
      • +
      +

      8.6.4.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      +

      A student should be able to:

      +
        +
      1. Assert the expected size of a structure using static_assert
      2. +
      +

      8.6.4.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      +

      8.6.4.4 Points to cover

      +

      This section lists important details for each point.

      +
        +
      • X
      • +
      • In addition to what is wrong, a good error message will inform the user of how to correct it
      • +
      +

      8.6.5 Main: Contracts and static_assert

      +

      8.6.5.1 Background/Required Knowledge

      +
        +
      • All of the above.
      • +
      • General understanding of compile-time requirements
      • +
      +

      8.6.5.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      +

      A student should be able to:

      +
        +
      1. Utilize static_assert to verify preconditions of a meta-function
      2. +
      3. Utilize static_assert to verify the results of meta-functions for known values
      4. +
      +

      8.6.5.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      +

      8.6.5.4 Points to cover

      +

      This section lists important details for each point.

      +
        +
      • When writing a meta-function, use static_assert to test the results
      • +
      • Write static_assert calls at the scope of the code they are guarding
      • +
      + +

      8.6.6 Advanced

      +

      These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

      +

      9 Examples of Course Curricula

      +

      [NOTE: Anyone have any suggestions of items to add here?] The following are examples of curricula for course on C++: …

      +

      10 License

      +

      [NOTE: This license is copied verbatim from the C++ Core Guidelines.]

      +
      Copyright (c) Standard C++ Foundation and its contributors
      +
      +Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
      +perpetual license to copy, use, modify, and create derivative works from this
      +project for your personal or internal business use only. The above copyright
      +notice and this permission notice shall be included in all copies or
      +substantial portions of the project. This license does not grant permission
      +to use the trade names, trademarks, service marks, or product names of the
      +licensor, except as required for reasonable and customary use in describing
      +the origin of the project.
      +
      +Standard C++ Foundation reserves the right to accept contributions to the
      +project at its discretion.
      +
      +By contributing material to this project, you grant Standard C++ Foundation,
      +and those who receive the material directly or indirectly from Standard C++
      +Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
      +transferrable license to reproduce, prepare derivative works of, publicly
      +display, publicly perform, and distribute your contributed material and such
      +derivative works, and to sublicense any or all of the foregoing rights to third
      +parties for commercial or non-commercial use.  You also grant Standard C++
      +Foundation, and those who receive the material directly or indirectly from
      +Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
      +irrevocable license under your patent claims that directly read on your
      +contributed material to make, have made, use, offer to sell, sell and import
      +or otherwise dispose of the material. You warrant that your material is your
      +original work, or that you have the right to grant the above licenses.
      +
      +THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
      +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
      +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
      +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
      +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
      +OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
      +PROJECT.
      +
      +If you believe that anything in the project infringes your copyright, please
      +contact us at admin@isocpp.org with your contact information and a detailed
      +description of your intellectual property, including a specific URL where you
      +believe your intellectual property is being infringed.
      +
      +

      11 Contributors

      +
      Christopher Di Bella
      +Florian Sattler
      +Michael Adams
      +rwdougla
      +

      12 How To Contribute

      +

      Before attempting to contribute any content for consideration for inclusion in this document, please read the information below and and the referenced documents as appropriate.

      +

      All contributions to this project must be made in accordance with the license in section License. This teaching-guidelines document only offers guidance on teaching C++ as it is specified in the current version of the C++ standard. So, content should be presented relative to the most-recently ratified version of the standard. A detailed explanation of how to present the material for a topic is given in:

      +
        +
      • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.
      • +
      +

      Any potential contributors should ensure that they read this document. The following document may also be helpful in providing some general background on the modular approach to teaching followed herein:

      + +

      In order to prepare content, it is important to understand what learning outcomes are, and how to prepare good ones. Some information on learning outcomes can be found in the References section. The following document offers a concise introduction to learning outcomes:

      + +

      13 Glossary

      +

      Some possible terms to include in the glossary:

      +
        +
      • learning objective
      • +
      • learning outcome
      • +
      +

      14 References

      +

      14.1 References on Learning Outcomes

      + + +
        +
      • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — Standing Document for SG20: Guidelines for Teaching C++ to Beginners. https://wg21.link/p1389.

      • +
      • Christopher Di Bella. P1725R0 — Modular Topic Design. https://wg21.link/p1725.

      • +
      • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.

      • +
      • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study Group: C++ Education. https://wg21.link/p1231.

      • +
      • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 — Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0.

      • +
      +
      +
      + +
      + + diff --git a/0.0.12/html_split/Advanced.html b/0.0.12/html_split/Advanced.html new file mode 100644 index 0000000..fa0e3b4 --- /dev/null +++ b/0.0.12/html_split/Advanced.html @@ -0,0 +1,60 @@ + + + + + +Advanced (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      8.1.6 Advanced

      +

      These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

      +

      When can copies be elided and when does the standard guarantee copy +elision. References: * Abseil tip of +the Week #166 * +cppreference +- Copy elision +

      + + + + + diff --git a/0.0.12/html_split/Background_002fRequired-Knowledge.html b/0.0.12/html_split/Background_002fRequired-Knowledge.html new file mode 100644 index 0000000..80c6ea3 --- /dev/null +++ b/0.0.12/html_split/Background_002fRequired-Knowledge.html @@ -0,0 +1,64 @@ + + + + + +Background/Required Knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1.4.1 Background/Required Knowledge

      +

      A student is able to: * explain what a C++ type is? +[C++ object model: types] * +explain what an object is? [C++ +object model: objects], [C++ +object model: constant objects] * define and understand class +invariants? +

      +

      It helps when a student is able to: * use move semantics +[C++ object model: move +semantics] * explain special member functions +[C++ object model: +special member functions] +

      + + + + + diff --git a/0.0.12/html_split/Background_002fRequired-knowledge.html b/0.0.12/html_split/Background_002fRequired-knowledge.html new file mode 100644 index 0000000..b9dcf81 --- /dev/null +++ b/0.0.12/html_split/Background_002fRequired-knowledge.html @@ -0,0 +1,54 @@ + + + + + +Background/Required knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      8.5.5.1 Background/Required knowledge

      +
        +
      • All of the above. +
      + + + + + + diff --git a/0.0.12/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html b/0.0.12/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html new file mode 100644 index 0000000..3e850b1 --- /dev/null +++ b/0.0.12/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html @@ -0,0 +1,60 @@ + + + + + +Basics Types Objects Values Expressions Statements and Control-Flow Constructs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.3 Basics Types, Objects, Values, Expressions, Statements, and

      +

      Control-Flow Constructs +

      + + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Constant Objects???
      [‘?’]Declarations and Definitions???
      [‘?’]Selection Constructs (e.g., if, ternary)???
      [‘?’]Looping Constructs (e.g., for, while, etc.)???
      + + + + + + diff --git a/0.0.12/html_split/Building.html b/0.0.12/html_split/Building.html new file mode 100644 index 0000000..e628fd0 --- /dev/null +++ b/0.0.12/html_split/Building.html @@ -0,0 +1,57 @@ + + + + + +Building (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.12 Building

      + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Software Build Tools???
      [‘?’]Strategies for Handling Build Problems???
      + + + + + + diff --git a/0.0.12/html_split/C_002b_002b-object-model-copy-semantics.html b/0.0.12/html_split/C_002b_002b-object-model-copy-semantics.html new file mode 100644 index 0000000..e011f9f --- /dev/null +++ b/0.0.12/html_split/C_002b_002b-object-model-copy-semantics.html @@ -0,0 +1,69 @@ + + + + + +C++ object model copy semantics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1 C++ object model: copy semantics

      +

      Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

      + + + + + + + + + + + + + + diff --git a/0.0.12/html_split/Caveats.html b/0.0.12/html_split/Caveats.html new file mode 100644 index 0000000..c5303c9 --- /dev/null +++ b/0.0.12/html_split/Caveats.html @@ -0,0 +1,62 @@ + + + + + +Caveats (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1.4.3 Caveats

      +

      This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

      +
        +
      • Compiler-provided copy operations may result in ownership problems +(e.g., char*). These ownership problems can generally be solved +by using types whose copy operations have the appropriate semantics, +e.g., std::string instead of char* to hold string values. +
      + + + + + + diff --git a/0.0.12/html_split/Compilation-Model.html b/0.0.12/html_split/Compilation-Model.html new file mode 100644 index 0000000..de11703 --- /dev/null +++ b/0.0.12/html_split/Compilation-Model.html @@ -0,0 +1,62 @@ + + + + + +Compilation Model (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.1 Compilation Model

      + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Translation Units???
      [‘?’]Headers???
      [‘?’]Modules???
      [‘?’]Name Mangling???
      [‘?’]Phases of Translation???
      [‘?’]Separate Compilation???
      [‘?’]Linkage???
      + + + + + + diff --git a/0.0.12/html_split/Compile_002dTime-Computation.html b/0.0.12/html_split/Compile_002dTime-Computation.html new file mode 100644 index 0000000..b9aaa0e --- /dev/null +++ b/0.0.12/html_split/Compile_002dTime-Computation.html @@ -0,0 +1,57 @@ + + + + + +Compile-Time Computation (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.7 Compile-Time Computation

      + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Constant Expressions and Constant Evaluation???
      [‘static-assert’]static_assert‘✔️’‘✔️’
      + + + + + + diff --git a/0.0.12/html_split/Context-and-Aim-of-This-Guide.html b/0.0.12/html_split/Context-and-Aim-of-This-Guide.html new file mode 100644 index 0000000..60efa61 --- /dev/null +++ b/0.0.12/html_split/Context-and-Aim-of-This-Guide.html @@ -0,0 +1,76 @@ + + + + + +Context and Aim of This Guide (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      +Next: , Previous: , Up: Top   [Contents]

      +
      +
      +

      3 Context and Aim of This Guide

      +

      This document is intended to serve as a resource for instructors to +assist in the preparation of courses on C++ in a variety of settings, +including university, college, and industry environments. The main +objectives of this document are as follows: +

      +
        +
      • to provide guidelines for content to be covered by courses of various +difficulty levels on C++ (e.g., topics and learning outcomes) +
      • to note some common misunderstandings and problematic points that may be +encountered when teaching particular topics +
      • to suggest resources useful for teaching C++ +
      • to present examples of curriculum for specific courses +
      + +

      This document does not itself provide a curriculum for a single specific +course, but is rather a set of guidelines that can be used to prepare +curricula for a wide variety of courses that differ in focus and level +of sophistication. (This said, however, some links to other documents +with examples of curricula for specific courses may be included herein.) +This document only intends to target the teaching of the most recently +ratified version of the C++ standard. (This said, however, since older +versions of this document are also available, these older versions may +be of some use to those who need guidance in older versions of the +standard, at least versions that do not predate C++20.) +

      + + + + + diff --git a/0.0.12/html_split/Contributing-to-This-Document.html b/0.0.12/html_split/Contributing-to-This-Document.html new file mode 100644 index 0000000..eac6c28 --- /dev/null +++ b/0.0.12/html_split/Contributing-to-This-Document.html @@ -0,0 +1,55 @@ + + + + + +Contributing to This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      5 Contributing to This Document

      +

      Contributions to this document are welcome. If you would like to help +with this project as a contributor, please read the section +‘How to Contribute’. +

      + + + + + diff --git a/0.0.12/html_split/Contributors.html b/0.0.12/html_split/Contributors.html new file mode 100644 index 0000000..53ba0ef --- /dev/null +++ b/0.0.12/html_split/Contributors.html @@ -0,0 +1,57 @@ + + + + + +Contributors (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      +Next: , Previous: , Up: Top   [Contents]

      +
      +
      +

      11 Contributors

      + +
      Christopher Di Bella
      +Florian Sattler
      +Michael Adams
      +rwdougla
      +
      + + + + + diff --git a/0.0.12/html_split/Detailed-Information-for-Modules-and-Topics.html b/0.0.12/html_split/Detailed-Information-for-Modules-and-Topics.html new file mode 100644 index 0000000..6a3e986 --- /dev/null +++ b/0.0.12/html_split/Detailed-Information-for-Modules-and-Topics.html @@ -0,0 +1,67 @@ + + + + + +Detailed Information for Modules and Topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8 Detailed Information for Modules and Topics

      + + + + + + + + + + + + + + + diff --git a/0.0.12/html_split/Disclaimer.html b/0.0.12/html_split/Disclaimer.html new file mode 100644 index 0000000..a911983 --- /dev/null +++ b/0.0.12/html_split/Disclaimer.html @@ -0,0 +1,55 @@ + + + + + +Disclaimer (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      2 Disclaimer

      +

      This document is intended as a proof of concept to solicit feedback from +others. This document is incomplete. This document likely has at least a +few errors. +

      + + + + + diff --git a/0.0.12/html_split/Error-Handling.html b/0.0.12/html_split/Error-Handling.html new file mode 100644 index 0000000..1f8d3e0 --- /dev/null +++ b/0.0.12/html_split/Error-Handling.html @@ -0,0 +1,59 @@ + + + + + +Error Handling (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.9 Error Handling

      + + + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Classes of Errors???
      [‘?’]errno???
      [‘?’]Error Codes???
      [‘?’]Exception Handling???
      + + + + + + diff --git a/0.0.12/html_split/Examples-of-Course-Curricula.html b/0.0.12/html_split/Examples-of-Course-Curricula.html new file mode 100644 index 0000000..64eb64b --- /dev/null +++ b/0.0.12/html_split/Examples-of-Course-Curricula.html @@ -0,0 +1,53 @@ + + + + + +Examples of Course Curricula (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      9 Examples of Course Curricula

      +

      [NOTE: Anyone have any suggestions of items to add here?] The +following are examples of curricula for course on C++: … +

      + + + + + diff --git a/0.0.12/html_split/External-ie-Non-Standard-Libraries.html b/0.0.12/html_split/External-ie-Non-Standard-Libraries.html new file mode 100644 index 0000000..2bf081e --- /dev/null +++ b/0.0.12/html_split/External-ie-Non-Standard-Libraries.html @@ -0,0 +1,56 @@ + + + + + +External ie Non Standard Libraries (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.11 External (i.e., Non Standard) Libraries

      + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Graphical User Interfaces???
      + + + + + + diff --git a/0.0.12/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html b/0.0.12/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html new file mode 100644 index 0000000..ce2c1b0 --- /dev/null +++ b/0.0.12/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html @@ -0,0 +1,62 @@ + + + + + +Foundational Calling static_assert with a constant expression (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
      +

      8.6.4 Foundational: Calling static_assert with a constant

      +

      expression +

      + + + + + + + + + + + + diff --git a/0.0.12/html_split/Foundational-How-and-when-are-copies-made.html b/0.0.12/html_split/Foundational-How-and-when-are-copies-made.html new file mode 100644 index 0000000..4cec33b --- /dev/null +++ b/0.0.12/html_split/Foundational-How-and-when-are-copies-made.html @@ -0,0 +1,63 @@ + + + + + +Foundational How and when are copies made (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1.4 Foundational: How and when are copies made

      + + + + + + + + + + + + + diff --git a/0.0.12/html_split/Foundational-Using-UDLs.html b/0.0.12/html_split/Foundational-Using-UDLs.html new file mode 100644 index 0000000..ee31f18 --- /dev/null +++ b/0.0.12/html_split/Foundational-Using-UDLs.html @@ -0,0 +1,61 @@ + + + + + +Foundational Using UDLs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
      +

      8.4.4 Foundational: Using UDLs

      + + + + + + + + + + + + + diff --git a/0.0.12/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html b/0.0.12/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html new file mode 100644 index 0000000..99ba226 --- /dev/null +++ b/0.0.12/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html @@ -0,0 +1,62 @@ + + + + + +Foundational Using and defining functions with default arguments (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
      +

      8.5.4 Foundational: Using and defining functions with default

      +

      arguments +

      + + + + + + + + + + + + diff --git a/0.0.12/html_split/Foundational-Writing-requires_002dexpressions.html b/0.0.12/html_split/Foundational-Writing-requires_002dexpressions.html new file mode 100644 index 0000000..a5f6086 --- /dev/null +++ b/0.0.12/html_split/Foundational-Writing-requires_002dexpressions.html @@ -0,0 +1,60 @@ + + + + + +Foundational Writing requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +
      +

      8.3.1 Foundational: Writing requires-expressions

      + + + + + + + + + + + + + diff --git a/0.0.12/html_split/Functions-default-argument.html b/0.0.12/html_split/Functions-default-argument.html new file mode 100644 index 0000000..7092e80 --- /dev/null +++ b/0.0.12/html_split/Functions-default-argument.html @@ -0,0 +1,67 @@ + + + + + +Functions default argument (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
      +

      8.5 Functions: default argument

      +

      Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

      + + + + + + + + + + + + + + diff --git a/0.0.12/html_split/Functions-user_002ddefined-literals.html b/0.0.12/html_split/Functions-user_002ddefined-literals.html new file mode 100644 index 0000000..2c00dbc --- /dev/null +++ b/0.0.12/html_split/Functions-user_002ddefined-literals.html @@ -0,0 +1,65 @@ + + + + + +Functions user-defined literals (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
      +

      8.4 Functions: user-defined literals

      +

      Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

      + + + + + + + + + + + + + diff --git a/0.0.12/html_split/Functions.html b/0.0.12/html_split/Functions.html new file mode 100644 index 0000000..82175a5 --- /dev/null +++ b/0.0.12/html_split/Functions.html @@ -0,0 +1,61 @@ + + + + + +Functions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.4 Functions

      + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Calling Functions???
      [‘?’]Parameter Passing (e.g., Passing By Value and Reference)???
      [‘func-args’]Default Arguments‘✔️’
      [‘?’]Returning Multiple Values???
      [‘?’]Overloading???
      [‘udl’]User-Defined Literals‘✔️’‘✔️’
      + + + + + + diff --git a/0.0.12/html_split/Generic-Programming-Templates.html b/0.0.12/html_split/Generic-Programming-Templates.html new file mode 100644 index 0000000..1a22cd7 --- /dev/null +++ b/0.0.12/html_split/Generic-Programming-Templates.html @@ -0,0 +1,61 @@ + + + + + +Generic Programming Templates (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.8 Generic Programming (Templates)

      + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Concepts???
      [‘?’]SFINAE???
      [‘?’]Template Metaprogramming???
      [‘?’]Function Templates???
      [‘?’]Requires Clauses???
      [‘req-expr’]Requires Expressions‘✔️’‘✔️’
      + + + + + + diff --git a/0.0.12/html_split/Glossary.html b/0.0.12/html_split/Glossary.html new file mode 100644 index 0000000..2bf24f2 --- /dev/null +++ b/0.0.12/html_split/Glossary.html @@ -0,0 +1,58 @@ + + + + + +Glossary (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      +Next: , Previous: , Up: Top   [Contents]

      +
      +
      +

      13 Glossary

      +

      Some possible terms to include in the glossary: +

      +
        +
      • learning objective +
      • learning outcome +
      + + + + + + diff --git a/0.0.12/html_split/How-To-Contribute.html b/0.0.12/html_split/How-To-Contribute.html new file mode 100644 index 0000000..f1963d5 --- /dev/null +++ b/0.0.12/html_split/How-To-Contribute.html @@ -0,0 +1,89 @@ + + + + + +How To Contribute (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      +Next: , Previous: , Up: Top   [Contents]

      +
      +
      +

      12 How To Contribute

      +

      Before attempting to contribute any content for consideration for +inclusion in this document, please read the information below and and +the referenced documents as appropriate. +

      +

      All contributions to this project must be made in accordance with the +license in section License. This teaching-guidelines +document only offers guidance on teaching C++ as it is specified in the +current version of the C++ standard. So, content should be presented +relative to the most-recently ratified version of the standard. A +detailed explanation of how to present the material for a topic is given +in: +

      +
        +
      • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to +structure a teaching topic. https://wg21.link/p2193. +
      + +

      Any potential contributors should ensure that they read this document. +The following document may also be helpful in providing some general +background on the modular approach to teaching followed herein: +

      + + +

      In order to prepare content, it is important to understand what learning +outcomes are, and how to prepare good ones. Some information on learning +outcomes can be found in the References section. The +following document offers a concise introduction to learning outcomes: +

      + + + + + + + diff --git a/0.0.12/html_split/Inheritance-and-Class-Hierarchies.html b/0.0.12/html_split/Inheritance-and-Class-Hierarchies.html new file mode 100644 index 0000000..1a394b0 --- /dev/null +++ b/0.0.12/html_split/Inheritance-and-Class-Hierarchies.html @@ -0,0 +1,57 @@ + + + + + +Inheritance and Class Hierarchies (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.6 Inheritance and Class Hierarchies

      + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Virtual Functions???
      [‘?’]Run-Time Type Information???
      + + + + + + diff --git a/0.0.12/html_split/License.html b/0.0.12/html_split/License.html new file mode 100644 index 0000000..38d2d8d --- /dev/null +++ b/0.0.12/html_split/License.html @@ -0,0 +1,100 @@ + + + + + +License (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      +Next: , Previous: , Up: Top   [Contents]

      +
      +
      +

      10 License

      +

      [NOTE: This license is copied verbatim from the C++ Core +Guidelines.] +

      +
      Copyright (c) Standard C++ Foundation and its contributors
      +
      +Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
      +perpetual license to copy, use, modify, and create derivative works from this
      +project for your personal or internal business use only. The above copyright
      +notice and this permission notice shall be included in all copies or
      +substantial portions of the project. This license does not grant permission
      +to use the trade names, trademarks, service marks, or product names of the
      +licensor, except as required for reasonable and customary use in describing
      +the origin of the project.
      +
      +Standard C++ Foundation reserves the right to accept contributions to the
      +project at its discretion.
      +
      +By contributing material to this project, you grant Standard C++ Foundation,
      +and those who receive the material directly or indirectly from Standard C++
      +Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
      +transferrable license to reproduce, prepare derivative works of, publicly
      +display, publicly perform, and distribute your contributed material and such
      +derivative works, and to sublicense any or all of the foregoing rights to third
      +parties for commercial or non-commercial use.  You also grant Standard C++
      +Foundation, and those who receive the material directly or indirectly from
      +Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
      +irrevocable license under your patent claims that directly read on your
      +contributed material to make, have made, use, offer to sell, sell and import
      +or otherwise dispose of the material. You warrant that your material is your
      +original work, or that you have the right to grant the above licenses.
      +
      +THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
      +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
      +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
      +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
      +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
      +OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
      +PROJECT.
      +
      +If you believe that anything in the project infringes your copyright, please
      +contact us at admin@isocpp.org with your contact information and a detailed
      +description of your intellectual property, including a specific URL where you
      +believe your intellectual property is being infringed.
      +
      +
      +
      +

      +Next: , Previous: , Up: Top   [Contents]

      +
      + + + + + diff --git a/0.0.12/html_split/Main-Advanced-requirements.html b/0.0.12/html_split/Main-Advanced-requirements.html new file mode 100644 index 0000000..40d8bd0 --- /dev/null +++ b/0.0.12/html_split/Main-Advanced-requirements.html @@ -0,0 +1,60 @@ + + + + + +Main Advanced requirements (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +
      +

      8.3.2 Main: Advanced requirements

      + + + + + + + + + + + + + diff --git a/0.0.12/html_split/Main-Contracts-and-static_005fassert.html b/0.0.12/html_split/Main-Contracts-and-static_005fassert.html new file mode 100644 index 0000000..6c0ba46 --- /dev/null +++ b/0.0.12/html_split/Main-Contracts-and-static_005fassert.html @@ -0,0 +1,61 @@ + + + + + +Main Contracts and static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
      +

      8.6.5 Main: Contracts and static_assert

      + + + + + + + + + + + + + diff --git a/0.0.12/html_split/Main-Implementing-user_002ddefined-copy-operations.html b/0.0.12/html_split/Main-Implementing-user_002ddefined-copy-operations.html new file mode 100644 index 0000000..e38dfd6 --- /dev/null +++ b/0.0.12/html_split/Main-Implementing-user_002ddefined-copy-operations.html @@ -0,0 +1,62 @@ + + + + + +Main Implementing user-defined copy operations (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      8.1.5 Main: Implementing user-defined copy operations

      + + + + + + + + + + + + + diff --git a/0.0.12/html_split/Main-implementing-UDLs.html b/0.0.12/html_split/Main-implementing-UDLs.html new file mode 100644 index 0000000..ae1c307 --- /dev/null +++ b/0.0.12/html_split/Main-implementing-UDLs.html @@ -0,0 +1,59 @@ + + + + + +Main implementing UDLs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
      +

      8.4.5 Main: implementing UDLs

      + + + + + + + + + + + + diff --git a/0.0.12/html_split/Main-implementing-_002a.html b/0.0.12/html_split/Main-implementing-_002a.html new file mode 100644 index 0000000..a4ada7b --- /dev/null +++ b/0.0.12/html_split/Main-implementing-_002a.html @@ -0,0 +1,62 @@ + + + + + +Main implementing * (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      8.5.5 Main: implementing *

      + + + + + + + + + + + + + diff --git a/0.0.12/html_split/Meta_002derror-handling-static_005fassert.html b/0.0.12/html_split/Meta_002derror-handling-static_005fassert.html new file mode 100644 index 0000000..176cec8 --- /dev/null +++ b/0.0.12/html_split/Meta_002derror-handling-static_005fassert.html @@ -0,0 +1,67 @@ + + + + + +Meta-error handling static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
      +

      8.6 Meta-error handling: static_assert

      +

      Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

      + + + + + + + + + + + + + + diff --git a/0.0.12/html_split/Module-name-Requires-Expressions.html b/0.0.12/html_split/Module-name-Requires-Expressions.html new file mode 100644 index 0000000..412ad99 --- /dev/null +++ b/0.0.12/html_split/Module-name-Requires-Expressions.html @@ -0,0 +1,60 @@ + + + + + +Module name Requires Expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      8.2 Module name: Requires Expressions

      +

      Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

      + + + + + + + + + + diff --git a/0.0.12/html_split/Motivation.html b/0.0.12/html_split/Motivation.html new file mode 100644 index 0000000..40b0ec9 --- /dev/null +++ b/0.0.12/html_split/Motivation.html @@ -0,0 +1,57 @@ + + + + + +Motivation (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1.2 Motivation

      +

      Why is this important? Why do we want to learn/teach this +topic? +

      +

      Copy semantics allows the user to define how objects of a class get +replicated and interact on a value level. +

      + + + + + diff --git a/0.0.12/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html b/0.0.12/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html new file mode 100644 index 0000000..923a5a2 --- /dev/null +++ b/0.0.12/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html @@ -0,0 +1,78 @@ + + + + + +Obtaining This Document The Most Recent Version and Alternate Formats (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      +Next: , Previous: , Up: Top   [Contents]

      +
      +
      +

      1 Obtaining This Document: The Most Recent Version and Alternate

      +

      Formats +The most recent version of this document is available as an online HTML +document at: https://cplusplus.github.io/SG20/latest/. +

      +

      The version of the document that you are currently reading is available +in the following formats: +

      +
        +
      1. online (HTML) format as a single large HTML document: +https://cplusplus.github.io/SG20/0.0.12/html + +
      2. EPUB format: +https://cplusplus.github.io/SG20/0.0.12/guidelines.epub + +
      3. online (HTML) format, split across multiple HTML documents: +https://cplusplus.github.io/SG20/0.0.12/html_split/ [Note: +The support for this format needs more work (in order to beautify and +fix linking issues).] + +
      + +

      Older versions of this document are also available. In general version +ver is available at +https://cplusplus.github.io/SG20/ver/html. For example, version +0.1.0 (assuming that this version exists) would be available at +https://cplusplus.github.io/SG20/0.1.0/html. +

      + + + + + diff --git a/0.0.12/html_split/Organization-of-This-Document.html b/0.0.12/html_split/Organization-of-This-Document.html new file mode 100644 index 0000000..3e48985 --- /dev/null +++ b/0.0.12/html_split/Organization-of-This-Document.html @@ -0,0 +1,101 @@ + + + + + +Organization of This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      6 Organization of This Document

      +

      The various concepts (i.e., ideas) to potentially be covered are +partitioned into modules. A module is very broad in scope and consists +of numerous topics. [Note: Can I suggest that we use the term +“area” or “unit” instead of “module”? I think that these other +choices are better and also avoid any potential confusion over what is +meant by “module” (i.e., C++ term versus plain English term).] +

      +

      For each module, topics related to the module are identified. Then, for +each topic, learning outcomes are specified. In order to address a wide +variety of courses on C++, each topic is addressed at three proficiency +levels. These proficiency levels allow each topic to be covered at more +than one level of detail. This allows target audiences with different +background and learning objectives to be accommodated. The three +proficiency levels are as follows: +

      +
        +
      • foundational. This level gives the learner the idea that a facility +exists, what benefits it offers, and the basic ways of using it. +[Note: Isn’t this just “novice”/“beginner”?] + +
      • main. This level shows mainstream uses and techniques. For abstraction +and organizational mechanisms it also demonstrates how to build them. +This level should also give the learner a basic (but not detailed) +understanding of how a facility might be implemented so that the learner +can have a first-order understanding of any costs involved. +[Note: The term “main” is not very descriptive/helpful. Could +I suggest using “intermediate”?] + +
      • advanced. This level gives information suitable for an expert. For most +topics there is an expert level of knowledge that most programmers +rarely need and techniques that require detailed understanding of +language rules or library implementation. + +
      + +

      The remainder of this document is organized as follows. The various +topics are listed grouped by module. In cases where a topic might be +classified into more than one module, the topic is listed under the +module of most direct relevance. This is done in order to avoid +duplication of content. (In the case that a topic is equally relevant to +multiple modules, the decision of which to select is made by a +proverbial coin toss.) The order in which modules and topics are +presented is not meant to imply any order of coverage in a course. The +order in which items are listed is essentially arbitrary. +

      +
      + + + + + + diff --git a/0.0.12/html_split/Overview.html b/0.0.12/html_split/Overview.html new file mode 100644 index 0000000..be44bfa --- /dev/null +++ b/0.0.12/html_split/Overview.html @@ -0,0 +1,61 @@ + + + + + +Overview (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1.1 Overview

      +

      Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

      + + + + + +
      LevelObjectives
      Foundationalunderstanding how and when are copies made
      Mainimplementing user-defined copy operations
      Advancedspecial cases: copy elision
      + + + + + + diff --git a/0.0.12/html_split/Points-to-cover.html b/0.0.12/html_split/Points-to-cover.html new file mode 100644 index 0000000..ba4b5cc --- /dev/null +++ b/0.0.12/html_split/Points-to-cover.html @@ -0,0 +1,69 @@ + + + + + +Points to cover (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1.4.4 Points to cover

      +

      This section lists important details for each point. +

      +
        +
      • Principle of copying +
          +
        • Copying of types, which follow the rule of zero +
        • Copying of types, with user defined copy operations +
        • Copying an object does not change the original +
        + +
      • Practical applications +
          +
        • std::unique_ptr (has no copy) +
        • Strings (copies the value) +
        + +
      + + + + + + diff --git a/0.0.12/html_split/Preprocessor.html b/0.0.12/html_split/Preprocessor.html new file mode 100644 index 0000000..345e396 --- /dev/null +++ b/0.0.12/html_split/Preprocessor.html @@ -0,0 +1,58 @@ + + + + + +Preprocessor (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.2 Preprocessor

      + + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Preprocessor Metaprogramming???
      [‘?’]Inclusion???
      [‘?’]Macros???
      + + + + + + diff --git a/0.0.12/html_split/References-on-Learning-Outcomes.html b/0.0.12/html_split/References-on-Learning-Outcomes.html new file mode 100644 index 0000000..7b74cad --- /dev/null +++ b/0.0.12/html_split/References-on-Learning-Outcomes.html @@ -0,0 +1,71 @@ + + + + + +References on Learning Outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      14.1 References on Learning Outcomes

      + + + + + + + diff --git a/0.0.12/html_split/References.html b/0.0.12/html_split/References.html new file mode 100644 index 0000000..f595be2 --- /dev/null +++ b/0.0.12/html_split/References.html @@ -0,0 +1,59 @@ + + + + + +References (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      +Previous: , Up: Top   [Contents]

      +
      +
      +

      14 References

      + + + + + + + + + + + diff --git a/0.0.12/html_split/Software-Design.html b/0.0.12/html_split/Software-Design.html new file mode 100644 index 0000000..6b4f6c8 --- /dev/null +++ b/0.0.12/html_split/Software-Design.html @@ -0,0 +1,56 @@ + + + + + +Software Design (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.15 Software Design

      + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Design by Contract???
      + + + + + + diff --git a/0.0.12/html_split/Standard-Library.html b/0.0.12/html_split/Standard-Library.html new file mode 100644 index 0000000..c80c7fc --- /dev/null +++ b/0.0.12/html_split/Standard-Library.html @@ -0,0 +1,57 @@ + + + + + +Standard Library (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.10 Standard Library

      + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Input/Output (I/O)???
      [‘?’]Containers, Iterators, and Algorithms???
      + + + + + + diff --git a/0.0.12/html_split/Student-outcomes.html b/0.0.12/html_split/Student-outcomes.html new file mode 100644 index 0000000..c604549 --- /dev/null +++ b/0.0.12/html_split/Student-outcomes.html @@ -0,0 +1,73 @@ + + + + + +Student outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1.4.2 Student outcomes

      +

      A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

      +

      A student should be able to: +

      +
        +
      1. explain what copy semantics accomplish +
      + +
        +
      • establishing “equivalent” object state in another object +
      + +
        +
      1. explain difference between copying a reference and copying a value* +
      2. explain where copies are made +
      + +

      * In other languages these differences are sometimes referred to as +shallow and deep copy. +

      + + + + + diff --git a/0.0.12/html_split/Summary-of-Modules-and-Topics.html b/0.0.12/html_split/Summary-of-Modules-and-Topics.html new file mode 100644 index 0000000..26b69be --- /dev/null +++ b/0.0.12/html_split/Summary-of-Modules-and-Topics.html @@ -0,0 +1,106 @@ + + + + + +Summary of Modules and Topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7 Summary of Modules and Topics

      +

      In the sections that follow, the various modules and topics are +presented. There is one section per module. For each module, a table +listing the various topics in that module is provided. The ID for a +topic is linked to the detailed coverage of that topic that comes later +in the document. If a topic has any learning outcomes at a given +proficiency level, this is indicated by a checkmark (“✔️”). If a topic +has no learning outcomes (simply because there are not any, not because +the information is missing), this is indicated by an em dash (“—”). +In the case that the information for a topic is completely missing, a +question mark (“?”) symbol is used. +

      +

      [NOTE: These topics are taken mostly from the SG20 GitHub +repository. They are not intended to be complete in any sense. In fact, +by gathering together all topics in one place where they are easily +viewed, it is hoped that missing and unbalanced items will be more +obvious.] +

      + + + + + + + + + + + + + + + + + + +
      + + + + + + diff --git a/0.0.12/html_split/Testing-and-Debugging.html b/0.0.12/html_split/Testing-and-Debugging.html new file mode 100644 index 0000000..da60211 --- /dev/null +++ b/0.0.12/html_split/Testing-and-Debugging.html @@ -0,0 +1,59 @@ + + + + + +Testing and Debugging (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      +Next: , Previous: , Up: Summary of Modules and Topics   [Contents]

      +
      +
      +

      7.13 Testing and Debugging

      + + + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Source-Level Debuggers???
      [‘?’]Code Sanitizers???
      [‘?’]Test Frameworks???
      [‘?’]Debugging Strategies???
      + + + + + + diff --git a/0.0.12/html_split/Tooling.html b/0.0.12/html_split/Tooling.html new file mode 100644 index 0000000..43c3b2f --- /dev/null +++ b/0.0.12/html_split/Tooling.html @@ -0,0 +1,57 @@ + + + + + +Tooling (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.14 Tooling

      + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Compiler Toolchains???
      [‘?’]IDEs???
      + + + + + + diff --git a/0.0.12/html_split/Topic-introduction.html b/0.0.12/html_split/Topic-introduction.html new file mode 100644 index 0000000..fff97f2 --- /dev/null +++ b/0.0.12/html_split/Topic-introduction.html @@ -0,0 +1,55 @@ + + + + + +Topic introduction (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      8.1.3 Topic introduction

      +

      Very brief introduction to the topic. +

      +

      Explains when and how objects are copied. +

      + + + + + diff --git a/0.0.12/html_split/Use-of-This-Document.html b/0.0.12/html_split/Use-of-This-Document.html new file mode 100644 index 0000000..4c820d5 --- /dev/null +++ b/0.0.12/html_split/Use-of-This-Document.html @@ -0,0 +1,58 @@ + + + + + +Use of This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      4 Use of This Document

      +

      [NOTE: This document follows the same license model as the C++ +Core Guidelines. The LICENSE document is taken verbatim from the C++ +Core Guidelines.] This document is made available under a MIT-style +license. In simple terms, this license permits copying, use, +modification, and creation of derivative works. A copy of the license is +included in the section LICENSE. +

      + + + + + diff --git a/0.0.12/html_split/User_002dDefined-Types-Classes.html b/0.0.12/html_split/User_002dDefined-Types-Classes.html new file mode 100644 index 0000000..808279a --- /dev/null +++ b/0.0.12/html_split/User_002dDefined-Types-Classes.html @@ -0,0 +1,69 @@ + + + + + +User-Defined Types Classes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
      +

      7.5 User-Defined Types (Classes)

      + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [‘?’]Special Member Functions???
      [‘?’]Types???
      [‘?’]Conversions???
      [‘?’]Constructors and Destructors???
      [‘?’]Move/Copy Constructors and Assignment Operators???
      [‘?’]Member Functions???
      [‘?’]Sum Types???
      [‘?’]User-Defined Literals???
      [‘?’]Special Member Functions???
      [‘?’]Guidelines for Special Member Functions (e.g., Rule of Five, Rule +of Zero)???
      [‘copy’]Copy Semantics‘✔️’‘✔️’
      [‘?’]Moving and Copying???
      [‘?’]Lambdas???
      + + + + + + diff --git a/0.0.12/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html b/0.0.12/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html new file mode 100644 index 0000000..3f9bf2c --- /dev/null +++ b/0.0.12/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html @@ -0,0 +1,69 @@ + + + + + +Working Group Documents Related to C++ Teaching Guidelines (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
      +

      14.2 Working Group Documents Related to C++ Teaching Guidelines

      +
        +
      • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — +Standing Document for SG20: Guidelines for Teaching C++ to Beginners. +https://wg21.link/p1389. + +
      • Christopher Di Bella. P1725R0 — Modular Topic Design. +https://wg21.link/p1725. + +
      • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to +structure a teaching topic. https://wg21.link/p2193. + +
      • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study +Group: C++ Education. https://wg21.link/p1231. + +
      • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 +— Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0. + +
      + + + + + + diff --git a/0.0.12/html_split/_0023advanced.html b/0.0.12/html_split/_0023advanced.html new file mode 100644 index 0000000..d503bfc --- /dev/null +++ b/0.0.12/html_split/_0023advanced.html @@ -0,0 +1,40 @@ + + + + + + +#advanced (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #advanced.

      + diff --git a/0.0.12/html_split/_0023advanced_002d1.html b/0.0.12/html_split/_0023advanced_002d1.html new file mode 100644 index 0000000..282a7b8 --- /dev/null +++ b/0.0.12/html_split/_0023advanced_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #advanced-1.

      + diff --git a/0.0.12/html_split/_0023advanced_002d2.html b/0.0.12/html_split/_0023advanced_002d2.html new file mode 100644 index 0000000..039b3ff --- /dev/null +++ b/0.0.12/html_split/_0023advanced_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #advanced-2.

      + diff --git a/0.0.12/html_split/_0023advanced_002d3.html b/0.0.12/html_split/_0023advanced_002d3.html new file mode 100644 index 0000000..ebf5529 --- /dev/null +++ b/0.0.12/html_split/_0023advanced_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #advanced-3.

      + diff --git a/0.0.12/html_split/_0023backgroundrequired_002dknowledge.html b/0.0.12/html_split/_0023backgroundrequired_002dknowledge.html new file mode 100644 index 0000000..9959745 --- /dev/null +++ b/0.0.12/html_split/_0023backgroundrequired_002dknowledge.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge.

      + diff --git a/0.0.12/html_split/_0023backgroundrequired_002dknowledge_002d1.html b/0.0.12/html_split/_0023backgroundrequired_002dknowledge_002d1.html new file mode 100644 index 0000000..f6f6bd0 --- /dev/null +++ b/0.0.12/html_split/_0023backgroundrequired_002dknowledge_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-1.

      + diff --git a/0.0.12/html_split/_0023backgroundrequired_002dknowledge_002d2.html b/0.0.12/html_split/_0023backgroundrequired_002dknowledge_002d2.html new file mode 100644 index 0000000..b0b297d --- /dev/null +++ b/0.0.12/html_split/_0023backgroundrequired_002dknowledge_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-2.

      + diff --git a/0.0.12/html_split/_0023backgroundrequired_002dknowledge_002d3.html b/0.0.12/html_split/_0023backgroundrequired_002dknowledge_002d3.html new file mode 100644 index 0000000..ae34d91 --- /dev/null +++ b/0.0.12/html_split/_0023backgroundrequired_002dknowledge_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-3.

      + diff --git a/0.0.12/html_split/_0023backgroundrequired_002dknowledge_002d4.html b/0.0.12/html_split/_0023backgroundrequired_002dknowledge_002d4.html new file mode 100644 index 0000000..7417f62 --- /dev/null +++ b/0.0.12/html_split/_0023backgroundrequired_002dknowledge_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-4.

      + diff --git a/0.0.12/html_split/_0023backgroundrequired_002dknowledge_002d5.html b/0.0.12/html_split/_0023backgroundrequired_002dknowledge_002d5.html new file mode 100644 index 0000000..34298e9 --- /dev/null +++ b/0.0.12/html_split/_0023backgroundrequired_002dknowledge_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-5.

      + diff --git a/0.0.12/html_split/_0023backgroundrequired_002dknowledge_002d6.html b/0.0.12/html_split/_0023backgroundrequired_002dknowledge_002d6.html new file mode 100644 index 0000000..a1cdee1 --- /dev/null +++ b/0.0.12/html_split/_0023backgroundrequired_002dknowledge_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-6.

      + diff --git a/0.0.12/html_split/_0023backgroundrequired_002dknowledge_002d7.html b/0.0.12/html_split/_0023backgroundrequired_002dknowledge_002d7.html new file mode 100644 index 0000000..0a8d35a --- /dev/null +++ b/0.0.12/html_split/_0023backgroundrequired_002dknowledge_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-7.

      + diff --git a/0.0.12/html_split/_0023backgroundrequired_002dknowledge_002d8.html b/0.0.12/html_split/_0023backgroundrequired_002dknowledge_002d8.html new file mode 100644 index 0000000..6080498 --- /dev/null +++ b/0.0.12/html_split/_0023backgroundrequired_002dknowledge_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-8.

      + diff --git a/0.0.12/html_split/_0023backgroundrequired_002dknowledge_002d9.html b/0.0.12/html_split/_0023backgroundrequired_002dknowledge_002d9.html new file mode 100644 index 0000000..3ea462d --- /dev/null +++ b/0.0.12/html_split/_0023backgroundrequired_002dknowledge_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #backgroundrequired-knowledge-9.

      + diff --git a/0.0.12/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html b/0.0.12/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html new file mode 100644 index 0000000..925c568 --- /dev/null +++ b/0.0.12/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html @@ -0,0 +1,40 @@ + + + + + + +#basics-types-objects-values-expressions-statements-and-control-flow-constructs (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #basics-types-objects-values-expressions-statements-and-control-flow-constructs.

      + diff --git a/0.0.12/html_split/_0023building.html b/0.0.12/html_split/_0023building.html new file mode 100644 index 0000000..8ffc9df --- /dev/null +++ b/0.0.12/html_split/_0023building.html @@ -0,0 +1,40 @@ + + + + + + +#building (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #building.

      + diff --git a/0.0.12/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html b/0.0.12/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html new file mode 100644 index 0000000..a7e6bad --- /dev/null +++ b/0.0.12/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html @@ -0,0 +1,40 @@ + + + + + + +#c-object-model-copy-semantics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #c-object-model-copy-semantics.

      + diff --git a/0.0.12/html_split/_0023caveats.html b/0.0.12/html_split/_0023caveats.html new file mode 100644 index 0000000..d4bac8b --- /dev/null +++ b/0.0.12/html_split/_0023caveats.html @@ -0,0 +1,40 @@ + + + + + + +#caveats (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats.

      + diff --git a/0.0.12/html_split/_0023caveats_002d1.html b/0.0.12/html_split/_0023caveats_002d1.html new file mode 100644 index 0000000..64faefd --- /dev/null +++ b/0.0.12/html_split/_0023caveats_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-1.

      + diff --git a/0.0.12/html_split/_0023caveats_002d2.html b/0.0.12/html_split/_0023caveats_002d2.html new file mode 100644 index 0000000..6c66559 --- /dev/null +++ b/0.0.12/html_split/_0023caveats_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-2.

      + diff --git a/0.0.12/html_split/_0023caveats_002d3.html b/0.0.12/html_split/_0023caveats_002d3.html new file mode 100644 index 0000000..479063f --- /dev/null +++ b/0.0.12/html_split/_0023caveats_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-3.

      + diff --git a/0.0.12/html_split/_0023caveats_002d4.html b/0.0.12/html_split/_0023caveats_002d4.html new file mode 100644 index 0000000..9588a55 --- /dev/null +++ b/0.0.12/html_split/_0023caveats_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-4.

      + diff --git a/0.0.12/html_split/_0023caveats_002d5.html b/0.0.12/html_split/_0023caveats_002d5.html new file mode 100644 index 0000000..11edee5 --- /dev/null +++ b/0.0.12/html_split/_0023caveats_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-5.

      + diff --git a/0.0.12/html_split/_0023caveats_002d6.html b/0.0.12/html_split/_0023caveats_002d6.html new file mode 100644 index 0000000..6cea721 --- /dev/null +++ b/0.0.12/html_split/_0023caveats_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-6.

      + diff --git a/0.0.12/html_split/_0023caveats_002d7.html b/0.0.12/html_split/_0023caveats_002d7.html new file mode 100644 index 0000000..2a8f1cd --- /dev/null +++ b/0.0.12/html_split/_0023caveats_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-7.

      + diff --git a/0.0.12/html_split/_0023caveats_002d8.html b/0.0.12/html_split/_0023caveats_002d8.html new file mode 100644 index 0000000..e330642 --- /dev/null +++ b/0.0.12/html_split/_0023caveats_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-8.

      + diff --git a/0.0.12/html_split/_0023caveats_002d9.html b/0.0.12/html_split/_0023caveats_002d9.html new file mode 100644 index 0000000..004e434 --- /dev/null +++ b/0.0.12/html_split/_0023caveats_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #caveats-9.

      + diff --git a/0.0.12/html_split/_0023compilation_002dmodel.html b/0.0.12/html_split/_0023compilation_002dmodel.html new file mode 100644 index 0000000..1017867 --- /dev/null +++ b/0.0.12/html_split/_0023compilation_002dmodel.html @@ -0,0 +1,40 @@ + + + + + + +#compilation-model (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #compilation-model.

      + diff --git a/0.0.12/html_split/_0023compile_002dtime_002dcomputation.html b/0.0.12/html_split/_0023compile_002dtime_002dcomputation.html new file mode 100644 index 0000000..59b0c57 --- /dev/null +++ b/0.0.12/html_split/_0023compile_002dtime_002dcomputation.html @@ -0,0 +1,40 @@ + + + + + + +#compile-time-computation (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #compile-time-computation.

      + diff --git a/0.0.12/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html b/0.0.12/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html new file mode 100644 index 0000000..9294adf --- /dev/null +++ b/0.0.12/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html @@ -0,0 +1,40 @@ + + + + + + +#context-and-aim-of-this-guide (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #context-and-aim-of-this-guide.

      + diff --git a/0.0.12/html_split/_0023contributing_002dto_002dthis_002ddocument.html b/0.0.12/html_split/_0023contributing_002dto_002dthis_002ddocument.html new file mode 100644 index 0000000..272d848 --- /dev/null +++ b/0.0.12/html_split/_0023contributing_002dto_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#contributing-to-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #contributing-to-this-document.

      + diff --git a/0.0.12/html_split/_0023contributors.html b/0.0.12/html_split/_0023contributors.html new file mode 100644 index 0000000..a391f9d --- /dev/null +++ b/0.0.12/html_split/_0023contributors.html @@ -0,0 +1,40 @@ + + + + + + +#contributors (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #contributors.

      + diff --git a/0.0.12/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html b/0.0.12/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html new file mode 100644 index 0000000..d32c27e --- /dev/null +++ b/0.0.12/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html @@ -0,0 +1,40 @@ + + + + + + +#detailed-information-for-modules-and-topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #detailed-information-for-modules-and-topics.

      + diff --git a/0.0.12/html_split/_0023disclaimer.html b/0.0.12/html_split/_0023disclaimer.html new file mode 100644 index 0000000..e9658d6 --- /dev/null +++ b/0.0.12/html_split/_0023disclaimer.html @@ -0,0 +1,40 @@ + + + + + + +#disclaimer (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #disclaimer.

      + diff --git a/0.0.12/html_split/_0023error_002dhandling.html b/0.0.12/html_split/_0023error_002dhandling.html new file mode 100644 index 0000000..80cfb94 --- /dev/null +++ b/0.0.12/html_split/_0023error_002dhandling.html @@ -0,0 +1,40 @@ + + + + + + +#error-handling (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #error-handling.

      + diff --git a/0.0.12/html_split/_0023examples_002dof_002dcourse_002dcurricula.html b/0.0.12/html_split/_0023examples_002dof_002dcourse_002dcurricula.html new file mode 100644 index 0000000..99af091 --- /dev/null +++ b/0.0.12/html_split/_0023examples_002dof_002dcourse_002dcurricula.html @@ -0,0 +1,40 @@ + + + + + + +#examples-of-course-curricula (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #examples-of-course-curricula.

      + diff --git a/0.0.12/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html b/0.0.12/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html new file mode 100644 index 0000000..fc9b3eb --- /dev/null +++ b/0.0.12/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html @@ -0,0 +1,40 @@ + + + + + + +#external-i.e.-non-standard-libraries (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #external-i.e.-non-standard-libraries.

      + diff --git a/0.0.12/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html b/0.0.12/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html new file mode 100644 index 0000000..f915680 --- /dev/null +++ b/0.0.12/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-calling-static_assert-with-a-constant-expression (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #foundational-calling-static_assert-with-a-constant-expression.

      + diff --git a/0.0.12/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html b/0.0.12/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html new file mode 100644 index 0000000..88f62bc --- /dev/null +++ b/0.0.12/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-how-and-when-are-copies-made (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #foundational-how-and-when-are-copies-made.

      + diff --git a/0.0.12/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html b/0.0.12/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html new file mode 100644 index 0000000..95ab098 --- /dev/null +++ b/0.0.12/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-using-and-defining-functions-with-default-arguments (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #foundational-using-and-defining-functions-with-default-arguments.

      + diff --git a/0.0.12/html_split/_0023foundational_002dusing_002dudls.html b/0.0.12/html_split/_0023foundational_002dusing_002dudls.html new file mode 100644 index 0000000..2f7afdd --- /dev/null +++ b/0.0.12/html_split/_0023foundational_002dusing_002dudls.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-using-udls (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #foundational-using-udls.

      + diff --git a/0.0.12/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html b/0.0.12/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html new file mode 100644 index 0000000..708f2d3 --- /dev/null +++ b/0.0.12/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-writing-requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #foundational-writing-requires-expressions.

      + diff --git a/0.0.12/html_split/_0023functions.html b/0.0.12/html_split/_0023functions.html new file mode 100644 index 0000000..e304abe --- /dev/null +++ b/0.0.12/html_split/_0023functions.html @@ -0,0 +1,40 @@ + + + + + + +#functions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #functions.

      + diff --git a/0.0.12/html_split/_0023functions_002ddefault_002dargument.html b/0.0.12/html_split/_0023functions_002ddefault_002dargument.html new file mode 100644 index 0000000..ccfbcbb --- /dev/null +++ b/0.0.12/html_split/_0023functions_002ddefault_002dargument.html @@ -0,0 +1,40 @@ + + + + + + +#functions-default-argument (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #functions-default-argument.

      + diff --git a/0.0.12/html_split/_0023functions_002duser_002ddefined_002dliterals.html b/0.0.12/html_split/_0023functions_002duser_002ddefined_002dliterals.html new file mode 100644 index 0000000..b4f78b5 --- /dev/null +++ b/0.0.12/html_split/_0023functions_002duser_002ddefined_002dliterals.html @@ -0,0 +1,40 @@ + + + + + + +#functions-user-defined-literals (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #functions-user-defined-literals.

      + diff --git a/0.0.12/html_split/_0023generic_002dprogramming_002dtemplates.html b/0.0.12/html_split/_0023generic_002dprogramming_002dtemplates.html new file mode 100644 index 0000000..3b91080 --- /dev/null +++ b/0.0.12/html_split/_0023generic_002dprogramming_002dtemplates.html @@ -0,0 +1,40 @@ + + + + + + +#generic-programming-templates (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #generic-programming-templates.

      + diff --git a/0.0.12/html_split/_0023glossary.html b/0.0.12/html_split/_0023glossary.html new file mode 100644 index 0000000..9b46bf6 --- /dev/null +++ b/0.0.12/html_split/_0023glossary.html @@ -0,0 +1,40 @@ + + + + + + +#glossary (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #glossary.

      + diff --git a/0.0.12/html_split/_0023how_002dto_002dcontribute.html b/0.0.12/html_split/_0023how_002dto_002dcontribute.html new file mode 100644 index 0000000..d9cff4a --- /dev/null +++ b/0.0.12/html_split/_0023how_002dto_002dcontribute.html @@ -0,0 +1,40 @@ + + + + + + +#how-to-contribute (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #how-to-contribute.

      + diff --git a/0.0.12/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html b/0.0.12/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html new file mode 100644 index 0000000..def5140 --- /dev/null +++ b/0.0.12/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html @@ -0,0 +1,40 @@ + + + + + + +#inheritance-and-class-hierarchies (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #inheritance-and-class-hierarchies.

      + diff --git a/0.0.12/html_split/_0023license.html b/0.0.12/html_split/_0023license.html new file mode 100644 index 0000000..6b44dd1 --- /dev/null +++ b/0.0.12/html_split/_0023license.html @@ -0,0 +1,40 @@ + + + + + + +#license (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #license.

      + diff --git a/0.0.12/html_split/_0023main_002dadvanced_002drequirements.html b/0.0.12/html_split/_0023main_002dadvanced_002drequirements.html new file mode 100644 index 0000000..8214533 --- /dev/null +++ b/0.0.12/html_split/_0023main_002dadvanced_002drequirements.html @@ -0,0 +1,40 @@ + + + + + + +#main-advanced-requirements (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #main-advanced-requirements.

      + diff --git a/0.0.12/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html b/0.0.12/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html new file mode 100644 index 0000000..22b0484 --- /dev/null +++ b/0.0.12/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html @@ -0,0 +1,40 @@ + + + + + + +#main-contracts-and-static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #main-contracts-and-static_assert.

      + diff --git a/0.0.12/html_split/_0023main_002dimplementing.html b/0.0.12/html_split/_0023main_002dimplementing.html new file mode 100644 index 0000000..260008c --- /dev/null +++ b/0.0.12/html_split/_0023main_002dimplementing.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #main-implementing.

      + diff --git a/0.0.12/html_split/_0023main_002dimplementing_002dudls.html b/0.0.12/html_split/_0023main_002dimplementing_002dudls.html new file mode 100644 index 0000000..a41d194 --- /dev/null +++ b/0.0.12/html_split/_0023main_002dimplementing_002dudls.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing-udls (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #main-implementing-udls.

      + diff --git a/0.0.12/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html b/0.0.12/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html new file mode 100644 index 0000000..1e5a4d8 --- /dev/null +++ b/0.0.12/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing-user-defined-copy-operations (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #main-implementing-user-defined-copy-operations.

      + diff --git a/0.0.12/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html b/0.0.12/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html new file mode 100644 index 0000000..4502ed8 --- /dev/null +++ b/0.0.12/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html @@ -0,0 +1,40 @@ + + + + + + +#meta-error-handling-static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #meta-error-handling-static_assert.

      + diff --git a/0.0.12/html_split/_0023module_002dname_002drequires_002dexpressions.html b/0.0.12/html_split/_0023module_002dname_002drequires_002dexpressions.html new file mode 100644 index 0000000..56a9ebf --- /dev/null +++ b/0.0.12/html_split/_0023module_002dname_002drequires_002dexpressions.html @@ -0,0 +1,40 @@ + + + + + + +#module-name-requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #module-name-requires-expressions.

      + diff --git a/0.0.12/html_split/_0023motivation.html b/0.0.12/html_split/_0023motivation.html new file mode 100644 index 0000000..0141374 --- /dev/null +++ b/0.0.12/html_split/_0023motivation.html @@ -0,0 +1,40 @@ + + + + + + +#motivation (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #motivation.

      + diff --git a/0.0.12/html_split/_0023motivation_002d1.html b/0.0.12/html_split/_0023motivation_002d1.html new file mode 100644 index 0000000..7e4a69e --- /dev/null +++ b/0.0.12/html_split/_0023motivation_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #motivation-1.

      + diff --git a/0.0.12/html_split/_0023motivation_002d2.html b/0.0.12/html_split/_0023motivation_002d2.html new file mode 100644 index 0000000..7901fd3 --- /dev/null +++ b/0.0.12/html_split/_0023motivation_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #motivation-2.

      + diff --git a/0.0.12/html_split/_0023motivation_002d3.html b/0.0.12/html_split/_0023motivation_002d3.html new file mode 100644 index 0000000..ec720ad --- /dev/null +++ b/0.0.12/html_split/_0023motivation_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #motivation-3.

      + diff --git a/0.0.12/html_split/_0023motivation_002d4.html b/0.0.12/html_split/_0023motivation_002d4.html new file mode 100644 index 0000000..f53583a --- /dev/null +++ b/0.0.12/html_split/_0023motivation_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #motivation-4.

      + diff --git a/0.0.12/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html b/0.0.12/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html new file mode 100644 index 0000000..57e8b6e --- /dev/null +++ b/0.0.12/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html @@ -0,0 +1,40 @@ + + + + + + +#obtaining-this-document-the-most-recent-version-and-alternate-formats (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #obtaining-this-document-the-most-recent-version-and-alternate-formats.

      + diff --git a/0.0.12/html_split/_0023organization_002dof_002dthis_002ddocument.html b/0.0.12/html_split/_0023organization_002dof_002dthis_002ddocument.html new file mode 100644 index 0000000..e312b8e --- /dev/null +++ b/0.0.12/html_split/_0023organization_002dof_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#organization-of-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #organization-of-this-document.

      + diff --git a/0.0.12/html_split/_0023overview.html b/0.0.12/html_split/_0023overview.html new file mode 100644 index 0000000..b2d4bdc --- /dev/null +++ b/0.0.12/html_split/_0023overview.html @@ -0,0 +1,40 @@ + + + + + + +#overview (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #overview.

      + diff --git a/0.0.12/html_split/_0023overview_002d1.html b/0.0.12/html_split/_0023overview_002d1.html new file mode 100644 index 0000000..d551764 --- /dev/null +++ b/0.0.12/html_split/_0023overview_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#overview-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #overview-1.

      + diff --git a/0.0.12/html_split/_0023overview_002d2.html b/0.0.12/html_split/_0023overview_002d2.html new file mode 100644 index 0000000..5a34b05 --- /dev/null +++ b/0.0.12/html_split/_0023overview_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#overview-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #overview-2.

      + diff --git a/0.0.12/html_split/_0023overview_002d3.html b/0.0.12/html_split/_0023overview_002d3.html new file mode 100644 index 0000000..f230145 --- /dev/null +++ b/0.0.12/html_split/_0023overview_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#overview-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #overview-3.

      + diff --git a/0.0.12/html_split/_0023overview_002d4.html b/0.0.12/html_split/_0023overview_002d4.html new file mode 100644 index 0000000..2436b9a --- /dev/null +++ b/0.0.12/html_split/_0023overview_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#overview-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #overview-4.

      + diff --git a/0.0.12/html_split/_0023points_002dto_002dcover.html b/0.0.12/html_split/_0023points_002dto_002dcover.html new file mode 100644 index 0000000..424b02b --- /dev/null +++ b/0.0.12/html_split/_0023points_002dto_002dcover.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover.

      + diff --git a/0.0.12/html_split/_0023points_002dto_002dcover_002d1.html b/0.0.12/html_split/_0023points_002dto_002dcover_002d1.html new file mode 100644 index 0000000..2a554bb --- /dev/null +++ b/0.0.12/html_split/_0023points_002dto_002dcover_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover-1.

      + diff --git a/0.0.12/html_split/_0023points_002dto_002dcover_002d2.html b/0.0.12/html_split/_0023points_002dto_002dcover_002d2.html new file mode 100644 index 0000000..053a51a --- /dev/null +++ b/0.0.12/html_split/_0023points_002dto_002dcover_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover-2.

      + diff --git a/0.0.12/html_split/_0023points_002dto_002dcover_002d3.html b/0.0.12/html_split/_0023points_002dto_002dcover_002d3.html new file mode 100644 index 0000000..b0dad48 --- /dev/null +++ b/0.0.12/html_split/_0023points_002dto_002dcover_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover-3.

      + diff --git a/0.0.12/html_split/_0023points_002dto_002dcover_002d4.html b/0.0.12/html_split/_0023points_002dto_002dcover_002d4.html new file mode 100644 index 0000000..94de8fa --- /dev/null +++ b/0.0.12/html_split/_0023points_002dto_002dcover_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover-4.

      + diff --git a/0.0.12/html_split/_0023points_002dto_002dcover_002d5.html b/0.0.12/html_split/_0023points_002dto_002dcover_002d5.html new file mode 100644 index 0000000..39d1eaf --- /dev/null +++ b/0.0.12/html_split/_0023points_002dto_002dcover_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover-5.

      + diff --git a/0.0.12/html_split/_0023points_002dto_002dcover_002d6.html b/0.0.12/html_split/_0023points_002dto_002dcover_002d6.html new file mode 100644 index 0000000..92df88f --- /dev/null +++ b/0.0.12/html_split/_0023points_002dto_002dcover_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover-6.

      + diff --git a/0.0.12/html_split/_0023points_002dto_002dcover_002d7.html b/0.0.12/html_split/_0023points_002dto_002dcover_002d7.html new file mode 100644 index 0000000..6e6c895 --- /dev/null +++ b/0.0.12/html_split/_0023points_002dto_002dcover_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover-7.

      + diff --git a/0.0.12/html_split/_0023points_002dto_002dcover_002d8.html b/0.0.12/html_split/_0023points_002dto_002dcover_002d8.html new file mode 100644 index 0000000..b5574e1 --- /dev/null +++ b/0.0.12/html_split/_0023points_002dto_002dcover_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #points-to-cover-8.

      + diff --git a/0.0.12/html_split/_0023preprocessor.html b/0.0.12/html_split/_0023preprocessor.html new file mode 100644 index 0000000..a3bb5f6 --- /dev/null +++ b/0.0.12/html_split/_0023preprocessor.html @@ -0,0 +1,40 @@ + + + + + + +#preprocessor (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #preprocessor.

      + diff --git a/0.0.12/html_split/_0023references.html b/0.0.12/html_split/_0023references.html new file mode 100644 index 0000000..69fbd6b --- /dev/null +++ b/0.0.12/html_split/_0023references.html @@ -0,0 +1,40 @@ + + + + + + +#references (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #references.

      + diff --git a/0.0.12/html_split/_0023references_002don_002dlearning_002doutcomes.html b/0.0.12/html_split/_0023references_002don_002dlearning_002doutcomes.html new file mode 100644 index 0000000..d28fbbf --- /dev/null +++ b/0.0.12/html_split/_0023references_002don_002dlearning_002doutcomes.html @@ -0,0 +1,40 @@ + + + + + + +#references-on-learning-outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #references-on-learning-outcomes.

      + diff --git a/0.0.12/html_split/_0023software_002ddesign.html b/0.0.12/html_split/_0023software_002ddesign.html new file mode 100644 index 0000000..16f5f54 --- /dev/null +++ b/0.0.12/html_split/_0023software_002ddesign.html @@ -0,0 +1,40 @@ + + + + + + +#software-design (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #software-design.

      + diff --git a/0.0.12/html_split/_0023standard_002dlibrary.html b/0.0.12/html_split/_0023standard_002dlibrary.html new file mode 100644 index 0000000..71956d3 --- /dev/null +++ b/0.0.12/html_split/_0023standard_002dlibrary.html @@ -0,0 +1,40 @@ + + + + + + +#standard-library (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #standard-library.

      + diff --git a/0.0.12/html_split/_0023student_002doutcomes.html b/0.0.12/html_split/_0023student_002doutcomes.html new file mode 100644 index 0000000..df0035d --- /dev/null +++ b/0.0.12/html_split/_0023student_002doutcomes.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes.

      + diff --git a/0.0.12/html_split/_0023student_002doutcomes_002d1.html b/0.0.12/html_split/_0023student_002doutcomes_002d1.html new file mode 100644 index 0000000..e9344b7 --- /dev/null +++ b/0.0.12/html_split/_0023student_002doutcomes_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-1.

      + diff --git a/0.0.12/html_split/_0023student_002doutcomes_002d2.html b/0.0.12/html_split/_0023student_002doutcomes_002d2.html new file mode 100644 index 0000000..6fa7724 --- /dev/null +++ b/0.0.12/html_split/_0023student_002doutcomes_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-2.

      + diff --git a/0.0.12/html_split/_0023student_002doutcomes_002d3.html b/0.0.12/html_split/_0023student_002doutcomes_002d3.html new file mode 100644 index 0000000..195d9d2 --- /dev/null +++ b/0.0.12/html_split/_0023student_002doutcomes_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-3.

      + diff --git a/0.0.12/html_split/_0023student_002doutcomes_002d4.html b/0.0.12/html_split/_0023student_002doutcomes_002d4.html new file mode 100644 index 0000000..3e30430 --- /dev/null +++ b/0.0.12/html_split/_0023student_002doutcomes_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-4.

      + diff --git a/0.0.12/html_split/_0023student_002doutcomes_002d5.html b/0.0.12/html_split/_0023student_002doutcomes_002d5.html new file mode 100644 index 0000000..0a4a7da --- /dev/null +++ b/0.0.12/html_split/_0023student_002doutcomes_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-5.

      + diff --git a/0.0.12/html_split/_0023student_002doutcomes_002d6.html b/0.0.12/html_split/_0023student_002doutcomes_002d6.html new file mode 100644 index 0000000..c5c4ac0 --- /dev/null +++ b/0.0.12/html_split/_0023student_002doutcomes_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-6.

      + diff --git a/0.0.12/html_split/_0023student_002doutcomes_002d7.html b/0.0.12/html_split/_0023student_002doutcomes_002d7.html new file mode 100644 index 0000000..5233f94 --- /dev/null +++ b/0.0.12/html_split/_0023student_002doutcomes_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-7.

      + diff --git a/0.0.12/html_split/_0023student_002doutcomes_002d8.html b/0.0.12/html_split/_0023student_002doutcomes_002d8.html new file mode 100644 index 0000000..f19fd7f --- /dev/null +++ b/0.0.12/html_split/_0023student_002doutcomes_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-8.

      + diff --git a/0.0.12/html_split/_0023student_002doutcomes_002d9.html b/0.0.12/html_split/_0023student_002doutcomes_002d9.html new file mode 100644 index 0000000..735a21f --- /dev/null +++ b/0.0.12/html_split/_0023student_002doutcomes_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #student-outcomes-9.

      + diff --git a/0.0.12/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html b/0.0.12/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html new file mode 100644 index 0000000..4801178 --- /dev/null +++ b/0.0.12/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html @@ -0,0 +1,40 @@ + + + + + + +#summary-of-modules-and-topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #summary-of-modules-and-topics.

      + diff --git a/0.0.12/html_split/_0023testing_002dand_002ddebugging.html b/0.0.12/html_split/_0023testing_002dand_002ddebugging.html new file mode 100644 index 0000000..1ae096d --- /dev/null +++ b/0.0.12/html_split/_0023testing_002dand_002ddebugging.html @@ -0,0 +1,40 @@ + + + + + + +#testing-and-debugging (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #testing-and-debugging.

      + diff --git a/0.0.12/html_split/_0023tooling.html b/0.0.12/html_split/_0023tooling.html new file mode 100644 index 0000000..634a8dc --- /dev/null +++ b/0.0.12/html_split/_0023tooling.html @@ -0,0 +1,40 @@ + + + + + + +#tooling (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #tooling.

      + diff --git a/0.0.12/html_split/_0023topic_002dintroduction.html b/0.0.12/html_split/_0023topic_002dintroduction.html new file mode 100644 index 0000000..742d5d9 --- /dev/null +++ b/0.0.12/html_split/_0023topic_002dintroduction.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #topic-introduction.

      + diff --git a/0.0.12/html_split/_0023topic_002dintroduction_002d1.html b/0.0.12/html_split/_0023topic_002dintroduction_002d1.html new file mode 100644 index 0000000..a110644 --- /dev/null +++ b/0.0.12/html_split/_0023topic_002dintroduction_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #topic-introduction-1.

      + diff --git a/0.0.12/html_split/_0023topic_002dintroduction_002d2.html b/0.0.12/html_split/_0023topic_002dintroduction_002d2.html new file mode 100644 index 0000000..986bf37 --- /dev/null +++ b/0.0.12/html_split/_0023topic_002dintroduction_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #topic-introduction-2.

      + diff --git a/0.0.12/html_split/_0023topic_002dintroduction_002d3.html b/0.0.12/html_split/_0023topic_002dintroduction_002d3.html new file mode 100644 index 0000000..3d14fd9 --- /dev/null +++ b/0.0.12/html_split/_0023topic_002dintroduction_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #topic-introduction-3.

      + diff --git a/0.0.12/html_split/_0023topic_002dintroduction_002d4.html b/0.0.12/html_split/_0023topic_002dintroduction_002d4.html new file mode 100644 index 0000000..c73a236 --- /dev/null +++ b/0.0.12/html_split/_0023topic_002dintroduction_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #topic-introduction-4.

      + diff --git a/0.0.12/html_split/_0023use_002dof_002dthis_002ddocument.html b/0.0.12/html_split/_0023use_002dof_002dthis_002ddocument.html new file mode 100644 index 0000000..68d835d --- /dev/null +++ b/0.0.12/html_split/_0023use_002dof_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#use-of-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #use-of-this-document.

      + diff --git a/0.0.12/html_split/_0023user_002ddefined_002dtypes_002dclasses.html b/0.0.12/html_split/_0023user_002ddefined_002dtypes_002dclasses.html new file mode 100644 index 0000000..04771a9 --- /dev/null +++ b/0.0.12/html_split/_0023user_002ddefined_002dtypes_002dclasses.html @@ -0,0 +1,40 @@ + + + + + + +#user-defined-types-classes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #user-defined-types-classes.

      + diff --git a/0.0.12/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html b/0.0.12/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html new file mode 100644 index 0000000..f4b9435 --- /dev/null +++ b/0.0.12/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html @@ -0,0 +1,40 @@ + + + + + + +#working-group-documents-related-to-c-teaching-guidelines (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

      The node you are looking for is at #working-group-documents-related-to-c-teaching-guidelines.

      + diff --git a/0.0.12/html_split/index.html b/0.0.12/html_split/index.html new file mode 100644 index 0000000..da85671 --- /dev/null +++ b/0.0.12/html_split/index.html @@ -0,0 +1,240 @@ + + + + + +Top (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +

      Table of Contents

      + +
      + + +
      + + + +
      +

      Guidelines for Teaching C++

      + + + + + + + + + + + + + + + + + + +
      + + + + + + diff --git a/0.0.12/html_split/unknown_node.html b/0.0.12/html_split/unknown_node.html new file mode 100644 index 0000000..fa2561b --- /dev/null +++ b/0.0.12/html_split/unknown_node.html @@ -0,0 +1,818 @@ + + + + + +Guidelines for Teaching C++ + + + + + + + + + + + + + + + + +
      +

      +   [Contents]

      +
      +
      +

      8.1.5.1 Background/Required Knowledge

      +

      A student is able to: * identify special member functions +[C++ object model: +special member functions] +

      +

      It helps when a student is able to: * use move semantics +[C++ object model: move +semantics] * explain the rule of zero +[C++ object model: rule-of-zero] +* explain the rule of five [C++ +object model: rule-of-five] +

      +
      +

      +   [Contents]

      +
      +

      8.1.5.2 Student outcomes

      +

      A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

      +

      A student should be able to: * explain when they have to implement the +copy operations for their own type * Copy constructor * Copy assignment +operator * implement copy operations for their own types * +Optional: explain when copying with basic and strong exception +guarantees is useful +

      +
      +

      +   [Contents]

      +
      +

      8.1.5.3 Caveats

      +

      This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

      +
        +
      • Intricacies when implementing copy operations: +
          +
        • Examples of how not to write copy operations (e.g., C++03 +std::auto_ptr) +
        + +
      + +
      +

      +   [Contents]

      +
      +

      8.1.5.4 Points to cover

      +

      This section lists important details for each point. +

      +
        +
      • Copy constructors and copy assignment operators +
          +
        • How compiler generates default copy operations +
        • =default, =delete (No copy) +
        • How-to write your own copy operations +
        • Rule-of-five +
        • Copy assignment operators can be ref-qualified to avoid assigning into +temporary objects. +
        + +
      + +
      +

      +   [Contents]

      +
      +

      8.2.1 Overview

      +

      Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

      + + + + + +
      LevelObjectives
      FoundationalDefine and use requires-expressions to check satisfaction of +expressions by given parameters
      MainDefine and use requires-expressions to check properties of +expressions
      Advanced
      + +
      +

      +   [Contents]

      +
      +

      8.2.2 Motivation

      +

      Why is this important? Why do we want to learn/teach this +topic? +

      +

      Requires-expressions allow a developer to perform compile-time +evaluation on the validity of other expressions. These are fundamental +to the ability to write concepts. +[Compile-time programming: +concepts] +

      +
      +

      +   [Contents]

      +
      +

      8.3 Topic introduction

      +

      Very brief introduction to the topic. +

      +

      Requires-expressions are compile-time predicates which evaluate to true +when their specified set of expressions are all valid for a given set of +inputs. +

      + + + + + + +
      +

      +   [Contents]

      +
      +

      8.3.1.1 Background/Required Knowledge

      +

      A student is able to: +

      + + +

      It is helpful if: +

      +
        +
      • The student is aware that attempting to specialize the template with +types or values which do not match otherwise unstated assumptions will +cause errors within the template. +
      + +
      +

      +   [Contents]

      +
      +

      8.3.1.2 Student outcomes

      +

      A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

      +

      A student should be able to: +

      +
        +
      1. Write a simple-requirement to assert the validity of an expression +
      2. Write a type-requirement to check the existence of a type by its +identifier +
      3. Write a compound-requirement to test the resulting type of an expression +
      4. Write a nested-requirement to test the constexpr value of an operation, +as opposed to just the syntactic validity +
      5. Use a requires-expression within a concept, requires-clause, or +if constexpr condition +
      + +
      +

      +   [Contents]

      +
      +

      8.3.1.3 Caveats

      +

      This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

      +

      To require that expressions, which evaluate to a boolean value like +sizeof(t) == 4, evaluate to true a nested-requirement is +needed (e.g., requires sizeof(t) == 4;). Omitting the +requires results in a simple-requirement, which is satisfied +based purely on syntactic validity, not on the result of the operation. +

      +
      +

      +   [Contents]

      +
      +

      8.3.1.4 Points to cover

      +

      This section lists important details for each point. +

      +
        +
      • All requires-expression requirements terminate with a semicolon. +
      • simple-requirements are used to check that an expression is well-formed. +
      • nested-requirements are introduced with requires and primarily +used to check the result of an expression computable by the compiler, +including concepts or other requires-expressions. +
      • type-requirements are introduced with typename and used to verify +the existence of a type with a particular identifier. +
      • compound-requirements are enclosed in braces and can be used to check +the resulting type of an expression. +
      • Checks are performed by the compiler, not at run time. +
      • If covering usage of requires-expression with requires-clause, +[Compile-time programming: +requires clause] demonstrate requires requires and show how to +ever avoid writing it by using a concept. +[Compile-time programming: +concepts] +
      + +
      +

      +   [Contents]

      +
      +

      8.3.2.1 Background/Required Knowledge

      +
        +
      • All of the above. +
      • Knowledge of noexcept +
      + +

      A student is able to: +

      + + +
      +

      +   [Contents]

      +
      +

      8.3.2.2 Student outcomes

      +

      A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

      +

      A student should be able to: +

      +
        +
      1. Write compound-requirements which test the noexceptness of an +expression. +
      2. Use a concept as the target of a compound-requirement. +
      + +
      +

      +   [Contents]

      +
      +

      8.3.2.3 Caveats

      +

      This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

      +
      +

      +   [Contents]

      +
      +

      8.3.2.4 Points to cover

      +

      This section lists important details for each point. +

      +
        +
      • Compound-requirements allow the optional ability to test whether an +expression is marked as noexcept, by using a trailing +noexcept keyword. +
      + +
      struct S
      +{
      +    void foo() noexcept {}
      +    void bar() {}
      +};
      +
      +static_assert(requires(S s) { { s.foo() } noexcept; } ); // Succeeds. s.foo() is noexcept
      +static_assert(requires(S s) { { s.bar() } noexcept; } ); // Fails. s.bar() is not noexcept
      +
      +
        +
      • If the return-type-requirement of a compound-requirement is a concept, +that concept is given the resulting type as the first parameter, +followed by the specified parameters in the compound-requirement. +{ ++x } -> C<int> would substitute +C<decltype((++x)), int> and check that concept C is satisfied for +those parameters. +
      + +
      +

      +   [Contents]

      +
      +

      8.3.3 Advanced

      +

      See user-defined-literals. +

      +
      +

      +   [Contents]

      +
      +

      8.4.1 Overview

      +

      Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

      + + + + + +
      LevelObjectives
      Foundationalusing and understanding UDLs
      Mainimplementing your own UDLs
      AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
      + +
      +

      +   [Contents]

      +
      +

      8.4.2 Motivation

      +

      Why is this important? Why do we want to learn/teach this +topic? +

      +
        +
      • Allows clearer expression of intent in C++. +
      • std::string: "Hello, world!"s +
      • std::chrono: 3h + 10min + 5s +
      + +
      +

      +   [Contents]

      +
      +

      8.4.3 Topic introduction

      +

      Very brief introduction to the topic. +

      +
        +
      • Explain the existence of user defined literals. Example: +12min + 17s is terse, expressive and type safe. +
      + +
      +

      +   [Contents]

      +
      +

      8.4.4.1 Background/Required Knowledge

      +

      A student: * knows how to form numeric literals, e.g., 1.5f means +a float of value 1.5. * is familiar with the major C++ +types: * bool (Boolean type) * int (Integer type) * +double (Floating-point type) * std::string (Text type) * +std::vector (Collection type) * knows that namespaces exist, and +namespace std. * knows what using-declarations and +using-directives are. [C++ object +model: declarations] +

      +
      +

      +   [Contents]

      +
      +

      8.4.4.2 Student outcomes

      +

      A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

      +

      A student should be able to: +

      +
        +
      1. use using namespace std::string_literals[1]. +
      2. recognise UDLs in code that they are reading. +
      3. figure out which UDL definitions for a used type exist. +
      4. identify parts of the standard library that make use of UDLs. +
      5. prevent the dangers of temporaries created with "blah"s as well +as with std::string{"blah"}. +
      6. effectively selects the right set of namespaces in using-directives from +the sub-namespaces std::literals. +
      + +

      [1]: explain that it’s okay to use a using-directive to “activate” +UDLs. +

      +
      +

      +   [Contents]

      +
      +

      8.4.4.3 Caveats

      +

      This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

      +
        +
      • A student gets confused by the similarities and differences between +built-in suffixes and UDLs and between UDLs from different namespaces. +
      • A student “activates” two suffixes with the same signature from +different namespaces. +
      + +
      +

      +   [Contents]

      +
      +

      8.4.4.4 Points to cover

      +

      This section lists important details for each point. +

      +
      +

      +   [Contents]

      +
      +

      8.4.5.1 Background/Required Knowledge

      +
        +
      • All of the above. +
      + +
      +

      +   [Contents]

      +
      +

      8.4.5.2 Student outcomes

      +

      A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

      +

      A student should be able to: +

      +
        +
      1. write a UDL operator of their own. +
      2. separate unrelated UDLs into distinct namespaces. +
      + +
      +

      +   [Contents]

      +
      +

      8.4.5.3 Caveats

      +

      This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

      +

      No caveats at present. #### Points to cover +

      +

      This section lists important details for each point. +

      +

      No caveats at present. ### Advanced {#udl-advanced} +

      +

      These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

      +
      +

      +   [Contents]

      +
      +

      8.5.1 Overview

      +

      Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

      +

      Functions in C++ may be overloaded with different numbers and types of +parameters. It may be of value to specify default arguments for some +number of parameters, to allow a caller to avoid specifying arguments +that rarely change, or to enable expanding the set of parameters while +maintaining backward compatibility with existing callers. +

      + + + + + +
      LevelObjective
      FoundationalDefine and use functions with default arguments
      Main
      Advancedrefinement of default arguments through multiple declarations
      + +
      +

      +   [Contents]

      +
      +

      8.5.2 Motivation

      +

      Why is this important? Why do we want to learn/teach this +topic? +

      +

      Default arguments allow the omission of arguments with obvious or common +values. Also may be utilized to extend an existing function signature +without forcing changes to existing calling code. +

      +
      +

      +   [Contents]

      +
      +

      8.5.3 Topic introduction

      +

      Very brief introduction to the topic. +

      +

      Explain how default arguments work and how to define them. +

      +
      +

      +   [Contents]

      +
      +

      8.5.4.1 Background/Required Knowledge

      +

      A student is able to: +

      + + +
      +

      +   [Contents]

      +
      +

      8.5.4.2 Student outcomes

      +

      A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

      +

      A student should be able to: +

      +
        +
      1. Call to a function with a default argument with or without that argument +specified +
      2. Declare a function with a default argument, and omit the default in the +definition’s signature +
      3. Explain when the lifetime of a default argument begins and ends +
      + +
      +

      +   [Contents]

      +
      +

      8.5.4.3 Caveats

      +

      This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

      +
        +
      • When no forward-declaration exists, the definition serves as the +declaration +
      • When multiple declarations exist, only one may specify the default for +any particular parameter, but multiple declarations may specify the +defaults for different parameters. +
      • Additional default values may be specified for other parameters in +repeat declarations +
      • Calling an overloaded function with fewer arguments may be ambiguous +with regard to an overload with default arguments +
      + +
      +

      +   [Contents]

      +
      +

      8.5.4.4 Points to cover

      +

      This section lists important details for each point. +

      +
        +
      • Default value may only be specified once for each parameter among all +declarations +
      • Default values must start from the rightmost parameter and continue +leftward without gaps +
      • Considerations of when to use default arguments vs overload set +
      + +
      +

      +   [Contents]

      +
      +

      8.5.5.2 Student outcomes

      +

      A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

      +

      A student should be able to: +

      +
      +

      +   [Contents]

      +
      +

      8.5.5.3 Caveats

      +

      This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

      +
      +

      +   [Contents]

      +
      +

      8.5.5.4 Points to cover

      +

      This section lists important details for each point. +

      +
      +

      +   [Contents]

      +
      +

      8.5.6 Advanced

      +

      These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

      +

      Subsequent redeclarations of the same function may add default argument +values, which are then usable by callers. Though a single parameter +cannot be given a default argument twice in the same translation unit, +it is legal, though ill-advised, to give the same function different +default arguments in different translation units. +

      +

      See concepts. +

      +
      +

      +   [Contents]

      +
      +

      8.6.1 Overview

      +

      Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

      + + + + + +
      LevelObjectives
      FoundationalCalling static_assert with a constant expression
      MainUsing static_assert to detect contract violations and +improve error messages
      Advanced
      + +
      +

      +   [Contents]

      +
      +

      8.6.2 Motivation

      +

      Why is this important? Why do we want to learn/teach this +topic? +

      +

      static_assert allows the developer to enforce that conditions +which can be checked during compilation will force build errors when +violated. Additionally, they are the best mechanism by which a developer +can pass useful information to other developers regarding what violation +occurred or what must be done, instead. +

      +
      +

      +   [Contents]

      +
      +

      8.6.3 Topic introduction

      +

      Very brief introduction to the topic. +

      +

      static_assert is a compile-time evaluated function that asserts +the truth of a supplied predicate, issuing an optional user-supplied +error message if the predicate is false. +

      +
      +

      +   [Contents]

      +
      +

      8.6.4.1 Background/Required Knowledge

      +

      A student: +

      +
        +
      • Should be able to explain the difference between code evaluated at +compile-time and run-time +
      • Should be able to cite some examples of compile-time known information, +such as sizeof(T) +
      + +
      +

      +   [Contents]

      +
      +

      8.6.4.2 Student outcomes

      +

      A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

      +

      A student should be able to: +

      +
        +
      1. Assert the expected size of a structure using static_assert +
      + +
      +

      +   [Contents]

      +
      +

      8.6.4.3 Caveats

      +

      This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

      +
      +

      +   [Contents]

      +
      +

      8.6.4.4 Points to cover

      +

      This section lists important details for each point. +

      +
        +
      • X +
      • In addition to what is wrong, a good error message will inform the user +of how to correct it +
      + +
      +

      +   [Contents]

      +
      +

      8.6.5.1 Background/Required Knowledge

      +
        +
      • All of the above. +
      • General understanding of compile-time requirements +
      + +
      +

      +   [Contents]

      +
      +

      8.6.5.2 Student outcomes

      +

      A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

      +

      A student should be able to: +

      +
        +
      1. Utilize static_assert to verify preconditions of a meta-function +
      2. Utilize static_assert to verify the results of meta-functions for +known values +
      + +
      +

      +   [Contents]

      +
      +

      8.6.5.3 Caveats

      +

      This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

      +
      +

      +   [Contents]

      +
      +

      8.6.5.4 Points to cover

      +

      This section lists important details for each point. +

      +
        +
      • When writing a meta-function, use static_assert to test the +results +
      • Write static_assert calls at the scope of the code they are +guarding +
      + +
      template<typename T>
      +struct container {
      +    std::map<int, T> vals;
      +
      +    // Test location #1
      +    static_assert(
      +        std::is_default_constructible_v<T>,
      +        "container type T must be default constructible");i
      +
      +    void add(int key, T const& t) {
      +        // Test location #2
      +        static_assert(
      +            std::is_default_constructible_v<T>,
      +            "container type T must be default constructible");
      +        // std::map::operator[] requires default constructible type for 
      +        // the value. This will cause a build failure deep in the 
      +        // implementation of std::map, when T is not default constructible
      +        vals[key] = t;
      +    }
      +};
      +
      +struct NoDefCtor {
      +    NoDefCtor() = delete;
      +    NoDefCtor(double d) {}
      +};
      +
      +container<NoDefCtor> c; // If Test #1 was omitted, this would succeed
      +// This is ill-formed. Test #2 would catch this and provide a better 
      +// error message for the user
      +c.add(42, NoDefCtor(1.0)); 
      +
      +
      +

      +   [Contents]

      +
      +

      8.6.6 Advanced

      +

      These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

      + + + + + diff --git a/latest/index.html b/latest/index.html index 35f1efb..d8dd476 100644 --- a/latest/index.html +++ b/latest/index.html @@ -106,7 +106,7 @@

      Guidelines for Teaching C++

      -

      Version 0.0.11

      +

      Version 0.0.12

      SG20 (ISO C++ Study Group on Education)

      @@ -150,29 +150,29 @@

      Version 0.0.11

    8. 8.1.5 Main: Implementing user-defined copy operations
    9. 8.1.6 Advanced
    10. + +
      + +
      + +
      + +
      +

      Guidelines for Teaching C++

      + +

      Version 0.0.11

      + +

      SG20 (ISO C++ Study Group on Education)

      +
      +
      + +
      +
      +
      + +
      +
      + +
      +

      1 Obtaining This Document: The Most Recent Version and Alternate Formats

      +

      The most recent version of this document is available as an online HTML document at: https://cplusplus.github.io/SG20/latest/.

      +

      The version of the document that you are currently reading is available in the following formats:

      +
        +
      1. online (HTML) format as a single large HTML document: https://cplusplus.github.io/SG20/0.0.11/html

      2. +
      3. EPUB format: https://cplusplus.github.io/SG20/0.0.11/guidelines.epub

      4. +
      5. online (HTML) format, split across multiple HTML documents: https://cplusplus.github.io/SG20/0.0.11/html_split/ [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

      6. +
      +

      Older versions of this document are also available. In general version ver is available at https://cplusplus.github.io/SG20/ver/html. For example, version 0.1.0 (assuming that this version exists) would be available at https://cplusplus.github.io/SG20/0.1.0/html.

      +

      2 Disclaimer

      +

      This document is intended as a proof of concept to solicit feedback from others. This document is incomplete. This document likely has at least a few errors.

      +

      3 Context and Aim of This Guide

      +

      This document is intended to serve as a resource for instructors to assist in the preparation of courses on C++ in a variety of settings, including university, college, and industry environments. The main objectives of this document are as follows:

      +
        +
      • to provide guidelines for content to be covered by courses of various difficulty levels on C++ (e.g., topics and learning outcomes)
      • +
      • to note some common misunderstandings and problematic points that may be encountered when teaching particular topics
      • +
      • to suggest resources useful for teaching C++
      • +
      • to present examples of curriculum for specific courses
      • +
      +

      This document does not itself provide a curriculum for a single specific course, but is rather a set of guidelines that can be used to prepare curricula for a wide variety of courses that differ in focus and level of sophistication. (This said, however, some links to other documents with examples of curricula for specific courses may be included herein.) This document only intends to target the teaching of the most recently ratified version of the C++ standard. (This said, however, since older versions of this document are also available, these older versions may be of some use to those who need guidance in older versions of the standard, at least versions that do not predate C++20.)

      +

      4 Use of This Document

      +

      [NOTE: This document follows the same license model as the C++ Core Guidelines. The LICENSE document is taken verbatim from the C++ Core Guidelines.] This document is made available under a MIT-style license. In simple terms, this license permits copying, use, modification, and creation of derivative works. A copy of the license is included in the section LICENSE.

      +

      5 Contributing to This Document

      +

      Contributions to this document are welcome. If you would like to help with this project as a contributor, please read the section How to Contribute.

      +

      6 Organization of This Document

      +

      The various concepts (i.e., ideas) to potentially be covered are partitioned into modules. A module is very broad in scope and consists of numerous topics. [Note: Can I suggest that we use the term “area” or “unit” instead of “module”? I think that these other choices are better and also avoid any potential confusion over what is meant by “module” (i.e., C++ term versus plain English term).]

      +

      For each module, topics related to the module are identified. Then, for each topic, learning outcomes are specified. In order to address a wide variety of courses on C++, each topic is addressed at three proficiency levels. These proficiency levels allow each topic to be covered at more than one level of detail. This allows target audiences with different background and learning objectives to be accommodated. The three proficiency levels are as follows:

      +
        +
      • foundational. This level gives the learner the idea that a facility exists, what benefits it offers, and the basic ways of using it. [Note: Isn’t this just “novice”/“beginner”?]

      • +
      • main. This level shows mainstream uses and techniques. For abstraction and organizational mechanisms it also demonstrates how to build them. This level should also give the learner a basic (but not detailed) understanding of how a facility might be implemented so that the learner can have a first-order understanding of any costs involved. [Note: The term “main” is not very descriptive/helpful. Could I suggest using “intermediate”?]

      • +
      • advanced. This level gives information suitable for an expert. For most topics there is an expert level of knowledge that most programmers rarely need and techniques that require detailed understanding of language rules or library implementation.

      • +
      +

      The remainder of this document is organized as follows. The various topics are listed grouped by module. In cases where a topic might be classified into more than one module, the topic is listed under the module of most direct relevance. This is done in order to avoid duplication of content. (In the case that a topic is equally relevant to multiple modules, the decision of which to select is made by a proverbial coin toss.) The order in which modules and topics are presented is not meant to imply any order of coverage in a course. The order in which items are listed is essentially arbitrary.

      +

      7 Summary of Modules and Topics

      +

      In the sections that follow, the various modules and topics are presented. There is one section per module. For each module, a table listing the various topics in that module is provided. The ID for a topic is linked to the detailed coverage of that topic that comes later in the document. If a topic has any learning outcomes at a given proficiency level, this is indicated by a checkmark (“✔️”). If a topic has no learning outcomes (simply because there are not any, not because the information is missing), this is indicated by an em dash (“—”). In the case that the information for a topic is completely missing, a question mark (“?”) symbol is used.

      +

      [NOTE: These topics are taken mostly from the SG20 GitHub repository. They are not intended to be complete in any sense. In fact, by gathering together all topics in one place where they are easily viewed, it is hoped that missing and unbalanced items will be more obvious.]

      +

      7.1 Compilation Model

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Translation Units???
      [?]Headers???
      [?]Modules???
      [?]Name Mangling???
      [?]Phases of Translation???
      [?]Separate Compilation???
      [?]Linkage???
      +

      7.2 Preprocessor

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Preprocessor Metaprogramming???
      [?]Inclusion???
      [?]Macros???
      +

      7.3 Basics Types, Objects, Values, Expressions, Statements, and Control-Flow Constructs

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Constant Objects???
      [?]Declarations and Definitions???
      [?]Selection Constructs (e.g., if, ternary)???
      [?]Looping Constructs (e.g., for, while, etc.)???
      +

      7.4 Functions

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Calling Functions???
      [?]Parameter Passing (e.g., Passing By Value and Reference)???
      [func-args]Default Arguments✔️
      [?]Returning Multiple Values???
      [?]Overloading???
      [udl]User-Defined Literals✔️✔️
      +

      7.5 User-Defined Types (Classes)

      + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Special Member Functions???
      [?]Types???
      [?]Conversions???
      [?]Constructors and Destructors???
      [?]Move/Copy Constructors and Assignment Operators???
      [?]Member Functions???
      [?]Sum Types???
      [?]User-Defined Literals???
      [?]Special Member Functions???
      [?]Guidelines for Special Member Functions (e.g., Rule of Five, Rule of Zero)???
      [copy]Copy Semantics✔️✔️
      [?]Moving and Copying???
      [?]Lambdas???
      +

      7.6 Inheritance and Class Hierarchies

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Virtual Functions???
      [?]Run-Time Type Information???
      +

      7.7 Compile-Time Computation

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Constant Expressions and Constant Evaluation???
      [static-assert]static_assert✔️✔️
      +

      7.8 Generic Programming (Templates)

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Concepts???
      [?]SFINAE???
      [?]Template Metaprogramming???
      [?]Function Templates???
      [?]Requires Clauses???
      [req-expr]Requires Expressions✔️✔️
      +

      7.9 Error Handling

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Classes of Errors???
      [?]errno???
      [?]Error Codes???
      [?]Exception Handling???
      +

      7.10 Standard Library

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Input/Output (I/O)???
      [?]Containers, Iterators, and Algorithms???
      +

      7.11 External (i.e., Non Standard) Libraries

      + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Graphical User Interfaces???
      +

      7.12 Building

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Software Build Tools???
      [?]Strategies for Handling Build Problems???
      +

      7.13 Testing and Debugging

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Source-Level Debuggers???
      [?]Code Sanitizers???
      [?]Test Frameworks???
      [?]Debugging Strategies???
      +

      7.14 Tooling

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Compiler Toolchains???
      [?]IDEs???
      +

      7.15 Software Design

      + + + + + + + + + + + + + + + + + + + +
      IDUnitFoundationalMainAdvanced
      [?]Design by Contract???
      +

      8 Detailed Information for Modules and Topics

      +

      8.1 C++ object model: copy semantics

      +

      Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

      +

      8.1.1 Overview

      +

      Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

      + ++++ + + + + + + + + + + + + + + + + + + + + +
      LevelObjectives
      Foundationalunderstanding how and when are copies made
      Mainimplementing user-defined copy operations
      Advancedspecial cases: copy elision
      +

      8.1.2 Motivation

      +

      Why is this important? Why do we want to learn/teach this topic?

      +

      Copy semantics allows the user to define how objects of a class get replicated and interact on a value level.

      +

      8.1.3 Topic introduction

      +

      Very brief introduction to the topic.

      +

      Explains when and how objects are copied.

      +

      8.1.4 Foundational: How and when are copies made

      +

      8.1.4.1 Background/Required Knowledge

      +

      A student is able to: * explain what a C++ type is? [C++ object model: types] * explain what an object is? [C++ object model: objects], [C++ object model: constant objects] * define and understand class invariants?

      +

      It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain special member functions [C++ object model: special member functions]

      +

      8.1.4.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      +

      A student should be able to:

      +
        +
      1. explain what copy semantics accomplish
      2. +
      +
        +
      • establishing “equivalent” object state in another object
      • +
      +
        +
      1. explain difference between copying a reference and copying a value*
      2. +
      3. explain where copies are made
      4. +
      +

      * In other languages these differences are sometimes referred to as shallow and deep copy.

      +

      8.1.4.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      +
        +
      • Compiler-provided copy operations may result in ownership problems (e.g., char*). These ownership problems can generally be solved by using types whose copy operations have the appropriate semantics, e.g., std::string instead of char* to hold string values.
      • +
      +

      8.1.4.4 Points to cover

      +

      This section lists important details for each point.

      +
        +
      • Principle of copying +
          +
        • Copying of types, which follow the rule of zero
        • +
        • Copying of types, with user defined copy operations
        • +
        • Copying an object does not change the original
        • +
      • +
      • Practical applications +
          +
        • std::unique_ptr (has no copy)
        • +
        • Strings (copies the value)
        • +
      • +
      +

      8.1.5 Main: Implementing user-defined copy operations

      +

      8.1.5.1 Background/Required Knowledge

      +

      A student is able to: * identify special member functions [C++ object model: special member functions]

      +

      It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain the rule of zero [C++ object model: rule-of-zero] * explain the rule of five [C++ object model: rule-of-five]

      +

      8.1.5.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      +

      A student should be able to: * explain when they have to implement the copy operations for their own type * Copy constructor * Copy assignment operator * implement copy operations for their own types * Optional: explain when copying with basic and strong exception guarantees is useful

      +

      8.1.5.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      +
        +
      • Intricacies when implementing copy operations: +
          +
        • Examples of how not to write copy operations (e.g., C++03 std::auto_ptr)
        • +
      • +
      +

      8.1.5.4 Points to cover

      +

      This section lists important details for each point.

      +
        +
      • Copy constructors and copy assignment operators +
          +
        • How compiler generates default copy operations
        • +
        • =default, =delete (No copy)
        • +
        • How-to write your own copy operations
        • +
        • Rule-of-five
        • +
        • Copy assignment operators can be ref-qualified to avoid assigning into temporary objects.
        • +
      • +
      +

      8.1.6 Advanced

      +

      These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

      +

      When can copies be elided and when does the standard guarantee copy elision. References: * Abseil tip of the Week #166 * cppreference - Copy elision

      +

      8.2 Functions: user-defined literals

      +

      Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

      +

      8.2.1 Overview

      +

      Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

      + ++++ + + + + + + + + + + + + + + + + + + + + +
      LevelObjectives
      Foundationalusing and understanding UDLs
      Mainimplementing your own UDLs
      AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
      +

      8.2.2 Motivation

      +

      Why is this important? Why do we want to learn/teach this topic?

      +
        +
      • Allows clearer expression of intent in C++.
      • +
      • std::string: "Hello, world!"s
      • +
      • std::chrono: 3h + 10min + 5s
      • +
      +

      8.2.3 Topic introduction

      +

      Very brief introduction to the topic.

      +
        +
      • Explain the existence of user defined literals. Example: 12min + 17s is terse, expressive and type safe.
      • +
      +

      8.2.4 Foundational: Using UDLs

      +

      8.2.4.1 Background/Required Knowledge

      +

      A student: * knows how to form numeric literals, e.g., 1.5f means a float of value 1.5. * is familiar with the major C++ types: * bool (Boolean type) * int (Integer type) * double (Floating-point type) * std::string (Text type) * std::vector (Collection type) * knows that namespaces exist, and namespace std. * knows what using-declarations and using-directives are. [C++ object model: declarations]

      +

      8.2.4.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      +

      A student should be able to:

      +
        +
      1. use using namespace std::string_literals[1].
      2. +
      3. recognise UDLs in code that they are reading.
      4. +
      5. figure out which UDL definitions for a used type exist.
      6. +
      7. identify parts of the standard library that make use of UDLs.
      8. +
      9. prevent the dangers of temporaries created with "blah"s as well as with std::string{"blah"}.
      10. +
      11. effectively selects the right set of namespaces in using-directives from the sub-namespaces std::literals.
      12. +
      +

      [1]: explain that it’s okay to use a using-directive to “activate” UDLs.

      +

      8.2.4.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      +
        +
      • A student gets confused by the similarities and differences between built-in suffixes and UDLs and between UDLs from different namespaces.
      • +
      • A student “activates” two suffixes with the same signature from different namespaces.
      • +
      +

      8.2.4.4 Points to cover

      +

      This section lists important details for each point.

      +

      8.2.5 Main: implementing UDLs

      +

      8.2.5.1 Background/Required Knowledge

      +
        +
      • All of the above.
      • +
      +

      8.2.5.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      +

      A student should be able to:

      +
        +
      1. write a UDL operator of their own.
      2. +
      3. separate unrelated UDLs into distinct namespaces.
      4. +
      +

      8.2.5.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      +

      No caveats at present. #### Points to cover

      +

      This section lists important details for each point.

      +

      No caveats at present. ### Advanced {#udl-advanced}

      +

      These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

      +

      8.3 Functions: default argument

      +

      Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

      +

      8.3.1 Overview

      +

      Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

      +

      Functions in C++ may be overloaded with different numbers and types of parameters. It may be of value to specify default arguments for some number of parameters, to allow a caller to avoid specifying arguments that rarely change, or to enable expanding the set of parameters while maintaining backward compatibility with existing callers.

      + ++++ + + + + + + + + + + + + + + + + + + + + +
      LevelObjective
      FoundationalDefine and use functions with default arguments
      Main
      Advancedrefinement of default arguments through multiple declarations
      +

      8.3.2 Motivation

      +

      Why is this important? Why do we want to learn/teach this topic?

      +

      Default arguments allow the omission of arguments with obvious or common values. Also may be utilized to extend an existing function signature without forcing changes to existing calling code.

      +

      8.3.3 Topic introduction

      +

      Very brief introduction to the topic.

      +

      Explain how default arguments work and how to define them.

      +

      8.3.4 Foundational: Using and defining functions with default arguments

      +

      8.3.4.1 Background/Required Knowledge

      +

      A student is able to:

      + +

      8.3.4.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      +

      A student should be able to:

      +
        +
      1. Call to a function with a default argument with or without that argument specified
      2. +
      3. Declare a function with a default argument, and omit the default in the definition’s signature
      4. +
      5. Explain when the lifetime of a default argument begins and ends
      6. +
      +

      8.3.4.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      +
        +
      • When no forward-declaration exists, the definition serves as the declaration
      • +
      • When multiple declarations exist, only one may specify the default for any particular parameter, but multiple declarations may specify the defaults for different parameters.
      • +
      • Additional default values may be specified for other parameters in repeat declarations
      • +
      • Calling an overloaded function with fewer arguments may be ambiguous with regard to an overload with default arguments
      • +
      +

      8.3.4.4 Points to cover

      +

      This section lists important details for each point.

      +
        +
      • Default value may only be specified once for each parameter among all declarations
      • +
      • Default values must start from the rightmost parameter and continue leftward without gaps
      • +
      • Considerations of when to use default arguments vs overload set
      • +
      +

      8.3.5 Main: implementing *

      +

      8.3.5.1 Background/Required knowledge

      +
        +
      • All of the above.
      • +
      +

      8.3.5.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      +

      A student should be able to:

      +

      8.3.5.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      +

      8.3.5.4 Points to cover

      +

      This section lists important details for each point.

      +

      8.3.6 Advanced

      +

      These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

      +

      Subsequent redeclarations of the same function may add default argument values, which are then usable by callers. Though a single parameter cannot be given a default argument twice in the same translation unit, it is legal, though ill-advised, to give the same function different default arguments in different translation units.

      +

      8.4 Module name: Requires Expressions

      +

      Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

      +

      8.4.1 Overview

      +

      Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

      + ++++ + + + + + + + + + + + + + + + + + + + + +
      LevelObjectives
      FoundationalDefine and use requires-expressions to check satisfaction of expressions by given parameters
      MainDefine and use requires-expressions to check properties of expressions
      Advanced
      +

      8.4.2 Motivation

      +

      Why is this important? Why do we want to learn/teach this topic?

      +

      Requires-expressions allow a developer to perform compile-time evaluation on the validity of other expressions. These are fundamental to the ability to write concepts. [Compile-time programming: concepts]

      +

      8.5 Topic introduction

      +

      Very brief introduction to the topic.

      +

      Requires-expressions are compile-time predicates which evaluate to true when their specified set of expressions are all valid for a given set of inputs.

      +

      8.5.1 Foundational: Writing requires-expressions

      +

      8.5.1.1 Background/Required Knowledge

      +

      A student is able to:

      + +

      It is helpful if:

      +
        +
      • The student is aware that attempting to specialize the template with types or values which do not match otherwise unstated assumptions will cause errors within the template.
      • +
      +

      8.5.1.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      +

      A student should be able to:

      +
        +
      1. Write a simple-requirement to assert the validity of an expression
      2. +
      3. Write a type-requirement to check the existence of a type by its identifier
      4. +
      5. Write a compound-requirement to test the resulting type of an expression
      6. +
      7. Write a nested-requirement to test the constexpr value of an operation, as opposed to just the syntactic validity
      8. +
      9. Use a requires-expression within a concept, requires-clause, or if constexpr condition
      10. +
      +

      8.5.1.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      +

      To require that expressions, which evaluate to a boolean value like sizeof(t) == 4, evaluate to true a nested-requirement is needed (e.g., requires sizeof(t) == 4;). Omitting the requires results in a simple-requirement, which is satisfied based purely on syntactic validity, not on the result of the operation.

      +

      8.5.1.4 Points to cover

      +

      This section lists important details for each point.

      +
        +
      • All requires-expression requirements terminate with a semicolon.
      • +
      • simple-requirements are used to check that an expression is well-formed.
      • +
      • nested-requirements are introduced with requires and primarily used to check the result of an expression computable by the compiler, including concepts or other requires-expressions.
      • +
      • type-requirements are introduced with typename and used to verify the existence of a type with a particular identifier.
      • +
      • compound-requirements are enclosed in braces and can be used to check the resulting type of an expression.
      • +
      • Checks are performed by the compiler, not at run time.
      • +
      • If covering usage of requires-expression with requires-clause, [Compile-time programming: requires clause] demonstrate requires requires and show how to ever avoid writing it by using a concept. [Compile-time programming: concepts]
      • +
      +

      8.5.2 Main: Advanced requirements

      +

      8.5.2.1 Background/Required Knowledge

      +
        +
      • All of the above.
      • +
      • Knowledge of noexcept
      • +
      +

      A student is able to:

      + +

      8.5.2.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      +

      A student should be able to:

      +
        +
      1. Write compound-requirements which test the noexceptness of an expression.
      2. +
      3. Use a concept as the target of a compound-requirement.
      4. +
      +

      8.5.2.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      +

      8.5.2.4 Points to cover

      +

      This section lists important details for each point.

      +
        +
      • Compound-requirements allow the optional ability to test whether an expression is marked as noexcept, by using a trailing noexcept keyword.
      • +
      + +
        +
      • If the return-type-requirement of a compound-requirement is a concept, that concept is given the resulting type as the first parameter, followed by the specified parameters in the compound-requirement. { ++x } -> C<int> would substitute C<decltype((++x)), int> and check that concept C is satisfied for those parameters.
      • +
      +

      8.5.3 Advanced

      +

      8.6 Meta-error handling: static_assert

      +

      Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

      +

      8.6.1 Overview

      +

      Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

      + ++++ + + + + + + + + + + + + + + + + + + + + +
      LevelObjectives
      FoundationalCalling static_assert with a constant expression
      MainUsing static_assert to detect contract violations and improve error messages
      Advanced
      +

      8.6.2 Motivation

      +

      Why is this important? Why do we want to learn/teach this topic?

      +

      static_assert allows the developer to enforce that conditions which can be checked during compilation will force build errors when violated. Additionally, they are the best mechanism by which a developer can pass useful information to other developers regarding what violation occurred or what must be done, instead.

      +

      8.6.3 Topic introduction

      +

      Very brief introduction to the topic.

      +

      static_assert is a compile-time evaluated function that asserts the truth of a supplied predicate, issuing an optional user-supplied error message if the predicate is false.

      +

      8.6.4 Foundational: Calling static_assert with a constant expression

      +

      8.6.4.1 Background/Required Knowledge

      +

      A student:

      +
        +
      • Should be able to explain the difference between code evaluated at compile-time and run-time
      • +
      • Should be able to cite some examples of compile-time known information, such as sizeof(T)
      • +
      +

      8.6.4.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      +

      A student should be able to:

      +
        +
      1. Assert the expected size of a structure using static_assert
      2. +
      +

      8.6.4.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      +

      8.6.4.4 Points to cover

      +

      This section lists important details for each point.

      +
        +
      • X
      • +
      • In addition to what is wrong, a good error message will inform the user of how to correct it
      • +
      +

      8.6.5 Main: Contracts and static_assert

      +

      8.6.5.1 Background/Required Knowledge

      +
        +
      • All of the above.
      • +
      • General understanding of compile-time requirements
      • +
      +

      8.6.5.2 Student outcomes

      +

      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

      +

      A student should be able to:

      +
        +
      1. Utilize static_assert to verify preconditions of a meta-function
      2. +
      3. Utilize static_assert to verify the results of meta-functions for known values
      4. +
      +

      8.6.5.3 Caveats

      +

      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

      +

      8.6.5.4 Points to cover

      +

      This section lists important details for each point.

      +
        +
      • When writing a meta-function, use static_assert to test the results
      • +
      • Write static_assert calls at the scope of the code they are guarding
      • +
      + +

      8.6.6 Advanced

      +

      These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

      +

      9 Examples of Course Curricula

      +

      [NOTE: Anyone have any suggestions of items to add here?] The following are examples of curricula for course on C++: …

      +

      10 License

      +

      [NOTE: This license is copied verbatim from the C++ Core Guidelines.]

      +
      Copyright (c) Standard C++ Foundation and its contributors
      +
      +Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
      +perpetual license to copy, use, modify, and create derivative works from this
      +project for your personal or internal business use only. The above copyright
      +notice and this permission notice shall be included in all copies or
      +substantial portions of the project. This license does not grant permission
      +to use the trade names, trademarks, service marks, or product names of the
      +licensor, except as required for reasonable and customary use in describing
      +the origin of the project.
      +
      +Standard C++ Foundation reserves the right to accept contributions to the
      +project at its discretion.
      +
      +By contributing material to this project, you grant Standard C++ Foundation,
      +and those who receive the material directly or indirectly from Standard C++
      +Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
      +transferrable license to reproduce, prepare derivative works of, publicly
      +display, publicly perform, and distribute your contributed material and such
      +derivative works, and to sublicense any or all of the foregoing rights to third
      +parties for commercial or non-commercial use.  You also grant Standard C++
      +Foundation, and those who receive the material directly or indirectly from
      +Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
      +irrevocable license under your patent claims that directly read on your
      +contributed material to make, have made, use, offer to sell, sell and import
      +or otherwise dispose of the material. You warrant that your material is your
      +original work, or that you have the right to grant the above licenses.
      +
      +THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
      +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
      +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
      +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
      +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
      +OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
      +PROJECT.
      +
      +If you believe that anything in the project infringes your copyright, please
      +contact us at admin@isocpp.org with your contact information and a detailed
      +description of your intellectual property, including a specific URL where you
      +believe your intellectual property is being infringed.
      +
      +

      11 Contributors

      +
      Christopher Di Bella
      +Florian Sattler
      +Michael Adams
      +rwdougla
      +

      12 How To Contribute

      +

      Before attempting to contribute any content for consideration for inclusion in this document, please read the information below and and the referenced documents as appropriate.

      +

      All contributions to this project must be made in accordance with the license in section License. This teaching-guidelines document only offers guidance on teaching C++ as it is specified in the current version of the C++ standard. So, content should be presented relative to the most-recently ratified version of the standard. A detailed explanation of how to present the material for a topic is given in:

      +
        +
      • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.
      • +
      +

      Any potential contributors should ensure that they read this document. The following document may also be helpful in providing some general background on the modular approach to teaching followed herein:

      + +

      In order to prepare content, it is important to understand what learning outcomes are, and how to prepare good ones. Some information on learning outcomes can be found in the References section. The following document offers a concise introduction to learning outcomes:

      + +

      13 Glossary

      +

      Some possible terms to include in the glossary:

      +
        +
      • learning objective
      • +
      • learning outcome
      • +
      +

      14 References

      +

      14.1 References on Learning Outcomes

      + + +
        +
      • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — Standing Document for SG20: Guidelines for Teaching C++ to Beginners. https://wg21.link/p1389.

      • +
      • Christopher Di Bella. P1725R0 — Modular Topic Design. https://wg21.link/p1725.

      • +
      • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.

      • +
      • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study Group: C++ Education. https://wg21.link/p1231.

      • +
      • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 — Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0.

      • +
      +
      +
      + +
    11. -
    12. 8.2 Functions: user-defined literals
        +
      • 8.2 Module name: Requires Expressions
      • -
      • 8.3 Functions: default argument
          -
        • 8.3.1 Overview
        • -
        • 8.3.2 Motivation
        • -
        • 8.3.3 Topic introduction
        • -
        • 8.3.4 Foundational: Using and defining functions with default arguments
        • -
        • 8.3.5 Main: implementing *
        • -
        • 8.3.6 Advanced
        • +
        • 8.3 Topic introduction
        • -
        • 8.4 Module name: Requires Expressions
            -
          • 8.4.1 Overview
          • -
          • 8.4.2 Motivation
          • +
          • 8.4 Functions: user-defined literals
          • -
          • 8.5 Topic introduction
              -
            • 8.5.1 Foundational: Writing requires-expressions
            • -
            • 8.5.2 Main: Advanced requirements
            • -
            • 8.5.3 Advanced
            • +
            • 8.5 Functions: default argument
            • 8.6 Meta-error handling: static_assert
              • 8.6.1 Overview
              • @@ -203,9 +203,9 @@

                <

                The most recent version of this document is available as an online HTML document at: https://cplusplus.github.io/SG20/latest/.

                The version of the document that you are currently reading is available in the following formats:

                  -
                1. online (HTML) format as a single large HTML document: https://cplusplus.github.io/SG20/0.0.11/html

                2. -
                3. EPUB format: https://cplusplus.github.io/SG20/0.0.11/guidelines.epub

                4. -
                5. online (HTML) format, split across multiple HTML documents: https://cplusplus.github.io/SG20/0.0.11/html_split/ [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

                6. +
                7. online (HTML) format as a single large HTML document: https://cplusplus.github.io/SG20/0.0.12/html

                8. +
                9. EPUB format: https://cplusplus.github.io/SG20/0.0.12/guidelines.epub

                10. +
                11. online (HTML) format, split across multiple HTML documents: https://cplusplus.github.io/SG20/0.0.12/html_split/ [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

                Older versions of this document are also available. In general version ver is available at https://cplusplus.github.io/SG20/ver/html. For example, version 0.1.0 (assuming that this version exists) would be available at https://cplusplus.github.io/SG20/0.1.0/html.

                2 Disclaimer

                @@ -904,7 +904,7 @@

                8.1.3 Top

                Explains when and how objects are copied.

                8.1.4 Foundational: How and when are copies made

                8.1.4.1 Background/Required Knowledge

                -

                A student is able to: * explain what a C++ type is? [C++ object model: types] * explain what an object is? [C++ object model: objects], [C++ object model: constant objects] * define and understand class invariants?

                +

                A student is able to: * explain what a C++ type is? [C++ object model: types] * explain what an object is? [C++ object model: objects], [C++ object model: constant objects] * define and understand class invariants?

                It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain special member functions [C++ object model: special member functions]

                8.1.4.2 Student outcomes

                A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                @@ -970,12 +970,120 @@

                8.1.5.4 Po

                8.1.6 Advanced

                These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                When can copies be elided and when does the standard guarantee copy elision. References: * Abseil tip of the Week #166 * cppreference - Copy elision

                -

                8.2 Functions: user-defined literals

                +

                8.2 Module name: Requires Expressions

                Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                8.2.1 Overview

                Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                +++ + + + + + + + + + + + + + + + + + + + + +
                LevelObjectives
                FoundationalDefine and use requires-expressions to check satisfaction of expressions by given parameters
                MainDefine and use requires-expressions to check properties of expressions
                Advanced
                +

                8.2.2 Motivation

                +

                Why is this important? Why do we want to learn/teach this topic?

                +

                Requires-expressions allow a developer to perform compile-time evaluation on the validity of other expressions. These are fundamental to the ability to write concepts. [Compile-time programming: concepts]

                +

                8.3 Topic introduction

                +

                Very brief introduction to the topic.

                +

                Requires-expressions are compile-time predicates which evaluate to true when their specified set of expressions are all valid for a given set of inputs.

                +

                8.3.1 Foundational: Writing requires-expressions

                +

                8.3.1.1 Background/Required Knowledge

                +

                A student is able to:

                + +

                It is helpful if:

                +
                  +
                • The student is aware that attempting to specialize the template with types or values which do not match otherwise unstated assumptions will cause errors within the template.
                • +
                +

                8.3.1.2 Student outcomes

                +

                A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                +

                A student should be able to:

                +
                  +
                1. Write a simple-requirement to assert the validity of an expression
                2. +
                3. Write a type-requirement to check the existence of a type by its identifier
                4. +
                5. Write a compound-requirement to test the resulting type of an expression
                6. +
                7. Write a nested-requirement to test the constexpr value of an operation, as opposed to just the syntactic validity
                8. +
                9. Use a requires-expression within a concept, requires-clause, or if constexpr condition
                10. +
                +

                8.3.1.3 Caveats

                +

                This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                +

                To require that expressions, which evaluate to a boolean value like sizeof(t) == 4, evaluate to true a nested-requirement is needed (e.g., requires sizeof(t) == 4;). Omitting the requires results in a simple-requirement, which is satisfied based purely on syntactic validity, not on the result of the operation.

                +

                8.3.1.4 Points to cover

                +

                This section lists important details for each point.

                +
                  +
                • All requires-expression requirements terminate with a semicolon.
                • +
                • simple-requirements are used to check that an expression is well-formed.
                • +
                • nested-requirements are introduced with requires and primarily used to check the result of an expression computable by the compiler, including concepts or other requires-expressions.
                • +
                • type-requirements are introduced with typename and used to verify the existence of a type with a particular identifier.
                • +
                • compound-requirements are enclosed in braces and can be used to check the resulting type of an expression.
                • +
                • Checks are performed by the compiler, not at run time.
                • +
                • If covering usage of requires-expression with requires-clause, [Compile-time programming: requires clause] demonstrate requires requires and show how to ever avoid writing it by using a concept. [Compile-time programming: concepts]
                • +
                +

                8.3.2 Main: Advanced requirements

                +

                8.3.2.1 Background/Required Knowledge

                +
                  +
                • All of the above.
                • +
                • Knowledge of noexcept
                • +
                +

                A student is able to:

                + +

                8.3.2.2 Student outcomes

                +

                A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                +

                A student should be able to:

                +
                  +
                1. Write compound-requirements which test the noexceptness of an expression.
                2. +
                3. Use a concept as the target of a compound-requirement.
                4. +
                +

                8.3.2.3 Caveats

                +

                This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                +

                8.3.2.4 Points to cover

                +

                This section lists important details for each point.

                +
                  +
                • Compound-requirements allow the optional ability to test whether an expression is marked as noexcept, by using a trailing noexcept keyword.
                • +
                + +
                  +
                • If the return-type-requirement of a compound-requirement is a concept, that concept is given the resulting type as the first parameter, followed by the specified parameters in the compound-requirement. { ++x } -> C<int> would substitute C<decltype((++x)), int> and check that concept C is satisfied for those parameters.
                • +
                +

                8.3.3 Advanced

                +

                See user-defined-literals.

                +

                8.4 Functions: user-defined literals

                +

                Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                +

                8.4.1 Overview

                +

                Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                + + @@ -1000,22 +1108,22 @@

                8.2.1 Overview

                -

                8.2.2 Motivation

                +

                8.4.2 Motivation

                Why is this important? Why do we want to learn/teach this topic?

                • Allows clearer expression of intent in C++.
                • std::string: "Hello, world!"s
                • std::chrono: 3h + 10min + 5s
                -

                8.2.3 Topic introduction

                +

                8.4.3 Topic introduction

                Very brief introduction to the topic.

                • Explain the existence of user defined literals. Example: 12min + 17s is terse, expressive and type safe.
                -

                8.2.4 Foundational: Using UDLs

                -

                8.2.4.1 Background/Required Knowledge

                -

                A student: * knows how to form numeric literals, e.g., 1.5f means a float of value 1.5. * is familiar with the major C++ types: * bool (Boolean type) * int (Integer type) * double (Floating-point type) * std::string (Text type) * std::vector (Collection type) * knows that namespaces exist, and namespace std. * knows what using-declarations and using-directives are. [C++ object model: declarations]

                -

                8.2.4.2 Student outcomes

                +

                8.4.4 Foundational: Using UDLs

                +

                8.4.4.1 Background/Required Knowledge

                +

                A student: * knows how to form numeric literals, e.g., 1.5f means a float of value 1.5. * is familiar with the major C++ types: * bool (Boolean type) * int (Integer type) * double (Floating-point type) * std::string (Text type) * std::vector (Collection type) * knows that namespaces exist, and namespace std. * knows what using-declarations and using-directives are. [C++ object model: declarations]

                +

                8.4.4.2 Student outcomes

                A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                A student should be able to:

                  @@ -1027,35 +1135,35 @@

                  8.2.4.2 S
                1. effectively selects the right set of namespaces in using-directives from the sub-namespaces std::literals.

                [1]: explain that it’s okay to use a using-directive to “activate” UDLs.

                -

                8.2.4.3 Caveats

                +

                8.4.4.3 Caveats

                This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                • A student gets confused by the similarities and differences between built-in suffixes and UDLs and between UDLs from different namespaces.
                • A student “activates” two suffixes with the same signature from different namespaces.
                -

                8.2.4.4 Points to cover

                +

                8.4.4.4 Points to cover

                This section lists important details for each point.

                -

                8.2.5 Main: implementing UDLs

                -

                8.2.5.1 Background/Required Knowledge

                +

                8.4.5 Main: implementing UDLs

                +

                8.4.5.1 Background/Required Knowledge

                • All of the above.
                -

                8.2.5.2 Student outcomes

                +

                8.4.5.2 Student outcomes

                A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                A student should be able to:

                1. write a UDL operator of their own.
                2. separate unrelated UDLs into distinct namespaces.
                -

                8.2.5.3 Caveats

                +

                8.4.5.3 Caveats

                This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                No caveats at present. #### Points to cover

                This section lists important details for each point.

                No caveats at present. ### Advanced {#udl-advanced}

                These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                -

                8.3 Functions: default argument

                +

                8.5 Functions: default argument

                Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                -

                8.3.1 Overview

                +

                8.5.1 Overview

                Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                Functions in C++ may be overloaded with different numbers and types of parameters. It may be of value to specify default arguments for some number of parameters, to allow a caller to avoid specifying arguments that rarely change, or to enable expanding the set of parameters while maintaining backward compatibility with existing callers.

                @@ -1084,22 +1192,22 @@

                8.3.1 Overview

                -

                8.3.2 Motivation

                +

                8.5.2 Motivation

                Why is this important? Why do we want to learn/teach this topic?

                Default arguments allow the omission of arguments with obvious or common values. Also may be utilized to extend an existing function signature without forcing changes to existing calling code.

                -

                8.3.3 Topic introduction

                +

                8.5.3 Topic introduction

                Very brief introduction to the topic.

                Explain how default arguments work and how to define them.

                -

                8.3.4 Foundational: Using and defining functions with default arguments

                -

                8.3.4.1 Background/Required Knowledge

                +

                8.5.4 Foundational: Using and defining functions with default arguments

                +

                8.5.4.1 Background/Required Knowledge

                A student is able to:

                -

                8.3.4.2 Student outcomes

                +

                8.5.4.2 Student outcomes

                A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                A student should be able to:

                  @@ -1107,7 +1215,7 @@

                  8.3.4.2 S
                1. Declare a function with a default argument, and omit the default in the definition’s signature
                2. Explain when the lifetime of a default argument begins and ends
                -

                8.3.4.3 Caveats

                +

                8.5.4.3 Caveats

                This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                • When no forward-declaration exists, the definition serves as the declaration
                • @@ -1115,135 +1223,29 @@

                  8.3.4.3 CaveatsAdditional default values may be specified for other parameters in repeat declarations
                • Calling an overloaded function with fewer arguments may be ambiguous with regard to an overload with default arguments
                -

                8.3.4.4 Points to cover

                +

                8.5.4.4 Points to cover

                This section lists important details for each point.

                • Default value may only be specified once for each parameter among all declarations
                • Default values must start from the rightmost parameter and continue leftward without gaps
                • Considerations of when to use default arguments vs overload set
                -

                8.3.5 Main: implementing *

                -

                8.3.5.1 Background/Required knowledge

                +

                8.5.5 Main: implementing *

                +

                8.5.5.1 Background/Required knowledge

                • All of the above.
                -

                8.3.5.2 Student outcomes

                +

                8.5.5.2 Student outcomes

                A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                A student should be able to:

                -

                8.3.5.3 Caveats

                +

                8.5.5.3 Caveats

                This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                -

                8.3.5.4 Points to cover

                +

                8.5.5.4 Points to cover

                This section lists important details for each point.

                -

                8.3.6 Advanced

                +

                8.5.6 Advanced

                These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                Subsequent redeclarations of the same function may add default argument values, which are then usable by callers. Though a single parameter cannot be given a default argument twice in the same translation unit, it is legal, though ill-advised, to give the same function different default arguments in different translation units.

                -

                8.4 Module name: Requires Expressions

                -

                Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                -

                8.4.1 Overview

                -

                Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                - ---- - - - - - - - - - - - - - - - - - - - - -
                LevelObjectives
                FoundationalDefine and use requires-expressions to check satisfaction of expressions by given parameters
                MainDefine and use requires-expressions to check properties of expressions
                Advanced
                -

                8.4.2 Motivation

                -

                Why is this important? Why do we want to learn/teach this topic?

                -

                Requires-expressions allow a developer to perform compile-time evaluation on the validity of other expressions. These are fundamental to the ability to write concepts. [Compile-time programming: concepts]

                -

                8.5 Topic introduction

                -

                Very brief introduction to the topic.

                -

                Requires-expressions are compile-time predicates which evaluate to true when their specified set of expressions are all valid for a given set of inputs.

                -

                8.5.1 Foundational: Writing requires-expressions

                -

                8.5.1.1 Background/Required Knowledge

                -

                A student is able to:

                - -

                It is helpful if:

                -
                  -
                • The student is aware that attempting to specialize the template with types or values which do not match otherwise unstated assumptions will cause errors within the template.
                • -
                -

                8.5.1.2 Student outcomes

                -

                A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                -

                A student should be able to:

                -
                  -
                1. Write a simple-requirement to assert the validity of an expression
                2. -
                3. Write a type-requirement to check the existence of a type by its identifier
                4. -
                5. Write a compound-requirement to test the resulting type of an expression
                6. -
                7. Write a nested-requirement to test the constexpr value of an operation, as opposed to just the syntactic validity
                8. -
                9. Use a requires-expression within a concept, requires-clause, or if constexpr condition
                10. -
                -

                8.5.1.3 Caveats

                -

                This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                -

                To require that expressions, which evaluate to a boolean value like sizeof(t) == 4, evaluate to true a nested-requirement is needed (e.g., requires sizeof(t) == 4;). Omitting the requires results in a simple-requirement, which is satisfied based purely on syntactic validity, not on the result of the operation.

                -

                8.5.1.4 Points to cover

                -

                This section lists important details for each point.

                -
                  -
                • All requires-expression requirements terminate with a semicolon.
                • -
                • simple-requirements are used to check that an expression is well-formed.
                • -
                • nested-requirements are introduced with requires and primarily used to check the result of an expression computable by the compiler, including concepts or other requires-expressions.
                • -
                • type-requirements are introduced with typename and used to verify the existence of a type with a particular identifier.
                • -
                • compound-requirements are enclosed in braces and can be used to check the resulting type of an expression.
                • -
                • Checks are performed by the compiler, not at run time.
                • -
                • If covering usage of requires-expression with requires-clause, [Compile-time programming: requires clause] demonstrate requires requires and show how to ever avoid writing it by using a concept. [Compile-time programming: concepts]
                • -
                -

                8.5.2 Main: Advanced requirements

                -

                8.5.2.1 Background/Required Knowledge

                -
                  -
                • All of the above.
                • -
                • Knowledge of noexcept
                • -
                -

                A student is able to:

                - -

                8.5.2.2 Student outcomes

                -

                A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                -

                A student should be able to:

                -
                  -
                1. Write compound-requirements which test the noexceptness of an expression.
                2. -
                3. Use a concept as the target of a compound-requirement.
                4. -
                -

                8.5.2.3 Caveats

                -

                This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                -

                8.5.2.4 Points to cover

                -

                This section lists important details for each point.

                -
                  -
                • Compound-requirements allow the optional ability to test whether an expression is marked as noexcept, by using a trailing noexcept keyword.
                • -
                - -
                  -
                • If the return-type-requirement of a compound-requirement is a concept, that concept is given the resulting type as the first parameter, followed by the specified parameters in the compound-requirement. { ++x } -> C<int> would substitute C<decltype((++x)), int> and check that concept C is satisfied for those parameters.
                • -
                -

                8.5.3 Advanced

                +

                See concepts.

                8.6 Meta-error handling: static_assert

                Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                8.6.1 Overview

                From 06d53c27d5e19bcfa997e78a199a72764f8bba95 Mon Sep 17 00:00:00 2001 From: vulder Date: Tue, 2 Nov 2021 22:34:04 +0000 Subject: [PATCH 14/21] deploy: 97d46d963d1305e739d8d7b16e3c6a262c927d28 --- 0.0.13/guidelines.epub | Bin 0 -> 31279 bytes 0.0.13/html/images/cpp_logo.png | Bin 0 -> 23613 bytes 0.0.13/html/index.html | 1450 +++++++++++++++++ 0.0.13/html_split/Advanced.html | 60 + .../Background_002fRequired-Knowledge.html | 64 + .../Background_002fRequired-knowledge.html | 54 + ...ments-and-Control_002dFlow-Constructs.html | 60 + 0.0.13/html_split/Building.html | 57 + ...002b_002b-object-model-copy-semantics.html | 69 + 0.0.13/html_split/Caveats.html | 62 + 0.0.13/html_split/Compilation-Model.html | 62 + .../Compile_002dTime-Computation.html | 57 + .../Context-and-Aim-of-This-Guide.html | 76 + .../Contributing-to-This-Document.html | 55 + 0.0.13/html_split/Contributors.html | 57 + ...ed-Information-for-Modules-and-Topics.html | 67 + 0.0.13/html_split/Disclaimer.html | 55 + 0.0.13/html_split/Error-Handling.html | 59 + .../Examples-of-Course-Curricula.html | 53 + .../External-ie-Non-Standard-Libraries.html | 56 + ...005fassert-with-a-constant-expression.html | 62 + ...dational-How-and-when-are-copies-made.html | 63 + .../html_split/Foundational-Using-UDLs.html | 61 + ...ning-functions-with-default-arguments.html | 62 + ...onal-Writing-requires_002dexpressions.html | 60 + .../Functions-default-argument.html | 67 + .../Functions-user_002ddefined-literals.html | 65 + 0.0.13/html_split/Functions.html | 61 + .../Generic-Programming-Templates.html | 61 + 0.0.13/html_split/Glossary.html | 58 + 0.0.13/html_split/How-To-Contribute.html | 89 + .../Inheritance-and-Class-Hierarchies.html | 57 + 0.0.13/html_split/License.html | 100 ++ .../Main-Advanced-requirements.html | 60 + .../Main-Contracts-and-static_005fassert.html | 61 + ...ting-user_002ddefined-copy-operations.html | 62 + 0.0.13/html_split/Main-implementing-UDLs.html | 59 + .../html_split/Main-implementing-_002a.html | 62 + ..._002derror-handling-static_005fassert.html | 67 + .../Module-name-Requires-Expressions.html | 60 + 0.0.13/html_split/Motivation.html | 57 + ...-Recent-Version-and-Alternate-Formats.html | 78 + .../Organization-of-This-Document.html | 95 ++ 0.0.13/html_split/Overview.html | 61 + 0.0.13/html_split/Points-to-cover.html | 69 + 0.0.13/html_split/Preprocessor.html | 58 + .../References-on-Learning-Outcomes.html | 71 + 0.0.13/html_split/References.html | 59 + 0.0.13/html_split/Software-Design.html | 56 + 0.0.13/html_split/Standard-Library.html | 57 + 0.0.13/html_split/Student-outcomes.html | 73 + .../Summary-of-Modules-and-Topics.html | 106 ++ 0.0.13/html_split/Testing-and-Debugging.html | 59 + 0.0.13/html_split/Tooling.html | 57 + 0.0.13/html_split/Topic-introduction.html | 55 + 0.0.13/html_split/Use-of-This-Document.html | 58 + .../User_002dDefined-Types-Classes.html | 69 + ...ed-to-C_002b_002b-Teaching-Guidelines.html | 69 + 0.0.13/html_split/_0023advanced.html | 40 + 0.0.13/html_split/_0023advanced_002d1.html | 40 + 0.0.13/html_split/_0023advanced_002d2.html | 40 + 0.0.13/html_split/_0023advanced_002d3.html | 40 + ..._0023backgroundrequired_002dknowledge.html | 40 + ...ackgroundrequired_002dknowledge_002d1.html | 40 + ...ackgroundrequired_002dknowledge_002d2.html | 40 + ...ackgroundrequired_002dknowledge_002d3.html | 40 + ...ackgroundrequired_002dknowledge_002d4.html | 40 + ...ackgroundrequired_002dknowledge_002d5.html | 40 + ...ackgroundrequired_002dknowledge_002d6.html | 40 + ...ackgroundrequired_002dknowledge_002d7.html | 40 + ...ackgroundrequired_002dknowledge_002d8.html | 40 + ...ackgroundrequired_002dknowledge_002d9.html | 40 + ...d_002dcontrol_002dflow_002dconstructs.html | 40 + 0.0.13/html_split/_0023building.html | 40 + ...ject_002dmodel_002dcopy_002dsemantics.html | 40 + 0.0.13/html_split/_0023caveats.html | 40 + 0.0.13/html_split/_0023caveats_002d1.html | 40 + 0.0.13/html_split/_0023caveats_002d2.html | 40 + 0.0.13/html_split/_0023caveats_002d3.html | 40 + 0.0.13/html_split/_0023caveats_002d4.html | 40 + 0.0.13/html_split/_0023caveats_002d5.html | 40 + 0.0.13/html_split/_0023caveats_002d6.html | 40 + 0.0.13/html_split/_0023caveats_002d7.html | 40 + 0.0.13/html_split/_0023caveats_002d8.html | 40 + 0.0.13/html_split/_0023caveats_002d9.html | 40 + .../_0023compilation_002dmodel.html | 40 + ..._0023compile_002dtime_002dcomputation.html | 40 + ...and_002daim_002dof_002dthis_002dguide.html | 40 + ...ributing_002dto_002dthis_002ddocument.html | 40 + 0.0.13/html_split/_0023contributors.html | 40 + ...02dfor_002dmodules_002dand_002dtopics.html | 40 + 0.0.13/html_split/_0023disclaimer.html | 40 + .../html_split/_0023error_002dhandling.html | 40 + ...mples_002dof_002dcourse_002dcurricula.html | 40 + ...2e_002dnon_002dstandard_002dlibraries.html | 40 + ...ith_002da_002dconstant_002dexpression.html | 40 + ..._002dwhen_002dare_002dcopies_002dmade.html | 40 + ...ns_002dwith_002ddefault_002darguments.html | 40 + .../_0023foundational_002dusing_002dudls.html | 40 + ...dwriting_002drequires_002dexpressions.html | 40 + 0.0.13/html_split/_0023functions.html | 40 + ...023functions_002ddefault_002dargument.html | 40 + ...ons_002duser_002ddefined_002dliterals.html | 40 + ...generic_002dprogramming_002dtemplates.html | 40 + 0.0.13/html_split/_0023glossary.html | 40 + .../_0023how_002dto_002dcontribute.html | 40 + ...nce_002dand_002dclass_002dhierarchies.html | 40 + 0.0.13/html_split/_0023license.html | 40 + ...023main_002dadvanced_002drequirements.html | 40 + ...ntracts_002dand_002dstatic_005fassert.html | 40 + .../_0023main_002dimplementing.html | 40 + .../_0023main_002dimplementing_002dudls.html | 40 + ...r_002ddefined_002dcopy_002doperations.html | 40 + ...or_002dhandling_002dstatic_005fassert.html | 40 + ...002dname_002drequires_002dexpressions.html | 40 + 0.0.13/html_split/_0023motivation.html | 40 + 0.0.13/html_split/_0023motivation_002d1.html | 40 + 0.0.13/html_split/_0023motivation_002d2.html | 40 + 0.0.13/html_split/_0023motivation_002d3.html | 40 + 0.0.13/html_split/_0023motivation_002d4.html | 40 + ...ion_002dand_002dalternate_002dformats.html | 40 + ...nization_002dof_002dthis_002ddocument.html | 40 + 0.0.13/html_split/_0023overview.html | 40 + 0.0.13/html_split/_0023overview_002d1.html | 40 + 0.0.13/html_split/_0023overview_002d2.html | 40 + 0.0.13/html_split/_0023overview_002d3.html | 40 + 0.0.13/html_split/_0023overview_002d4.html | 40 + .../_0023points_002dto_002dcover.html | 40 + .../_0023points_002dto_002dcover_002d1.html | 40 + .../_0023points_002dto_002dcover_002d2.html | 40 + .../_0023points_002dto_002dcover_002d3.html | 40 + .../_0023points_002dto_002dcover_002d4.html | 40 + .../_0023points_002dto_002dcover_002d5.html | 40 + .../_0023points_002dto_002dcover_002d6.html | 40 + .../_0023points_002dto_002dcover_002d7.html | 40 + .../_0023points_002dto_002dcover_002d8.html | 40 + 0.0.13/html_split/_0023preprocessor.html | 40 + 0.0.13/html_split/_0023references.html | 40 + ...nces_002don_002dlearning_002doutcomes.html | 40 + .../html_split/_0023software_002ddesign.html | 40 + .../html_split/_0023standard_002dlibrary.html | 40 + .../html_split/_0023student_002doutcomes.html | 40 + .../_0023student_002doutcomes_002d1.html | 40 + .../_0023student_002doutcomes_002d2.html | 40 + .../_0023student_002doutcomes_002d3.html | 40 + .../_0023student_002doutcomes_002d4.html | 40 + .../_0023student_002doutcomes_002d5.html | 40 + .../_0023student_002doutcomes_002d6.html | 40 + .../_0023student_002doutcomes_002d7.html | 40 + .../_0023student_002doutcomes_002d8.html | 40 + .../_0023student_002doutcomes_002d9.html | 40 + ...002dof_002dmodules_002dand_002dtopics.html | 40 + .../_0023testing_002dand_002ddebugging.html | 40 + 0.0.13/html_split/_0023tooling.html | 40 + .../_0023topic_002dintroduction.html | 40 + .../_0023topic_002dintroduction_002d1.html | 40 + .../_0023topic_002dintroduction_002d2.html | 40 + .../_0023topic_002dintroduction_002d3.html | 40 + .../_0023topic_002dintroduction_002d4.html | 40 + ..._0023use_002dof_002dthis_002ddocument.html | 40 + ...ser_002ddefined_002dtypes_002dclasses.html | 40 + ...dto_002dc_002dteaching_002dguidelines.html | 40 + 0.0.13/html_split/index.html | 240 +++ 0.0.13/html_split/unknown_node.html | 818 ++++++++++ latest/index.html | 44 +- 165 files changed, 10217 insertions(+), 22 deletions(-) create mode 100644 0.0.13/guidelines.epub create mode 100644 0.0.13/html/images/cpp_logo.png create mode 100644 0.0.13/html/index.html create mode 100644 0.0.13/html_split/Advanced.html create mode 100644 0.0.13/html_split/Background_002fRequired-Knowledge.html create mode 100644 0.0.13/html_split/Background_002fRequired-knowledge.html create mode 100644 0.0.13/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html create mode 100644 0.0.13/html_split/Building.html create mode 100644 0.0.13/html_split/C_002b_002b-object-model-copy-semantics.html create mode 100644 0.0.13/html_split/Caveats.html create mode 100644 0.0.13/html_split/Compilation-Model.html create mode 100644 0.0.13/html_split/Compile_002dTime-Computation.html create mode 100644 0.0.13/html_split/Context-and-Aim-of-This-Guide.html create mode 100644 0.0.13/html_split/Contributing-to-This-Document.html create mode 100644 0.0.13/html_split/Contributors.html create mode 100644 0.0.13/html_split/Detailed-Information-for-Modules-and-Topics.html create mode 100644 0.0.13/html_split/Disclaimer.html create mode 100644 0.0.13/html_split/Error-Handling.html create mode 100644 0.0.13/html_split/Examples-of-Course-Curricula.html create mode 100644 0.0.13/html_split/External-ie-Non-Standard-Libraries.html create mode 100644 0.0.13/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html create mode 100644 0.0.13/html_split/Foundational-How-and-when-are-copies-made.html create mode 100644 0.0.13/html_split/Foundational-Using-UDLs.html create mode 100644 0.0.13/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html create mode 100644 0.0.13/html_split/Foundational-Writing-requires_002dexpressions.html create mode 100644 0.0.13/html_split/Functions-default-argument.html create mode 100644 0.0.13/html_split/Functions-user_002ddefined-literals.html create mode 100644 0.0.13/html_split/Functions.html create mode 100644 0.0.13/html_split/Generic-Programming-Templates.html create mode 100644 0.0.13/html_split/Glossary.html create mode 100644 0.0.13/html_split/How-To-Contribute.html create mode 100644 0.0.13/html_split/Inheritance-and-Class-Hierarchies.html create mode 100644 0.0.13/html_split/License.html create mode 100644 0.0.13/html_split/Main-Advanced-requirements.html create mode 100644 0.0.13/html_split/Main-Contracts-and-static_005fassert.html create mode 100644 0.0.13/html_split/Main-Implementing-user_002ddefined-copy-operations.html create mode 100644 0.0.13/html_split/Main-implementing-UDLs.html create mode 100644 0.0.13/html_split/Main-implementing-_002a.html create mode 100644 0.0.13/html_split/Meta_002derror-handling-static_005fassert.html create mode 100644 0.0.13/html_split/Module-name-Requires-Expressions.html create mode 100644 0.0.13/html_split/Motivation.html create mode 100644 0.0.13/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html create mode 100644 0.0.13/html_split/Organization-of-This-Document.html create mode 100644 0.0.13/html_split/Overview.html create mode 100644 0.0.13/html_split/Points-to-cover.html create mode 100644 0.0.13/html_split/Preprocessor.html create mode 100644 0.0.13/html_split/References-on-Learning-Outcomes.html create mode 100644 0.0.13/html_split/References.html create mode 100644 0.0.13/html_split/Software-Design.html create mode 100644 0.0.13/html_split/Standard-Library.html create mode 100644 0.0.13/html_split/Student-outcomes.html create mode 100644 0.0.13/html_split/Summary-of-Modules-and-Topics.html create mode 100644 0.0.13/html_split/Testing-and-Debugging.html create mode 100644 0.0.13/html_split/Tooling.html create mode 100644 0.0.13/html_split/Topic-introduction.html create mode 100644 0.0.13/html_split/Use-of-This-Document.html create mode 100644 0.0.13/html_split/User_002dDefined-Types-Classes.html create mode 100644 0.0.13/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html create mode 100644 0.0.13/html_split/_0023advanced.html create mode 100644 0.0.13/html_split/_0023advanced_002d1.html create mode 100644 0.0.13/html_split/_0023advanced_002d2.html create mode 100644 0.0.13/html_split/_0023advanced_002d3.html create mode 100644 0.0.13/html_split/_0023backgroundrequired_002dknowledge.html create mode 100644 0.0.13/html_split/_0023backgroundrequired_002dknowledge_002d1.html create mode 100644 0.0.13/html_split/_0023backgroundrequired_002dknowledge_002d2.html create mode 100644 0.0.13/html_split/_0023backgroundrequired_002dknowledge_002d3.html create mode 100644 0.0.13/html_split/_0023backgroundrequired_002dknowledge_002d4.html create mode 100644 0.0.13/html_split/_0023backgroundrequired_002dknowledge_002d5.html create mode 100644 0.0.13/html_split/_0023backgroundrequired_002dknowledge_002d6.html create mode 100644 0.0.13/html_split/_0023backgroundrequired_002dknowledge_002d7.html create mode 100644 0.0.13/html_split/_0023backgroundrequired_002dknowledge_002d8.html create mode 100644 0.0.13/html_split/_0023backgroundrequired_002dknowledge_002d9.html create mode 100644 0.0.13/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html create mode 100644 0.0.13/html_split/_0023building.html create mode 100644 0.0.13/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html create mode 100644 0.0.13/html_split/_0023caveats.html create mode 100644 0.0.13/html_split/_0023caveats_002d1.html create mode 100644 0.0.13/html_split/_0023caveats_002d2.html create mode 100644 0.0.13/html_split/_0023caveats_002d3.html create mode 100644 0.0.13/html_split/_0023caveats_002d4.html create mode 100644 0.0.13/html_split/_0023caveats_002d5.html create mode 100644 0.0.13/html_split/_0023caveats_002d6.html create mode 100644 0.0.13/html_split/_0023caveats_002d7.html create mode 100644 0.0.13/html_split/_0023caveats_002d8.html create mode 100644 0.0.13/html_split/_0023caveats_002d9.html create mode 100644 0.0.13/html_split/_0023compilation_002dmodel.html create mode 100644 0.0.13/html_split/_0023compile_002dtime_002dcomputation.html create mode 100644 0.0.13/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html create mode 100644 0.0.13/html_split/_0023contributing_002dto_002dthis_002ddocument.html create mode 100644 0.0.13/html_split/_0023contributors.html create mode 100644 0.0.13/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html create mode 100644 0.0.13/html_split/_0023disclaimer.html create mode 100644 0.0.13/html_split/_0023error_002dhandling.html create mode 100644 0.0.13/html_split/_0023examples_002dof_002dcourse_002dcurricula.html create mode 100644 0.0.13/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html create mode 100644 0.0.13/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html create mode 100644 0.0.13/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html create mode 100644 0.0.13/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html create mode 100644 0.0.13/html_split/_0023foundational_002dusing_002dudls.html create mode 100644 0.0.13/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html create mode 100644 0.0.13/html_split/_0023functions.html create mode 100644 0.0.13/html_split/_0023functions_002ddefault_002dargument.html create mode 100644 0.0.13/html_split/_0023functions_002duser_002ddefined_002dliterals.html create mode 100644 0.0.13/html_split/_0023generic_002dprogramming_002dtemplates.html create mode 100644 0.0.13/html_split/_0023glossary.html create mode 100644 0.0.13/html_split/_0023how_002dto_002dcontribute.html create mode 100644 0.0.13/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html create mode 100644 0.0.13/html_split/_0023license.html create mode 100644 0.0.13/html_split/_0023main_002dadvanced_002drequirements.html create mode 100644 0.0.13/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html create mode 100644 0.0.13/html_split/_0023main_002dimplementing.html create mode 100644 0.0.13/html_split/_0023main_002dimplementing_002dudls.html create mode 100644 0.0.13/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html create mode 100644 0.0.13/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html create mode 100644 0.0.13/html_split/_0023module_002dname_002drequires_002dexpressions.html create mode 100644 0.0.13/html_split/_0023motivation.html create mode 100644 0.0.13/html_split/_0023motivation_002d1.html create mode 100644 0.0.13/html_split/_0023motivation_002d2.html create mode 100644 0.0.13/html_split/_0023motivation_002d3.html create mode 100644 0.0.13/html_split/_0023motivation_002d4.html create mode 100644 0.0.13/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html create mode 100644 0.0.13/html_split/_0023organization_002dof_002dthis_002ddocument.html create mode 100644 0.0.13/html_split/_0023overview.html create mode 100644 0.0.13/html_split/_0023overview_002d1.html create mode 100644 0.0.13/html_split/_0023overview_002d2.html create mode 100644 0.0.13/html_split/_0023overview_002d3.html create mode 100644 0.0.13/html_split/_0023overview_002d4.html create mode 100644 0.0.13/html_split/_0023points_002dto_002dcover.html create mode 100644 0.0.13/html_split/_0023points_002dto_002dcover_002d1.html create mode 100644 0.0.13/html_split/_0023points_002dto_002dcover_002d2.html create mode 100644 0.0.13/html_split/_0023points_002dto_002dcover_002d3.html create mode 100644 0.0.13/html_split/_0023points_002dto_002dcover_002d4.html create mode 100644 0.0.13/html_split/_0023points_002dto_002dcover_002d5.html create mode 100644 0.0.13/html_split/_0023points_002dto_002dcover_002d6.html create mode 100644 0.0.13/html_split/_0023points_002dto_002dcover_002d7.html create mode 100644 0.0.13/html_split/_0023points_002dto_002dcover_002d8.html create mode 100644 0.0.13/html_split/_0023preprocessor.html create mode 100644 0.0.13/html_split/_0023references.html create mode 100644 0.0.13/html_split/_0023references_002don_002dlearning_002doutcomes.html create mode 100644 0.0.13/html_split/_0023software_002ddesign.html create mode 100644 0.0.13/html_split/_0023standard_002dlibrary.html create mode 100644 0.0.13/html_split/_0023student_002doutcomes.html create mode 100644 0.0.13/html_split/_0023student_002doutcomes_002d1.html create mode 100644 0.0.13/html_split/_0023student_002doutcomes_002d2.html create mode 100644 0.0.13/html_split/_0023student_002doutcomes_002d3.html create mode 100644 0.0.13/html_split/_0023student_002doutcomes_002d4.html create mode 100644 0.0.13/html_split/_0023student_002doutcomes_002d5.html create mode 100644 0.0.13/html_split/_0023student_002doutcomes_002d6.html create mode 100644 0.0.13/html_split/_0023student_002doutcomes_002d7.html create mode 100644 0.0.13/html_split/_0023student_002doutcomes_002d8.html create mode 100644 0.0.13/html_split/_0023student_002doutcomes_002d9.html create mode 100644 0.0.13/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html create mode 100644 0.0.13/html_split/_0023testing_002dand_002ddebugging.html create mode 100644 0.0.13/html_split/_0023tooling.html create mode 100644 0.0.13/html_split/_0023topic_002dintroduction.html create mode 100644 0.0.13/html_split/_0023topic_002dintroduction_002d1.html create mode 100644 0.0.13/html_split/_0023topic_002dintroduction_002d2.html create mode 100644 0.0.13/html_split/_0023topic_002dintroduction_002d3.html create mode 100644 0.0.13/html_split/_0023topic_002dintroduction_002d4.html create mode 100644 0.0.13/html_split/_0023use_002dof_002dthis_002ddocument.html create mode 100644 0.0.13/html_split/_0023user_002ddefined_002dtypes_002dclasses.html create mode 100644 0.0.13/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html create mode 100644 0.0.13/html_split/index.html create mode 100644 0.0.13/html_split/unknown_node.html diff --git a/0.0.13/guidelines.epub b/0.0.13/guidelines.epub new file mode 100644 index 0000000000000000000000000000000000000000..61ad8ae1a173d51daebd1a7b40f705c3debbffc2 GIT binary patch literal 31279 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 a-=h=!V}I>m&79GIet-NWDLMS>>i+=l1UTXV literal 0 HcmV?d00001 diff --git a/0.0.13/html/images/cpp_logo.png b/0.0.13/html/images/cpp_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..780e8a32bdd384c1dbd0fc999b9ef9ed2e1bdad6 GIT binary patch literal 23613 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 literal 0 HcmV?d00001 diff --git a/0.0.13/html/index.html b/0.0.13/html/index.html new file mode 100644 index 0000000..ea3931d --- /dev/null +++ b/0.0.13/html/index.html @@ -0,0 +1,1450 @@ + + + + + + + Guidelines for Teaching C++ + + + + + + + + + + + + + + + + + + + + + Guidelines for Teaching C++ + + + + + + + +
                + +
                + +
                + +
                + +
                +

                Guidelines for Teaching C++

                + +

                Version 0.0.13

                + +

                SG20 (ISO C++ Study Group on Education)

                +
                +
                + +
                +
                +
                + +
                +
                + +
                +

                1 Obtaining This Document: The Most Recent Version and Alternate Formats

                +

                The most recent version of this document is available as an online HTML document at: https://cplusplus.github.io/SG20/latest/.

                +

                The version of the document that you are currently reading is available in the following formats:

                +
                  +
                1. online (HTML) format as a single large HTML document: https://cplusplus.github.io/SG20/0.0.13/html

                2. +
                3. EPUB format: https://cplusplus.github.io/SG20/0.0.13/guidelines.epub

                4. +
                5. online (HTML) format, split across multiple HTML documents: https://cplusplus.github.io/SG20/0.0.13/html_split/ [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

                6. +
                +

                Older versions of this document are also available. In general version ver is available at https://cplusplus.github.io/SG20/ver/html. For example, version 0.1.0 (assuming that this version exists) would be available at https://cplusplus.github.io/SG20/0.1.0/html.

                +

                2 Disclaimer

                +

                This document is intended as a proof of concept to solicit feedback from others. This document is incomplete. This document likely has at least a few errors.

                +

                3 Context and Aim of This Guide

                +

                This document is intended to serve as a resource for instructors to assist in the preparation of courses on C++ in a variety of settings, including university, college, and industry environments. The main objectives of this document are as follows:

                +
                  +
                • to provide guidelines for content to be covered by courses of various difficulty levels on C++ (e.g., topics and learning outcomes)
                • +
                • to note some common misunderstandings and problematic points that may be encountered when teaching particular topics
                • +
                • to suggest resources useful for teaching C++
                • +
                • to present examples of curriculum for specific courses
                • +
                +

                This document does not itself provide a curriculum for a single specific course, but is rather a set of guidelines that can be used to prepare curricula for a wide variety of courses that differ in focus and level of sophistication. (This said, however, some links to other documents with examples of curricula for specific courses may be included herein.) This document only intends to target the teaching of the most recently ratified version of the C++ standard. (This said, however, since older versions of this document are also available, these older versions may be of some use to those who need guidance in older versions of the standard, at least versions that do not predate C++20.)

                +

                4 Use of This Document

                +

                [NOTE: This document follows the same license model as the C++ Core Guidelines. The LICENSE document is taken verbatim from the C++ Core Guidelines.] This document is made available under a MIT-style license. In simple terms, this license permits copying, use, modification, and creation of derivative works. A copy of the license is included in the section LICENSE.

                +

                5 Contributing to This Document

                +

                Contributions to this document are welcome. If you would like to help with this project as a contributor, please read the section How to Contribute.

                +

                6 Organization of This Document

                +

                The various concepts (i.e., ideas) to potentially be covered are partitioned into modules. A module is very broad in scope and consists of numerous topics.

                +

                For each module, topics related to the module are identified. Then, for each topic, learning outcomes are specified. In order to address a wide variety of courses on C++, each topic is addressed at three proficiency levels. These proficiency levels allow each topic to be covered at more than one level of detail. This allows target audiences with different background and learning objectives to be accommodated. The three proficiency levels are as follows:

                +
                  +
                • foundational: This level gives the learner the idea that a facility exists, what benefits it offers, and the basic ways of using it.

                • +
                • main: This level shows mainstream uses and techniques. For abstraction and organizational mechanisms it also demonstrates how to build them. This level should also give the learner a basic (but not detailed) understanding of how a facility might be implemented so that the learner can have a first-order understanding of any costs involved.

                • +
                • advanced: This level gives information suitable for an expert. For most topics there is an expert level of knowledge that most programmers rarely need and techniques that require detailed understanding of language rules or library implementation.

                • +
                +

                The remainder of this document is organized as follows. The various topics are listed grouped by module. In cases where a topic might be classified into more than one module, the topic is listed under the module of most direct relevance. This is done in order to avoid duplication of content. (In the case that a topic is equally relevant to multiple modules, the decision of which to select is made by a proverbial coin toss.) The order in which modules and topics are presented is not meant to imply any order of coverage in a course. The order in which items are listed is essentially arbitrary.

                +

                7 Summary of Modules and Topics

                +

                In the sections that follow, the various modules and topics are presented. There is one section per module. For each module, a table listing the various topics in that module is provided. The ID for a topic is linked to the detailed coverage of that topic that comes later in the document. If a topic has any learning outcomes at a given proficiency level, this is indicated by a checkmark (“✔️”). If a topic has no learning outcomes (simply because there are not any, not because the information is missing), this is indicated by an em dash (“—”). In the case that the information for a topic is completely missing, a question mark (“?”) symbol is used.

                +

                [NOTE: These topics are taken mostly from the SG20 GitHub repository. They are not intended to be complete in any sense. In fact, by gathering together all topics in one place where they are easily viewed, it is hoped that missing and unbalanced items will be more obvious.]

                +

                7.1 Compilation Model

                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                IDUnitFoundationalMainAdvanced
                [?]Translation Units???
                [?]Headers???
                [?]Modules???
                [?]Name Mangling???
                [?]Phases of Translation???
                [?]Separate Compilation???
                [?]Linkage???
                +

                7.2 Preprocessor

                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                IDUnitFoundationalMainAdvanced
                [?]Preprocessor Metaprogramming???
                [?]Inclusion???
                [?]Macros???
                +

                7.3 Basics Types, Objects, Values, Expressions, Statements, and Control-Flow Constructs

                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                IDUnitFoundationalMainAdvanced
                [?]Constant Objects???
                [?]Declarations and Definitions???
                [?]Selection Constructs (e.g., if, ternary)???
                [?]Looping Constructs (e.g., for, while, etc.)???
                +

                7.4 Functions

                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                IDUnitFoundationalMainAdvanced
                [?]Calling Functions???
                [?]Parameter Passing (e.g., Passing By Value and Reference)???
                [func-args]Default Arguments✔️
                [?]Returning Multiple Values???
                [?]Overloading???
                [udl]User-Defined Literals✔️✔️
                +

                7.5 User-Defined Types (Classes)

                + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                IDUnitFoundationalMainAdvanced
                [?]Special Member Functions???
                [?]Types???
                [?]Conversions???
                [?]Constructors and Destructors???
                [?]Move/Copy Constructors and Assignment Operators???
                [?]Member Functions???
                [?]Sum Types???
                [?]User-Defined Literals???
                [?]Special Member Functions???
                [?]Guidelines for Special Member Functions (e.g., Rule of Five, Rule of Zero)???
                [copy]Copy Semantics✔️✔️
                [?]Moving and Copying???
                [?]Lambdas???
                +

                7.6 Inheritance and Class Hierarchies

                + + + + + + + + + + + + + + + + + + + + + + + + + + +
                IDUnitFoundationalMainAdvanced
                [?]Virtual Functions???
                [?]Run-Time Type Information???
                +

                7.7 Compile-Time Computation

                + + + + + + + + + + + + + + + + + + + + + + + + + + +
                IDUnitFoundationalMainAdvanced
                [?]Constant Expressions and Constant Evaluation???
                [static-assert]static_assert✔️✔️
                +

                7.8 Generic Programming (Templates)

                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                IDUnitFoundationalMainAdvanced
                [?]Concepts???
                [?]SFINAE???
                [?]Template Metaprogramming???
                [?]Function Templates???
                [?]Requires Clauses???
                [req-expr]Requires Expressions✔️✔️
                +

                7.9 Error Handling

                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                IDUnitFoundationalMainAdvanced
                [?]Classes of Errors???
                [?]errno???
                [?]Error Codes???
                [?]Exception Handling???
                +

                7.10 Standard Library

                + + + + + + + + + + + + + + + + + + + + + + + + + + +
                IDUnitFoundationalMainAdvanced
                [?]Input/Output (I/O)???
                [?]Containers, Iterators, and Algorithms???
                +

                7.11 External (i.e., Non Standard) Libraries

                + + + + + + + + + + + + + + + + + + + +
                IDUnitFoundationalMainAdvanced
                [?]Graphical User Interfaces???
                +

                7.12 Building

                + + + + + + + + + + + + + + + + + + + + + + + + + + +
                IDUnitFoundationalMainAdvanced
                [?]Software Build Tools???
                [?]Strategies for Handling Build Problems???
                +

                7.13 Testing and Debugging

                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                IDUnitFoundationalMainAdvanced
                [?]Source-Level Debuggers???
                [?]Code Sanitizers???
                [?]Test Frameworks???
                [?]Debugging Strategies???
                +

                7.14 Tooling

                + + + + + + + + + + + + + + + + + + + + + + + + + + +
                IDUnitFoundationalMainAdvanced
                [?]Compiler Toolchains???
                [?]IDEs???
                +

                7.15 Software Design

                + + + + + + + + + + + + + + + + + + + +
                IDUnitFoundationalMainAdvanced
                [?]Design by Contract???
                +

                8 Detailed Information for Modules and Topics

                +

                8.1 C++ object model: copy semantics

                +

                Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                +

                8.1.1 Overview

                +

                Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                + ++++ + + + + + + + + + + + + + + + + + + + + +
                LevelObjectives
                Foundationalunderstanding how and when are copies made
                Mainimplementing user-defined copy operations
                Advancedspecial cases: copy elision
                +

                8.1.2 Motivation

                +

                Why is this important? Why do we want to learn/teach this topic?

                +

                Copy semantics allows the user to define how objects of a class get replicated and interact on a value level.

                +

                8.1.3 Topic introduction

                +

                Very brief introduction to the topic.

                +

                Explains when and how objects are copied.

                +

                8.1.4 Foundational: How and when are copies made

                +

                8.1.4.1 Background/Required Knowledge

                +

                A student is able to: * explain what a C++ type is? [C++ object model: types] * explain what an object is? [C++ object model: objects], [C++ object model: constant objects] * define and understand class invariants?

                +

                It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain special member functions [C++ object model: special member functions]

                +

                8.1.4.2 Student outcomes

                +

                A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                +

                A student should be able to:

                +
                  +
                1. explain what copy semantics accomplish
                2. +
                +
                  +
                • establishing “equivalent” object state in another object
                • +
                +
                  +
                1. explain difference between copying a reference and copying a value*
                2. +
                3. explain where copies are made
                4. +
                +

                * In other languages these differences are sometimes referred to as shallow and deep copy.

                +

                8.1.4.3 Caveats

                +

                This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                +
                  +
                • Compiler-provided copy operations may result in ownership problems (e.g., char*). These ownership problems can generally be solved by using types whose copy operations have the appropriate semantics, e.g., std::string instead of char* to hold string values.
                • +
                +

                8.1.4.4 Points to cover

                +

                This section lists important details for each point.

                +
                  +
                • Principle of copying +
                    +
                  • Copying of types, which follow the rule of zero
                  • +
                  • Copying of types, with user defined copy operations
                  • +
                  • Copying an object does not change the original
                  • +
                • +
                • Practical applications +
                    +
                  • std::unique_ptr (has no copy)
                  • +
                  • Strings (copies the value)
                  • +
                • +
                +

                8.1.5 Main: Implementing user-defined copy operations

                +

                8.1.5.1 Background/Required Knowledge

                +

                A student is able to: * identify special member functions [C++ object model: special member functions]

                +

                It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain the rule of zero [C++ object model: rule-of-zero] * explain the rule of five [C++ object model: rule-of-five]

                +

                8.1.5.2 Student outcomes

                +

                A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                +

                A student should be able to: * explain when they have to implement the copy operations for their own type * Copy constructor * Copy assignment operator * implement copy operations for their own types * Optional: explain when copying with basic and strong exception guarantees is useful

                +

                8.1.5.3 Caveats

                +

                This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                +
                  +
                • Intricacies when implementing copy operations: +
                    +
                  • Examples of how not to write copy operations (e.g., C++03 std::auto_ptr)
                  • +
                • +
                +

                8.1.5.4 Points to cover

                +

                This section lists important details for each point.

                +
                  +
                • Copy constructors and copy assignment operators +
                    +
                  • How compiler generates default copy operations
                  • +
                  • =default, =delete (No copy)
                  • +
                  • How-to write your own copy operations
                  • +
                  • Rule-of-five
                  • +
                  • Copy assignment operators can be ref-qualified to avoid assigning into temporary objects.
                  • +
                • +
                +

                8.1.6 Advanced

                +

                These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                +

                When can copies be elided and when does the standard guarantee copy elision. References: * Abseil tip of the Week #166 * cppreference - Copy elision

                +

                8.2 Module name: Requires Expressions

                +

                Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                +

                8.2.1 Overview

                +

                Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                + ++++ + + + + + + + + + + + + + + + + + + + + +
                LevelObjectives
                FoundationalDefine and use requires-expressions to check satisfaction of expressions by given parameters
                MainDefine and use requires-expressions to check properties of expressions
                Advanced
                +

                8.2.2 Motivation

                +

                Why is this important? Why do we want to learn/teach this topic?

                +

                Requires-expressions allow a developer to perform compile-time evaluation on the validity of other expressions. These are fundamental to the ability to write concepts. [Compile-time programming: concepts]

                +

                8.3 Topic introduction

                +

                Very brief introduction to the topic.

                +

                Requires-expressions are compile-time predicates which evaluate to true when their specified set of expressions are all valid for a given set of inputs.

                +

                8.3.1 Foundational: Writing requires-expressions

                +

                8.3.1.1 Background/Required Knowledge

                +

                A student is able to:

                + +

                It is helpful if:

                +
                  +
                • The student is aware that attempting to specialize the template with types or values which do not match otherwise unstated assumptions will cause errors within the template.
                • +
                +

                8.3.1.2 Student outcomes

                +

                A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                +

                A student should be able to:

                +
                  +
                1. Write a simple-requirement to assert the validity of an expression
                2. +
                3. Write a type-requirement to check the existence of a type by its identifier
                4. +
                5. Write a compound-requirement to test the resulting type of an expression
                6. +
                7. Write a nested-requirement to test the constexpr value of an operation, as opposed to just the syntactic validity
                8. +
                9. Use a requires-expression within a concept, requires-clause, or if constexpr condition
                10. +
                +

                8.3.1.3 Caveats

                +

                This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                +

                To require that expressions, which evaluate to a boolean value like sizeof(t) == 4, evaluate to true a nested-requirement is needed (e.g., requires sizeof(t) == 4;). Omitting the requires results in a simple-requirement, which is satisfied based purely on syntactic validity, not on the result of the operation.

                +

                8.3.1.4 Points to cover

                +

                This section lists important details for each point.

                +
                  +
                • All requires-expression requirements terminate with a semicolon.
                • +
                • simple-requirements are used to check that an expression is well-formed.
                • +
                • nested-requirements are introduced with requires and primarily used to check the result of an expression computable by the compiler, including concepts or other requires-expressions.
                • +
                • type-requirements are introduced with typename and used to verify the existence of a type with a particular identifier.
                • +
                • compound-requirements are enclosed in braces and can be used to check the resulting type of an expression.
                • +
                • Checks are performed by the compiler, not at run time.
                • +
                • If covering usage of requires-expression with requires-clause, [Compile-time programming: requires clause] demonstrate requires requires and show how to ever avoid writing it by using a concept. [Compile-time programming: concepts]
                • +
                +

                8.3.2 Main: Advanced requirements

                +

                8.3.2.1 Background/Required Knowledge

                +
                  +
                • All of the above.
                • +
                • Knowledge of noexcept
                • +
                +

                A student is able to:

                + +

                8.3.2.2 Student outcomes

                +

                A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                +

                A student should be able to:

                +
                  +
                1. Write compound-requirements which test the noexceptness of an expression.
                2. +
                3. Use a concept as the target of a compound-requirement.
                4. +
                +

                8.3.2.3 Caveats

                +

                This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                +

                8.3.2.4 Points to cover

                +

                This section lists important details for each point.

                +
                  +
                • Compound-requirements allow the optional ability to test whether an expression is marked as noexcept, by using a trailing noexcept keyword.
                • +
                + +
                  +
                • If the return-type-requirement of a compound-requirement is a concept, that concept is given the resulting type as the first parameter, followed by the specified parameters in the compound-requirement. { ++x } -> C<int> would substitute C<decltype((++x)), int> and check that concept C is satisfied for those parameters.
                • +
                +

                8.3.3 Advanced

                +

                See user-defined-literals.

                +

                8.4 Functions: user-defined literals

                +

                Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                +

                8.4.1 Overview

                +

                Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                + ++++ + + + + + + + + + + + + + + + + + + + + +
                LevelObjectives
                Foundationalusing and understanding UDLs
                Mainimplementing your own UDLs
                AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
                +

                8.4.2 Motivation

                +

                Why is this important? Why do we want to learn/teach this topic?

                +
                  +
                • Allows clearer expression of intent in C++.
                • +
                • std::string: "Hello, world!"s
                • +
                • std::chrono: 3h + 10min + 5s
                • +
                +

                8.4.3 Topic introduction

                +

                Very brief introduction to the topic.

                +
                  +
                • Explain the existence of user defined literals. Example: 12min + 17s is terse, expressive and type safe.
                • +
                +

                8.4.4 Foundational: Using UDLs

                +

                8.4.4.1 Background/Required Knowledge

                +

                A student: * knows how to form numeric literals, e.g., 1.5f means a float of value 1.5. * is familiar with the major C++ types: * bool (Boolean type) * int (Integer type) * double (Floating-point type) * std::string (Text type) * std::vector (Collection type) * knows that namespaces exist, and namespace std. * knows what using-declarations and using-directives are. [C++ object model: declarations]

                +

                8.4.4.2 Student outcomes

                +

                A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                +

                A student should be able to:

                +
                  +
                1. use using namespace std::string_literals[1].
                2. +
                3. recognise UDLs in code that they are reading.
                4. +
                5. figure out which UDL definitions for a used type exist.
                6. +
                7. identify parts of the standard library that make use of UDLs.
                8. +
                9. prevent the dangers of temporaries created with "blah"s as well as with std::string{"blah"}.
                10. +
                11. effectively selects the right set of namespaces in using-directives from the sub-namespaces std::literals.
                12. +
                +

                [1]: explain that it’s okay to use a using-directive to “activate” UDLs.

                +

                8.4.4.3 Caveats

                +

                This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                +
                  +
                • A student gets confused by the similarities and differences between built-in suffixes and UDLs and between UDLs from different namespaces.
                • +
                • A student “activates” two suffixes with the same signature from different namespaces.
                • +
                +

                8.4.4.4 Points to cover

                +

                This section lists important details for each point.

                +

                8.4.5 Main: implementing UDLs

                +

                8.4.5.1 Background/Required Knowledge

                +
                  +
                • All of the above.
                • +
                +

                8.4.5.2 Student outcomes

                +

                A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                +

                A student should be able to:

                +
                  +
                1. write a UDL operator of their own.
                2. +
                3. separate unrelated UDLs into distinct namespaces.
                4. +
                +

                8.4.5.3 Caveats

                +

                This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                +

                No caveats at present. #### Points to cover

                +

                This section lists important details for each point.

                +

                No caveats at present. ### Advanced {#udl-advanced}

                +

                These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                +

                8.5 Functions: default argument

                +

                Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                +

                8.5.1 Overview

                +

                Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                +

                Functions in C++ may be overloaded with different numbers and types of parameters. It may be of value to specify default arguments for some number of parameters, to allow a caller to avoid specifying arguments that rarely change, or to enable expanding the set of parameters while maintaining backward compatibility with existing callers.

                + ++++ + + + + + + + + + + + + + + + + + + + + +
                LevelObjective
                FoundationalDefine and use functions with default arguments
                Main
                Advancedrefinement of default arguments through multiple declarations
                +

                8.5.2 Motivation

                +

                Why is this important? Why do we want to learn/teach this topic?

                +

                Default arguments allow the omission of arguments with obvious or common values. Also may be utilized to extend an existing function signature without forcing changes to existing calling code.

                +

                8.5.3 Topic introduction

                +

                Very brief introduction to the topic.

                +

                Explain how default arguments work and how to define them.

                +

                8.5.4 Foundational: Using and defining functions with default arguments

                +

                8.5.4.1 Background/Required Knowledge

                +

                A student is able to:

                + +

                8.5.4.2 Student outcomes

                +

                A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                +

                A student should be able to:

                +
                  +
                1. Call to a function with a default argument with or without that argument specified
                2. +
                3. Declare a function with a default argument, and omit the default in the definition’s signature
                4. +
                5. Explain when the lifetime of a default argument begins and ends
                6. +
                +

                8.5.4.3 Caveats

                +

                This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                +
                  +
                • When no forward-declaration exists, the definition serves as the declaration
                • +
                • When multiple declarations exist, only one may specify the default for any particular parameter, but multiple declarations may specify the defaults for different parameters.
                • +
                • Additional default values may be specified for other parameters in repeat declarations
                • +
                • Calling an overloaded function with fewer arguments may be ambiguous with regard to an overload with default arguments
                • +
                +

                8.5.4.4 Points to cover

                +

                This section lists important details for each point.

                +
                  +
                • Default value may only be specified once for each parameter among all declarations
                • +
                • Default values must start from the rightmost parameter and continue leftward without gaps
                • +
                • Considerations of when to use default arguments vs overload set
                • +
                +

                8.5.5 Main: implementing *

                +

                8.5.5.1 Background/Required knowledge

                +
                  +
                • All of the above.
                • +
                +

                8.5.5.2 Student outcomes

                +

                A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                +

                A student should be able to:

                +

                8.5.5.3 Caveats

                +

                This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                +

                8.5.5.4 Points to cover

                +

                This section lists important details for each point.

                +

                8.5.6 Advanced

                +

                These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                +

                Subsequent redeclarations of the same function may add default argument values, which are then usable by callers. Though a single parameter cannot be given a default argument twice in the same translation unit, it is legal, though ill-advised, to give the same function different default arguments in different translation units.

                +

                See concepts.

                +

                8.6 Meta-error handling: static_assert

                +

                Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                +

                8.6.1 Overview

                +

                Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                + ++++ + + + + + + + + + + + + + + + + + + + + +
                LevelObjectives
                FoundationalCalling static_assert with a constant expression
                MainUsing static_assert to detect contract violations and improve error messages
                Advanced
                +

                8.6.2 Motivation

                +

                Why is this important? Why do we want to learn/teach this topic?

                +

                static_assert allows the developer to enforce that conditions which can be checked during compilation will force build errors when violated. Additionally, they are the best mechanism by which a developer can pass useful information to other developers regarding what violation occurred or what must be done, instead.

                +

                8.6.3 Topic introduction

                +

                Very brief introduction to the topic.

                +

                static_assert is a compile-time evaluated function that asserts the truth of a supplied predicate, issuing an optional user-supplied error message if the predicate is false.

                +

                8.6.4 Foundational: Calling static_assert with a constant expression

                +

                8.6.4.1 Background/Required Knowledge

                +

                A student:

                +
                  +
                • Should be able to explain the difference between code evaluated at compile-time and run-time
                • +
                • Should be able to cite some examples of compile-time known information, such as sizeof(T)
                • +
                +

                8.6.4.2 Student outcomes

                +

                A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                +

                A student should be able to:

                +
                  +
                1. Assert the expected size of a structure using static_assert
                2. +
                +

                8.6.4.3 Caveats

                +

                This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                +

                8.6.4.4 Points to cover

                +

                This section lists important details for each point.

                +
                  +
                • X
                • +
                • In addition to what is wrong, a good error message will inform the user of how to correct it
                • +
                +

                8.6.5 Main: Contracts and static_assert

                +

                8.6.5.1 Background/Required Knowledge

                +
                  +
                • All of the above.
                • +
                • General understanding of compile-time requirements
                • +
                +

                8.6.5.2 Student outcomes

                +

                A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                +

                A student should be able to:

                +
                  +
                1. Utilize static_assert to verify preconditions of a meta-function
                2. +
                3. Utilize static_assert to verify the results of meta-functions for known values
                4. +
                +

                8.6.5.3 Caveats

                +

                This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                +

                8.6.5.4 Points to cover

                +

                This section lists important details for each point.

                +
                  +
                • When writing a meta-function, use static_assert to test the results
                • +
                • Write static_assert calls at the scope of the code they are guarding
                • +
                + +

                8.6.6 Advanced

                +

                These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                +

                9 Examples of Course Curricula

                +

                [NOTE: Anyone have any suggestions of items to add here?] The following are examples of curricula for course on C++: …

                +

                10 License

                +

                [NOTE: This license is copied verbatim from the C++ Core Guidelines.]

                +
                Copyright (c) Standard C++ Foundation and its contributors
                +
                +Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
                +perpetual license to copy, use, modify, and create derivative works from this
                +project for your personal or internal business use only. The above copyright
                +notice and this permission notice shall be included in all copies or
                +substantial portions of the project. This license does not grant permission
                +to use the trade names, trademarks, service marks, or product names of the
                +licensor, except as required for reasonable and customary use in describing
                +the origin of the project.
                +
                +Standard C++ Foundation reserves the right to accept contributions to the
                +project at its discretion.
                +
                +By contributing material to this project, you grant Standard C++ Foundation,
                +and those who receive the material directly or indirectly from Standard C++
                +Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
                +transferrable license to reproduce, prepare derivative works of, publicly
                +display, publicly perform, and distribute your contributed material and such
                +derivative works, and to sublicense any or all of the foregoing rights to third
                +parties for commercial or non-commercial use.  You also grant Standard C++
                +Foundation, and those who receive the material directly or indirectly from
                +Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
                +irrevocable license under your patent claims that directly read on your
                +contributed material to make, have made, use, offer to sell, sell and import
                +or otherwise dispose of the material. You warrant that your material is your
                +original work, or that you have the right to grant the above licenses.
                +
                +THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
                +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
                +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
                +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
                +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
                +OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
                +PROJECT.
                +
                +If you believe that anything in the project infringes your copyright, please
                +contact us at admin@isocpp.org with your contact information and a detailed
                +description of your intellectual property, including a specific URL where you
                +believe your intellectual property is being infringed.
                +
                +

                11 Contributors

                +
                Christopher Di Bella
                +Florian Sattler
                +Michael Adams
                +rwdougla
                +

                12 How To Contribute

                +

                Before attempting to contribute any content for consideration for inclusion in this document, please read the information below and and the referenced documents as appropriate.

                +

                All contributions to this project must be made in accordance with the license in section License. This teaching-guidelines document only offers guidance on teaching C++ as it is specified in the current version of the C++ standard. So, content should be presented relative to the most-recently ratified version of the standard. A detailed explanation of how to present the material for a topic is given in:

                +
                  +
                • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.
                • +
                +

                Any potential contributors should ensure that they read this document. The following document may also be helpful in providing some general background on the modular approach to teaching followed herein:

                + +

                In order to prepare content, it is important to understand what learning outcomes are, and how to prepare good ones. Some information on learning outcomes can be found in the References section. The following document offers a concise introduction to learning outcomes:

                + +

                13 Glossary

                +

                Some possible terms to include in the glossary:

                +
                  +
                • learning objective
                • +
                • learning outcome
                • +
                +

                14 References

                +

                14.1 References on Learning Outcomes

                + + +
                  +
                • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — Standing Document for SG20: Guidelines for Teaching C++ to Beginners. https://wg21.link/p1389.

                • +
                • Christopher Di Bella. P1725R0 — Modular Topic Design. https://wg21.link/p1725.

                • +
                • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.

                • +
                • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study Group: C++ Education. https://wg21.link/p1231.

                • +
                • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 — Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0.

                • +
                +
                +
                + +
                + + diff --git a/0.0.13/html_split/Advanced.html b/0.0.13/html_split/Advanced.html new file mode 100644 index 0000000..fa0e3b4 --- /dev/null +++ b/0.0.13/html_split/Advanced.html @@ -0,0 +1,60 @@ + + + + + +Advanced (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                +

                8.1.6 Advanced

                +

                These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

                +

                When can copies be elided and when does the standard guarantee copy +elision. References: * Abseil tip of +the Week #166 * +cppreference +- Copy elision +

                + + + + + diff --git a/0.0.13/html_split/Background_002fRequired-Knowledge.html b/0.0.13/html_split/Background_002fRequired-Knowledge.html new file mode 100644 index 0000000..80c6ea3 --- /dev/null +++ b/0.0.13/html_split/Background_002fRequired-Knowledge.html @@ -0,0 +1,64 @@ + + + + + +Background/Required Knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                +

                8.1.4.1 Background/Required Knowledge

                +

                A student is able to: * explain what a C++ type is? +[C++ object model: types] * +explain what an object is? [C++ +object model: objects], [C++ +object model: constant objects] * define and understand class +invariants? +

                +

                It helps when a student is able to: * use move semantics +[C++ object model: move +semantics] * explain special member functions +[C++ object model: +special member functions] +

                + + + + + diff --git a/0.0.13/html_split/Background_002fRequired-knowledge.html b/0.0.13/html_split/Background_002fRequired-knowledge.html new file mode 100644 index 0000000..b9dcf81 --- /dev/null +++ b/0.0.13/html_split/Background_002fRequired-knowledge.html @@ -0,0 +1,54 @@ + + + + + +Background/Required knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                +

                8.5.5.1 Background/Required knowledge

                +
                  +
                • All of the above. +
                + + + + + + diff --git a/0.0.13/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html b/0.0.13/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html new file mode 100644 index 0000000..3e850b1 --- /dev/null +++ b/0.0.13/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html @@ -0,0 +1,60 @@ + + + + + +Basics Types Objects Values Expressions Statements and Control-Flow Constructs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                +

                7.3 Basics Types, Objects, Values, Expressions, Statements, and

                +

                Control-Flow Constructs +

                + + + + + +
                IDUnitFoundationalMainAdvanced
                [‘?’]Constant Objects???
                [‘?’]Declarations and Definitions???
                [‘?’]Selection Constructs (e.g., if, ternary)???
                [‘?’]Looping Constructs (e.g., for, while, etc.)???
                + + + + + + diff --git a/0.0.13/html_split/Building.html b/0.0.13/html_split/Building.html new file mode 100644 index 0000000..e628fd0 --- /dev/null +++ b/0.0.13/html_split/Building.html @@ -0,0 +1,57 @@ + + + + + +Building (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                +

                7.12 Building

                + + + + +
                IDUnitFoundationalMainAdvanced
                [‘?’]Software Build Tools???
                [‘?’]Strategies for Handling Build Problems???
                + + + + + + diff --git a/0.0.13/html_split/C_002b_002b-object-model-copy-semantics.html b/0.0.13/html_split/C_002b_002b-object-model-copy-semantics.html new file mode 100644 index 0000000..e011f9f --- /dev/null +++ b/0.0.13/html_split/C_002b_002b-object-model-copy-semantics.html @@ -0,0 +1,69 @@ + + + + + +C++ object model copy semantics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                +

                8.1 C++ object model: copy semantics

                +

                Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

                + + + + + + + + + + + + + + diff --git a/0.0.13/html_split/Caveats.html b/0.0.13/html_split/Caveats.html new file mode 100644 index 0000000..c5303c9 --- /dev/null +++ b/0.0.13/html_split/Caveats.html @@ -0,0 +1,62 @@ + + + + + +Caveats (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                +

                8.1.4.3 Caveats

                +

                This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                +
                  +
                • Compiler-provided copy operations may result in ownership problems +(e.g., char*). These ownership problems can generally be solved +by using types whose copy operations have the appropriate semantics, +e.g., std::string instead of char* to hold string values. +
                + + + + + + diff --git a/0.0.13/html_split/Compilation-Model.html b/0.0.13/html_split/Compilation-Model.html new file mode 100644 index 0000000..de11703 --- /dev/null +++ b/0.0.13/html_split/Compilation-Model.html @@ -0,0 +1,62 @@ + + + + + +Compilation Model (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                +

                7.1 Compilation Model

                + + + + + + + + + +
                IDUnitFoundationalMainAdvanced
                [‘?’]Translation Units???
                [‘?’]Headers???
                [‘?’]Modules???
                [‘?’]Name Mangling???
                [‘?’]Phases of Translation???
                [‘?’]Separate Compilation???
                [‘?’]Linkage???
                + + + + + + diff --git a/0.0.13/html_split/Compile_002dTime-Computation.html b/0.0.13/html_split/Compile_002dTime-Computation.html new file mode 100644 index 0000000..b9aaa0e --- /dev/null +++ b/0.0.13/html_split/Compile_002dTime-Computation.html @@ -0,0 +1,57 @@ + + + + + +Compile-Time Computation (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                +

                7.7 Compile-Time Computation

                + + + + +
                IDUnitFoundationalMainAdvanced
                [‘?’]Constant Expressions and Constant Evaluation???
                [‘static-assert’]static_assert‘✔️’‘✔️’
                + + + + + + diff --git a/0.0.13/html_split/Context-and-Aim-of-This-Guide.html b/0.0.13/html_split/Context-and-Aim-of-This-Guide.html new file mode 100644 index 0000000..60efa61 --- /dev/null +++ b/0.0.13/html_split/Context-and-Aim-of-This-Guide.html @@ -0,0 +1,76 @@ + + + + + +Context and Aim of This Guide (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                +

                +Next: , Previous: , Up: Top   [Contents]

                +
                +
                +

                3 Context and Aim of This Guide

                +

                This document is intended to serve as a resource for instructors to +assist in the preparation of courses on C++ in a variety of settings, +including university, college, and industry environments. The main +objectives of this document are as follows: +

                +
                  +
                • to provide guidelines for content to be covered by courses of various +difficulty levels on C++ (e.g., topics and learning outcomes) +
                • to note some common misunderstandings and problematic points that may be +encountered when teaching particular topics +
                • to suggest resources useful for teaching C++ +
                • to present examples of curriculum for specific courses +
                + +

                This document does not itself provide a curriculum for a single specific +course, but is rather a set of guidelines that can be used to prepare +curricula for a wide variety of courses that differ in focus and level +of sophistication. (This said, however, some links to other documents +with examples of curricula for specific courses may be included herein.) +This document only intends to target the teaching of the most recently +ratified version of the C++ standard. (This said, however, since older +versions of this document are also available, these older versions may +be of some use to those who need guidance in older versions of the +standard, at least versions that do not predate C++20.) +

                + + + + + diff --git a/0.0.13/html_split/Contributing-to-This-Document.html b/0.0.13/html_split/Contributing-to-This-Document.html new file mode 100644 index 0000000..eac6c28 --- /dev/null +++ b/0.0.13/html_split/Contributing-to-This-Document.html @@ -0,0 +1,55 @@ + + + + + +Contributing to This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                +

                5 Contributing to This Document

                +

                Contributions to this document are welcome. If you would like to help +with this project as a contributor, please read the section +‘How to Contribute’. +

                + + + + + diff --git a/0.0.13/html_split/Contributors.html b/0.0.13/html_split/Contributors.html new file mode 100644 index 0000000..53ba0ef --- /dev/null +++ b/0.0.13/html_split/Contributors.html @@ -0,0 +1,57 @@ + + + + + +Contributors (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                +

                +Next: , Previous: , Up: Top   [Contents]

                +
                +
                +

                11 Contributors

                + +
                Christopher Di Bella
                +Florian Sattler
                +Michael Adams
                +rwdougla
                +
                + + + + + diff --git a/0.0.13/html_split/Detailed-Information-for-Modules-and-Topics.html b/0.0.13/html_split/Detailed-Information-for-Modules-and-Topics.html new file mode 100644 index 0000000..6a3e986 --- /dev/null +++ b/0.0.13/html_split/Detailed-Information-for-Modules-and-Topics.html @@ -0,0 +1,67 @@ + + + + + +Detailed Information for Modules and Topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                +

                8 Detailed Information for Modules and Topics

                + + + + + + + + + + + + + + + diff --git a/0.0.13/html_split/Disclaimer.html b/0.0.13/html_split/Disclaimer.html new file mode 100644 index 0000000..a911983 --- /dev/null +++ b/0.0.13/html_split/Disclaimer.html @@ -0,0 +1,55 @@ + + + + + +Disclaimer (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                +

                2 Disclaimer

                +

                This document is intended as a proof of concept to solicit feedback from +others. This document is incomplete. This document likely has at least a +few errors. +

                + + + + + diff --git a/0.0.13/html_split/Error-Handling.html b/0.0.13/html_split/Error-Handling.html new file mode 100644 index 0000000..1f8d3e0 --- /dev/null +++ b/0.0.13/html_split/Error-Handling.html @@ -0,0 +1,59 @@ + + + + + +Error Handling (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                +

                7.9 Error Handling

                + + + + + + +
                IDUnitFoundationalMainAdvanced
                [‘?’]Classes of Errors???
                [‘?’]errno???
                [‘?’]Error Codes???
                [‘?’]Exception Handling???
                + + + + + + diff --git a/0.0.13/html_split/Examples-of-Course-Curricula.html b/0.0.13/html_split/Examples-of-Course-Curricula.html new file mode 100644 index 0000000..64eb64b --- /dev/null +++ b/0.0.13/html_split/Examples-of-Course-Curricula.html @@ -0,0 +1,53 @@ + + + + + +Examples of Course Curricula (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                +

                9 Examples of Course Curricula

                +

                [NOTE: Anyone have any suggestions of items to add here?] The +following are examples of curricula for course on C++: … +

                + + + + + diff --git a/0.0.13/html_split/External-ie-Non-Standard-Libraries.html b/0.0.13/html_split/External-ie-Non-Standard-Libraries.html new file mode 100644 index 0000000..2bf081e --- /dev/null +++ b/0.0.13/html_split/External-ie-Non-Standard-Libraries.html @@ -0,0 +1,56 @@ + + + + + +External ie Non Standard Libraries (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                +

                7.11 External (i.e., Non Standard) Libraries

                + + + +
                IDUnitFoundationalMainAdvanced
                [‘?’]Graphical User Interfaces???
                + + + + + + diff --git a/0.0.13/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html b/0.0.13/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html new file mode 100644 index 0000000..ce2c1b0 --- /dev/null +++ b/0.0.13/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html @@ -0,0 +1,62 @@ + + + + + +Foundational Calling static_assert with a constant expression (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                +

                8.6.4 Foundational: Calling static_assert with a constant

                +

                expression +

                + + + + + + + + + + + + diff --git a/0.0.13/html_split/Foundational-How-and-when-are-copies-made.html b/0.0.13/html_split/Foundational-How-and-when-are-copies-made.html new file mode 100644 index 0000000..4cec33b --- /dev/null +++ b/0.0.13/html_split/Foundational-How-and-when-are-copies-made.html @@ -0,0 +1,63 @@ + + + + + +Foundational How and when are copies made (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                +

                8.1.4 Foundational: How and when are copies made

                + + + + + + + + + + + + + diff --git a/0.0.13/html_split/Foundational-Using-UDLs.html b/0.0.13/html_split/Foundational-Using-UDLs.html new file mode 100644 index 0000000..ee31f18 --- /dev/null +++ b/0.0.13/html_split/Foundational-Using-UDLs.html @@ -0,0 +1,61 @@ + + + + + +Foundational Using UDLs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                +

                8.4.4 Foundational: Using UDLs

                + + + + + + + + + + + + + diff --git a/0.0.13/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html b/0.0.13/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html new file mode 100644 index 0000000..99ba226 --- /dev/null +++ b/0.0.13/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html @@ -0,0 +1,62 @@ + + + + + +Foundational Using and defining functions with default arguments (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                +

                8.5.4 Foundational: Using and defining functions with default

                +

                arguments +

                + + + + + + + + + + + + diff --git a/0.0.13/html_split/Foundational-Writing-requires_002dexpressions.html b/0.0.13/html_split/Foundational-Writing-requires_002dexpressions.html new file mode 100644 index 0000000..a5f6086 --- /dev/null +++ b/0.0.13/html_split/Foundational-Writing-requires_002dexpressions.html @@ -0,0 +1,60 @@ + + + + + +Foundational Writing requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +
                +

                8.3.1 Foundational: Writing requires-expressions

                + + + + + + + + + + + + + diff --git a/0.0.13/html_split/Functions-default-argument.html b/0.0.13/html_split/Functions-default-argument.html new file mode 100644 index 0000000..7092e80 --- /dev/null +++ b/0.0.13/html_split/Functions-default-argument.html @@ -0,0 +1,67 @@ + + + + + +Functions default argument (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                +

                8.5 Functions: default argument

                +

                Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

                + + + + + + + + + + + + + + diff --git a/0.0.13/html_split/Functions-user_002ddefined-literals.html b/0.0.13/html_split/Functions-user_002ddefined-literals.html new file mode 100644 index 0000000..2c00dbc --- /dev/null +++ b/0.0.13/html_split/Functions-user_002ddefined-literals.html @@ -0,0 +1,65 @@ + + + + + +Functions user-defined literals (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                +

                8.4 Functions: user-defined literals

                +

                Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

                + + + + + + + + + + + + + diff --git a/0.0.13/html_split/Functions.html b/0.0.13/html_split/Functions.html new file mode 100644 index 0000000..82175a5 --- /dev/null +++ b/0.0.13/html_split/Functions.html @@ -0,0 +1,61 @@ + + + + + +Functions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                +

                7.4 Functions

                + + + + + + + + +
                IDUnitFoundationalMainAdvanced
                [‘?’]Calling Functions???
                [‘?’]Parameter Passing (e.g., Passing By Value and Reference)???
                [‘func-args’]Default Arguments‘✔️’
                [‘?’]Returning Multiple Values???
                [‘?’]Overloading???
                [‘udl’]User-Defined Literals‘✔️’‘✔️’
                + + + + + + diff --git a/0.0.13/html_split/Generic-Programming-Templates.html b/0.0.13/html_split/Generic-Programming-Templates.html new file mode 100644 index 0000000..1a22cd7 --- /dev/null +++ b/0.0.13/html_split/Generic-Programming-Templates.html @@ -0,0 +1,61 @@ + + + + + +Generic Programming Templates (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                +

                7.8 Generic Programming (Templates)

                + + + + + + + + +
                IDUnitFoundationalMainAdvanced
                [‘?’]Concepts???
                [‘?’]SFINAE???
                [‘?’]Template Metaprogramming???
                [‘?’]Function Templates???
                [‘?’]Requires Clauses???
                [‘req-expr’]Requires Expressions‘✔️’‘✔️’
                + + + + + + diff --git a/0.0.13/html_split/Glossary.html b/0.0.13/html_split/Glossary.html new file mode 100644 index 0000000..2bf24f2 --- /dev/null +++ b/0.0.13/html_split/Glossary.html @@ -0,0 +1,58 @@ + + + + + +Glossary (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                +

                +Next: , Previous: , Up: Top   [Contents]

                +
                +
                +

                13 Glossary

                +

                Some possible terms to include in the glossary: +

                +
                  +
                • learning objective +
                • learning outcome +
                + + + + + + diff --git a/0.0.13/html_split/How-To-Contribute.html b/0.0.13/html_split/How-To-Contribute.html new file mode 100644 index 0000000..f1963d5 --- /dev/null +++ b/0.0.13/html_split/How-To-Contribute.html @@ -0,0 +1,89 @@ + + + + + +How To Contribute (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                +

                +Next: , Previous: , Up: Top   [Contents]

                +
                +
                +

                12 How To Contribute

                +

                Before attempting to contribute any content for consideration for +inclusion in this document, please read the information below and and +the referenced documents as appropriate. +

                +

                All contributions to this project must be made in accordance with the +license in section License. This teaching-guidelines +document only offers guidance on teaching C++ as it is specified in the +current version of the C++ standard. So, content should be presented +relative to the most-recently ratified version of the standard. A +detailed explanation of how to present the material for a topic is given +in: +

                +
                  +
                • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to +structure a teaching topic. https://wg21.link/p2193. +
                + +

                Any potential contributors should ensure that they read this document. +The following document may also be helpful in providing some general +background on the modular approach to teaching followed herein: +

                + + +

                In order to prepare content, it is important to understand what learning +outcomes are, and how to prepare good ones. Some information on learning +outcomes can be found in the References section. The +following document offers a concise introduction to learning outcomes: +

                + + + + + + + diff --git a/0.0.13/html_split/Inheritance-and-Class-Hierarchies.html b/0.0.13/html_split/Inheritance-and-Class-Hierarchies.html new file mode 100644 index 0000000..1a394b0 --- /dev/null +++ b/0.0.13/html_split/Inheritance-and-Class-Hierarchies.html @@ -0,0 +1,57 @@ + + + + + +Inheritance and Class Hierarchies (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                +

                7.6 Inheritance and Class Hierarchies

                + + + + +
                IDUnitFoundationalMainAdvanced
                [‘?’]Virtual Functions???
                [‘?’]Run-Time Type Information???
                + + + + + + diff --git a/0.0.13/html_split/License.html b/0.0.13/html_split/License.html new file mode 100644 index 0000000..38d2d8d --- /dev/null +++ b/0.0.13/html_split/License.html @@ -0,0 +1,100 @@ + + + + + +License (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                +

                +Next: , Previous: , Up: Top   [Contents]

                +
                +
                +

                10 License

                +

                [NOTE: This license is copied verbatim from the C++ Core +Guidelines.] +

                +
                Copyright (c) Standard C++ Foundation and its contributors
                +
                +Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
                +perpetual license to copy, use, modify, and create derivative works from this
                +project for your personal or internal business use only. The above copyright
                +notice and this permission notice shall be included in all copies or
                +substantial portions of the project. This license does not grant permission
                +to use the trade names, trademarks, service marks, or product names of the
                +licensor, except as required for reasonable and customary use in describing
                +the origin of the project.
                +
                +Standard C++ Foundation reserves the right to accept contributions to the
                +project at its discretion.
                +
                +By contributing material to this project, you grant Standard C++ Foundation,
                +and those who receive the material directly or indirectly from Standard C++
                +Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
                +transferrable license to reproduce, prepare derivative works of, publicly
                +display, publicly perform, and distribute your contributed material and such
                +derivative works, and to sublicense any or all of the foregoing rights to third
                +parties for commercial or non-commercial use.  You also grant Standard C++
                +Foundation, and those who receive the material directly or indirectly from
                +Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
                +irrevocable license under your patent claims that directly read on your
                +contributed material to make, have made, use, offer to sell, sell and import
                +or otherwise dispose of the material. You warrant that your material is your
                +original work, or that you have the right to grant the above licenses.
                +
                +THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
                +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
                +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
                +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
                +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
                +OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
                +PROJECT.
                +
                +If you believe that anything in the project infringes your copyright, please
                +contact us at admin@isocpp.org with your contact information and a detailed
                +description of your intellectual property, including a specific URL where you
                +believe your intellectual property is being infringed.
                +
                +
                +
                +

                +Next: , Previous: , Up: Top   [Contents]

                +
                + + + + + diff --git a/0.0.13/html_split/Main-Advanced-requirements.html b/0.0.13/html_split/Main-Advanced-requirements.html new file mode 100644 index 0000000..40d8bd0 --- /dev/null +++ b/0.0.13/html_split/Main-Advanced-requirements.html @@ -0,0 +1,60 @@ + + + + + +Main Advanced requirements (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +
                +

                8.3.2 Main: Advanced requirements

                + + + + + + + + + + + + + diff --git a/0.0.13/html_split/Main-Contracts-and-static_005fassert.html b/0.0.13/html_split/Main-Contracts-and-static_005fassert.html new file mode 100644 index 0000000..6c0ba46 --- /dev/null +++ b/0.0.13/html_split/Main-Contracts-and-static_005fassert.html @@ -0,0 +1,61 @@ + + + + + +Main Contracts and static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                +

                8.6.5 Main: Contracts and static_assert

                + + + + + + + + + + + + + diff --git a/0.0.13/html_split/Main-Implementing-user_002ddefined-copy-operations.html b/0.0.13/html_split/Main-Implementing-user_002ddefined-copy-operations.html new file mode 100644 index 0000000..e38dfd6 --- /dev/null +++ b/0.0.13/html_split/Main-Implementing-user_002ddefined-copy-operations.html @@ -0,0 +1,62 @@ + + + + + +Main Implementing user-defined copy operations (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                +

                8.1.5 Main: Implementing user-defined copy operations

                + + + + + + + + + + + + + diff --git a/0.0.13/html_split/Main-implementing-UDLs.html b/0.0.13/html_split/Main-implementing-UDLs.html new file mode 100644 index 0000000..ae1c307 --- /dev/null +++ b/0.0.13/html_split/Main-implementing-UDLs.html @@ -0,0 +1,59 @@ + + + + + +Main implementing UDLs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                +

                8.4.5 Main: implementing UDLs

                + + + + + + + + + + + + diff --git a/0.0.13/html_split/Main-implementing-_002a.html b/0.0.13/html_split/Main-implementing-_002a.html new file mode 100644 index 0000000..a4ada7b --- /dev/null +++ b/0.0.13/html_split/Main-implementing-_002a.html @@ -0,0 +1,62 @@ + + + + + +Main implementing * (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                +

                8.5.5 Main: implementing *

                + + + + + + + + + + + + + diff --git a/0.0.13/html_split/Meta_002derror-handling-static_005fassert.html b/0.0.13/html_split/Meta_002derror-handling-static_005fassert.html new file mode 100644 index 0000000..176cec8 --- /dev/null +++ b/0.0.13/html_split/Meta_002derror-handling-static_005fassert.html @@ -0,0 +1,67 @@ + + + + + +Meta-error handling static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                +

                8.6 Meta-error handling: static_assert

                +

                Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

                + + + + + + + + + + + + + + diff --git a/0.0.13/html_split/Module-name-Requires-Expressions.html b/0.0.13/html_split/Module-name-Requires-Expressions.html new file mode 100644 index 0000000..412ad99 --- /dev/null +++ b/0.0.13/html_split/Module-name-Requires-Expressions.html @@ -0,0 +1,60 @@ + + + + + +Module name Requires Expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                +

                8.2 Module name: Requires Expressions

                +

                Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

                + + + + + + + + + + diff --git a/0.0.13/html_split/Motivation.html b/0.0.13/html_split/Motivation.html new file mode 100644 index 0000000..40b0ec9 --- /dev/null +++ b/0.0.13/html_split/Motivation.html @@ -0,0 +1,57 @@ + + + + + +Motivation (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                +

                8.1.2 Motivation

                +

                Why is this important? Why do we want to learn/teach this +topic? +

                +

                Copy semantics allows the user to define how objects of a class get +replicated and interact on a value level. +

                + + + + + diff --git a/0.0.13/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html b/0.0.13/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html new file mode 100644 index 0000000..8c4cacd --- /dev/null +++ b/0.0.13/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html @@ -0,0 +1,78 @@ + + + + + +Obtaining This Document The Most Recent Version and Alternate Formats (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                +

                +Next: , Previous: , Up: Top   [Contents]

                +
                +
                +

                1 Obtaining This Document: The Most Recent Version and Alternate

                +

                Formats +The most recent version of this document is available as an online HTML +document at: https://cplusplus.github.io/SG20/latest/. +

                +

                The version of the document that you are currently reading is available +in the following formats: +

                +
                  +
                1. online (HTML) format as a single large HTML document: +https://cplusplus.github.io/SG20/0.0.13/html + +
                2. EPUB format: +https://cplusplus.github.io/SG20/0.0.13/guidelines.epub + +
                3. online (HTML) format, split across multiple HTML documents: +https://cplusplus.github.io/SG20/0.0.13/html_split/ [Note: +The support for this format needs more work (in order to beautify and +fix linking issues).] + +
                + +

                Older versions of this document are also available. In general version +ver is available at +https://cplusplus.github.io/SG20/ver/html. For example, version +0.1.0 (assuming that this version exists) would be available at +https://cplusplus.github.io/SG20/0.1.0/html. +

                + + + + + diff --git a/0.0.13/html_split/Organization-of-This-Document.html b/0.0.13/html_split/Organization-of-This-Document.html new file mode 100644 index 0000000..ece5d7a --- /dev/null +++ b/0.0.13/html_split/Organization-of-This-Document.html @@ -0,0 +1,95 @@ + + + + + +Organization of This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                +

                6 Organization of This Document

                +

                The various concepts (i.e., ideas) to potentially be covered are +partitioned into modules. A module is very broad in scope and consists +of numerous topics. +

                +

                For each module, topics related to the module are identified. Then, for +each topic, learning outcomes are specified. In order to address a wide +variety of courses on C++, each topic is addressed at three proficiency +levels. These proficiency levels allow each topic to be covered at more +than one level of detail. This allows target audiences with different +background and learning objectives to be accommodated. The three +proficiency levels are as follows: +

                +
                  +
                • foundational: This level gives the learner the idea that a facility +exists, what benefits it offers, and the basic ways of using it. + +
                • main: This level shows mainstream uses and techniques. For abstraction +and organizational mechanisms it also demonstrates how to build them. +This level should also give the learner a basic (but not detailed) +understanding of how a facility might be implemented so that the learner +can have a first-order understanding of any costs involved. + +
                • advanced: This level gives information suitable for an expert. For most +topics there is an expert level of knowledge that most programmers +rarely need and techniques that require detailed understanding of +language rules or library implementation. + +
                + +

                The remainder of this document is organized as follows. The various +topics are listed grouped by module. In cases where a topic might be +classified into more than one module, the topic is listed under the +module of most direct relevance. This is done in order to avoid +duplication of content. (In the case that a topic is equally relevant to +multiple modules, the decision of which to select is made by a +proverbial coin toss.) The order in which modules and topics are +presented is not meant to imply any order of coverage in a course. The +order in which items are listed is essentially arbitrary. +

                +
                + + + + + + diff --git a/0.0.13/html_split/Overview.html b/0.0.13/html_split/Overview.html new file mode 100644 index 0000000..be44bfa --- /dev/null +++ b/0.0.13/html_split/Overview.html @@ -0,0 +1,61 @@ + + + + + +Overview (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                +

                8.1.1 Overview

                +

                Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

                + + + + + +
                LevelObjectives
                Foundationalunderstanding how and when are copies made
                Mainimplementing user-defined copy operations
                Advancedspecial cases: copy elision
                + + + + + + diff --git a/0.0.13/html_split/Points-to-cover.html b/0.0.13/html_split/Points-to-cover.html new file mode 100644 index 0000000..ba4b5cc --- /dev/null +++ b/0.0.13/html_split/Points-to-cover.html @@ -0,0 +1,69 @@ + + + + + +Points to cover (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                +

                8.1.4.4 Points to cover

                +

                This section lists important details for each point. +

                +
                  +
                • Principle of copying +
                    +
                  • Copying of types, which follow the rule of zero +
                  • Copying of types, with user defined copy operations +
                  • Copying an object does not change the original +
                  + +
                • Practical applications +
                    +
                  • std::unique_ptr (has no copy) +
                  • Strings (copies the value) +
                  + +
                + + + + + + diff --git a/0.0.13/html_split/Preprocessor.html b/0.0.13/html_split/Preprocessor.html new file mode 100644 index 0000000..345e396 --- /dev/null +++ b/0.0.13/html_split/Preprocessor.html @@ -0,0 +1,58 @@ + + + + + +Preprocessor (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                +

                7.2 Preprocessor

                + + + + + +
                IDUnitFoundationalMainAdvanced
                [‘?’]Preprocessor Metaprogramming???
                [‘?’]Inclusion???
                [‘?’]Macros???
                + + + + + + diff --git a/0.0.13/html_split/References-on-Learning-Outcomes.html b/0.0.13/html_split/References-on-Learning-Outcomes.html new file mode 100644 index 0000000..7b74cad --- /dev/null +++ b/0.0.13/html_split/References-on-Learning-Outcomes.html @@ -0,0 +1,71 @@ + + + + + +References on Learning Outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                +

                14.1 References on Learning Outcomes

                + + + + + + + diff --git a/0.0.13/html_split/References.html b/0.0.13/html_split/References.html new file mode 100644 index 0000000..f595be2 --- /dev/null +++ b/0.0.13/html_split/References.html @@ -0,0 +1,59 @@ + + + + + +References (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                +

                +Previous: , Up: Top   [Contents]

                +
                +
                +

                14 References

                + + + + + + + + + + + diff --git a/0.0.13/html_split/Software-Design.html b/0.0.13/html_split/Software-Design.html new file mode 100644 index 0000000..6b4f6c8 --- /dev/null +++ b/0.0.13/html_split/Software-Design.html @@ -0,0 +1,56 @@ + + + + + +Software Design (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                +

                7.15 Software Design

                + + + +
                IDUnitFoundationalMainAdvanced
                [‘?’]Design by Contract???
                + + + + + + diff --git a/0.0.13/html_split/Standard-Library.html b/0.0.13/html_split/Standard-Library.html new file mode 100644 index 0000000..c80c7fc --- /dev/null +++ b/0.0.13/html_split/Standard-Library.html @@ -0,0 +1,57 @@ + + + + + +Standard Library (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                +

                7.10 Standard Library

                + + + + +
                IDUnitFoundationalMainAdvanced
                [‘?’]Input/Output (I/O)???
                [‘?’]Containers, Iterators, and Algorithms???
                + + + + + + diff --git a/0.0.13/html_split/Student-outcomes.html b/0.0.13/html_split/Student-outcomes.html new file mode 100644 index 0000000..c604549 --- /dev/null +++ b/0.0.13/html_split/Student-outcomes.html @@ -0,0 +1,73 @@ + + + + + +Student outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                +

                8.1.4.2 Student outcomes

                +

                A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                +

                A student should be able to: +

                +
                  +
                1. explain what copy semantics accomplish +
                + +
                  +
                • establishing “equivalent” object state in another object +
                + +
                  +
                1. explain difference between copying a reference and copying a value* +
                2. explain where copies are made +
                + +

                * In other languages these differences are sometimes referred to as +shallow and deep copy. +

                + + + + + diff --git a/0.0.13/html_split/Summary-of-Modules-and-Topics.html b/0.0.13/html_split/Summary-of-Modules-and-Topics.html new file mode 100644 index 0000000..26b69be --- /dev/null +++ b/0.0.13/html_split/Summary-of-Modules-and-Topics.html @@ -0,0 +1,106 @@ + + + + + +Summary of Modules and Topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                +

                7 Summary of Modules and Topics

                +

                In the sections that follow, the various modules and topics are +presented. There is one section per module. For each module, a table +listing the various topics in that module is provided. The ID for a +topic is linked to the detailed coverage of that topic that comes later +in the document. If a topic has any learning outcomes at a given +proficiency level, this is indicated by a checkmark (“✔️”). If a topic +has no learning outcomes (simply because there are not any, not because +the information is missing), this is indicated by an em dash (“—”). +In the case that the information for a topic is completely missing, a +question mark (“?”) symbol is used. +

                +

                [NOTE: These topics are taken mostly from the SG20 GitHub +repository. They are not intended to be complete in any sense. In fact, +by gathering together all topics in one place where they are easily +viewed, it is hoped that missing and unbalanced items will be more +obvious.] +

                + + + + + + + + + + + + + + + + + + +
                + + + + + + diff --git a/0.0.13/html_split/Testing-and-Debugging.html b/0.0.13/html_split/Testing-and-Debugging.html new file mode 100644 index 0000000..da60211 --- /dev/null +++ b/0.0.13/html_split/Testing-and-Debugging.html @@ -0,0 +1,59 @@ + + + + + +Testing and Debugging (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                +

                +Next: , Previous: , Up: Summary of Modules and Topics   [Contents]

                +
                +
                +

                7.13 Testing and Debugging

                + + + + + + +
                IDUnitFoundationalMainAdvanced
                [‘?’]Source-Level Debuggers???
                [‘?’]Code Sanitizers???
                [‘?’]Test Frameworks???
                [‘?’]Debugging Strategies???
                + + + + + + diff --git a/0.0.13/html_split/Tooling.html b/0.0.13/html_split/Tooling.html new file mode 100644 index 0000000..43c3b2f --- /dev/null +++ b/0.0.13/html_split/Tooling.html @@ -0,0 +1,57 @@ + + + + + +Tooling (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                +

                7.14 Tooling

                + + + + +
                IDUnitFoundationalMainAdvanced
                [‘?’]Compiler Toolchains???
                [‘?’]IDEs???
                + + + + + + diff --git a/0.0.13/html_split/Topic-introduction.html b/0.0.13/html_split/Topic-introduction.html new file mode 100644 index 0000000..fff97f2 --- /dev/null +++ b/0.0.13/html_split/Topic-introduction.html @@ -0,0 +1,55 @@ + + + + + +Topic introduction (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                +

                8.1.3 Topic introduction

                +

                Very brief introduction to the topic. +

                +

                Explains when and how objects are copied. +

                + + + + + diff --git a/0.0.13/html_split/Use-of-This-Document.html b/0.0.13/html_split/Use-of-This-Document.html new file mode 100644 index 0000000..4c820d5 --- /dev/null +++ b/0.0.13/html_split/Use-of-This-Document.html @@ -0,0 +1,58 @@ + + + + + +Use of This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                +

                4 Use of This Document

                +

                [NOTE: This document follows the same license model as the C++ +Core Guidelines. The LICENSE document is taken verbatim from the C++ +Core Guidelines.] This document is made available under a MIT-style +license. In simple terms, this license permits copying, use, +modification, and creation of derivative works. A copy of the license is +included in the section LICENSE. +

                + + + + + diff --git a/0.0.13/html_split/User_002dDefined-Types-Classes.html b/0.0.13/html_split/User_002dDefined-Types-Classes.html new file mode 100644 index 0000000..808279a --- /dev/null +++ b/0.0.13/html_split/User_002dDefined-Types-Classes.html @@ -0,0 +1,69 @@ + + + + + +User-Defined Types Classes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                +

                7.5 User-Defined Types (Classes)

                + + + + + + + + + + + + + + + +
                IDUnitFoundationalMainAdvanced
                [‘?’]Special Member Functions???
                [‘?’]Types???
                [‘?’]Conversions???
                [‘?’]Constructors and Destructors???
                [‘?’]Move/Copy Constructors and Assignment Operators???
                [‘?’]Member Functions???
                [‘?’]Sum Types???
                [‘?’]User-Defined Literals???
                [‘?’]Special Member Functions???
                [‘?’]Guidelines for Special Member Functions (e.g., Rule of Five, Rule +of Zero)???
                [‘copy’]Copy Semantics‘✔️’‘✔️’
                [‘?’]Moving and Copying???
                [‘?’]Lambdas???
                + + + + + + diff --git a/0.0.13/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html b/0.0.13/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html new file mode 100644 index 0000000..3f9bf2c --- /dev/null +++ b/0.0.13/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html @@ -0,0 +1,69 @@ + + + + + +Working Group Documents Related to C++ Teaching Guidelines (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                +

                14.2 Working Group Documents Related to C++ Teaching Guidelines

                +
                  +
                • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — +Standing Document for SG20: Guidelines for Teaching C++ to Beginners. +https://wg21.link/p1389. + +
                • Christopher Di Bella. P1725R0 — Modular Topic Design. +https://wg21.link/p1725. + +
                • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to +structure a teaching topic. https://wg21.link/p2193. + +
                • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study +Group: C++ Education. https://wg21.link/p1231. + +
                • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 +— Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0. + +
                + + + + + + diff --git a/0.0.13/html_split/_0023advanced.html b/0.0.13/html_split/_0023advanced.html new file mode 100644 index 0000000..d503bfc --- /dev/null +++ b/0.0.13/html_split/_0023advanced.html @@ -0,0 +1,40 @@ + + + + + + +#advanced (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #advanced.

                + diff --git a/0.0.13/html_split/_0023advanced_002d1.html b/0.0.13/html_split/_0023advanced_002d1.html new file mode 100644 index 0000000..282a7b8 --- /dev/null +++ b/0.0.13/html_split/_0023advanced_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #advanced-1.

                + diff --git a/0.0.13/html_split/_0023advanced_002d2.html b/0.0.13/html_split/_0023advanced_002d2.html new file mode 100644 index 0000000..039b3ff --- /dev/null +++ b/0.0.13/html_split/_0023advanced_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #advanced-2.

                + diff --git a/0.0.13/html_split/_0023advanced_002d3.html b/0.0.13/html_split/_0023advanced_002d3.html new file mode 100644 index 0000000..ebf5529 --- /dev/null +++ b/0.0.13/html_split/_0023advanced_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #advanced-3.

                + diff --git a/0.0.13/html_split/_0023backgroundrequired_002dknowledge.html b/0.0.13/html_split/_0023backgroundrequired_002dknowledge.html new file mode 100644 index 0000000..9959745 --- /dev/null +++ b/0.0.13/html_split/_0023backgroundrequired_002dknowledge.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #backgroundrequired-knowledge.

                + diff --git a/0.0.13/html_split/_0023backgroundrequired_002dknowledge_002d1.html b/0.0.13/html_split/_0023backgroundrequired_002dknowledge_002d1.html new file mode 100644 index 0000000..f6f6bd0 --- /dev/null +++ b/0.0.13/html_split/_0023backgroundrequired_002dknowledge_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #backgroundrequired-knowledge-1.

                + diff --git a/0.0.13/html_split/_0023backgroundrequired_002dknowledge_002d2.html b/0.0.13/html_split/_0023backgroundrequired_002dknowledge_002d2.html new file mode 100644 index 0000000..b0b297d --- /dev/null +++ b/0.0.13/html_split/_0023backgroundrequired_002dknowledge_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #backgroundrequired-knowledge-2.

                + diff --git a/0.0.13/html_split/_0023backgroundrequired_002dknowledge_002d3.html b/0.0.13/html_split/_0023backgroundrequired_002dknowledge_002d3.html new file mode 100644 index 0000000..ae34d91 --- /dev/null +++ b/0.0.13/html_split/_0023backgroundrequired_002dknowledge_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #backgroundrequired-knowledge-3.

                + diff --git a/0.0.13/html_split/_0023backgroundrequired_002dknowledge_002d4.html b/0.0.13/html_split/_0023backgroundrequired_002dknowledge_002d4.html new file mode 100644 index 0000000..7417f62 --- /dev/null +++ b/0.0.13/html_split/_0023backgroundrequired_002dknowledge_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #backgroundrequired-knowledge-4.

                + diff --git a/0.0.13/html_split/_0023backgroundrequired_002dknowledge_002d5.html b/0.0.13/html_split/_0023backgroundrequired_002dknowledge_002d5.html new file mode 100644 index 0000000..34298e9 --- /dev/null +++ b/0.0.13/html_split/_0023backgroundrequired_002dknowledge_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #backgroundrequired-knowledge-5.

                + diff --git a/0.0.13/html_split/_0023backgroundrequired_002dknowledge_002d6.html b/0.0.13/html_split/_0023backgroundrequired_002dknowledge_002d6.html new file mode 100644 index 0000000..a1cdee1 --- /dev/null +++ b/0.0.13/html_split/_0023backgroundrequired_002dknowledge_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #backgroundrequired-knowledge-6.

                + diff --git a/0.0.13/html_split/_0023backgroundrequired_002dknowledge_002d7.html b/0.0.13/html_split/_0023backgroundrequired_002dknowledge_002d7.html new file mode 100644 index 0000000..0a8d35a --- /dev/null +++ b/0.0.13/html_split/_0023backgroundrequired_002dknowledge_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #backgroundrequired-knowledge-7.

                + diff --git a/0.0.13/html_split/_0023backgroundrequired_002dknowledge_002d8.html b/0.0.13/html_split/_0023backgroundrequired_002dknowledge_002d8.html new file mode 100644 index 0000000..6080498 --- /dev/null +++ b/0.0.13/html_split/_0023backgroundrequired_002dknowledge_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #backgroundrequired-knowledge-8.

                + diff --git a/0.0.13/html_split/_0023backgroundrequired_002dknowledge_002d9.html b/0.0.13/html_split/_0023backgroundrequired_002dknowledge_002d9.html new file mode 100644 index 0000000..3ea462d --- /dev/null +++ b/0.0.13/html_split/_0023backgroundrequired_002dknowledge_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #backgroundrequired-knowledge-9.

                + diff --git a/0.0.13/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html b/0.0.13/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html new file mode 100644 index 0000000..925c568 --- /dev/null +++ b/0.0.13/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html @@ -0,0 +1,40 @@ + + + + + + +#basics-types-objects-values-expressions-statements-and-control-flow-constructs (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #basics-types-objects-values-expressions-statements-and-control-flow-constructs.

                + diff --git a/0.0.13/html_split/_0023building.html b/0.0.13/html_split/_0023building.html new file mode 100644 index 0000000..8ffc9df --- /dev/null +++ b/0.0.13/html_split/_0023building.html @@ -0,0 +1,40 @@ + + + + + + +#building (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #building.

                + diff --git a/0.0.13/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html b/0.0.13/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html new file mode 100644 index 0000000..a7e6bad --- /dev/null +++ b/0.0.13/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html @@ -0,0 +1,40 @@ + + + + + + +#c-object-model-copy-semantics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #c-object-model-copy-semantics.

                + diff --git a/0.0.13/html_split/_0023caveats.html b/0.0.13/html_split/_0023caveats.html new file mode 100644 index 0000000..d4bac8b --- /dev/null +++ b/0.0.13/html_split/_0023caveats.html @@ -0,0 +1,40 @@ + + + + + + +#caveats (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #caveats.

                + diff --git a/0.0.13/html_split/_0023caveats_002d1.html b/0.0.13/html_split/_0023caveats_002d1.html new file mode 100644 index 0000000..64faefd --- /dev/null +++ b/0.0.13/html_split/_0023caveats_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #caveats-1.

                + diff --git a/0.0.13/html_split/_0023caveats_002d2.html b/0.0.13/html_split/_0023caveats_002d2.html new file mode 100644 index 0000000..6c66559 --- /dev/null +++ b/0.0.13/html_split/_0023caveats_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #caveats-2.

                + diff --git a/0.0.13/html_split/_0023caveats_002d3.html b/0.0.13/html_split/_0023caveats_002d3.html new file mode 100644 index 0000000..479063f --- /dev/null +++ b/0.0.13/html_split/_0023caveats_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #caveats-3.

                + diff --git a/0.0.13/html_split/_0023caveats_002d4.html b/0.0.13/html_split/_0023caveats_002d4.html new file mode 100644 index 0000000..9588a55 --- /dev/null +++ b/0.0.13/html_split/_0023caveats_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #caveats-4.

                + diff --git a/0.0.13/html_split/_0023caveats_002d5.html b/0.0.13/html_split/_0023caveats_002d5.html new file mode 100644 index 0000000..11edee5 --- /dev/null +++ b/0.0.13/html_split/_0023caveats_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #caveats-5.

                + diff --git a/0.0.13/html_split/_0023caveats_002d6.html b/0.0.13/html_split/_0023caveats_002d6.html new file mode 100644 index 0000000..6cea721 --- /dev/null +++ b/0.0.13/html_split/_0023caveats_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #caveats-6.

                + diff --git a/0.0.13/html_split/_0023caveats_002d7.html b/0.0.13/html_split/_0023caveats_002d7.html new file mode 100644 index 0000000..2a8f1cd --- /dev/null +++ b/0.0.13/html_split/_0023caveats_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #caveats-7.

                + diff --git a/0.0.13/html_split/_0023caveats_002d8.html b/0.0.13/html_split/_0023caveats_002d8.html new file mode 100644 index 0000000..e330642 --- /dev/null +++ b/0.0.13/html_split/_0023caveats_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #caveats-8.

                + diff --git a/0.0.13/html_split/_0023caveats_002d9.html b/0.0.13/html_split/_0023caveats_002d9.html new file mode 100644 index 0000000..004e434 --- /dev/null +++ b/0.0.13/html_split/_0023caveats_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #caveats-9.

                + diff --git a/0.0.13/html_split/_0023compilation_002dmodel.html b/0.0.13/html_split/_0023compilation_002dmodel.html new file mode 100644 index 0000000..1017867 --- /dev/null +++ b/0.0.13/html_split/_0023compilation_002dmodel.html @@ -0,0 +1,40 @@ + + + + + + +#compilation-model (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #compilation-model.

                + diff --git a/0.0.13/html_split/_0023compile_002dtime_002dcomputation.html b/0.0.13/html_split/_0023compile_002dtime_002dcomputation.html new file mode 100644 index 0000000..59b0c57 --- /dev/null +++ b/0.0.13/html_split/_0023compile_002dtime_002dcomputation.html @@ -0,0 +1,40 @@ + + + + + + +#compile-time-computation (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #compile-time-computation.

                + diff --git a/0.0.13/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html b/0.0.13/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html new file mode 100644 index 0000000..9294adf --- /dev/null +++ b/0.0.13/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html @@ -0,0 +1,40 @@ + + + + + + +#context-and-aim-of-this-guide (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #context-and-aim-of-this-guide.

                + diff --git a/0.0.13/html_split/_0023contributing_002dto_002dthis_002ddocument.html b/0.0.13/html_split/_0023contributing_002dto_002dthis_002ddocument.html new file mode 100644 index 0000000..272d848 --- /dev/null +++ b/0.0.13/html_split/_0023contributing_002dto_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#contributing-to-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #contributing-to-this-document.

                + diff --git a/0.0.13/html_split/_0023contributors.html b/0.0.13/html_split/_0023contributors.html new file mode 100644 index 0000000..a391f9d --- /dev/null +++ b/0.0.13/html_split/_0023contributors.html @@ -0,0 +1,40 @@ + + + + + + +#contributors (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #contributors.

                + diff --git a/0.0.13/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html b/0.0.13/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html new file mode 100644 index 0000000..d32c27e --- /dev/null +++ b/0.0.13/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html @@ -0,0 +1,40 @@ + + + + + + +#detailed-information-for-modules-and-topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #detailed-information-for-modules-and-topics.

                + diff --git a/0.0.13/html_split/_0023disclaimer.html b/0.0.13/html_split/_0023disclaimer.html new file mode 100644 index 0000000..e9658d6 --- /dev/null +++ b/0.0.13/html_split/_0023disclaimer.html @@ -0,0 +1,40 @@ + + + + + + +#disclaimer (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #disclaimer.

                + diff --git a/0.0.13/html_split/_0023error_002dhandling.html b/0.0.13/html_split/_0023error_002dhandling.html new file mode 100644 index 0000000..80cfb94 --- /dev/null +++ b/0.0.13/html_split/_0023error_002dhandling.html @@ -0,0 +1,40 @@ + + + + + + +#error-handling (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #error-handling.

                + diff --git a/0.0.13/html_split/_0023examples_002dof_002dcourse_002dcurricula.html b/0.0.13/html_split/_0023examples_002dof_002dcourse_002dcurricula.html new file mode 100644 index 0000000..99af091 --- /dev/null +++ b/0.0.13/html_split/_0023examples_002dof_002dcourse_002dcurricula.html @@ -0,0 +1,40 @@ + + + + + + +#examples-of-course-curricula (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #examples-of-course-curricula.

                + diff --git a/0.0.13/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html b/0.0.13/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html new file mode 100644 index 0000000..fc9b3eb --- /dev/null +++ b/0.0.13/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html @@ -0,0 +1,40 @@ + + + + + + +#external-i.e.-non-standard-libraries (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #external-i.e.-non-standard-libraries.

                + diff --git a/0.0.13/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html b/0.0.13/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html new file mode 100644 index 0000000..f915680 --- /dev/null +++ b/0.0.13/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-calling-static_assert-with-a-constant-expression (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #foundational-calling-static_assert-with-a-constant-expression.

                + diff --git a/0.0.13/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html b/0.0.13/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html new file mode 100644 index 0000000..88f62bc --- /dev/null +++ b/0.0.13/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-how-and-when-are-copies-made (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #foundational-how-and-when-are-copies-made.

                + diff --git a/0.0.13/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html b/0.0.13/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html new file mode 100644 index 0000000..95ab098 --- /dev/null +++ b/0.0.13/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-using-and-defining-functions-with-default-arguments (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #foundational-using-and-defining-functions-with-default-arguments.

                + diff --git a/0.0.13/html_split/_0023foundational_002dusing_002dudls.html b/0.0.13/html_split/_0023foundational_002dusing_002dudls.html new file mode 100644 index 0000000..2f7afdd --- /dev/null +++ b/0.0.13/html_split/_0023foundational_002dusing_002dudls.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-using-udls (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #foundational-using-udls.

                + diff --git a/0.0.13/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html b/0.0.13/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html new file mode 100644 index 0000000..708f2d3 --- /dev/null +++ b/0.0.13/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-writing-requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #foundational-writing-requires-expressions.

                + diff --git a/0.0.13/html_split/_0023functions.html b/0.0.13/html_split/_0023functions.html new file mode 100644 index 0000000..e304abe --- /dev/null +++ b/0.0.13/html_split/_0023functions.html @@ -0,0 +1,40 @@ + + + + + + +#functions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #functions.

                + diff --git a/0.0.13/html_split/_0023functions_002ddefault_002dargument.html b/0.0.13/html_split/_0023functions_002ddefault_002dargument.html new file mode 100644 index 0000000..ccfbcbb --- /dev/null +++ b/0.0.13/html_split/_0023functions_002ddefault_002dargument.html @@ -0,0 +1,40 @@ + + + + + + +#functions-default-argument (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #functions-default-argument.

                + diff --git a/0.0.13/html_split/_0023functions_002duser_002ddefined_002dliterals.html b/0.0.13/html_split/_0023functions_002duser_002ddefined_002dliterals.html new file mode 100644 index 0000000..b4f78b5 --- /dev/null +++ b/0.0.13/html_split/_0023functions_002duser_002ddefined_002dliterals.html @@ -0,0 +1,40 @@ + + + + + + +#functions-user-defined-literals (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #functions-user-defined-literals.

                + diff --git a/0.0.13/html_split/_0023generic_002dprogramming_002dtemplates.html b/0.0.13/html_split/_0023generic_002dprogramming_002dtemplates.html new file mode 100644 index 0000000..3b91080 --- /dev/null +++ b/0.0.13/html_split/_0023generic_002dprogramming_002dtemplates.html @@ -0,0 +1,40 @@ + + + + + + +#generic-programming-templates (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #generic-programming-templates.

                + diff --git a/0.0.13/html_split/_0023glossary.html b/0.0.13/html_split/_0023glossary.html new file mode 100644 index 0000000..9b46bf6 --- /dev/null +++ b/0.0.13/html_split/_0023glossary.html @@ -0,0 +1,40 @@ + + + + + + +#glossary (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #glossary.

                + diff --git a/0.0.13/html_split/_0023how_002dto_002dcontribute.html b/0.0.13/html_split/_0023how_002dto_002dcontribute.html new file mode 100644 index 0000000..d9cff4a --- /dev/null +++ b/0.0.13/html_split/_0023how_002dto_002dcontribute.html @@ -0,0 +1,40 @@ + + + + + + +#how-to-contribute (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #how-to-contribute.

                + diff --git a/0.0.13/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html b/0.0.13/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html new file mode 100644 index 0000000..def5140 --- /dev/null +++ b/0.0.13/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html @@ -0,0 +1,40 @@ + + + + + + +#inheritance-and-class-hierarchies (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #inheritance-and-class-hierarchies.

                + diff --git a/0.0.13/html_split/_0023license.html b/0.0.13/html_split/_0023license.html new file mode 100644 index 0000000..6b44dd1 --- /dev/null +++ b/0.0.13/html_split/_0023license.html @@ -0,0 +1,40 @@ + + + + + + +#license (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #license.

                + diff --git a/0.0.13/html_split/_0023main_002dadvanced_002drequirements.html b/0.0.13/html_split/_0023main_002dadvanced_002drequirements.html new file mode 100644 index 0000000..8214533 --- /dev/null +++ b/0.0.13/html_split/_0023main_002dadvanced_002drequirements.html @@ -0,0 +1,40 @@ + + + + + + +#main-advanced-requirements (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #main-advanced-requirements.

                + diff --git a/0.0.13/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html b/0.0.13/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html new file mode 100644 index 0000000..22b0484 --- /dev/null +++ b/0.0.13/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html @@ -0,0 +1,40 @@ + + + + + + +#main-contracts-and-static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #main-contracts-and-static_assert.

                + diff --git a/0.0.13/html_split/_0023main_002dimplementing.html b/0.0.13/html_split/_0023main_002dimplementing.html new file mode 100644 index 0000000..260008c --- /dev/null +++ b/0.0.13/html_split/_0023main_002dimplementing.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #main-implementing.

                + diff --git a/0.0.13/html_split/_0023main_002dimplementing_002dudls.html b/0.0.13/html_split/_0023main_002dimplementing_002dudls.html new file mode 100644 index 0000000..a41d194 --- /dev/null +++ b/0.0.13/html_split/_0023main_002dimplementing_002dudls.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing-udls (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #main-implementing-udls.

                + diff --git a/0.0.13/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html b/0.0.13/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html new file mode 100644 index 0000000..1e5a4d8 --- /dev/null +++ b/0.0.13/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing-user-defined-copy-operations (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #main-implementing-user-defined-copy-operations.

                + diff --git a/0.0.13/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html b/0.0.13/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html new file mode 100644 index 0000000..4502ed8 --- /dev/null +++ b/0.0.13/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html @@ -0,0 +1,40 @@ + + + + + + +#meta-error-handling-static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #meta-error-handling-static_assert.

                + diff --git a/0.0.13/html_split/_0023module_002dname_002drequires_002dexpressions.html b/0.0.13/html_split/_0023module_002dname_002drequires_002dexpressions.html new file mode 100644 index 0000000..56a9ebf --- /dev/null +++ b/0.0.13/html_split/_0023module_002dname_002drequires_002dexpressions.html @@ -0,0 +1,40 @@ + + + + + + +#module-name-requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #module-name-requires-expressions.

                + diff --git a/0.0.13/html_split/_0023motivation.html b/0.0.13/html_split/_0023motivation.html new file mode 100644 index 0000000..0141374 --- /dev/null +++ b/0.0.13/html_split/_0023motivation.html @@ -0,0 +1,40 @@ + + + + + + +#motivation (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #motivation.

                + diff --git a/0.0.13/html_split/_0023motivation_002d1.html b/0.0.13/html_split/_0023motivation_002d1.html new file mode 100644 index 0000000..7e4a69e --- /dev/null +++ b/0.0.13/html_split/_0023motivation_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #motivation-1.

                + diff --git a/0.0.13/html_split/_0023motivation_002d2.html b/0.0.13/html_split/_0023motivation_002d2.html new file mode 100644 index 0000000..7901fd3 --- /dev/null +++ b/0.0.13/html_split/_0023motivation_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #motivation-2.

                + diff --git a/0.0.13/html_split/_0023motivation_002d3.html b/0.0.13/html_split/_0023motivation_002d3.html new file mode 100644 index 0000000..ec720ad --- /dev/null +++ b/0.0.13/html_split/_0023motivation_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #motivation-3.

                + diff --git a/0.0.13/html_split/_0023motivation_002d4.html b/0.0.13/html_split/_0023motivation_002d4.html new file mode 100644 index 0000000..f53583a --- /dev/null +++ b/0.0.13/html_split/_0023motivation_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #motivation-4.

                + diff --git a/0.0.13/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html b/0.0.13/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html new file mode 100644 index 0000000..57e8b6e --- /dev/null +++ b/0.0.13/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html @@ -0,0 +1,40 @@ + + + + + + +#obtaining-this-document-the-most-recent-version-and-alternate-formats (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #obtaining-this-document-the-most-recent-version-and-alternate-formats.

                + diff --git a/0.0.13/html_split/_0023organization_002dof_002dthis_002ddocument.html b/0.0.13/html_split/_0023organization_002dof_002dthis_002ddocument.html new file mode 100644 index 0000000..e312b8e --- /dev/null +++ b/0.0.13/html_split/_0023organization_002dof_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#organization-of-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #organization-of-this-document.

                + diff --git a/0.0.13/html_split/_0023overview.html b/0.0.13/html_split/_0023overview.html new file mode 100644 index 0000000..b2d4bdc --- /dev/null +++ b/0.0.13/html_split/_0023overview.html @@ -0,0 +1,40 @@ + + + + + + +#overview (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #overview.

                + diff --git a/0.0.13/html_split/_0023overview_002d1.html b/0.0.13/html_split/_0023overview_002d1.html new file mode 100644 index 0000000..d551764 --- /dev/null +++ b/0.0.13/html_split/_0023overview_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#overview-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #overview-1.

                + diff --git a/0.0.13/html_split/_0023overview_002d2.html b/0.0.13/html_split/_0023overview_002d2.html new file mode 100644 index 0000000..5a34b05 --- /dev/null +++ b/0.0.13/html_split/_0023overview_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#overview-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #overview-2.

                + diff --git a/0.0.13/html_split/_0023overview_002d3.html b/0.0.13/html_split/_0023overview_002d3.html new file mode 100644 index 0000000..f230145 --- /dev/null +++ b/0.0.13/html_split/_0023overview_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#overview-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #overview-3.

                + diff --git a/0.0.13/html_split/_0023overview_002d4.html b/0.0.13/html_split/_0023overview_002d4.html new file mode 100644 index 0000000..2436b9a --- /dev/null +++ b/0.0.13/html_split/_0023overview_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#overview-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #overview-4.

                + diff --git a/0.0.13/html_split/_0023points_002dto_002dcover.html b/0.0.13/html_split/_0023points_002dto_002dcover.html new file mode 100644 index 0000000..424b02b --- /dev/null +++ b/0.0.13/html_split/_0023points_002dto_002dcover.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #points-to-cover.

                + diff --git a/0.0.13/html_split/_0023points_002dto_002dcover_002d1.html b/0.0.13/html_split/_0023points_002dto_002dcover_002d1.html new file mode 100644 index 0000000..2a554bb --- /dev/null +++ b/0.0.13/html_split/_0023points_002dto_002dcover_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #points-to-cover-1.

                + diff --git a/0.0.13/html_split/_0023points_002dto_002dcover_002d2.html b/0.0.13/html_split/_0023points_002dto_002dcover_002d2.html new file mode 100644 index 0000000..053a51a --- /dev/null +++ b/0.0.13/html_split/_0023points_002dto_002dcover_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #points-to-cover-2.

                + diff --git a/0.0.13/html_split/_0023points_002dto_002dcover_002d3.html b/0.0.13/html_split/_0023points_002dto_002dcover_002d3.html new file mode 100644 index 0000000..b0dad48 --- /dev/null +++ b/0.0.13/html_split/_0023points_002dto_002dcover_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #points-to-cover-3.

                + diff --git a/0.0.13/html_split/_0023points_002dto_002dcover_002d4.html b/0.0.13/html_split/_0023points_002dto_002dcover_002d4.html new file mode 100644 index 0000000..94de8fa --- /dev/null +++ b/0.0.13/html_split/_0023points_002dto_002dcover_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #points-to-cover-4.

                + diff --git a/0.0.13/html_split/_0023points_002dto_002dcover_002d5.html b/0.0.13/html_split/_0023points_002dto_002dcover_002d5.html new file mode 100644 index 0000000..39d1eaf --- /dev/null +++ b/0.0.13/html_split/_0023points_002dto_002dcover_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #points-to-cover-5.

                + diff --git a/0.0.13/html_split/_0023points_002dto_002dcover_002d6.html b/0.0.13/html_split/_0023points_002dto_002dcover_002d6.html new file mode 100644 index 0000000..92df88f --- /dev/null +++ b/0.0.13/html_split/_0023points_002dto_002dcover_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #points-to-cover-6.

                + diff --git a/0.0.13/html_split/_0023points_002dto_002dcover_002d7.html b/0.0.13/html_split/_0023points_002dto_002dcover_002d7.html new file mode 100644 index 0000000..6e6c895 --- /dev/null +++ b/0.0.13/html_split/_0023points_002dto_002dcover_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #points-to-cover-7.

                + diff --git a/0.0.13/html_split/_0023points_002dto_002dcover_002d8.html b/0.0.13/html_split/_0023points_002dto_002dcover_002d8.html new file mode 100644 index 0000000..b5574e1 --- /dev/null +++ b/0.0.13/html_split/_0023points_002dto_002dcover_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #points-to-cover-8.

                + diff --git a/0.0.13/html_split/_0023preprocessor.html b/0.0.13/html_split/_0023preprocessor.html new file mode 100644 index 0000000..a3bb5f6 --- /dev/null +++ b/0.0.13/html_split/_0023preprocessor.html @@ -0,0 +1,40 @@ + + + + + + +#preprocessor (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #preprocessor.

                + diff --git a/0.0.13/html_split/_0023references.html b/0.0.13/html_split/_0023references.html new file mode 100644 index 0000000..69fbd6b --- /dev/null +++ b/0.0.13/html_split/_0023references.html @@ -0,0 +1,40 @@ + + + + + + +#references (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #references.

                + diff --git a/0.0.13/html_split/_0023references_002don_002dlearning_002doutcomes.html b/0.0.13/html_split/_0023references_002don_002dlearning_002doutcomes.html new file mode 100644 index 0000000..d28fbbf --- /dev/null +++ b/0.0.13/html_split/_0023references_002don_002dlearning_002doutcomes.html @@ -0,0 +1,40 @@ + + + + + + +#references-on-learning-outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #references-on-learning-outcomes.

                + diff --git a/0.0.13/html_split/_0023software_002ddesign.html b/0.0.13/html_split/_0023software_002ddesign.html new file mode 100644 index 0000000..16f5f54 --- /dev/null +++ b/0.0.13/html_split/_0023software_002ddesign.html @@ -0,0 +1,40 @@ + + + + + + +#software-design (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #software-design.

                + diff --git a/0.0.13/html_split/_0023standard_002dlibrary.html b/0.0.13/html_split/_0023standard_002dlibrary.html new file mode 100644 index 0000000..71956d3 --- /dev/null +++ b/0.0.13/html_split/_0023standard_002dlibrary.html @@ -0,0 +1,40 @@ + + + + + + +#standard-library (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #standard-library.

                + diff --git a/0.0.13/html_split/_0023student_002doutcomes.html b/0.0.13/html_split/_0023student_002doutcomes.html new file mode 100644 index 0000000..df0035d --- /dev/null +++ b/0.0.13/html_split/_0023student_002doutcomes.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #student-outcomes.

                + diff --git a/0.0.13/html_split/_0023student_002doutcomes_002d1.html b/0.0.13/html_split/_0023student_002doutcomes_002d1.html new file mode 100644 index 0000000..e9344b7 --- /dev/null +++ b/0.0.13/html_split/_0023student_002doutcomes_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #student-outcomes-1.

                + diff --git a/0.0.13/html_split/_0023student_002doutcomes_002d2.html b/0.0.13/html_split/_0023student_002doutcomes_002d2.html new file mode 100644 index 0000000..6fa7724 --- /dev/null +++ b/0.0.13/html_split/_0023student_002doutcomes_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #student-outcomes-2.

                + diff --git a/0.0.13/html_split/_0023student_002doutcomes_002d3.html b/0.0.13/html_split/_0023student_002doutcomes_002d3.html new file mode 100644 index 0000000..195d9d2 --- /dev/null +++ b/0.0.13/html_split/_0023student_002doutcomes_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #student-outcomes-3.

                + diff --git a/0.0.13/html_split/_0023student_002doutcomes_002d4.html b/0.0.13/html_split/_0023student_002doutcomes_002d4.html new file mode 100644 index 0000000..3e30430 --- /dev/null +++ b/0.0.13/html_split/_0023student_002doutcomes_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #student-outcomes-4.

                + diff --git a/0.0.13/html_split/_0023student_002doutcomes_002d5.html b/0.0.13/html_split/_0023student_002doutcomes_002d5.html new file mode 100644 index 0000000..0a4a7da --- /dev/null +++ b/0.0.13/html_split/_0023student_002doutcomes_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #student-outcomes-5.

                + diff --git a/0.0.13/html_split/_0023student_002doutcomes_002d6.html b/0.0.13/html_split/_0023student_002doutcomes_002d6.html new file mode 100644 index 0000000..c5c4ac0 --- /dev/null +++ b/0.0.13/html_split/_0023student_002doutcomes_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #student-outcomes-6.

                + diff --git a/0.0.13/html_split/_0023student_002doutcomes_002d7.html b/0.0.13/html_split/_0023student_002doutcomes_002d7.html new file mode 100644 index 0000000..5233f94 --- /dev/null +++ b/0.0.13/html_split/_0023student_002doutcomes_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #student-outcomes-7.

                + diff --git a/0.0.13/html_split/_0023student_002doutcomes_002d8.html b/0.0.13/html_split/_0023student_002doutcomes_002d8.html new file mode 100644 index 0000000..f19fd7f --- /dev/null +++ b/0.0.13/html_split/_0023student_002doutcomes_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #student-outcomes-8.

                + diff --git a/0.0.13/html_split/_0023student_002doutcomes_002d9.html b/0.0.13/html_split/_0023student_002doutcomes_002d9.html new file mode 100644 index 0000000..735a21f --- /dev/null +++ b/0.0.13/html_split/_0023student_002doutcomes_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #student-outcomes-9.

                + diff --git a/0.0.13/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html b/0.0.13/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html new file mode 100644 index 0000000..4801178 --- /dev/null +++ b/0.0.13/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html @@ -0,0 +1,40 @@ + + + + + + +#summary-of-modules-and-topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #summary-of-modules-and-topics.

                + diff --git a/0.0.13/html_split/_0023testing_002dand_002ddebugging.html b/0.0.13/html_split/_0023testing_002dand_002ddebugging.html new file mode 100644 index 0000000..1ae096d --- /dev/null +++ b/0.0.13/html_split/_0023testing_002dand_002ddebugging.html @@ -0,0 +1,40 @@ + + + + + + +#testing-and-debugging (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #testing-and-debugging.

                + diff --git a/0.0.13/html_split/_0023tooling.html b/0.0.13/html_split/_0023tooling.html new file mode 100644 index 0000000..634a8dc --- /dev/null +++ b/0.0.13/html_split/_0023tooling.html @@ -0,0 +1,40 @@ + + + + + + +#tooling (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #tooling.

                + diff --git a/0.0.13/html_split/_0023topic_002dintroduction.html b/0.0.13/html_split/_0023topic_002dintroduction.html new file mode 100644 index 0000000..742d5d9 --- /dev/null +++ b/0.0.13/html_split/_0023topic_002dintroduction.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #topic-introduction.

                + diff --git a/0.0.13/html_split/_0023topic_002dintroduction_002d1.html b/0.0.13/html_split/_0023topic_002dintroduction_002d1.html new file mode 100644 index 0000000..a110644 --- /dev/null +++ b/0.0.13/html_split/_0023topic_002dintroduction_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #topic-introduction-1.

                + diff --git a/0.0.13/html_split/_0023topic_002dintroduction_002d2.html b/0.0.13/html_split/_0023topic_002dintroduction_002d2.html new file mode 100644 index 0000000..986bf37 --- /dev/null +++ b/0.0.13/html_split/_0023topic_002dintroduction_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #topic-introduction-2.

                + diff --git a/0.0.13/html_split/_0023topic_002dintroduction_002d3.html b/0.0.13/html_split/_0023topic_002dintroduction_002d3.html new file mode 100644 index 0000000..3d14fd9 --- /dev/null +++ b/0.0.13/html_split/_0023topic_002dintroduction_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #topic-introduction-3.

                + diff --git a/0.0.13/html_split/_0023topic_002dintroduction_002d4.html b/0.0.13/html_split/_0023topic_002dintroduction_002d4.html new file mode 100644 index 0000000..c73a236 --- /dev/null +++ b/0.0.13/html_split/_0023topic_002dintroduction_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #topic-introduction-4.

                + diff --git a/0.0.13/html_split/_0023use_002dof_002dthis_002ddocument.html b/0.0.13/html_split/_0023use_002dof_002dthis_002ddocument.html new file mode 100644 index 0000000..68d835d --- /dev/null +++ b/0.0.13/html_split/_0023use_002dof_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#use-of-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #use-of-this-document.

                + diff --git a/0.0.13/html_split/_0023user_002ddefined_002dtypes_002dclasses.html b/0.0.13/html_split/_0023user_002ddefined_002dtypes_002dclasses.html new file mode 100644 index 0000000..04771a9 --- /dev/null +++ b/0.0.13/html_split/_0023user_002ddefined_002dtypes_002dclasses.html @@ -0,0 +1,40 @@ + + + + + + +#user-defined-types-classes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #user-defined-types-classes.

                + diff --git a/0.0.13/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html b/0.0.13/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html new file mode 100644 index 0000000..f4b9435 --- /dev/null +++ b/0.0.13/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html @@ -0,0 +1,40 @@ + + + + + + +#working-group-documents-related-to-c-teaching-guidelines (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                The node you are looking for is at #working-group-documents-related-to-c-teaching-guidelines.

                + diff --git a/0.0.13/html_split/index.html b/0.0.13/html_split/index.html new file mode 100644 index 0000000..da85671 --- /dev/null +++ b/0.0.13/html_split/index.html @@ -0,0 +1,240 @@ + + + + + +Top (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +

                Table of Contents

                + +
                + + +
                + + + +
                +

                Guidelines for Teaching C++

                + + + + + + + + + + + + + + + + + + +
                + + + + + + diff --git a/0.0.13/html_split/unknown_node.html b/0.0.13/html_split/unknown_node.html new file mode 100644 index 0000000..fa2561b --- /dev/null +++ b/0.0.13/html_split/unknown_node.html @@ -0,0 +1,818 @@ + + + + + +Guidelines for Teaching C++ + + + + + + + + + + + + + + + + +
                +

                +   [Contents]

                +
                +
                +

                8.1.5.1 Background/Required Knowledge

                +

                A student is able to: * identify special member functions +[C++ object model: +special member functions] +

                +

                It helps when a student is able to: * use move semantics +[C++ object model: move +semantics] * explain the rule of zero +[C++ object model: rule-of-zero] +* explain the rule of five [C++ +object model: rule-of-five] +

                +
                +

                +   [Contents]

                +
                +

                8.1.5.2 Student outcomes

                +

                A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                +

                A student should be able to: * explain when they have to implement the +copy operations for their own type * Copy constructor * Copy assignment +operator * implement copy operations for their own types * +Optional: explain when copying with basic and strong exception +guarantees is useful +

                +
                +

                +   [Contents]

                +
                +

                8.1.5.3 Caveats

                +

                This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                +
                  +
                • Intricacies when implementing copy operations: +
                    +
                  • Examples of how not to write copy operations (e.g., C++03 +std::auto_ptr) +
                  + +
                + +
                +

                +   [Contents]

                +
                +

                8.1.5.4 Points to cover

                +

                This section lists important details for each point. +

                +
                  +
                • Copy constructors and copy assignment operators +
                    +
                  • How compiler generates default copy operations +
                  • =default, =delete (No copy) +
                  • How-to write your own copy operations +
                  • Rule-of-five +
                  • Copy assignment operators can be ref-qualified to avoid assigning into +temporary objects. +
                  + +
                + +
                +

                +   [Contents]

                +
                +

                8.2.1 Overview

                +

                Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

                + + + + + +
                LevelObjectives
                FoundationalDefine and use requires-expressions to check satisfaction of +expressions by given parameters
                MainDefine and use requires-expressions to check properties of +expressions
                Advanced
                + +
                +

                +   [Contents]

                +
                +

                8.2.2 Motivation

                +

                Why is this important? Why do we want to learn/teach this +topic? +

                +

                Requires-expressions allow a developer to perform compile-time +evaluation on the validity of other expressions. These are fundamental +to the ability to write concepts. +[Compile-time programming: +concepts] +

                +
                +

                +   [Contents]

                +
                +

                8.3 Topic introduction

                +

                Very brief introduction to the topic. +

                +

                Requires-expressions are compile-time predicates which evaluate to true +when their specified set of expressions are all valid for a given set of +inputs. +

                + + + + + + +
                +

                +   [Contents]

                +
                +

                8.3.1.1 Background/Required Knowledge

                +

                A student is able to: +

                + + +

                It is helpful if: +

                +
                  +
                • The student is aware that attempting to specialize the template with +types or values which do not match otherwise unstated assumptions will +cause errors within the template. +
                + +
                +

                +   [Contents]

                +
                +

                8.3.1.2 Student outcomes

                +

                A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                +

                A student should be able to: +

                +
                  +
                1. Write a simple-requirement to assert the validity of an expression +
                2. Write a type-requirement to check the existence of a type by its +identifier +
                3. Write a compound-requirement to test the resulting type of an expression +
                4. Write a nested-requirement to test the constexpr value of an operation, +as opposed to just the syntactic validity +
                5. Use a requires-expression within a concept, requires-clause, or +if constexpr condition +
                + +
                +

                +   [Contents]

                +
                +

                8.3.1.3 Caveats

                +

                This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                +

                To require that expressions, which evaluate to a boolean value like +sizeof(t) == 4, evaluate to true a nested-requirement is +needed (e.g., requires sizeof(t) == 4;). Omitting the +requires results in a simple-requirement, which is satisfied +based purely on syntactic validity, not on the result of the operation. +

                +
                +

                +   [Contents]

                +
                +

                8.3.1.4 Points to cover

                +

                This section lists important details for each point. +

                +
                  +
                • All requires-expression requirements terminate with a semicolon. +
                • simple-requirements are used to check that an expression is well-formed. +
                • nested-requirements are introduced with requires and primarily +used to check the result of an expression computable by the compiler, +including concepts or other requires-expressions. +
                • type-requirements are introduced with typename and used to verify +the existence of a type with a particular identifier. +
                • compound-requirements are enclosed in braces and can be used to check +the resulting type of an expression. +
                • Checks are performed by the compiler, not at run time. +
                • If covering usage of requires-expression with requires-clause, +[Compile-time programming: +requires clause] demonstrate requires requires and show how to +ever avoid writing it by using a concept. +[Compile-time programming: +concepts] +
                + +
                +

                +   [Contents]

                +
                +

                8.3.2.1 Background/Required Knowledge

                +
                  +
                • All of the above. +
                • Knowledge of noexcept +
                + +

                A student is able to: +

                + + +
                +

                +   [Contents]

                +
                +

                8.3.2.2 Student outcomes

                +

                A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                +

                A student should be able to: +

                +
                  +
                1. Write compound-requirements which test the noexceptness of an +expression. +
                2. Use a concept as the target of a compound-requirement. +
                + +
                +

                +   [Contents]

                +
                +

                8.3.2.3 Caveats

                +

                This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                +
                +

                +   [Contents]

                +
                +

                8.3.2.4 Points to cover

                +

                This section lists important details for each point. +

                +
                  +
                • Compound-requirements allow the optional ability to test whether an +expression is marked as noexcept, by using a trailing +noexcept keyword. +
                + +
                struct S
                +{
                +    void foo() noexcept {}
                +    void bar() {}
                +};
                +
                +static_assert(requires(S s) { { s.foo() } noexcept; } ); // Succeeds. s.foo() is noexcept
                +static_assert(requires(S s) { { s.bar() } noexcept; } ); // Fails. s.bar() is not noexcept
                +
                +
                  +
                • If the return-type-requirement of a compound-requirement is a concept, +that concept is given the resulting type as the first parameter, +followed by the specified parameters in the compound-requirement. +{ ++x } -> C<int> would substitute +C<decltype((++x)), int> and check that concept C is satisfied for +those parameters. +
                + +
                +

                +   [Contents]

                +
                +

                8.3.3 Advanced

                +

                See user-defined-literals. +

                +
                +

                +   [Contents]

                +
                +

                8.4.1 Overview

                +

                Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

                + + + + + +
                LevelObjectives
                Foundationalusing and understanding UDLs
                Mainimplementing your own UDLs
                AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
                + +
                +

                +   [Contents]

                +
                +

                8.4.2 Motivation

                +

                Why is this important? Why do we want to learn/teach this +topic? +

                +
                  +
                • Allows clearer expression of intent in C++. +
                • std::string: "Hello, world!"s +
                • std::chrono: 3h + 10min + 5s +
                + +
                +

                +   [Contents]

                +
                +

                8.4.3 Topic introduction

                +

                Very brief introduction to the topic. +

                +
                  +
                • Explain the existence of user defined literals. Example: +12min + 17s is terse, expressive and type safe. +
                + +
                +

                +   [Contents]

                +
                +

                8.4.4.1 Background/Required Knowledge

                +

                A student: * knows how to form numeric literals, e.g., 1.5f means +a float of value 1.5. * is familiar with the major C++ +types: * bool (Boolean type) * int (Integer type) * +double (Floating-point type) * std::string (Text type) * +std::vector (Collection type) * knows that namespaces exist, and +namespace std. * knows what using-declarations and +using-directives are. [C++ object +model: declarations] +

                +
                +

                +   [Contents]

                +
                +

                8.4.4.2 Student outcomes

                +

                A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                +

                A student should be able to: +

                +
                  +
                1. use using namespace std::string_literals[1]. +
                2. recognise UDLs in code that they are reading. +
                3. figure out which UDL definitions for a used type exist. +
                4. identify parts of the standard library that make use of UDLs. +
                5. prevent the dangers of temporaries created with "blah"s as well +as with std::string{"blah"}. +
                6. effectively selects the right set of namespaces in using-directives from +the sub-namespaces std::literals. +
                + +

                [1]: explain that it’s okay to use a using-directive to “activate” +UDLs. +

                +
                +

                +   [Contents]

                +
                +

                8.4.4.3 Caveats

                +

                This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                +
                  +
                • A student gets confused by the similarities and differences between +built-in suffixes and UDLs and between UDLs from different namespaces. +
                • A student “activates” two suffixes with the same signature from +different namespaces. +
                + +
                +

                +   [Contents]

                +
                +

                8.4.4.4 Points to cover

                +

                This section lists important details for each point. +

                +
                +

                +   [Contents]

                +
                +

                8.4.5.1 Background/Required Knowledge

                +
                  +
                • All of the above. +
                + +
                +

                +   [Contents]

                +
                +

                8.4.5.2 Student outcomes

                +

                A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                +

                A student should be able to: +

                +
                  +
                1. write a UDL operator of their own. +
                2. separate unrelated UDLs into distinct namespaces. +
                + +
                +

                +   [Contents]

                +
                +

                8.4.5.3 Caveats

                +

                This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                +

                No caveats at present. #### Points to cover +

                +

                This section lists important details for each point. +

                +

                No caveats at present. ### Advanced {#udl-advanced} +

                +

                These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

                +
                +

                +   [Contents]

                +
                +

                8.5.1 Overview

                +

                Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

                +

                Functions in C++ may be overloaded with different numbers and types of +parameters. It may be of value to specify default arguments for some +number of parameters, to allow a caller to avoid specifying arguments +that rarely change, or to enable expanding the set of parameters while +maintaining backward compatibility with existing callers. +

                + + + + + +
                LevelObjective
                FoundationalDefine and use functions with default arguments
                Main
                Advancedrefinement of default arguments through multiple declarations
                + +
                +

                +   [Contents]

                +
                +

                8.5.2 Motivation

                +

                Why is this important? Why do we want to learn/teach this +topic? +

                +

                Default arguments allow the omission of arguments with obvious or common +values. Also may be utilized to extend an existing function signature +without forcing changes to existing calling code. +

                +
                +

                +   [Contents]

                +
                +

                8.5.3 Topic introduction

                +

                Very brief introduction to the topic. +

                +

                Explain how default arguments work and how to define them. +

                +
                +

                +   [Contents]

                +
                +

                8.5.4.1 Background/Required Knowledge

                +

                A student is able to: +

                + + +
                +

                +   [Contents]

                +
                +

                8.5.4.2 Student outcomes

                +

                A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                +

                A student should be able to: +

                +
                  +
                1. Call to a function with a default argument with or without that argument +specified +
                2. Declare a function with a default argument, and omit the default in the +definition’s signature +
                3. Explain when the lifetime of a default argument begins and ends +
                + +
                +

                +   [Contents]

                +
                +

                8.5.4.3 Caveats

                +

                This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                +
                  +
                • When no forward-declaration exists, the definition serves as the +declaration +
                • When multiple declarations exist, only one may specify the default for +any particular parameter, but multiple declarations may specify the +defaults for different parameters. +
                • Additional default values may be specified for other parameters in +repeat declarations +
                • Calling an overloaded function with fewer arguments may be ambiguous +with regard to an overload with default arguments +
                + +
                +

                +   [Contents]

                +
                +

                8.5.4.4 Points to cover

                +

                This section lists important details for each point. +

                +
                  +
                • Default value may only be specified once for each parameter among all +declarations +
                • Default values must start from the rightmost parameter and continue +leftward without gaps +
                • Considerations of when to use default arguments vs overload set +
                + +
                +

                +   [Contents]

                +
                +

                8.5.5.2 Student outcomes

                +

                A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                +

                A student should be able to: +

                +
                +

                +   [Contents]

                +
                +

                8.5.5.3 Caveats

                +

                This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                +
                +

                +   [Contents]

                +
                +

                8.5.5.4 Points to cover

                +

                This section lists important details for each point. +

                +
                +

                +   [Contents]

                +
                +

                8.5.6 Advanced

                +

                These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

                +

                Subsequent redeclarations of the same function may add default argument +values, which are then usable by callers. Though a single parameter +cannot be given a default argument twice in the same translation unit, +it is legal, though ill-advised, to give the same function different +default arguments in different translation units. +

                +

                See concepts. +

                +
                +

                +   [Contents]

                +
                +

                8.6.1 Overview

                +

                Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

                + + + + + +
                LevelObjectives
                FoundationalCalling static_assert with a constant expression
                MainUsing static_assert to detect contract violations and +improve error messages
                Advanced
                + +
                +

                +   [Contents]

                +
                +

                8.6.2 Motivation

                +

                Why is this important? Why do we want to learn/teach this +topic? +

                +

                static_assert allows the developer to enforce that conditions +which can be checked during compilation will force build errors when +violated. Additionally, they are the best mechanism by which a developer +can pass useful information to other developers regarding what violation +occurred or what must be done, instead. +

                +
                +

                +   [Contents]

                +
                +

                8.6.3 Topic introduction

                +

                Very brief introduction to the topic. +

                +

                static_assert is a compile-time evaluated function that asserts +the truth of a supplied predicate, issuing an optional user-supplied +error message if the predicate is false. +

                +
                +

                +   [Contents]

                +
                +

                8.6.4.1 Background/Required Knowledge

                +

                A student: +

                +
                  +
                • Should be able to explain the difference between code evaluated at +compile-time and run-time +
                • Should be able to cite some examples of compile-time known information, +such as sizeof(T) +
                + +
                +

                +   [Contents]

                +
                +

                8.6.4.2 Student outcomes

                +

                A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                +

                A student should be able to: +

                +
                  +
                1. Assert the expected size of a structure using static_assert +
                + +
                +

                +   [Contents]

                +
                +

                8.6.4.3 Caveats

                +

                This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                +
                +

                +   [Contents]

                +
                +

                8.6.4.4 Points to cover

                +

                This section lists important details for each point. +

                +
                  +
                • X +
                • In addition to what is wrong, a good error message will inform the user +of how to correct it +
                + +
                +

                +   [Contents]

                +
                +

                8.6.5.1 Background/Required Knowledge

                +
                  +
                • All of the above. +
                • General understanding of compile-time requirements +
                + +
                +

                +   [Contents]

                +
                +

                8.6.5.2 Student outcomes

                +

                A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                +

                A student should be able to: +

                +
                  +
                1. Utilize static_assert to verify preconditions of a meta-function +
                2. Utilize static_assert to verify the results of meta-functions for +known values +
                + +
                +

                +   [Contents]

                +
                +

                8.6.5.3 Caveats

                +

                This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                +
                +

                +   [Contents]

                +
                +

                8.6.5.4 Points to cover

                +

                This section lists important details for each point. +

                +
                  +
                • When writing a meta-function, use static_assert to test the +results +
                • Write static_assert calls at the scope of the code they are +guarding +
                + +
                template<typename T>
                +struct container {
                +    std::map<int, T> vals;
                +
                +    // Test location #1
                +    static_assert(
                +        std::is_default_constructible_v<T>,
                +        "container type T must be default constructible");i
                +
                +    void add(int key, T const& t) {
                +        // Test location #2
                +        static_assert(
                +            std::is_default_constructible_v<T>,
                +            "container type T must be default constructible");
                +        // std::map::operator[] requires default constructible type for 
                +        // the value. This will cause a build failure deep in the 
                +        // implementation of std::map, when T is not default constructible
                +        vals[key] = t;
                +    }
                +};
                +
                +struct NoDefCtor {
                +    NoDefCtor() = delete;
                +    NoDefCtor(double d) {}
                +};
                +
                +container<NoDefCtor> c; // If Test #1 was omitted, this would succeed
                +// This is ill-formed. Test #2 would catch this and provide a better 
                +// error message for the user
                +c.add(42, NoDefCtor(1.0)); 
                +
                +
                +

                +   [Contents]

                +
                +

                8.6.6 Advanced

                +

                These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

                + + + + + diff --git a/latest/index.html b/latest/index.html index d8dd476..ea3931d 100644 --- a/latest/index.html +++ b/latest/index.html @@ -106,7 +106,7 @@

                Guidelines for Teaching C++

                -

                Version 0.0.12

                +

                Version 0.0.13

                SG20 (ISO C++ Study Group on Education)

                @@ -147,7 +147,7 @@

                Version 0.0.12

              • 8.1.2 Motivation
              • 8.1.3 Topic introduction
              • 8.1.4 Foundational: How and when are copies made
              • -
              • 8.1.5 Main: Implementing user-defined copy operations
              • +
              • 8.1.5 Main: Implementing user-defined copy operations
              • 8.1.6 Advanced
            • 8.2 Module name: Requires Expressions
                @@ -156,7 +156,7 @@

                Version 0.0.12

            • 8.3 Topic introduction
            • 8.4 Functions: user-defined literals
            • 8.5 Functions: default argument
            • 8.6 Meta-error handling: static_assert
          • @@ -203,9 +203,9 @@

            <

            The most recent version of this document is available as an online HTML document at: https://cplusplus.github.io/SG20/latest/.

            The version of the document that you are currently reading is available in the following formats:

              -
            1. online (HTML) format as a single large HTML document: https://cplusplus.github.io/SG20/0.0.12/html

            2. -
            3. EPUB format: https://cplusplus.github.io/SG20/0.0.12/guidelines.epub

            4. -
            5. online (HTML) format, split across multiple HTML documents: https://cplusplus.github.io/SG20/0.0.12/html_split/ [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

            6. +
            7. online (HTML) format as a single large HTML document: https://cplusplus.github.io/SG20/0.0.13/html

            8. +
            9. EPUB format: https://cplusplus.github.io/SG20/0.0.13/guidelines.epub

            10. +
            11. online (HTML) format, split across multiple HTML documents: https://cplusplus.github.io/SG20/0.0.13/html_split/ [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

            Older versions of this document are also available. In general version ver is available at https://cplusplus.github.io/SG20/ver/html. For example, version 0.1.0 (assuming that this version exists) would be available at https://cplusplus.github.io/SG20/0.1.0/html.

            2 Disclaimer

            @@ -224,12 +224,12 @@

            4 Use o

            5 Contributing to This Document

            Contributions to this document are welcome. If you would like to help with this project as a contributor, please read the section How to Contribute.

            6 Organization of This Document

            -

            The various concepts (i.e., ideas) to potentially be covered are partitioned into modules. A module is very broad in scope and consists of numerous topics. [Note: Can I suggest that we use the term “area” or “unit” instead of “module”? I think that these other choices are better and also avoid any potential confusion over what is meant by “module” (i.e., C++ term versus plain English term).]

            +

            The various concepts (i.e., ideas) to potentially be covered are partitioned into modules. A module is very broad in scope and consists of numerous topics.

            For each module, topics related to the module are identified. Then, for each topic, learning outcomes are specified. In order to address a wide variety of courses on C++, each topic is addressed at three proficiency levels. These proficiency levels allow each topic to be covered at more than one level of detail. This allows target audiences with different background and learning objectives to be accommodated. The three proficiency levels are as follows:

              -
            • foundational. This level gives the learner the idea that a facility exists, what benefits it offers, and the basic ways of using it. [Note: Isn’t this just “novice”/“beginner”?]

            • -
            • main. This level shows mainstream uses and techniques. For abstraction and organizational mechanisms it also demonstrates how to build them. This level should also give the learner a basic (but not detailed) understanding of how a facility might be implemented so that the learner can have a first-order understanding of any costs involved. [Note: The term “main” is not very descriptive/helpful. Could I suggest using “intermediate”?]

            • -
            • advanced. This level gives information suitable for an expert. For most topics there is an expert level of knowledge that most programmers rarely need and techniques that require detailed understanding of language rules or library implementation.

            • +
            • foundational: This level gives the learner the idea that a facility exists, what benefits it offers, and the basic ways of using it.

            • +
            • main: This level shows mainstream uses and techniques. For abstraction and organizational mechanisms it also demonstrates how to build them. This level should also give the learner a basic (but not detailed) understanding of how a facility might be implemented so that the learner can have a first-order understanding of any costs involved.

            • +
            • advanced: This level gives information suitable for an expert. For most topics there is an expert level of knowledge that most programmers rarely need and techniques that require detailed understanding of language rules or library implementation.

            The remainder of this document is organized as follows. The various topics are listed grouped by module. In cases where a topic might be classified into more than one module, the topic is listed under the module of most direct relevance. This is done in order to avoid duplication of content. (In the case that a topic is equally relevant to multiple modules, the decision of which to select is made by a proverbial coin toss.) The order in which modules and topics are presented is not meant to imply any order of coverage in a course. The order in which items are listed is essentially arbitrary.

            7 Summary of Modules and Topics

            @@ -426,7 +426,7 @@

            7.4 Functions

            [udl] User-Defined Literals ✔️ -✔️ +✔️ — @@ -524,7 +524,7 @@

            7.5 User-Defined Types (Cl [copy] Copy Semantics ✔️ -✔️ +✔️ — @@ -594,7 +594,7 @@

            7.7 Compile-Time Computat [static-assert] static_assert ✔️ -✔️ +✔️ — @@ -650,7 +650,7 @@

            7.8 Generic Programming (T [req-expr] Requires Expressions ✔️ -✔️ +✔️ — @@ -940,7 +940,7 @@

            8.1.4.4 Poin
          • Strings (copies the value)
        -

        8.1.5 Main: Implementing user-defined copy operations

        +

        8.1.5 Main: Implementing user-defined copy operations

        8.1.5.1 Background/Required Knowledge

        A student is able to: * identify special member functions [C++ object model: special member functions]

        It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain the rule of zero [C++ object model: rule-of-zero] * explain the rule of five [C++ object model: rule-of-five]

        @@ -1041,7 +1041,7 @@

        8.3.1.4 Po
      • Checks are performed by the compiler, not at run time.
      • If covering usage of requires-expression with requires-clause, [Compile-time programming: requires clause] demonstrate requires requires and show how to ever avoid writing it by using a concept. [Compile-time programming: concepts]
      -

      8.3.2 Main: Advanced requirements

      +

      8.3.2 Main: Advanced requirements

      8.3.2.1 Background/Required Knowledge

      • All of the above.
      • @@ -1143,7 +1143,7 @@

        8.4.4.3 Caveats

        8.4.4.4 Points to cover

        This section lists important details for each point.

        -

        8.4.5 Main: implementing UDLs

        +

        8.4.5 Main: implementing UDLs

        8.4.5.1 Background/Required Knowledge

        • All of the above.
        • @@ -1230,7 +1230,7 @@

          8.5.4.4 Po
        • Default values must start from the rightmost parameter and continue leftward without gaps
        • Considerations of when to use default arguments vs overload set
        -

        8.5.5 Main: implementing *

        +

        8.5.5 Main: implementing *

        8.5.5.1 Background/Required knowledge

        • All of the above.
        • @@ -1303,7 +1303,7 @@

          8.6.4.4 Po
        • X
        • In addition to what is wrong, a good error message will inform the user of how to correct it
        -

        8.6.5 Main: Contracts and static_assert

        +

        8.6.5 Main: Contracts and static_assert

        8.6.5.1 Background/Required Knowledge

        • All of the above.
        • From ebc19425535ed28efca357ec252fee2256fb1616 Mon Sep 17 00:00:00 2001 From: vulder Date: Tue, 2 Nov 2021 22:37:33 +0000 Subject: [PATCH 15/21] deploy: a06346221f76231d447e3ccfb683bd53210a11c3 --- 0.0.14/guidelines.epub | Bin 0 -> 31122 bytes 0.0.14/html/images/cpp_logo.png | Bin 0 -> 23613 bytes 0.0.14/html/index.html | 1449 +++++++++++++++++ 0.0.14/html_split/Advanced.html | 60 + .../Background_002fRequired-Knowledge.html | 64 + .../Background_002fRequired-knowledge.html | 54 + ...ments-and-Control_002dFlow-Constructs.html | 60 + 0.0.14/html_split/Building.html | 57 + ...002b_002b-object-model-copy-semantics.html | 69 + 0.0.14/html_split/Caveats.html | 62 + 0.0.14/html_split/Compilation-Model.html | 62 + .../Compile_002dTime-Computation.html | 57 + .../Context-and-Aim-of-This-Guide.html | 76 + .../Contributing-to-This-Document.html | 55 + 0.0.14/html_split/Contributors.html | 57 + ...ed-Information-for-Modules-and-Topics.html | 67 + 0.0.14/html_split/Disclaimer.html | 55 + 0.0.14/html_split/Error-Handling.html | 59 + .../Examples-of-Course-Curricula.html | 53 + .../External-ie-Non-Standard-Libraries.html | 56 + ...005fassert-with-a-constant-expression.html | 62 + ...dational-How-and-when-are-copies-made.html | 63 + .../html_split/Foundational-Using-UDLs.html | 61 + ...ning-functions-with-default-arguments.html | 62 + ...onal-Writing-requires_002dexpressions.html | 60 + .../Functions-default-argument.html | 67 + .../Functions-user_002ddefined-literals.html | 65 + 0.0.14/html_split/Functions.html | 61 + .../Generic-Programming-Templates.html | 61 + 0.0.14/html_split/Glossary.html | 58 + 0.0.14/html_split/How-To-Contribute.html | 89 + .../Inheritance-and-Class-Hierarchies.html | 57 + 0.0.14/html_split/License.html | 100 ++ .../Main-Advanced-requirements.html | 60 + .../Main-Contracts-and-static_005fassert.html | 61 + ...ting-user_002ddefined-copy-operations.html | 62 + 0.0.14/html_split/Main-implementing-UDLs.html | 59 + .../html_split/Main-implementing-_002a.html | 62 + ..._002derror-handling-static_005fassert.html | 67 + .../Module-name-Requires-Expressions.html | 60 + 0.0.14/html_split/Motivation.html | 57 + ...-Recent-Version-and-Alternate-Formats.html | 78 + .../Organization-of-This-Document.html | 95 ++ 0.0.14/html_split/Overview.html | 61 + 0.0.14/html_split/Points-to-cover.html | 69 + 0.0.14/html_split/Preprocessor.html | 58 + .../References-on-Learning-Outcomes.html | 71 + 0.0.14/html_split/References.html | 59 + 0.0.14/html_split/Software-Design.html | 56 + 0.0.14/html_split/Standard-Library.html | 57 + 0.0.14/html_split/Student-outcomes.html | 73 + .../Summary-of-Modules-and-Topics.html | 100 ++ 0.0.14/html_split/Testing-and-Debugging.html | 59 + 0.0.14/html_split/Tooling.html | 57 + 0.0.14/html_split/Topic-introduction.html | 55 + 0.0.14/html_split/Use-of-This-Document.html | 58 + .../User_002dDefined-Types-Classes.html | 69 + ...ed-to-C_002b_002b-Teaching-Guidelines.html | 69 + 0.0.14/html_split/_0023advanced.html | 40 + 0.0.14/html_split/_0023advanced_002d1.html | 40 + 0.0.14/html_split/_0023advanced_002d2.html | 40 + 0.0.14/html_split/_0023advanced_002d3.html | 40 + ..._0023backgroundrequired_002dknowledge.html | 40 + ...ackgroundrequired_002dknowledge_002d1.html | 40 + ...ackgroundrequired_002dknowledge_002d2.html | 40 + ...ackgroundrequired_002dknowledge_002d3.html | 40 + ...ackgroundrequired_002dknowledge_002d4.html | 40 + ...ackgroundrequired_002dknowledge_002d5.html | 40 + ...ackgroundrequired_002dknowledge_002d6.html | 40 + ...ackgroundrequired_002dknowledge_002d7.html | 40 + ...ackgroundrequired_002dknowledge_002d8.html | 40 + ...ackgroundrequired_002dknowledge_002d9.html | 40 + ...d_002dcontrol_002dflow_002dconstructs.html | 40 + 0.0.14/html_split/_0023building.html | 40 + ...ject_002dmodel_002dcopy_002dsemantics.html | 40 + 0.0.14/html_split/_0023caveats.html | 40 + 0.0.14/html_split/_0023caveats_002d1.html | 40 + 0.0.14/html_split/_0023caveats_002d2.html | 40 + 0.0.14/html_split/_0023caveats_002d3.html | 40 + 0.0.14/html_split/_0023caveats_002d4.html | 40 + 0.0.14/html_split/_0023caveats_002d5.html | 40 + 0.0.14/html_split/_0023caveats_002d6.html | 40 + 0.0.14/html_split/_0023caveats_002d7.html | 40 + 0.0.14/html_split/_0023caveats_002d8.html | 40 + 0.0.14/html_split/_0023caveats_002d9.html | 40 + .../_0023compilation_002dmodel.html | 40 + ..._0023compile_002dtime_002dcomputation.html | 40 + ...and_002daim_002dof_002dthis_002dguide.html | 40 + ...ributing_002dto_002dthis_002ddocument.html | 40 + 0.0.14/html_split/_0023contributors.html | 40 + ...02dfor_002dmodules_002dand_002dtopics.html | 40 + 0.0.14/html_split/_0023disclaimer.html | 40 + .../html_split/_0023error_002dhandling.html | 40 + ...mples_002dof_002dcourse_002dcurricula.html | 40 + ...2e_002dnon_002dstandard_002dlibraries.html | 40 + ...ith_002da_002dconstant_002dexpression.html | 40 + ..._002dwhen_002dare_002dcopies_002dmade.html | 40 + ...ns_002dwith_002ddefault_002darguments.html | 40 + .../_0023foundational_002dusing_002dudls.html | 40 + ...dwriting_002drequires_002dexpressions.html | 40 + 0.0.14/html_split/_0023functions.html | 40 + ...023functions_002ddefault_002dargument.html | 40 + ...ons_002duser_002ddefined_002dliterals.html | 40 + ...generic_002dprogramming_002dtemplates.html | 40 + 0.0.14/html_split/_0023glossary.html | 40 + .../_0023how_002dto_002dcontribute.html | 40 + ...nce_002dand_002dclass_002dhierarchies.html | 40 + 0.0.14/html_split/_0023license.html | 40 + ...023main_002dadvanced_002drequirements.html | 40 + ...ntracts_002dand_002dstatic_005fassert.html | 40 + .../_0023main_002dimplementing.html | 40 + .../_0023main_002dimplementing_002dudls.html | 40 + ...r_002ddefined_002dcopy_002doperations.html | 40 + ...or_002dhandling_002dstatic_005fassert.html | 40 + ...002dname_002drequires_002dexpressions.html | 40 + 0.0.14/html_split/_0023motivation.html | 40 + 0.0.14/html_split/_0023motivation_002d1.html | 40 + 0.0.14/html_split/_0023motivation_002d2.html | 40 + 0.0.14/html_split/_0023motivation_002d3.html | 40 + 0.0.14/html_split/_0023motivation_002d4.html | 40 + ...ion_002dand_002dalternate_002dformats.html | 40 + ...nization_002dof_002dthis_002ddocument.html | 40 + 0.0.14/html_split/_0023overview.html | 40 + 0.0.14/html_split/_0023overview_002d1.html | 40 + 0.0.14/html_split/_0023overview_002d2.html | 40 + 0.0.14/html_split/_0023overview_002d3.html | 40 + 0.0.14/html_split/_0023overview_002d4.html | 40 + .../_0023points_002dto_002dcover.html | 40 + .../_0023points_002dto_002dcover_002d1.html | 40 + .../_0023points_002dto_002dcover_002d2.html | 40 + .../_0023points_002dto_002dcover_002d3.html | 40 + .../_0023points_002dto_002dcover_002d4.html | 40 + .../_0023points_002dto_002dcover_002d5.html | 40 + .../_0023points_002dto_002dcover_002d6.html | 40 + .../_0023points_002dto_002dcover_002d7.html | 40 + .../_0023points_002dto_002dcover_002d8.html | 40 + 0.0.14/html_split/_0023preprocessor.html | 40 + 0.0.14/html_split/_0023references.html | 40 + ...nces_002don_002dlearning_002doutcomes.html | 40 + .../html_split/_0023software_002ddesign.html | 40 + .../html_split/_0023standard_002dlibrary.html | 40 + .../html_split/_0023student_002doutcomes.html | 40 + .../_0023student_002doutcomes_002d1.html | 40 + .../_0023student_002doutcomes_002d2.html | 40 + .../_0023student_002doutcomes_002d3.html | 40 + .../_0023student_002doutcomes_002d4.html | 40 + .../_0023student_002doutcomes_002d5.html | 40 + .../_0023student_002doutcomes_002d6.html | 40 + .../_0023student_002doutcomes_002d7.html | 40 + .../_0023student_002doutcomes_002d8.html | 40 + .../_0023student_002doutcomes_002d9.html | 40 + ...002dof_002dmodules_002dand_002dtopics.html | 40 + .../_0023testing_002dand_002ddebugging.html | 40 + 0.0.14/html_split/_0023tooling.html | 40 + .../_0023topic_002dintroduction.html | 40 + .../_0023topic_002dintroduction_002d1.html | 40 + .../_0023topic_002dintroduction_002d2.html | 40 + .../_0023topic_002dintroduction_002d3.html | 40 + .../_0023topic_002dintroduction_002d4.html | 40 + ..._0023use_002dof_002dthis_002ddocument.html | 40 + ...ser_002ddefined_002dtypes_002dclasses.html | 40 + ...dto_002dc_002dteaching_002dguidelines.html | 40 + 0.0.14/html_split/index.html | 240 +++ 0.0.14/html_split/unknown_node.html | 818 ++++++++++ latest/index.html | 9 +- 165 files changed, 10192 insertions(+), 5 deletions(-) create mode 100644 0.0.14/guidelines.epub create mode 100644 0.0.14/html/images/cpp_logo.png create mode 100644 0.0.14/html/index.html create mode 100644 0.0.14/html_split/Advanced.html create mode 100644 0.0.14/html_split/Background_002fRequired-Knowledge.html create mode 100644 0.0.14/html_split/Background_002fRequired-knowledge.html create mode 100644 0.0.14/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html create mode 100644 0.0.14/html_split/Building.html create mode 100644 0.0.14/html_split/C_002b_002b-object-model-copy-semantics.html create mode 100644 0.0.14/html_split/Caveats.html create mode 100644 0.0.14/html_split/Compilation-Model.html create mode 100644 0.0.14/html_split/Compile_002dTime-Computation.html create mode 100644 0.0.14/html_split/Context-and-Aim-of-This-Guide.html create mode 100644 0.0.14/html_split/Contributing-to-This-Document.html create mode 100644 0.0.14/html_split/Contributors.html create mode 100644 0.0.14/html_split/Detailed-Information-for-Modules-and-Topics.html create mode 100644 0.0.14/html_split/Disclaimer.html create mode 100644 0.0.14/html_split/Error-Handling.html create mode 100644 0.0.14/html_split/Examples-of-Course-Curricula.html create mode 100644 0.0.14/html_split/External-ie-Non-Standard-Libraries.html create mode 100644 0.0.14/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html create mode 100644 0.0.14/html_split/Foundational-How-and-when-are-copies-made.html create mode 100644 0.0.14/html_split/Foundational-Using-UDLs.html create mode 100644 0.0.14/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html create mode 100644 0.0.14/html_split/Foundational-Writing-requires_002dexpressions.html create mode 100644 0.0.14/html_split/Functions-default-argument.html create mode 100644 0.0.14/html_split/Functions-user_002ddefined-literals.html create mode 100644 0.0.14/html_split/Functions.html create mode 100644 0.0.14/html_split/Generic-Programming-Templates.html create mode 100644 0.0.14/html_split/Glossary.html create mode 100644 0.0.14/html_split/How-To-Contribute.html create mode 100644 0.0.14/html_split/Inheritance-and-Class-Hierarchies.html create mode 100644 0.0.14/html_split/License.html create mode 100644 0.0.14/html_split/Main-Advanced-requirements.html create mode 100644 0.0.14/html_split/Main-Contracts-and-static_005fassert.html create mode 100644 0.0.14/html_split/Main-Implementing-user_002ddefined-copy-operations.html create mode 100644 0.0.14/html_split/Main-implementing-UDLs.html create mode 100644 0.0.14/html_split/Main-implementing-_002a.html create mode 100644 0.0.14/html_split/Meta_002derror-handling-static_005fassert.html create mode 100644 0.0.14/html_split/Module-name-Requires-Expressions.html create mode 100644 0.0.14/html_split/Motivation.html create mode 100644 0.0.14/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html create mode 100644 0.0.14/html_split/Organization-of-This-Document.html create mode 100644 0.0.14/html_split/Overview.html create mode 100644 0.0.14/html_split/Points-to-cover.html create mode 100644 0.0.14/html_split/Preprocessor.html create mode 100644 0.0.14/html_split/References-on-Learning-Outcomes.html create mode 100644 0.0.14/html_split/References.html create mode 100644 0.0.14/html_split/Software-Design.html create mode 100644 0.0.14/html_split/Standard-Library.html create mode 100644 0.0.14/html_split/Student-outcomes.html create mode 100644 0.0.14/html_split/Summary-of-Modules-and-Topics.html create mode 100644 0.0.14/html_split/Testing-and-Debugging.html create mode 100644 0.0.14/html_split/Tooling.html create mode 100644 0.0.14/html_split/Topic-introduction.html create mode 100644 0.0.14/html_split/Use-of-This-Document.html create mode 100644 0.0.14/html_split/User_002dDefined-Types-Classes.html create mode 100644 0.0.14/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html create mode 100644 0.0.14/html_split/_0023advanced.html create mode 100644 0.0.14/html_split/_0023advanced_002d1.html create mode 100644 0.0.14/html_split/_0023advanced_002d2.html create mode 100644 0.0.14/html_split/_0023advanced_002d3.html create mode 100644 0.0.14/html_split/_0023backgroundrequired_002dknowledge.html create mode 100644 0.0.14/html_split/_0023backgroundrequired_002dknowledge_002d1.html create mode 100644 0.0.14/html_split/_0023backgroundrequired_002dknowledge_002d2.html create mode 100644 0.0.14/html_split/_0023backgroundrequired_002dknowledge_002d3.html create mode 100644 0.0.14/html_split/_0023backgroundrequired_002dknowledge_002d4.html create mode 100644 0.0.14/html_split/_0023backgroundrequired_002dknowledge_002d5.html create mode 100644 0.0.14/html_split/_0023backgroundrequired_002dknowledge_002d6.html create mode 100644 0.0.14/html_split/_0023backgroundrequired_002dknowledge_002d7.html create mode 100644 0.0.14/html_split/_0023backgroundrequired_002dknowledge_002d8.html create mode 100644 0.0.14/html_split/_0023backgroundrequired_002dknowledge_002d9.html create mode 100644 0.0.14/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html create mode 100644 0.0.14/html_split/_0023building.html create mode 100644 0.0.14/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html create mode 100644 0.0.14/html_split/_0023caveats.html create mode 100644 0.0.14/html_split/_0023caveats_002d1.html create mode 100644 0.0.14/html_split/_0023caveats_002d2.html create mode 100644 0.0.14/html_split/_0023caveats_002d3.html create mode 100644 0.0.14/html_split/_0023caveats_002d4.html create mode 100644 0.0.14/html_split/_0023caveats_002d5.html create mode 100644 0.0.14/html_split/_0023caveats_002d6.html create mode 100644 0.0.14/html_split/_0023caveats_002d7.html create mode 100644 0.0.14/html_split/_0023caveats_002d8.html create mode 100644 0.0.14/html_split/_0023caveats_002d9.html create mode 100644 0.0.14/html_split/_0023compilation_002dmodel.html create mode 100644 0.0.14/html_split/_0023compile_002dtime_002dcomputation.html create mode 100644 0.0.14/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html create mode 100644 0.0.14/html_split/_0023contributing_002dto_002dthis_002ddocument.html create mode 100644 0.0.14/html_split/_0023contributors.html create mode 100644 0.0.14/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html create mode 100644 0.0.14/html_split/_0023disclaimer.html create mode 100644 0.0.14/html_split/_0023error_002dhandling.html create mode 100644 0.0.14/html_split/_0023examples_002dof_002dcourse_002dcurricula.html create mode 100644 0.0.14/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html create mode 100644 0.0.14/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html create mode 100644 0.0.14/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html create mode 100644 0.0.14/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html create mode 100644 0.0.14/html_split/_0023foundational_002dusing_002dudls.html create mode 100644 0.0.14/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html create mode 100644 0.0.14/html_split/_0023functions.html create mode 100644 0.0.14/html_split/_0023functions_002ddefault_002dargument.html create mode 100644 0.0.14/html_split/_0023functions_002duser_002ddefined_002dliterals.html create mode 100644 0.0.14/html_split/_0023generic_002dprogramming_002dtemplates.html create mode 100644 0.0.14/html_split/_0023glossary.html create mode 100644 0.0.14/html_split/_0023how_002dto_002dcontribute.html create mode 100644 0.0.14/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html create mode 100644 0.0.14/html_split/_0023license.html create mode 100644 0.0.14/html_split/_0023main_002dadvanced_002drequirements.html create mode 100644 0.0.14/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html create mode 100644 0.0.14/html_split/_0023main_002dimplementing.html create mode 100644 0.0.14/html_split/_0023main_002dimplementing_002dudls.html create mode 100644 0.0.14/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html create mode 100644 0.0.14/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html create mode 100644 0.0.14/html_split/_0023module_002dname_002drequires_002dexpressions.html create mode 100644 0.0.14/html_split/_0023motivation.html create mode 100644 0.0.14/html_split/_0023motivation_002d1.html create mode 100644 0.0.14/html_split/_0023motivation_002d2.html create mode 100644 0.0.14/html_split/_0023motivation_002d3.html create mode 100644 0.0.14/html_split/_0023motivation_002d4.html create mode 100644 0.0.14/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html create mode 100644 0.0.14/html_split/_0023organization_002dof_002dthis_002ddocument.html create mode 100644 0.0.14/html_split/_0023overview.html create mode 100644 0.0.14/html_split/_0023overview_002d1.html create mode 100644 0.0.14/html_split/_0023overview_002d2.html create mode 100644 0.0.14/html_split/_0023overview_002d3.html create mode 100644 0.0.14/html_split/_0023overview_002d4.html create mode 100644 0.0.14/html_split/_0023points_002dto_002dcover.html create mode 100644 0.0.14/html_split/_0023points_002dto_002dcover_002d1.html create mode 100644 0.0.14/html_split/_0023points_002dto_002dcover_002d2.html create mode 100644 0.0.14/html_split/_0023points_002dto_002dcover_002d3.html create mode 100644 0.0.14/html_split/_0023points_002dto_002dcover_002d4.html create mode 100644 0.0.14/html_split/_0023points_002dto_002dcover_002d5.html create mode 100644 0.0.14/html_split/_0023points_002dto_002dcover_002d6.html create mode 100644 0.0.14/html_split/_0023points_002dto_002dcover_002d7.html create mode 100644 0.0.14/html_split/_0023points_002dto_002dcover_002d8.html create mode 100644 0.0.14/html_split/_0023preprocessor.html create mode 100644 0.0.14/html_split/_0023references.html create mode 100644 0.0.14/html_split/_0023references_002don_002dlearning_002doutcomes.html create mode 100644 0.0.14/html_split/_0023software_002ddesign.html create mode 100644 0.0.14/html_split/_0023standard_002dlibrary.html create mode 100644 0.0.14/html_split/_0023student_002doutcomes.html create mode 100644 0.0.14/html_split/_0023student_002doutcomes_002d1.html create mode 100644 0.0.14/html_split/_0023student_002doutcomes_002d2.html create mode 100644 0.0.14/html_split/_0023student_002doutcomes_002d3.html create mode 100644 0.0.14/html_split/_0023student_002doutcomes_002d4.html create mode 100644 0.0.14/html_split/_0023student_002doutcomes_002d5.html create mode 100644 0.0.14/html_split/_0023student_002doutcomes_002d6.html create mode 100644 0.0.14/html_split/_0023student_002doutcomes_002d7.html create mode 100644 0.0.14/html_split/_0023student_002doutcomes_002d8.html create mode 100644 0.0.14/html_split/_0023student_002doutcomes_002d9.html create mode 100644 0.0.14/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html create mode 100644 0.0.14/html_split/_0023testing_002dand_002ddebugging.html create mode 100644 0.0.14/html_split/_0023tooling.html create mode 100644 0.0.14/html_split/_0023topic_002dintroduction.html create mode 100644 0.0.14/html_split/_0023topic_002dintroduction_002d1.html create mode 100644 0.0.14/html_split/_0023topic_002dintroduction_002d2.html create mode 100644 0.0.14/html_split/_0023topic_002dintroduction_002d3.html create mode 100644 0.0.14/html_split/_0023topic_002dintroduction_002d4.html create mode 100644 0.0.14/html_split/_0023use_002dof_002dthis_002ddocument.html create mode 100644 0.0.14/html_split/_0023user_002ddefined_002dtypes_002dclasses.html create mode 100644 0.0.14/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html create mode 100644 0.0.14/html_split/index.html create mode 100644 0.0.14/html_split/unknown_node.html diff --git a/0.0.14/guidelines.epub b/0.0.14/guidelines.epub new file mode 100644 index 0000000000000000000000000000000000000000..cc359063516ba6c35b31ea7b271a182bb2fa85ef GIT binary patch literal 31122 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 YI>A5A*Z$Qn86D`?$6r#j!@sWn59Q>?ga7~l literal 0 HcmV?d00001 diff --git a/0.0.14/html/images/cpp_logo.png b/0.0.14/html/images/cpp_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..780e8a32bdd384c1dbd0fc999b9ef9ed2e1bdad6 GIT binary patch literal 23613 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 literal 0 HcmV?d00001 diff --git a/0.0.14/html/index.html b/0.0.14/html/index.html new file mode 100644 index 0000000..a59fb2e --- /dev/null +++ b/0.0.14/html/index.html @@ -0,0 +1,1449 @@ + + + + + + + Guidelines for Teaching C++ + + + + + + + + + + + + + + + + + + + + + Guidelines for Teaching C++ + + + + + + + +
          + +
          + +
          + +
          + +
          +

          Guidelines for Teaching C++

          + +

          Version 0.0.14

          + +

          SG20 (ISO C++ Study Group on Education)

          +
          +
          + +
          +
          +
          + +
          +
          + +
          +

          1 Obtaining This Document: The Most Recent Version and Alternate Formats

          +

          The most recent version of this document is available as an online HTML document at: https://cplusplus.github.io/SG20/latest/.

          +

          The version of the document that you are currently reading is available in the following formats:

          +
            +
          1. online (HTML) format as a single large HTML document: https://cplusplus.github.io/SG20/0.0.14/html

          2. +
          3. EPUB format: https://cplusplus.github.io/SG20/0.0.14/guidelines.epub

          4. +
          5. online (HTML) format, split across multiple HTML documents: https://cplusplus.github.io/SG20/0.0.14/html_split/ [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

          6. +
          +

          Older versions of this document are also available. In general version ver is available at https://cplusplus.github.io/SG20/ver/html. For example, version 0.1.0 (assuming that this version exists) would be available at https://cplusplus.github.io/SG20/0.1.0/html.

          +

          2 Disclaimer

          +

          This document is intended as a proof of concept to solicit feedback from others. This document is incomplete. This document likely has at least a few errors.

          +

          3 Context and Aim of This Guide

          +

          This document is intended to serve as a resource for instructors to assist in the preparation of courses on C++ in a variety of settings, including university, college, and industry environments. The main objectives of this document are as follows:

          +
            +
          • to provide guidelines for content to be covered by courses of various difficulty levels on C++ (e.g., topics and learning outcomes)
          • +
          • to note some common misunderstandings and problematic points that may be encountered when teaching particular topics
          • +
          • to suggest resources useful for teaching C++
          • +
          • to present examples of curriculum for specific courses
          • +
          +

          This document does not itself provide a curriculum for a single specific course, but is rather a set of guidelines that can be used to prepare curricula for a wide variety of courses that differ in focus and level of sophistication. (This said, however, some links to other documents with examples of curricula for specific courses may be included herein.) This document only intends to target the teaching of the most recently ratified version of the C++ standard. (This said, however, since older versions of this document are also available, these older versions may be of some use to those who need guidance in older versions of the standard, at least versions that do not predate C++20.)

          +

          4 Use of This Document

          +

          [NOTE: This document follows the same license model as the C++ Core Guidelines. The LICENSE document is taken verbatim from the C++ Core Guidelines.] This document is made available under a MIT-style license. In simple terms, this license permits copying, use, modification, and creation of derivative works. A copy of the license is included in the section LICENSE.

          +

          5 Contributing to This Document

          +

          Contributions to this document are welcome. If you would like to help with this project as a contributor, please read the section How to Contribute.

          +

          6 Organization of This Document

          +

          The various concepts (i.e., ideas) to potentially be covered are partitioned into modules. A module is very broad in scope and consists of numerous topics.

          +

          For each module, topics related to the module are identified. Then, for each topic, learning outcomes are specified. In order to address a wide variety of courses on C++, each topic is addressed at three proficiency levels. These proficiency levels allow each topic to be covered at more than one level of detail. This allows target audiences with different background and learning objectives to be accommodated. The three proficiency levels are as follows:

          +
            +
          • foundational: This level gives the learner the idea that a facility exists, what benefits it offers, and the basic ways of using it.

          • +
          • main: This level shows mainstream uses and techniques. For abstraction and organizational mechanisms it also demonstrates how to build them. This level should also give the learner a basic (but not detailed) understanding of how a facility might be implemented so that the learner can have a first-order understanding of any costs involved.

          • +
          • advanced: This level gives information suitable for an expert. For most topics there is an expert level of knowledge that most programmers rarely need and techniques that require detailed understanding of language rules or library implementation.

          • +
          +

          The remainder of this document is organized as follows. The various topics are listed grouped by module. In cases where a topic might be classified into more than one module, the topic is listed under the module of most direct relevance. This is done in order to avoid duplication of content. (In the case that a topic is equally relevant to multiple modules, the decision of which to select is made by a proverbial coin toss.) The order in which modules and topics are presented is not meant to imply any order of coverage in a course. The order in which items are listed is essentially arbitrary.

          +

          7 Summary of Modules and Topics

          +

          In the sections that follow, the various modules and topics are presented. There is one section per module. For each module, a table listing the various topics in that module is provided. The ID for a topic is linked to the detailed coverage of that topic that comes later in the document. If a topic has any learning outcomes at a given proficiency level, this is indicated by a checkmark (“✔️”). If a topic has no learning outcomes (simply because there are not any, not because the information is missing), this is indicated by an em dash (“—”). In the case that the information for a topic is completely missing, a question mark (“?”) symbol is used.

          +

          7.1 Compilation Model

          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          IDUnitFoundationalMainAdvanced
          [?]Translation Units???
          [?]Headers???
          [?]Modules???
          [?]Name Mangling???
          [?]Phases of Translation???
          [?]Separate Compilation???
          [?]Linkage???
          +

          7.2 Preprocessor

          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          IDUnitFoundationalMainAdvanced
          [?]Preprocessor Metaprogramming???
          [?]Inclusion???
          [?]Macros???
          +

          7.3 Basics Types, Objects, Values, Expressions, Statements, and Control-Flow Constructs

          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          IDUnitFoundationalMainAdvanced
          [?]Constant Objects???
          [?]Declarations and Definitions???
          [?]Selection Constructs (e.g., if, ternary)???
          [?]Looping Constructs (e.g., for, while, etc.)???
          +

          7.4 Functions

          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          IDUnitFoundationalMainAdvanced
          [?]Calling Functions???
          [?]Parameter Passing (e.g., Passing By Value and Reference)???
          [func-args]Default Arguments✔️
          [?]Returning Multiple Values???
          [?]Overloading???
          [udl]User-Defined Literals✔️✔️
          +

          7.5 User-Defined Types (Classes)

          + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          IDUnitFoundationalMainAdvanced
          [?]Special Member Functions???
          [?]Types???
          [?]Conversions???
          [?]Constructors and Destructors???
          [?]Move/Copy Constructors and Assignment Operators???
          [?]Member Functions???
          [?]Sum Types???
          [?]User-Defined Literals???
          [?]Special Member Functions???
          [?]Guidelines for Special Member Functions (e.g., Rule of Five, Rule of Zero)???
          [copy]Copy Semantics✔️✔️
          [?]Moving and Copying???
          [?]Lambdas???
          +

          7.6 Inheritance and Class Hierarchies

          + + + + + + + + + + + + + + + + + + + + + + + + + + +
          IDUnitFoundationalMainAdvanced
          [?]Virtual Functions???
          [?]Run-Time Type Information???
          +

          7.7 Compile-Time Computation

          + + + + + + + + + + + + + + + + + + + + + + + + + + +
          IDUnitFoundationalMainAdvanced
          [?]Constant Expressions and Constant Evaluation???
          [static-assert]static_assert✔️✔️
          +

          7.8 Generic Programming (Templates)

          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          IDUnitFoundationalMainAdvanced
          [?]Concepts???
          [?]SFINAE???
          [?]Template Metaprogramming???
          [?]Function Templates???
          [?]Requires Clauses???
          [req-expr]Requires Expressions✔️✔️
          +

          7.9 Error Handling

          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          IDUnitFoundationalMainAdvanced
          [?]Classes of Errors???
          [?]errno???
          [?]Error Codes???
          [?]Exception Handling???
          +

          7.10 Standard Library

          + + + + + + + + + + + + + + + + + + + + + + + + + + +
          IDUnitFoundationalMainAdvanced
          [?]Input/Output (I/O)???
          [?]Containers, Iterators, and Algorithms???
          +

          7.11 External (i.e., Non Standard) Libraries

          + + + + + + + + + + + + + + + + + + + +
          IDUnitFoundationalMainAdvanced
          [?]Graphical User Interfaces???
          +

          7.12 Building

          + + + + + + + + + + + + + + + + + + + + + + + + + + +
          IDUnitFoundationalMainAdvanced
          [?]Software Build Tools???
          [?]Strategies for Handling Build Problems???
          +

          7.13 Testing and Debugging

          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          IDUnitFoundationalMainAdvanced
          [?]Source-Level Debuggers???
          [?]Code Sanitizers???
          [?]Test Frameworks???
          [?]Debugging Strategies???
          +

          7.14 Tooling

          + + + + + + + + + + + + + + + + + + + + + + + + + + +
          IDUnitFoundationalMainAdvanced
          [?]Compiler Toolchains???
          [?]IDEs???
          +

          7.15 Software Design

          + + + + + + + + + + + + + + + + + + + +
          IDUnitFoundationalMainAdvanced
          [?]Design by Contract???
          +

          8 Detailed Information for Modules and Topics

          +

          8.1 C++ object model: copy semantics

          +

          Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

          +

          8.1.1 Overview

          +

          Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

          + ++++ + + + + + + + + + + + + + + + + + + + + +
          LevelObjectives
          Foundationalunderstanding how and when are copies made
          Mainimplementing user-defined copy operations
          Advancedspecial cases: copy elision
          +

          8.1.2 Motivation

          +

          Why is this important? Why do we want to learn/teach this topic?

          +

          Copy semantics allows the user to define how objects of a class get replicated and interact on a value level.

          +

          8.1.3 Topic introduction

          +

          Very brief introduction to the topic.

          +

          Explains when and how objects are copied.

          +

          8.1.4 Foundational: How and when are copies made

          +

          8.1.4.1 Background/Required Knowledge

          +

          A student is able to: * explain what a C++ type is? [C++ object model: types] * explain what an object is? [C++ object model: objects], [C++ object model: constant objects] * define and understand class invariants?

          +

          It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain special member functions [C++ object model: special member functions]

          +

          8.1.4.2 Student outcomes

          +

          A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

          +

          A student should be able to:

          +
            +
          1. explain what copy semantics accomplish
          2. +
          +
            +
          • establishing “equivalent” object state in another object
          • +
          +
            +
          1. explain difference between copying a reference and copying a value*
          2. +
          3. explain where copies are made
          4. +
          +

          * In other languages these differences are sometimes referred to as shallow and deep copy.

          +

          8.1.4.3 Caveats

          +

          This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

          +
            +
          • Compiler-provided copy operations may result in ownership problems (e.g., char*). These ownership problems can generally be solved by using types whose copy operations have the appropriate semantics, e.g., std::string instead of char* to hold string values.
          • +
          +

          8.1.4.4 Points to cover

          +

          This section lists important details for each point.

          +
            +
          • Principle of copying +
              +
            • Copying of types, which follow the rule of zero
            • +
            • Copying of types, with user defined copy operations
            • +
            • Copying an object does not change the original
            • +
          • +
          • Practical applications +
              +
            • std::unique_ptr (has no copy)
            • +
            • Strings (copies the value)
            • +
          • +
          +

          8.1.5 Main: Implementing user-defined copy operations

          +

          8.1.5.1 Background/Required Knowledge

          +

          A student is able to: * identify special member functions [C++ object model: special member functions]

          +

          It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain the rule of zero [C++ object model: rule-of-zero] * explain the rule of five [C++ object model: rule-of-five]

          +

          8.1.5.2 Student outcomes

          +

          A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

          +

          A student should be able to: * explain when they have to implement the copy operations for their own type * Copy constructor * Copy assignment operator * implement copy operations for their own types * Optional: explain when copying with basic and strong exception guarantees is useful

          +

          8.1.5.3 Caveats

          +

          This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

          +
            +
          • Intricacies when implementing copy operations: +
              +
            • Examples of how not to write copy operations (e.g., C++03 std::auto_ptr)
            • +
          • +
          +

          8.1.5.4 Points to cover

          +

          This section lists important details for each point.

          +
            +
          • Copy constructors and copy assignment operators +
              +
            • How compiler generates default copy operations
            • +
            • =default, =delete (No copy)
            • +
            • How-to write your own copy operations
            • +
            • Rule-of-five
            • +
            • Copy assignment operators can be ref-qualified to avoid assigning into temporary objects.
            • +
          • +
          +

          8.1.6 Advanced

          +

          These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

          +

          When can copies be elided and when does the standard guarantee copy elision. References: * Abseil tip of the Week #166 * cppreference - Copy elision

          +

          8.2 Module name: Requires Expressions

          +

          Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

          +

          8.2.1 Overview

          +

          Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

          + ++++ + + + + + + + + + + + + + + + + + + + + +
          LevelObjectives
          FoundationalDefine and use requires-expressions to check satisfaction of expressions by given parameters
          MainDefine and use requires-expressions to check properties of expressions
          Advanced
          +

          8.2.2 Motivation

          +

          Why is this important? Why do we want to learn/teach this topic?

          +

          Requires-expressions allow a developer to perform compile-time evaluation on the validity of other expressions. These are fundamental to the ability to write concepts. [Compile-time programming: concepts]

          +

          8.3 Topic introduction

          +

          Very brief introduction to the topic.

          +

          Requires-expressions are compile-time predicates which evaluate to true when their specified set of expressions are all valid for a given set of inputs.

          +

          8.3.1 Foundational: Writing requires-expressions

          +

          8.3.1.1 Background/Required Knowledge

          +

          A student is able to:

          + +

          It is helpful if:

          +
            +
          • The student is aware that attempting to specialize the template with types or values which do not match otherwise unstated assumptions will cause errors within the template.
          • +
          +

          8.3.1.2 Student outcomes

          +

          A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

          +

          A student should be able to:

          +
            +
          1. Write a simple-requirement to assert the validity of an expression
          2. +
          3. Write a type-requirement to check the existence of a type by its identifier
          4. +
          5. Write a compound-requirement to test the resulting type of an expression
          6. +
          7. Write a nested-requirement to test the constexpr value of an operation, as opposed to just the syntactic validity
          8. +
          9. Use a requires-expression within a concept, requires-clause, or if constexpr condition
          10. +
          +

          8.3.1.3 Caveats

          +

          This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

          +

          To require that expressions, which evaluate to a boolean value like sizeof(t) == 4, evaluate to true a nested-requirement is needed (e.g., requires sizeof(t) == 4;). Omitting the requires results in a simple-requirement, which is satisfied based purely on syntactic validity, not on the result of the operation.

          +

          8.3.1.4 Points to cover

          +

          This section lists important details for each point.

          +
            +
          • All requires-expression requirements terminate with a semicolon.
          • +
          • simple-requirements are used to check that an expression is well-formed.
          • +
          • nested-requirements are introduced with requires and primarily used to check the result of an expression computable by the compiler, including concepts or other requires-expressions.
          • +
          • type-requirements are introduced with typename and used to verify the existence of a type with a particular identifier.
          • +
          • compound-requirements are enclosed in braces and can be used to check the resulting type of an expression.
          • +
          • Checks are performed by the compiler, not at run time.
          • +
          • If covering usage of requires-expression with requires-clause, [Compile-time programming: requires clause] demonstrate requires requires and show how to ever avoid writing it by using a concept. [Compile-time programming: concepts]
          • +
          +

          8.3.2 Main: Advanced requirements

          +

          8.3.2.1 Background/Required Knowledge

          +
            +
          • All of the above.
          • +
          • Knowledge of noexcept
          • +
          +

          A student is able to:

          + +

          8.3.2.2 Student outcomes

          +

          A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

          +

          A student should be able to:

          +
            +
          1. Write compound-requirements which test the noexceptness of an expression.
          2. +
          3. Use a concept as the target of a compound-requirement.
          4. +
          +

          8.3.2.3 Caveats

          +

          This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

          +

          8.3.2.4 Points to cover

          +

          This section lists important details for each point.

          +
            +
          • Compound-requirements allow the optional ability to test whether an expression is marked as noexcept, by using a trailing noexcept keyword.
          • +
          + +
            +
          • If the return-type-requirement of a compound-requirement is a concept, that concept is given the resulting type as the first parameter, followed by the specified parameters in the compound-requirement. { ++x } -> C<int> would substitute C<decltype((++x)), int> and check that concept C is satisfied for those parameters.
          • +
          +

          8.3.3 Advanced

          +

          See user-defined-literals.

          +

          8.4 Functions: user-defined literals

          +

          Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

          +

          8.4.1 Overview

          +

          Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

          + ++++ + + + + + + + + + + + + + + + + + + + + +
          LevelObjectives
          Foundationalusing and understanding UDLs
          Mainimplementing your own UDLs
          AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
          +

          8.4.2 Motivation

          +

          Why is this important? Why do we want to learn/teach this topic?

          +
            +
          • Allows clearer expression of intent in C++.
          • +
          • std::string: "Hello, world!"s
          • +
          • std::chrono: 3h + 10min + 5s
          • +
          +

          8.4.3 Topic introduction

          +

          Very brief introduction to the topic.

          +
            +
          • Explain the existence of user defined literals. Example: 12min + 17s is terse, expressive and type safe.
          • +
          +

          8.4.4 Foundational: Using UDLs

          +

          8.4.4.1 Background/Required Knowledge

          +

          A student: * knows how to form numeric literals, e.g., 1.5f means a float of value 1.5. * is familiar with the major C++ types: * bool (Boolean type) * int (Integer type) * double (Floating-point type) * std::string (Text type) * std::vector (Collection type) * knows that namespaces exist, and namespace std. * knows what using-declarations and using-directives are. [C++ object model: declarations]

          +

          8.4.4.2 Student outcomes

          +

          A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

          +

          A student should be able to:

          +
            +
          1. use using namespace std::string_literals[1].
          2. +
          3. recognise UDLs in code that they are reading.
          4. +
          5. figure out which UDL definitions for a used type exist.
          6. +
          7. identify parts of the standard library that make use of UDLs.
          8. +
          9. prevent the dangers of temporaries created with "blah"s as well as with std::string{"blah"}.
          10. +
          11. effectively selects the right set of namespaces in using-directives from the sub-namespaces std::literals.
          12. +
          +

          [1]: explain that it’s okay to use a using-directive to “activate” UDLs.

          +

          8.4.4.3 Caveats

          +

          This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

          +
            +
          • A student gets confused by the similarities and differences between built-in suffixes and UDLs and between UDLs from different namespaces.
          • +
          • A student “activates” two suffixes with the same signature from different namespaces.
          • +
          +

          8.4.4.4 Points to cover

          +

          This section lists important details for each point.

          +

          8.4.5 Main: implementing UDLs

          +

          8.4.5.1 Background/Required Knowledge

          +
            +
          • All of the above.
          • +
          +

          8.4.5.2 Student outcomes

          +

          A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

          +

          A student should be able to:

          +
            +
          1. write a UDL operator of their own.
          2. +
          3. separate unrelated UDLs into distinct namespaces.
          4. +
          +

          8.4.5.3 Caveats

          +

          This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

          +

          No caveats at present. #### Points to cover

          +

          This section lists important details for each point.

          +

          No caveats at present. ### Advanced {#udl-advanced}

          +

          These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

          +

          8.5 Functions: default argument

          +

          Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

          +

          8.5.1 Overview

          +

          Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

          +

          Functions in C++ may be overloaded with different numbers and types of parameters. It may be of value to specify default arguments for some number of parameters, to allow a caller to avoid specifying arguments that rarely change, or to enable expanding the set of parameters while maintaining backward compatibility with existing callers.

          + ++++ + + + + + + + + + + + + + + + + + + + + +
          LevelObjective
          FoundationalDefine and use functions with default arguments
          Main
          Advancedrefinement of default arguments through multiple declarations
          +

          8.5.2 Motivation

          +

          Why is this important? Why do we want to learn/teach this topic?

          +

          Default arguments allow the omission of arguments with obvious or common values. Also may be utilized to extend an existing function signature without forcing changes to existing calling code.

          +

          8.5.3 Topic introduction

          +

          Very brief introduction to the topic.

          +

          Explain how default arguments work and how to define them.

          +

          8.5.4 Foundational: Using and defining functions with default arguments

          +

          8.5.4.1 Background/Required Knowledge

          +

          A student is able to:

          + +

          8.5.4.2 Student outcomes

          +

          A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

          +

          A student should be able to:

          +
            +
          1. Call to a function with a default argument with or without that argument specified
          2. +
          3. Declare a function with a default argument, and omit the default in the definition’s signature
          4. +
          5. Explain when the lifetime of a default argument begins and ends
          6. +
          +

          8.5.4.3 Caveats

          +

          This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

          +
            +
          • When no forward-declaration exists, the definition serves as the declaration
          • +
          • When multiple declarations exist, only one may specify the default for any particular parameter, but multiple declarations may specify the defaults for different parameters.
          • +
          • Additional default values may be specified for other parameters in repeat declarations
          • +
          • Calling an overloaded function with fewer arguments may be ambiguous with regard to an overload with default arguments
          • +
          +

          8.5.4.4 Points to cover

          +

          This section lists important details for each point.

          +
            +
          • Default value may only be specified once for each parameter among all declarations
          • +
          • Default values must start from the rightmost parameter and continue leftward without gaps
          • +
          • Considerations of when to use default arguments vs overload set
          • +
          +

          8.5.5 Main: implementing *

          +

          8.5.5.1 Background/Required knowledge

          +
            +
          • All of the above.
          • +
          +

          8.5.5.2 Student outcomes

          +

          A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

          +

          A student should be able to:

          +

          8.5.5.3 Caveats

          +

          This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

          +

          8.5.5.4 Points to cover

          +

          This section lists important details for each point.

          +

          8.5.6 Advanced

          +

          These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

          +

          Subsequent redeclarations of the same function may add default argument values, which are then usable by callers. Though a single parameter cannot be given a default argument twice in the same translation unit, it is legal, though ill-advised, to give the same function different default arguments in different translation units.

          +

          See concepts.

          +

          8.6 Meta-error handling: static_assert

          +

          Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

          +

          8.6.1 Overview

          +

          Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

          + ++++ + + + + + + + + + + + + + + + + + + + + +
          LevelObjectives
          FoundationalCalling static_assert with a constant expression
          MainUsing static_assert to detect contract violations and improve error messages
          Advanced
          +

          8.6.2 Motivation

          +

          Why is this important? Why do we want to learn/teach this topic?

          +

          static_assert allows the developer to enforce that conditions which can be checked during compilation will force build errors when violated. Additionally, they are the best mechanism by which a developer can pass useful information to other developers regarding what violation occurred or what must be done, instead.

          +

          8.6.3 Topic introduction

          +

          Very brief introduction to the topic.

          +

          static_assert is a compile-time evaluated function that asserts the truth of a supplied predicate, issuing an optional user-supplied error message if the predicate is false.

          +

          8.6.4 Foundational: Calling static_assert with a constant expression

          +

          8.6.4.1 Background/Required Knowledge

          +

          A student:

          +
            +
          • Should be able to explain the difference between code evaluated at compile-time and run-time
          • +
          • Should be able to cite some examples of compile-time known information, such as sizeof(T)
          • +
          +

          8.6.4.2 Student outcomes

          +

          A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

          +

          A student should be able to:

          +
            +
          1. Assert the expected size of a structure using static_assert
          2. +
          +

          8.6.4.3 Caveats

          +

          This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

          +

          8.6.4.4 Points to cover

          +

          This section lists important details for each point.

          +
            +
          • X
          • +
          • In addition to what is wrong, a good error message will inform the user of how to correct it
          • +
          +

          8.6.5 Main: Contracts and static_assert

          +

          8.6.5.1 Background/Required Knowledge

          +
            +
          • All of the above.
          • +
          • General understanding of compile-time requirements
          • +
          +

          8.6.5.2 Student outcomes

          +

          A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

          +

          A student should be able to:

          +
            +
          1. Utilize static_assert to verify preconditions of a meta-function
          2. +
          3. Utilize static_assert to verify the results of meta-functions for known values
          4. +
          +

          8.6.5.3 Caveats

          +

          This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

          +

          8.6.5.4 Points to cover

          +

          This section lists important details for each point.

          +
            +
          • When writing a meta-function, use static_assert to test the results
          • +
          • Write static_assert calls at the scope of the code they are guarding
          • +
          + +

          8.6.6 Advanced

          +

          These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

          +

          9 Examples of Course Curricula

          +

          [NOTE: Anyone have any suggestions of items to add here?] The following are examples of curricula for course on C++: …

          +

          10 License

          +

          [NOTE: This license is copied verbatim from the C++ Core Guidelines.]

          +
          Copyright (c) Standard C++ Foundation and its contributors
          +
          +Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
          +perpetual license to copy, use, modify, and create derivative works from this
          +project for your personal or internal business use only. The above copyright
          +notice and this permission notice shall be included in all copies or
          +substantial portions of the project. This license does not grant permission
          +to use the trade names, trademarks, service marks, or product names of the
          +licensor, except as required for reasonable and customary use in describing
          +the origin of the project.
          +
          +Standard C++ Foundation reserves the right to accept contributions to the
          +project at its discretion.
          +
          +By contributing material to this project, you grant Standard C++ Foundation,
          +and those who receive the material directly or indirectly from Standard C++
          +Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
          +transferrable license to reproduce, prepare derivative works of, publicly
          +display, publicly perform, and distribute your contributed material and such
          +derivative works, and to sublicense any or all of the foregoing rights to third
          +parties for commercial or non-commercial use.  You also grant Standard C++
          +Foundation, and those who receive the material directly or indirectly from
          +Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
          +irrevocable license under your patent claims that directly read on your
          +contributed material to make, have made, use, offer to sell, sell and import
          +or otherwise dispose of the material. You warrant that your material is your
          +original work, or that you have the right to grant the above licenses.
          +
          +THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
          +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
          +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
          +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
          +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
          +OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
          +PROJECT.
          +
          +If you believe that anything in the project infringes your copyright, please
          +contact us at admin@isocpp.org with your contact information and a detailed
          +description of your intellectual property, including a specific URL where you
          +believe your intellectual property is being infringed.
          +
          +

          11 Contributors

          +
          Christopher Di Bella
          +Florian Sattler
          +Michael Adams
          +rwdougla
          +

          12 How To Contribute

          +

          Before attempting to contribute any content for consideration for inclusion in this document, please read the information below and and the referenced documents as appropriate.

          +

          All contributions to this project must be made in accordance with the license in section License. This teaching-guidelines document only offers guidance on teaching C++ as it is specified in the current version of the C++ standard. So, content should be presented relative to the most-recently ratified version of the standard. A detailed explanation of how to present the material for a topic is given in:

          +
            +
          • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.
          • +
          +

          Any potential contributors should ensure that they read this document. The following document may also be helpful in providing some general background on the modular approach to teaching followed herein:

          + +

          In order to prepare content, it is important to understand what learning outcomes are, and how to prepare good ones. Some information on learning outcomes can be found in the References section. The following document offers a concise introduction to learning outcomes:

          + +

          13 Glossary

          +

          Some possible terms to include in the glossary:

          +
            +
          • learning objective
          • +
          • learning outcome
          • +
          +

          14 References

          +

          14.1 References on Learning Outcomes

          + + +
            +
          • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — Standing Document for SG20: Guidelines for Teaching C++ to Beginners. https://wg21.link/p1389.

          • +
          • Christopher Di Bella. P1725R0 — Modular Topic Design. https://wg21.link/p1725.

          • +
          • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.

          • +
          • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study Group: C++ Education. https://wg21.link/p1231.

          • +
          • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 — Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0.

          • +
          +
          +
          + +
          + + diff --git a/0.0.14/html_split/Advanced.html b/0.0.14/html_split/Advanced.html new file mode 100644 index 0000000..fa0e3b4 --- /dev/null +++ b/0.0.14/html_split/Advanced.html @@ -0,0 +1,60 @@ + + + + + +Advanced (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
          +

          8.1.6 Advanced

          +

          These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

          +

          When can copies be elided and when does the standard guarantee copy +elision. References: * Abseil tip of +the Week #166 * +cppreference +- Copy elision +

          + + + + + diff --git a/0.0.14/html_split/Background_002fRequired-Knowledge.html b/0.0.14/html_split/Background_002fRequired-Knowledge.html new file mode 100644 index 0000000..80c6ea3 --- /dev/null +++ b/0.0.14/html_split/Background_002fRequired-Knowledge.html @@ -0,0 +1,64 @@ + + + + + +Background/Required Knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          8.1.4.1 Background/Required Knowledge

          +

          A student is able to: * explain what a C++ type is? +[C++ object model: types] * +explain what an object is? [C++ +object model: objects], [C++ +object model: constant objects] * define and understand class +invariants? +

          +

          It helps when a student is able to: * use move semantics +[C++ object model: move +semantics] * explain special member functions +[C++ object model: +special member functions] +

          + + + + + diff --git a/0.0.14/html_split/Background_002fRequired-knowledge.html b/0.0.14/html_split/Background_002fRequired-knowledge.html new file mode 100644 index 0000000..b9dcf81 --- /dev/null +++ b/0.0.14/html_split/Background_002fRequired-knowledge.html @@ -0,0 +1,54 @@ + + + + + +Background/Required knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
          +

          8.5.5.1 Background/Required knowledge

          +
            +
          • All of the above. +
          + + + + + + diff --git a/0.0.14/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html b/0.0.14/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html new file mode 100644 index 0000000..3e850b1 --- /dev/null +++ b/0.0.14/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html @@ -0,0 +1,60 @@ + + + + + +Basics Types Objects Values Expressions Statements and Control-Flow Constructs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          7.3 Basics Types, Objects, Values, Expressions, Statements, and

          +

          Control-Flow Constructs +

          + + + + + +
          IDUnitFoundationalMainAdvanced
          [‘?’]Constant Objects???
          [‘?’]Declarations and Definitions???
          [‘?’]Selection Constructs (e.g., if, ternary)???
          [‘?’]Looping Constructs (e.g., for, while, etc.)???
          + + + + + + diff --git a/0.0.14/html_split/Building.html b/0.0.14/html_split/Building.html new file mode 100644 index 0000000..e628fd0 --- /dev/null +++ b/0.0.14/html_split/Building.html @@ -0,0 +1,57 @@ + + + + + +Building (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          7.12 Building

          + + + + +
          IDUnitFoundationalMainAdvanced
          [‘?’]Software Build Tools???
          [‘?’]Strategies for Handling Build Problems???
          + + + + + + diff --git a/0.0.14/html_split/C_002b_002b-object-model-copy-semantics.html b/0.0.14/html_split/C_002b_002b-object-model-copy-semantics.html new file mode 100644 index 0000000..e011f9f --- /dev/null +++ b/0.0.14/html_split/C_002b_002b-object-model-copy-semantics.html @@ -0,0 +1,69 @@ + + + + + +C++ object model copy semantics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          8.1 C++ object model: copy semantics

          +

          Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

          + + + + + + + + + + + + + + diff --git a/0.0.14/html_split/Caveats.html b/0.0.14/html_split/Caveats.html new file mode 100644 index 0000000..c5303c9 --- /dev/null +++ b/0.0.14/html_split/Caveats.html @@ -0,0 +1,62 @@ + + + + + +Caveats (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          8.1.4.3 Caveats

          +

          This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

          +
            +
          • Compiler-provided copy operations may result in ownership problems +(e.g., char*). These ownership problems can generally be solved +by using types whose copy operations have the appropriate semantics, +e.g., std::string instead of char* to hold string values. +
          + + + + + + diff --git a/0.0.14/html_split/Compilation-Model.html b/0.0.14/html_split/Compilation-Model.html new file mode 100644 index 0000000..de11703 --- /dev/null +++ b/0.0.14/html_split/Compilation-Model.html @@ -0,0 +1,62 @@ + + + + + +Compilation Model (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          7.1 Compilation Model

          + + + + + + + + + +
          IDUnitFoundationalMainAdvanced
          [‘?’]Translation Units???
          [‘?’]Headers???
          [‘?’]Modules???
          [‘?’]Name Mangling???
          [‘?’]Phases of Translation???
          [‘?’]Separate Compilation???
          [‘?’]Linkage???
          + + + + + + diff --git a/0.0.14/html_split/Compile_002dTime-Computation.html b/0.0.14/html_split/Compile_002dTime-Computation.html new file mode 100644 index 0000000..b9aaa0e --- /dev/null +++ b/0.0.14/html_split/Compile_002dTime-Computation.html @@ -0,0 +1,57 @@ + + + + + +Compile-Time Computation (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          7.7 Compile-Time Computation

          + + + + +
          IDUnitFoundationalMainAdvanced
          [‘?’]Constant Expressions and Constant Evaluation???
          [‘static-assert’]static_assert‘✔️’‘✔️’
          + + + + + + diff --git a/0.0.14/html_split/Context-and-Aim-of-This-Guide.html b/0.0.14/html_split/Context-and-Aim-of-This-Guide.html new file mode 100644 index 0000000..60efa61 --- /dev/null +++ b/0.0.14/html_split/Context-and-Aim-of-This-Guide.html @@ -0,0 +1,76 @@ + + + + + +Context and Aim of This Guide (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
          +

          +Next: , Previous: , Up: Top   [Contents]

          +
          +
          +

          3 Context and Aim of This Guide

          +

          This document is intended to serve as a resource for instructors to +assist in the preparation of courses on C++ in a variety of settings, +including university, college, and industry environments. The main +objectives of this document are as follows: +

          +
            +
          • to provide guidelines for content to be covered by courses of various +difficulty levels on C++ (e.g., topics and learning outcomes) +
          • to note some common misunderstandings and problematic points that may be +encountered when teaching particular topics +
          • to suggest resources useful for teaching C++ +
          • to present examples of curriculum for specific courses +
          + +

          This document does not itself provide a curriculum for a single specific +course, but is rather a set of guidelines that can be used to prepare +curricula for a wide variety of courses that differ in focus and level +of sophistication. (This said, however, some links to other documents +with examples of curricula for specific courses may be included herein.) +This document only intends to target the teaching of the most recently +ratified version of the C++ standard. (This said, however, since older +versions of this document are also available, these older versions may +be of some use to those who need guidance in older versions of the +standard, at least versions that do not predate C++20.) +

          + + + + + diff --git a/0.0.14/html_split/Contributing-to-This-Document.html b/0.0.14/html_split/Contributing-to-This-Document.html new file mode 100644 index 0000000..eac6c28 --- /dev/null +++ b/0.0.14/html_split/Contributing-to-This-Document.html @@ -0,0 +1,55 @@ + + + + + +Contributing to This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          5 Contributing to This Document

          +

          Contributions to this document are welcome. If you would like to help +with this project as a contributor, please read the section +‘How to Contribute’. +

          + + + + + diff --git a/0.0.14/html_split/Contributors.html b/0.0.14/html_split/Contributors.html new file mode 100644 index 0000000..53ba0ef --- /dev/null +++ b/0.0.14/html_split/Contributors.html @@ -0,0 +1,57 @@ + + + + + +Contributors (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
          +

          +Next: , Previous: , Up: Top   [Contents]

          +
          +
          +

          11 Contributors

          + +
          Christopher Di Bella
          +Florian Sattler
          +Michael Adams
          +rwdougla
          +
          + + + + + diff --git a/0.0.14/html_split/Detailed-Information-for-Modules-and-Topics.html b/0.0.14/html_split/Detailed-Information-for-Modules-and-Topics.html new file mode 100644 index 0000000..6a3e986 --- /dev/null +++ b/0.0.14/html_split/Detailed-Information-for-Modules-and-Topics.html @@ -0,0 +1,67 @@ + + + + + +Detailed Information for Modules and Topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          8 Detailed Information for Modules and Topics

          + + + + + + + + + + + + + + + diff --git a/0.0.14/html_split/Disclaimer.html b/0.0.14/html_split/Disclaimer.html new file mode 100644 index 0000000..a911983 --- /dev/null +++ b/0.0.14/html_split/Disclaimer.html @@ -0,0 +1,55 @@ + + + + + +Disclaimer (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          2 Disclaimer

          +

          This document is intended as a proof of concept to solicit feedback from +others. This document is incomplete. This document likely has at least a +few errors. +

          + + + + + diff --git a/0.0.14/html_split/Error-Handling.html b/0.0.14/html_split/Error-Handling.html new file mode 100644 index 0000000..1f8d3e0 --- /dev/null +++ b/0.0.14/html_split/Error-Handling.html @@ -0,0 +1,59 @@ + + + + + +Error Handling (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          7.9 Error Handling

          + + + + + + +
          IDUnitFoundationalMainAdvanced
          [‘?’]Classes of Errors???
          [‘?’]errno???
          [‘?’]Error Codes???
          [‘?’]Exception Handling???
          + + + + + + diff --git a/0.0.14/html_split/Examples-of-Course-Curricula.html b/0.0.14/html_split/Examples-of-Course-Curricula.html new file mode 100644 index 0000000..64eb64b --- /dev/null +++ b/0.0.14/html_split/Examples-of-Course-Curricula.html @@ -0,0 +1,53 @@ + + + + + +Examples of Course Curricula (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
          +

          9 Examples of Course Curricula

          +

          [NOTE: Anyone have any suggestions of items to add here?] The +following are examples of curricula for course on C++: … +

          + + + + + diff --git a/0.0.14/html_split/External-ie-Non-Standard-Libraries.html b/0.0.14/html_split/External-ie-Non-Standard-Libraries.html new file mode 100644 index 0000000..2bf081e --- /dev/null +++ b/0.0.14/html_split/External-ie-Non-Standard-Libraries.html @@ -0,0 +1,56 @@ + + + + + +External ie Non Standard Libraries (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          7.11 External (i.e., Non Standard) Libraries

          + + + +
          IDUnitFoundationalMainAdvanced
          [‘?’]Graphical User Interfaces???
          + + + + + + diff --git a/0.0.14/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html b/0.0.14/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html new file mode 100644 index 0000000..ce2c1b0 --- /dev/null +++ b/0.0.14/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html @@ -0,0 +1,62 @@ + + + + + +Foundational Calling static_assert with a constant expression (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
          +

          8.6.4 Foundational: Calling static_assert with a constant

          +

          expression +

          + + + + + + + + + + + + diff --git a/0.0.14/html_split/Foundational-How-and-when-are-copies-made.html b/0.0.14/html_split/Foundational-How-and-when-are-copies-made.html new file mode 100644 index 0000000..4cec33b --- /dev/null +++ b/0.0.14/html_split/Foundational-How-and-when-are-copies-made.html @@ -0,0 +1,63 @@ + + + + + +Foundational How and when are copies made (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          8.1.4 Foundational: How and when are copies made

          + + + + + + + + + + + + + diff --git a/0.0.14/html_split/Foundational-Using-UDLs.html b/0.0.14/html_split/Foundational-Using-UDLs.html new file mode 100644 index 0000000..ee31f18 --- /dev/null +++ b/0.0.14/html_split/Foundational-Using-UDLs.html @@ -0,0 +1,61 @@ + + + + + +Foundational Using UDLs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
          +

          8.4.4 Foundational: Using UDLs

          + + + + + + + + + + + + + diff --git a/0.0.14/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html b/0.0.14/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html new file mode 100644 index 0000000..99ba226 --- /dev/null +++ b/0.0.14/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html @@ -0,0 +1,62 @@ + + + + + +Foundational Using and defining functions with default arguments (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
          +

          8.5.4 Foundational: Using and defining functions with default

          +

          arguments +

          + + + + + + + + + + + + diff --git a/0.0.14/html_split/Foundational-Writing-requires_002dexpressions.html b/0.0.14/html_split/Foundational-Writing-requires_002dexpressions.html new file mode 100644 index 0000000..a5f6086 --- /dev/null +++ b/0.0.14/html_split/Foundational-Writing-requires_002dexpressions.html @@ -0,0 +1,60 @@ + + + + + +Foundational Writing requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +
          +

          8.3.1 Foundational: Writing requires-expressions

          + + + + + + + + + + + + + diff --git a/0.0.14/html_split/Functions-default-argument.html b/0.0.14/html_split/Functions-default-argument.html new file mode 100644 index 0000000..7092e80 --- /dev/null +++ b/0.0.14/html_split/Functions-default-argument.html @@ -0,0 +1,67 @@ + + + + + +Functions default argument (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
          +

          8.5 Functions: default argument

          +

          Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

          + + + + + + + + + + + + + + diff --git a/0.0.14/html_split/Functions-user_002ddefined-literals.html b/0.0.14/html_split/Functions-user_002ddefined-literals.html new file mode 100644 index 0000000..2c00dbc --- /dev/null +++ b/0.0.14/html_split/Functions-user_002ddefined-literals.html @@ -0,0 +1,65 @@ + + + + + +Functions user-defined literals (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
          +

          8.4 Functions: user-defined literals

          +

          Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

          + + + + + + + + + + + + + diff --git a/0.0.14/html_split/Functions.html b/0.0.14/html_split/Functions.html new file mode 100644 index 0000000..82175a5 --- /dev/null +++ b/0.0.14/html_split/Functions.html @@ -0,0 +1,61 @@ + + + + + +Functions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          7.4 Functions

          + + + + + + + + +
          IDUnitFoundationalMainAdvanced
          [‘?’]Calling Functions???
          [‘?’]Parameter Passing (e.g., Passing By Value and Reference)???
          [‘func-args’]Default Arguments‘✔️’
          [‘?’]Returning Multiple Values???
          [‘?’]Overloading???
          [‘udl’]User-Defined Literals‘✔️’‘✔️’
          + + + + + + diff --git a/0.0.14/html_split/Generic-Programming-Templates.html b/0.0.14/html_split/Generic-Programming-Templates.html new file mode 100644 index 0000000..1a22cd7 --- /dev/null +++ b/0.0.14/html_split/Generic-Programming-Templates.html @@ -0,0 +1,61 @@ + + + + + +Generic Programming Templates (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          7.8 Generic Programming (Templates)

          + + + + + + + + +
          IDUnitFoundationalMainAdvanced
          [‘?’]Concepts???
          [‘?’]SFINAE???
          [‘?’]Template Metaprogramming???
          [‘?’]Function Templates???
          [‘?’]Requires Clauses???
          [‘req-expr’]Requires Expressions‘✔️’‘✔️’
          + + + + + + diff --git a/0.0.14/html_split/Glossary.html b/0.0.14/html_split/Glossary.html new file mode 100644 index 0000000..2bf24f2 --- /dev/null +++ b/0.0.14/html_split/Glossary.html @@ -0,0 +1,58 @@ + + + + + +Glossary (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
          +

          +Next: , Previous: , Up: Top   [Contents]

          +
          +
          +

          13 Glossary

          +

          Some possible terms to include in the glossary: +

          +
            +
          • learning objective +
          • learning outcome +
          + + + + + + diff --git a/0.0.14/html_split/How-To-Contribute.html b/0.0.14/html_split/How-To-Contribute.html new file mode 100644 index 0000000..f1963d5 --- /dev/null +++ b/0.0.14/html_split/How-To-Contribute.html @@ -0,0 +1,89 @@ + + + + + +How To Contribute (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
          +

          +Next: , Previous: , Up: Top   [Contents]

          +
          +
          +

          12 How To Contribute

          +

          Before attempting to contribute any content for consideration for +inclusion in this document, please read the information below and and +the referenced documents as appropriate. +

          +

          All contributions to this project must be made in accordance with the +license in section License. This teaching-guidelines +document only offers guidance on teaching C++ as it is specified in the +current version of the C++ standard. So, content should be presented +relative to the most-recently ratified version of the standard. A +detailed explanation of how to present the material for a topic is given +in: +

          +
            +
          • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to +structure a teaching topic. https://wg21.link/p2193. +
          + +

          Any potential contributors should ensure that they read this document. +The following document may also be helpful in providing some general +background on the modular approach to teaching followed herein: +

          + + +

          In order to prepare content, it is important to understand what learning +outcomes are, and how to prepare good ones. Some information on learning +outcomes can be found in the References section. The +following document offers a concise introduction to learning outcomes: +

          + + + + + + + diff --git a/0.0.14/html_split/Inheritance-and-Class-Hierarchies.html b/0.0.14/html_split/Inheritance-and-Class-Hierarchies.html new file mode 100644 index 0000000..1a394b0 --- /dev/null +++ b/0.0.14/html_split/Inheritance-and-Class-Hierarchies.html @@ -0,0 +1,57 @@ + + + + + +Inheritance and Class Hierarchies (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          7.6 Inheritance and Class Hierarchies

          + + + + +
          IDUnitFoundationalMainAdvanced
          [‘?’]Virtual Functions???
          [‘?’]Run-Time Type Information???
          + + + + + + diff --git a/0.0.14/html_split/License.html b/0.0.14/html_split/License.html new file mode 100644 index 0000000..38d2d8d --- /dev/null +++ b/0.0.14/html_split/License.html @@ -0,0 +1,100 @@ + + + + + +License (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
          +

          +Next: , Previous: , Up: Top   [Contents]

          +
          +
          +

          10 License

          +

          [NOTE: This license is copied verbatim from the C++ Core +Guidelines.] +

          +
          Copyright (c) Standard C++ Foundation and its contributors
          +
          +Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
          +perpetual license to copy, use, modify, and create derivative works from this
          +project for your personal or internal business use only. The above copyright
          +notice and this permission notice shall be included in all copies or
          +substantial portions of the project. This license does not grant permission
          +to use the trade names, trademarks, service marks, or product names of the
          +licensor, except as required for reasonable and customary use in describing
          +the origin of the project.
          +
          +Standard C++ Foundation reserves the right to accept contributions to the
          +project at its discretion.
          +
          +By contributing material to this project, you grant Standard C++ Foundation,
          +and those who receive the material directly or indirectly from Standard C++
          +Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
          +transferrable license to reproduce, prepare derivative works of, publicly
          +display, publicly perform, and distribute your contributed material and such
          +derivative works, and to sublicense any or all of the foregoing rights to third
          +parties for commercial or non-commercial use.  You also grant Standard C++
          +Foundation, and those who receive the material directly or indirectly from
          +Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
          +irrevocable license under your patent claims that directly read on your
          +contributed material to make, have made, use, offer to sell, sell and import
          +or otherwise dispose of the material. You warrant that your material is your
          +original work, or that you have the right to grant the above licenses.
          +
          +THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
          +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
          +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
          +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
          +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
          +OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
          +PROJECT.
          +
          +If you believe that anything in the project infringes your copyright, please
          +contact us at admin@isocpp.org with your contact information and a detailed
          +description of your intellectual property, including a specific URL where you
          +believe your intellectual property is being infringed.
          +
          +
          +
          +

          +Next: , Previous: , Up: Top   [Contents]

          +
          + + + + + diff --git a/0.0.14/html_split/Main-Advanced-requirements.html b/0.0.14/html_split/Main-Advanced-requirements.html new file mode 100644 index 0000000..40d8bd0 --- /dev/null +++ b/0.0.14/html_split/Main-Advanced-requirements.html @@ -0,0 +1,60 @@ + + + + + +Main Advanced requirements (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +
          +

          8.3.2 Main: Advanced requirements

          + + + + + + + + + + + + + diff --git a/0.0.14/html_split/Main-Contracts-and-static_005fassert.html b/0.0.14/html_split/Main-Contracts-and-static_005fassert.html new file mode 100644 index 0000000..6c0ba46 --- /dev/null +++ b/0.0.14/html_split/Main-Contracts-and-static_005fassert.html @@ -0,0 +1,61 @@ + + + + + +Main Contracts and static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
          +

          8.6.5 Main: Contracts and static_assert

          + + + + + + + + + + + + + diff --git a/0.0.14/html_split/Main-Implementing-user_002ddefined-copy-operations.html b/0.0.14/html_split/Main-Implementing-user_002ddefined-copy-operations.html new file mode 100644 index 0000000..e38dfd6 --- /dev/null +++ b/0.0.14/html_split/Main-Implementing-user_002ddefined-copy-operations.html @@ -0,0 +1,62 @@ + + + + + +Main Implementing user-defined copy operations (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
          +

          8.1.5 Main: Implementing user-defined copy operations

          + + + + + + + + + + + + + diff --git a/0.0.14/html_split/Main-implementing-UDLs.html b/0.0.14/html_split/Main-implementing-UDLs.html new file mode 100644 index 0000000..ae1c307 --- /dev/null +++ b/0.0.14/html_split/Main-implementing-UDLs.html @@ -0,0 +1,59 @@ + + + + + +Main implementing UDLs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
          +

          8.4.5 Main: implementing UDLs

          + + + + + + + + + + + + diff --git a/0.0.14/html_split/Main-implementing-_002a.html b/0.0.14/html_split/Main-implementing-_002a.html new file mode 100644 index 0000000..a4ada7b --- /dev/null +++ b/0.0.14/html_split/Main-implementing-_002a.html @@ -0,0 +1,62 @@ + + + + + +Main implementing * (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
          +

          8.5.5 Main: implementing *

          + + + + + + + + + + + + + diff --git a/0.0.14/html_split/Meta_002derror-handling-static_005fassert.html b/0.0.14/html_split/Meta_002derror-handling-static_005fassert.html new file mode 100644 index 0000000..176cec8 --- /dev/null +++ b/0.0.14/html_split/Meta_002derror-handling-static_005fassert.html @@ -0,0 +1,67 @@ + + + + + +Meta-error handling static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
          +

          8.6 Meta-error handling: static_assert

          +

          Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

          + + + + + + + + + + + + + + diff --git a/0.0.14/html_split/Module-name-Requires-Expressions.html b/0.0.14/html_split/Module-name-Requires-Expressions.html new file mode 100644 index 0000000..412ad99 --- /dev/null +++ b/0.0.14/html_split/Module-name-Requires-Expressions.html @@ -0,0 +1,60 @@ + + + + + +Module name Requires Expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
          +

          8.2 Module name: Requires Expressions

          +

          Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

          + + + + + + + + + + diff --git a/0.0.14/html_split/Motivation.html b/0.0.14/html_split/Motivation.html new file mode 100644 index 0000000..40b0ec9 --- /dev/null +++ b/0.0.14/html_split/Motivation.html @@ -0,0 +1,57 @@ + + + + + +Motivation (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          8.1.2 Motivation

          +

          Why is this important? Why do we want to learn/teach this +topic? +

          +

          Copy semantics allows the user to define how objects of a class get +replicated and interact on a value level. +

          + + + + + diff --git a/0.0.14/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html b/0.0.14/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html new file mode 100644 index 0000000..a91aa9d --- /dev/null +++ b/0.0.14/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html @@ -0,0 +1,78 @@ + + + + + +Obtaining This Document The Most Recent Version and Alternate Formats (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
          +

          +Next: , Previous: , Up: Top   [Contents]

          +
          +
          +

          1 Obtaining This Document: The Most Recent Version and Alternate

          +

          Formats +The most recent version of this document is available as an online HTML +document at: https://cplusplus.github.io/SG20/latest/. +

          +

          The version of the document that you are currently reading is available +in the following formats: +

          +
            +
          1. online (HTML) format as a single large HTML document: +https://cplusplus.github.io/SG20/0.0.14/html + +
          2. EPUB format: +https://cplusplus.github.io/SG20/0.0.14/guidelines.epub + +
          3. online (HTML) format, split across multiple HTML documents: +https://cplusplus.github.io/SG20/0.0.14/html_split/ [Note: +The support for this format needs more work (in order to beautify and +fix linking issues).] + +
          + +

          Older versions of this document are also available. In general version +ver is available at +https://cplusplus.github.io/SG20/ver/html. For example, version +0.1.0 (assuming that this version exists) would be available at +https://cplusplus.github.io/SG20/0.1.0/html. +

          + + + + + diff --git a/0.0.14/html_split/Organization-of-This-Document.html b/0.0.14/html_split/Organization-of-This-Document.html new file mode 100644 index 0000000..ece5d7a --- /dev/null +++ b/0.0.14/html_split/Organization-of-This-Document.html @@ -0,0 +1,95 @@ + + + + + +Organization of This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          6 Organization of This Document

          +

          The various concepts (i.e., ideas) to potentially be covered are +partitioned into modules. A module is very broad in scope and consists +of numerous topics. +

          +

          For each module, topics related to the module are identified. Then, for +each topic, learning outcomes are specified. In order to address a wide +variety of courses on C++, each topic is addressed at three proficiency +levels. These proficiency levels allow each topic to be covered at more +than one level of detail. This allows target audiences with different +background and learning objectives to be accommodated. The three +proficiency levels are as follows: +

          +
            +
          • foundational: This level gives the learner the idea that a facility +exists, what benefits it offers, and the basic ways of using it. + +
          • main: This level shows mainstream uses and techniques. For abstraction +and organizational mechanisms it also demonstrates how to build them. +This level should also give the learner a basic (but not detailed) +understanding of how a facility might be implemented so that the learner +can have a first-order understanding of any costs involved. + +
          • advanced: This level gives information suitable for an expert. For most +topics there is an expert level of knowledge that most programmers +rarely need and techniques that require detailed understanding of +language rules or library implementation. + +
          + +

          The remainder of this document is organized as follows. The various +topics are listed grouped by module. In cases where a topic might be +classified into more than one module, the topic is listed under the +module of most direct relevance. This is done in order to avoid +duplication of content. (In the case that a topic is equally relevant to +multiple modules, the decision of which to select is made by a +proverbial coin toss.) The order in which modules and topics are +presented is not meant to imply any order of coverage in a course. The +order in which items are listed is essentially arbitrary. +

          +
          + + + + + + diff --git a/0.0.14/html_split/Overview.html b/0.0.14/html_split/Overview.html new file mode 100644 index 0000000..be44bfa --- /dev/null +++ b/0.0.14/html_split/Overview.html @@ -0,0 +1,61 @@ + + + + + +Overview (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          8.1.1 Overview

          +

          Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

          + + + + + +
          LevelObjectives
          Foundationalunderstanding how and when are copies made
          Mainimplementing user-defined copy operations
          Advancedspecial cases: copy elision
          + + + + + + diff --git a/0.0.14/html_split/Points-to-cover.html b/0.0.14/html_split/Points-to-cover.html new file mode 100644 index 0000000..ba4b5cc --- /dev/null +++ b/0.0.14/html_split/Points-to-cover.html @@ -0,0 +1,69 @@ + + + + + +Points to cover (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          8.1.4.4 Points to cover

          +

          This section lists important details for each point. +

          +
            +
          • Principle of copying +
              +
            • Copying of types, which follow the rule of zero +
            • Copying of types, with user defined copy operations +
            • Copying an object does not change the original +
            + +
          • Practical applications +
              +
            • std::unique_ptr (has no copy) +
            • Strings (copies the value) +
            + +
          + + + + + + diff --git a/0.0.14/html_split/Preprocessor.html b/0.0.14/html_split/Preprocessor.html new file mode 100644 index 0000000..345e396 --- /dev/null +++ b/0.0.14/html_split/Preprocessor.html @@ -0,0 +1,58 @@ + + + + + +Preprocessor (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          7.2 Preprocessor

          + + + + + +
          IDUnitFoundationalMainAdvanced
          [‘?’]Preprocessor Metaprogramming???
          [‘?’]Inclusion???
          [‘?’]Macros???
          + + + + + + diff --git a/0.0.14/html_split/References-on-Learning-Outcomes.html b/0.0.14/html_split/References-on-Learning-Outcomes.html new file mode 100644 index 0000000..7b74cad --- /dev/null +++ b/0.0.14/html_split/References-on-Learning-Outcomes.html @@ -0,0 +1,71 @@ + + + + + +References on Learning Outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          14.1 References on Learning Outcomes

          + + + + + + + diff --git a/0.0.14/html_split/References.html b/0.0.14/html_split/References.html new file mode 100644 index 0000000..f595be2 --- /dev/null +++ b/0.0.14/html_split/References.html @@ -0,0 +1,59 @@ + + + + + +References (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
          +

          +Previous: , Up: Top   [Contents]

          +
          +
          +

          14 References

          + + + + + + + + + + + diff --git a/0.0.14/html_split/Software-Design.html b/0.0.14/html_split/Software-Design.html new file mode 100644 index 0000000..6b4f6c8 --- /dev/null +++ b/0.0.14/html_split/Software-Design.html @@ -0,0 +1,56 @@ + + + + + +Software Design (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          7.15 Software Design

          + + + +
          IDUnitFoundationalMainAdvanced
          [‘?’]Design by Contract???
          + + + + + + diff --git a/0.0.14/html_split/Standard-Library.html b/0.0.14/html_split/Standard-Library.html new file mode 100644 index 0000000..c80c7fc --- /dev/null +++ b/0.0.14/html_split/Standard-Library.html @@ -0,0 +1,57 @@ + + + + + +Standard Library (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          7.10 Standard Library

          + + + + +
          IDUnitFoundationalMainAdvanced
          [‘?’]Input/Output (I/O)???
          [‘?’]Containers, Iterators, and Algorithms???
          + + + + + + diff --git a/0.0.14/html_split/Student-outcomes.html b/0.0.14/html_split/Student-outcomes.html new file mode 100644 index 0000000..c604549 --- /dev/null +++ b/0.0.14/html_split/Student-outcomes.html @@ -0,0 +1,73 @@ + + + + + +Student outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          8.1.4.2 Student outcomes

          +

          A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

          +

          A student should be able to: +

          +
            +
          1. explain what copy semantics accomplish +
          + +
            +
          • establishing “equivalent” object state in another object +
          + +
            +
          1. explain difference between copying a reference and copying a value* +
          2. explain where copies are made +
          + +

          * In other languages these differences are sometimes referred to as +shallow and deep copy. +

          + + + + + diff --git a/0.0.14/html_split/Summary-of-Modules-and-Topics.html b/0.0.14/html_split/Summary-of-Modules-and-Topics.html new file mode 100644 index 0000000..678c318 --- /dev/null +++ b/0.0.14/html_split/Summary-of-Modules-and-Topics.html @@ -0,0 +1,100 @@ + + + + + +Summary of Modules and Topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          7 Summary of Modules and Topics

          +

          In the sections that follow, the various modules and topics are +presented. There is one section per module. For each module, a table +listing the various topics in that module is provided. The ID for a +topic is linked to the detailed coverage of that topic that comes later +in the document. If a topic has any learning outcomes at a given +proficiency level, this is indicated by a checkmark (“✔️”). If a topic +has no learning outcomes (simply because there are not any, not because +the information is missing), this is indicated by an em dash (“—”). +In the case that the information for a topic is completely missing, a +question mark (“?”) symbol is used. +

          + + + + + + + + + + + + + + + + + + +
          + + + + + + diff --git a/0.0.14/html_split/Testing-and-Debugging.html b/0.0.14/html_split/Testing-and-Debugging.html new file mode 100644 index 0000000..da60211 --- /dev/null +++ b/0.0.14/html_split/Testing-and-Debugging.html @@ -0,0 +1,59 @@ + + + + + +Testing and Debugging (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
          +

          +Next: , Previous: , Up: Summary of Modules and Topics   [Contents]

          +
          +
          +

          7.13 Testing and Debugging

          + + + + + + +
          IDUnitFoundationalMainAdvanced
          [‘?’]Source-Level Debuggers???
          [‘?’]Code Sanitizers???
          [‘?’]Test Frameworks???
          [‘?’]Debugging Strategies???
          + + + + + + diff --git a/0.0.14/html_split/Tooling.html b/0.0.14/html_split/Tooling.html new file mode 100644 index 0000000..43c3b2f --- /dev/null +++ b/0.0.14/html_split/Tooling.html @@ -0,0 +1,57 @@ + + + + + +Tooling (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          7.14 Tooling

          + + + + +
          IDUnitFoundationalMainAdvanced
          [‘?’]Compiler Toolchains???
          [‘?’]IDEs???
          + + + + + + diff --git a/0.0.14/html_split/Topic-introduction.html b/0.0.14/html_split/Topic-introduction.html new file mode 100644 index 0000000..fff97f2 --- /dev/null +++ b/0.0.14/html_split/Topic-introduction.html @@ -0,0 +1,55 @@ + + + + + +Topic introduction (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          8.1.3 Topic introduction

          +

          Very brief introduction to the topic. +

          +

          Explains when and how objects are copied. +

          + + + + + diff --git a/0.0.14/html_split/Use-of-This-Document.html b/0.0.14/html_split/Use-of-This-Document.html new file mode 100644 index 0000000..4c820d5 --- /dev/null +++ b/0.0.14/html_split/Use-of-This-Document.html @@ -0,0 +1,58 @@ + + + + + +Use of This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          4 Use of This Document

          +

          [NOTE: This document follows the same license model as the C++ +Core Guidelines. The LICENSE document is taken verbatim from the C++ +Core Guidelines.] This document is made available under a MIT-style +license. In simple terms, this license permits copying, use, +modification, and creation of derivative works. A copy of the license is +included in the section LICENSE. +

          + + + + + diff --git a/0.0.14/html_split/User_002dDefined-Types-Classes.html b/0.0.14/html_split/User_002dDefined-Types-Classes.html new file mode 100644 index 0000000..808279a --- /dev/null +++ b/0.0.14/html_split/User_002dDefined-Types-Classes.html @@ -0,0 +1,69 @@ + + + + + +User-Defined Types Classes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          7.5 User-Defined Types (Classes)

          + + + + + + + + + + + + + + + +
          IDUnitFoundationalMainAdvanced
          [‘?’]Special Member Functions???
          [‘?’]Types???
          [‘?’]Conversions???
          [‘?’]Constructors and Destructors???
          [‘?’]Move/Copy Constructors and Assignment Operators???
          [‘?’]Member Functions???
          [‘?’]Sum Types???
          [‘?’]User-Defined Literals???
          [‘?’]Special Member Functions???
          [‘?’]Guidelines for Special Member Functions (e.g., Rule of Five, Rule +of Zero)???
          [‘copy’]Copy Semantics‘✔️’‘✔️’
          [‘?’]Moving and Copying???
          [‘?’]Lambdas???
          + + + + + + diff --git a/0.0.14/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html b/0.0.14/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html new file mode 100644 index 0000000..3f9bf2c --- /dev/null +++ b/0.0.14/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html @@ -0,0 +1,69 @@ + + + + + +Working Group Documents Related to C++ Teaching Guidelines (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
          +

          14.2 Working Group Documents Related to C++ Teaching Guidelines

          +
            +
          • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — +Standing Document for SG20: Guidelines for Teaching C++ to Beginners. +https://wg21.link/p1389. + +
          • Christopher Di Bella. P1725R0 — Modular Topic Design. +https://wg21.link/p1725. + +
          • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to +structure a teaching topic. https://wg21.link/p2193. + +
          • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study +Group: C++ Education. https://wg21.link/p1231. + +
          • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 +— Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0. + +
          + + + + + + diff --git a/0.0.14/html_split/_0023advanced.html b/0.0.14/html_split/_0023advanced.html new file mode 100644 index 0000000..d503bfc --- /dev/null +++ b/0.0.14/html_split/_0023advanced.html @@ -0,0 +1,40 @@ + + + + + + +#advanced (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #advanced.

          + diff --git a/0.0.14/html_split/_0023advanced_002d1.html b/0.0.14/html_split/_0023advanced_002d1.html new file mode 100644 index 0000000..282a7b8 --- /dev/null +++ b/0.0.14/html_split/_0023advanced_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #advanced-1.

          + diff --git a/0.0.14/html_split/_0023advanced_002d2.html b/0.0.14/html_split/_0023advanced_002d2.html new file mode 100644 index 0000000..039b3ff --- /dev/null +++ b/0.0.14/html_split/_0023advanced_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #advanced-2.

          + diff --git a/0.0.14/html_split/_0023advanced_002d3.html b/0.0.14/html_split/_0023advanced_002d3.html new file mode 100644 index 0000000..ebf5529 --- /dev/null +++ b/0.0.14/html_split/_0023advanced_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #advanced-3.

          + diff --git a/0.0.14/html_split/_0023backgroundrequired_002dknowledge.html b/0.0.14/html_split/_0023backgroundrequired_002dknowledge.html new file mode 100644 index 0000000..9959745 --- /dev/null +++ b/0.0.14/html_split/_0023backgroundrequired_002dknowledge.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #backgroundrequired-knowledge.

          + diff --git a/0.0.14/html_split/_0023backgroundrequired_002dknowledge_002d1.html b/0.0.14/html_split/_0023backgroundrequired_002dknowledge_002d1.html new file mode 100644 index 0000000..f6f6bd0 --- /dev/null +++ b/0.0.14/html_split/_0023backgroundrequired_002dknowledge_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #backgroundrequired-knowledge-1.

          + diff --git a/0.0.14/html_split/_0023backgroundrequired_002dknowledge_002d2.html b/0.0.14/html_split/_0023backgroundrequired_002dknowledge_002d2.html new file mode 100644 index 0000000..b0b297d --- /dev/null +++ b/0.0.14/html_split/_0023backgroundrequired_002dknowledge_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #backgroundrequired-knowledge-2.

          + diff --git a/0.0.14/html_split/_0023backgroundrequired_002dknowledge_002d3.html b/0.0.14/html_split/_0023backgroundrequired_002dknowledge_002d3.html new file mode 100644 index 0000000..ae34d91 --- /dev/null +++ b/0.0.14/html_split/_0023backgroundrequired_002dknowledge_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #backgroundrequired-knowledge-3.

          + diff --git a/0.0.14/html_split/_0023backgroundrequired_002dknowledge_002d4.html b/0.0.14/html_split/_0023backgroundrequired_002dknowledge_002d4.html new file mode 100644 index 0000000..7417f62 --- /dev/null +++ b/0.0.14/html_split/_0023backgroundrequired_002dknowledge_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #backgroundrequired-knowledge-4.

          + diff --git a/0.0.14/html_split/_0023backgroundrequired_002dknowledge_002d5.html b/0.0.14/html_split/_0023backgroundrequired_002dknowledge_002d5.html new file mode 100644 index 0000000..34298e9 --- /dev/null +++ b/0.0.14/html_split/_0023backgroundrequired_002dknowledge_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #backgroundrequired-knowledge-5.

          + diff --git a/0.0.14/html_split/_0023backgroundrequired_002dknowledge_002d6.html b/0.0.14/html_split/_0023backgroundrequired_002dknowledge_002d6.html new file mode 100644 index 0000000..a1cdee1 --- /dev/null +++ b/0.0.14/html_split/_0023backgroundrequired_002dknowledge_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #backgroundrequired-knowledge-6.

          + diff --git a/0.0.14/html_split/_0023backgroundrequired_002dknowledge_002d7.html b/0.0.14/html_split/_0023backgroundrequired_002dknowledge_002d7.html new file mode 100644 index 0000000..0a8d35a --- /dev/null +++ b/0.0.14/html_split/_0023backgroundrequired_002dknowledge_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #backgroundrequired-knowledge-7.

          + diff --git a/0.0.14/html_split/_0023backgroundrequired_002dknowledge_002d8.html b/0.0.14/html_split/_0023backgroundrequired_002dknowledge_002d8.html new file mode 100644 index 0000000..6080498 --- /dev/null +++ b/0.0.14/html_split/_0023backgroundrequired_002dknowledge_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #backgroundrequired-knowledge-8.

          + diff --git a/0.0.14/html_split/_0023backgroundrequired_002dknowledge_002d9.html b/0.0.14/html_split/_0023backgroundrequired_002dknowledge_002d9.html new file mode 100644 index 0000000..3ea462d --- /dev/null +++ b/0.0.14/html_split/_0023backgroundrequired_002dknowledge_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #backgroundrequired-knowledge-9.

          + diff --git a/0.0.14/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html b/0.0.14/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html new file mode 100644 index 0000000..925c568 --- /dev/null +++ b/0.0.14/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html @@ -0,0 +1,40 @@ + + + + + + +#basics-types-objects-values-expressions-statements-and-control-flow-constructs (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #basics-types-objects-values-expressions-statements-and-control-flow-constructs.

          + diff --git a/0.0.14/html_split/_0023building.html b/0.0.14/html_split/_0023building.html new file mode 100644 index 0000000..8ffc9df --- /dev/null +++ b/0.0.14/html_split/_0023building.html @@ -0,0 +1,40 @@ + + + + + + +#building (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #building.

          + diff --git a/0.0.14/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html b/0.0.14/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html new file mode 100644 index 0000000..a7e6bad --- /dev/null +++ b/0.0.14/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html @@ -0,0 +1,40 @@ + + + + + + +#c-object-model-copy-semantics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #c-object-model-copy-semantics.

          + diff --git a/0.0.14/html_split/_0023caveats.html b/0.0.14/html_split/_0023caveats.html new file mode 100644 index 0000000..d4bac8b --- /dev/null +++ b/0.0.14/html_split/_0023caveats.html @@ -0,0 +1,40 @@ + + + + + + +#caveats (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #caveats.

          + diff --git a/0.0.14/html_split/_0023caveats_002d1.html b/0.0.14/html_split/_0023caveats_002d1.html new file mode 100644 index 0000000..64faefd --- /dev/null +++ b/0.0.14/html_split/_0023caveats_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #caveats-1.

          + diff --git a/0.0.14/html_split/_0023caveats_002d2.html b/0.0.14/html_split/_0023caveats_002d2.html new file mode 100644 index 0000000..6c66559 --- /dev/null +++ b/0.0.14/html_split/_0023caveats_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #caveats-2.

          + diff --git a/0.0.14/html_split/_0023caveats_002d3.html b/0.0.14/html_split/_0023caveats_002d3.html new file mode 100644 index 0000000..479063f --- /dev/null +++ b/0.0.14/html_split/_0023caveats_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #caveats-3.

          + diff --git a/0.0.14/html_split/_0023caveats_002d4.html b/0.0.14/html_split/_0023caveats_002d4.html new file mode 100644 index 0000000..9588a55 --- /dev/null +++ b/0.0.14/html_split/_0023caveats_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #caveats-4.

          + diff --git a/0.0.14/html_split/_0023caveats_002d5.html b/0.0.14/html_split/_0023caveats_002d5.html new file mode 100644 index 0000000..11edee5 --- /dev/null +++ b/0.0.14/html_split/_0023caveats_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #caveats-5.

          + diff --git a/0.0.14/html_split/_0023caveats_002d6.html b/0.0.14/html_split/_0023caveats_002d6.html new file mode 100644 index 0000000..6cea721 --- /dev/null +++ b/0.0.14/html_split/_0023caveats_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #caveats-6.

          + diff --git a/0.0.14/html_split/_0023caveats_002d7.html b/0.0.14/html_split/_0023caveats_002d7.html new file mode 100644 index 0000000..2a8f1cd --- /dev/null +++ b/0.0.14/html_split/_0023caveats_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #caveats-7.

          + diff --git a/0.0.14/html_split/_0023caveats_002d8.html b/0.0.14/html_split/_0023caveats_002d8.html new file mode 100644 index 0000000..e330642 --- /dev/null +++ b/0.0.14/html_split/_0023caveats_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #caveats-8.

          + diff --git a/0.0.14/html_split/_0023caveats_002d9.html b/0.0.14/html_split/_0023caveats_002d9.html new file mode 100644 index 0000000..004e434 --- /dev/null +++ b/0.0.14/html_split/_0023caveats_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #caveats-9.

          + diff --git a/0.0.14/html_split/_0023compilation_002dmodel.html b/0.0.14/html_split/_0023compilation_002dmodel.html new file mode 100644 index 0000000..1017867 --- /dev/null +++ b/0.0.14/html_split/_0023compilation_002dmodel.html @@ -0,0 +1,40 @@ + + + + + + +#compilation-model (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #compilation-model.

          + diff --git a/0.0.14/html_split/_0023compile_002dtime_002dcomputation.html b/0.0.14/html_split/_0023compile_002dtime_002dcomputation.html new file mode 100644 index 0000000..59b0c57 --- /dev/null +++ b/0.0.14/html_split/_0023compile_002dtime_002dcomputation.html @@ -0,0 +1,40 @@ + + + + + + +#compile-time-computation (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #compile-time-computation.

          + diff --git a/0.0.14/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html b/0.0.14/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html new file mode 100644 index 0000000..9294adf --- /dev/null +++ b/0.0.14/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html @@ -0,0 +1,40 @@ + + + + + + +#context-and-aim-of-this-guide (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #context-and-aim-of-this-guide.

          + diff --git a/0.0.14/html_split/_0023contributing_002dto_002dthis_002ddocument.html b/0.0.14/html_split/_0023contributing_002dto_002dthis_002ddocument.html new file mode 100644 index 0000000..272d848 --- /dev/null +++ b/0.0.14/html_split/_0023contributing_002dto_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#contributing-to-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #contributing-to-this-document.

          + diff --git a/0.0.14/html_split/_0023contributors.html b/0.0.14/html_split/_0023contributors.html new file mode 100644 index 0000000..a391f9d --- /dev/null +++ b/0.0.14/html_split/_0023contributors.html @@ -0,0 +1,40 @@ + + + + + + +#contributors (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #contributors.

          + diff --git a/0.0.14/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html b/0.0.14/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html new file mode 100644 index 0000000..d32c27e --- /dev/null +++ b/0.0.14/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html @@ -0,0 +1,40 @@ + + + + + + +#detailed-information-for-modules-and-topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #detailed-information-for-modules-and-topics.

          + diff --git a/0.0.14/html_split/_0023disclaimer.html b/0.0.14/html_split/_0023disclaimer.html new file mode 100644 index 0000000..e9658d6 --- /dev/null +++ b/0.0.14/html_split/_0023disclaimer.html @@ -0,0 +1,40 @@ + + + + + + +#disclaimer (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #disclaimer.

          + diff --git a/0.0.14/html_split/_0023error_002dhandling.html b/0.0.14/html_split/_0023error_002dhandling.html new file mode 100644 index 0000000..80cfb94 --- /dev/null +++ b/0.0.14/html_split/_0023error_002dhandling.html @@ -0,0 +1,40 @@ + + + + + + +#error-handling (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #error-handling.

          + diff --git a/0.0.14/html_split/_0023examples_002dof_002dcourse_002dcurricula.html b/0.0.14/html_split/_0023examples_002dof_002dcourse_002dcurricula.html new file mode 100644 index 0000000..99af091 --- /dev/null +++ b/0.0.14/html_split/_0023examples_002dof_002dcourse_002dcurricula.html @@ -0,0 +1,40 @@ + + + + + + +#examples-of-course-curricula (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #examples-of-course-curricula.

          + diff --git a/0.0.14/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html b/0.0.14/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html new file mode 100644 index 0000000..fc9b3eb --- /dev/null +++ b/0.0.14/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html @@ -0,0 +1,40 @@ + + + + + + +#external-i.e.-non-standard-libraries (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #external-i.e.-non-standard-libraries.

          + diff --git a/0.0.14/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html b/0.0.14/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html new file mode 100644 index 0000000..f915680 --- /dev/null +++ b/0.0.14/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-calling-static_assert-with-a-constant-expression (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #foundational-calling-static_assert-with-a-constant-expression.

          + diff --git a/0.0.14/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html b/0.0.14/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html new file mode 100644 index 0000000..88f62bc --- /dev/null +++ b/0.0.14/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-how-and-when-are-copies-made (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #foundational-how-and-when-are-copies-made.

          + diff --git a/0.0.14/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html b/0.0.14/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html new file mode 100644 index 0000000..95ab098 --- /dev/null +++ b/0.0.14/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-using-and-defining-functions-with-default-arguments (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #foundational-using-and-defining-functions-with-default-arguments.

          + diff --git a/0.0.14/html_split/_0023foundational_002dusing_002dudls.html b/0.0.14/html_split/_0023foundational_002dusing_002dudls.html new file mode 100644 index 0000000..2f7afdd --- /dev/null +++ b/0.0.14/html_split/_0023foundational_002dusing_002dudls.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-using-udls (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #foundational-using-udls.

          + diff --git a/0.0.14/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html b/0.0.14/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html new file mode 100644 index 0000000..708f2d3 --- /dev/null +++ b/0.0.14/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-writing-requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #foundational-writing-requires-expressions.

          + diff --git a/0.0.14/html_split/_0023functions.html b/0.0.14/html_split/_0023functions.html new file mode 100644 index 0000000..e304abe --- /dev/null +++ b/0.0.14/html_split/_0023functions.html @@ -0,0 +1,40 @@ + + + + + + +#functions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #functions.

          + diff --git a/0.0.14/html_split/_0023functions_002ddefault_002dargument.html b/0.0.14/html_split/_0023functions_002ddefault_002dargument.html new file mode 100644 index 0000000..ccfbcbb --- /dev/null +++ b/0.0.14/html_split/_0023functions_002ddefault_002dargument.html @@ -0,0 +1,40 @@ + + + + + + +#functions-default-argument (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #functions-default-argument.

          + diff --git a/0.0.14/html_split/_0023functions_002duser_002ddefined_002dliterals.html b/0.0.14/html_split/_0023functions_002duser_002ddefined_002dliterals.html new file mode 100644 index 0000000..b4f78b5 --- /dev/null +++ b/0.0.14/html_split/_0023functions_002duser_002ddefined_002dliterals.html @@ -0,0 +1,40 @@ + + + + + + +#functions-user-defined-literals (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #functions-user-defined-literals.

          + diff --git a/0.0.14/html_split/_0023generic_002dprogramming_002dtemplates.html b/0.0.14/html_split/_0023generic_002dprogramming_002dtemplates.html new file mode 100644 index 0000000..3b91080 --- /dev/null +++ b/0.0.14/html_split/_0023generic_002dprogramming_002dtemplates.html @@ -0,0 +1,40 @@ + + + + + + +#generic-programming-templates (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #generic-programming-templates.

          + diff --git a/0.0.14/html_split/_0023glossary.html b/0.0.14/html_split/_0023glossary.html new file mode 100644 index 0000000..9b46bf6 --- /dev/null +++ b/0.0.14/html_split/_0023glossary.html @@ -0,0 +1,40 @@ + + + + + + +#glossary (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #glossary.

          + diff --git a/0.0.14/html_split/_0023how_002dto_002dcontribute.html b/0.0.14/html_split/_0023how_002dto_002dcontribute.html new file mode 100644 index 0000000..d9cff4a --- /dev/null +++ b/0.0.14/html_split/_0023how_002dto_002dcontribute.html @@ -0,0 +1,40 @@ + + + + + + +#how-to-contribute (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #how-to-contribute.

          + diff --git a/0.0.14/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html b/0.0.14/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html new file mode 100644 index 0000000..def5140 --- /dev/null +++ b/0.0.14/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html @@ -0,0 +1,40 @@ + + + + + + +#inheritance-and-class-hierarchies (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #inheritance-and-class-hierarchies.

          + diff --git a/0.0.14/html_split/_0023license.html b/0.0.14/html_split/_0023license.html new file mode 100644 index 0000000..6b44dd1 --- /dev/null +++ b/0.0.14/html_split/_0023license.html @@ -0,0 +1,40 @@ + + + + + + +#license (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #license.

          + diff --git a/0.0.14/html_split/_0023main_002dadvanced_002drequirements.html b/0.0.14/html_split/_0023main_002dadvanced_002drequirements.html new file mode 100644 index 0000000..8214533 --- /dev/null +++ b/0.0.14/html_split/_0023main_002dadvanced_002drequirements.html @@ -0,0 +1,40 @@ + + + + + + +#main-advanced-requirements (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #main-advanced-requirements.

          + diff --git a/0.0.14/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html b/0.0.14/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html new file mode 100644 index 0000000..22b0484 --- /dev/null +++ b/0.0.14/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html @@ -0,0 +1,40 @@ + + + + + + +#main-contracts-and-static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #main-contracts-and-static_assert.

          + diff --git a/0.0.14/html_split/_0023main_002dimplementing.html b/0.0.14/html_split/_0023main_002dimplementing.html new file mode 100644 index 0000000..260008c --- /dev/null +++ b/0.0.14/html_split/_0023main_002dimplementing.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #main-implementing.

          + diff --git a/0.0.14/html_split/_0023main_002dimplementing_002dudls.html b/0.0.14/html_split/_0023main_002dimplementing_002dudls.html new file mode 100644 index 0000000..a41d194 --- /dev/null +++ b/0.0.14/html_split/_0023main_002dimplementing_002dudls.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing-udls (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #main-implementing-udls.

          + diff --git a/0.0.14/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html b/0.0.14/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html new file mode 100644 index 0000000..1e5a4d8 --- /dev/null +++ b/0.0.14/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing-user-defined-copy-operations (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #main-implementing-user-defined-copy-operations.

          + diff --git a/0.0.14/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html b/0.0.14/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html new file mode 100644 index 0000000..4502ed8 --- /dev/null +++ b/0.0.14/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html @@ -0,0 +1,40 @@ + + + + + + +#meta-error-handling-static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #meta-error-handling-static_assert.

          + diff --git a/0.0.14/html_split/_0023module_002dname_002drequires_002dexpressions.html b/0.0.14/html_split/_0023module_002dname_002drequires_002dexpressions.html new file mode 100644 index 0000000..56a9ebf --- /dev/null +++ b/0.0.14/html_split/_0023module_002dname_002drequires_002dexpressions.html @@ -0,0 +1,40 @@ + + + + + + +#module-name-requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #module-name-requires-expressions.

          + diff --git a/0.0.14/html_split/_0023motivation.html b/0.0.14/html_split/_0023motivation.html new file mode 100644 index 0000000..0141374 --- /dev/null +++ b/0.0.14/html_split/_0023motivation.html @@ -0,0 +1,40 @@ + + + + + + +#motivation (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #motivation.

          + diff --git a/0.0.14/html_split/_0023motivation_002d1.html b/0.0.14/html_split/_0023motivation_002d1.html new file mode 100644 index 0000000..7e4a69e --- /dev/null +++ b/0.0.14/html_split/_0023motivation_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #motivation-1.

          + diff --git a/0.0.14/html_split/_0023motivation_002d2.html b/0.0.14/html_split/_0023motivation_002d2.html new file mode 100644 index 0000000..7901fd3 --- /dev/null +++ b/0.0.14/html_split/_0023motivation_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #motivation-2.

          + diff --git a/0.0.14/html_split/_0023motivation_002d3.html b/0.0.14/html_split/_0023motivation_002d3.html new file mode 100644 index 0000000..ec720ad --- /dev/null +++ b/0.0.14/html_split/_0023motivation_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #motivation-3.

          + diff --git a/0.0.14/html_split/_0023motivation_002d4.html b/0.0.14/html_split/_0023motivation_002d4.html new file mode 100644 index 0000000..f53583a --- /dev/null +++ b/0.0.14/html_split/_0023motivation_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #motivation-4.

          + diff --git a/0.0.14/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html b/0.0.14/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html new file mode 100644 index 0000000..57e8b6e --- /dev/null +++ b/0.0.14/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html @@ -0,0 +1,40 @@ + + + + + + +#obtaining-this-document-the-most-recent-version-and-alternate-formats (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #obtaining-this-document-the-most-recent-version-and-alternate-formats.

          + diff --git a/0.0.14/html_split/_0023organization_002dof_002dthis_002ddocument.html b/0.0.14/html_split/_0023organization_002dof_002dthis_002ddocument.html new file mode 100644 index 0000000..e312b8e --- /dev/null +++ b/0.0.14/html_split/_0023organization_002dof_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#organization-of-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #organization-of-this-document.

          + diff --git a/0.0.14/html_split/_0023overview.html b/0.0.14/html_split/_0023overview.html new file mode 100644 index 0000000..b2d4bdc --- /dev/null +++ b/0.0.14/html_split/_0023overview.html @@ -0,0 +1,40 @@ + + + + + + +#overview (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #overview.

          + diff --git a/0.0.14/html_split/_0023overview_002d1.html b/0.0.14/html_split/_0023overview_002d1.html new file mode 100644 index 0000000..d551764 --- /dev/null +++ b/0.0.14/html_split/_0023overview_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#overview-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #overview-1.

          + diff --git a/0.0.14/html_split/_0023overview_002d2.html b/0.0.14/html_split/_0023overview_002d2.html new file mode 100644 index 0000000..5a34b05 --- /dev/null +++ b/0.0.14/html_split/_0023overview_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#overview-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #overview-2.

          + diff --git a/0.0.14/html_split/_0023overview_002d3.html b/0.0.14/html_split/_0023overview_002d3.html new file mode 100644 index 0000000..f230145 --- /dev/null +++ b/0.0.14/html_split/_0023overview_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#overview-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #overview-3.

          + diff --git a/0.0.14/html_split/_0023overview_002d4.html b/0.0.14/html_split/_0023overview_002d4.html new file mode 100644 index 0000000..2436b9a --- /dev/null +++ b/0.0.14/html_split/_0023overview_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#overview-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #overview-4.

          + diff --git a/0.0.14/html_split/_0023points_002dto_002dcover.html b/0.0.14/html_split/_0023points_002dto_002dcover.html new file mode 100644 index 0000000..424b02b --- /dev/null +++ b/0.0.14/html_split/_0023points_002dto_002dcover.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #points-to-cover.

          + diff --git a/0.0.14/html_split/_0023points_002dto_002dcover_002d1.html b/0.0.14/html_split/_0023points_002dto_002dcover_002d1.html new file mode 100644 index 0000000..2a554bb --- /dev/null +++ b/0.0.14/html_split/_0023points_002dto_002dcover_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #points-to-cover-1.

          + diff --git a/0.0.14/html_split/_0023points_002dto_002dcover_002d2.html b/0.0.14/html_split/_0023points_002dto_002dcover_002d2.html new file mode 100644 index 0000000..053a51a --- /dev/null +++ b/0.0.14/html_split/_0023points_002dto_002dcover_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #points-to-cover-2.

          + diff --git a/0.0.14/html_split/_0023points_002dto_002dcover_002d3.html b/0.0.14/html_split/_0023points_002dto_002dcover_002d3.html new file mode 100644 index 0000000..b0dad48 --- /dev/null +++ b/0.0.14/html_split/_0023points_002dto_002dcover_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #points-to-cover-3.

          + diff --git a/0.0.14/html_split/_0023points_002dto_002dcover_002d4.html b/0.0.14/html_split/_0023points_002dto_002dcover_002d4.html new file mode 100644 index 0000000..94de8fa --- /dev/null +++ b/0.0.14/html_split/_0023points_002dto_002dcover_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #points-to-cover-4.

          + diff --git a/0.0.14/html_split/_0023points_002dto_002dcover_002d5.html b/0.0.14/html_split/_0023points_002dto_002dcover_002d5.html new file mode 100644 index 0000000..39d1eaf --- /dev/null +++ b/0.0.14/html_split/_0023points_002dto_002dcover_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #points-to-cover-5.

          + diff --git a/0.0.14/html_split/_0023points_002dto_002dcover_002d6.html b/0.0.14/html_split/_0023points_002dto_002dcover_002d6.html new file mode 100644 index 0000000..92df88f --- /dev/null +++ b/0.0.14/html_split/_0023points_002dto_002dcover_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #points-to-cover-6.

          + diff --git a/0.0.14/html_split/_0023points_002dto_002dcover_002d7.html b/0.0.14/html_split/_0023points_002dto_002dcover_002d7.html new file mode 100644 index 0000000..6e6c895 --- /dev/null +++ b/0.0.14/html_split/_0023points_002dto_002dcover_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #points-to-cover-7.

          + diff --git a/0.0.14/html_split/_0023points_002dto_002dcover_002d8.html b/0.0.14/html_split/_0023points_002dto_002dcover_002d8.html new file mode 100644 index 0000000..b5574e1 --- /dev/null +++ b/0.0.14/html_split/_0023points_002dto_002dcover_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #points-to-cover-8.

          + diff --git a/0.0.14/html_split/_0023preprocessor.html b/0.0.14/html_split/_0023preprocessor.html new file mode 100644 index 0000000..a3bb5f6 --- /dev/null +++ b/0.0.14/html_split/_0023preprocessor.html @@ -0,0 +1,40 @@ + + + + + + +#preprocessor (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #preprocessor.

          + diff --git a/0.0.14/html_split/_0023references.html b/0.0.14/html_split/_0023references.html new file mode 100644 index 0000000..69fbd6b --- /dev/null +++ b/0.0.14/html_split/_0023references.html @@ -0,0 +1,40 @@ + + + + + + +#references (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #references.

          + diff --git a/0.0.14/html_split/_0023references_002don_002dlearning_002doutcomes.html b/0.0.14/html_split/_0023references_002don_002dlearning_002doutcomes.html new file mode 100644 index 0000000..d28fbbf --- /dev/null +++ b/0.0.14/html_split/_0023references_002don_002dlearning_002doutcomes.html @@ -0,0 +1,40 @@ + + + + + + +#references-on-learning-outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #references-on-learning-outcomes.

          + diff --git a/0.0.14/html_split/_0023software_002ddesign.html b/0.0.14/html_split/_0023software_002ddesign.html new file mode 100644 index 0000000..16f5f54 --- /dev/null +++ b/0.0.14/html_split/_0023software_002ddesign.html @@ -0,0 +1,40 @@ + + + + + + +#software-design (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #software-design.

          + diff --git a/0.0.14/html_split/_0023standard_002dlibrary.html b/0.0.14/html_split/_0023standard_002dlibrary.html new file mode 100644 index 0000000..71956d3 --- /dev/null +++ b/0.0.14/html_split/_0023standard_002dlibrary.html @@ -0,0 +1,40 @@ + + + + + + +#standard-library (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #standard-library.

          + diff --git a/0.0.14/html_split/_0023student_002doutcomes.html b/0.0.14/html_split/_0023student_002doutcomes.html new file mode 100644 index 0000000..df0035d --- /dev/null +++ b/0.0.14/html_split/_0023student_002doutcomes.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #student-outcomes.

          + diff --git a/0.0.14/html_split/_0023student_002doutcomes_002d1.html b/0.0.14/html_split/_0023student_002doutcomes_002d1.html new file mode 100644 index 0000000..e9344b7 --- /dev/null +++ b/0.0.14/html_split/_0023student_002doutcomes_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #student-outcomes-1.

          + diff --git a/0.0.14/html_split/_0023student_002doutcomes_002d2.html b/0.0.14/html_split/_0023student_002doutcomes_002d2.html new file mode 100644 index 0000000..6fa7724 --- /dev/null +++ b/0.0.14/html_split/_0023student_002doutcomes_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #student-outcomes-2.

          + diff --git a/0.0.14/html_split/_0023student_002doutcomes_002d3.html b/0.0.14/html_split/_0023student_002doutcomes_002d3.html new file mode 100644 index 0000000..195d9d2 --- /dev/null +++ b/0.0.14/html_split/_0023student_002doutcomes_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #student-outcomes-3.

          + diff --git a/0.0.14/html_split/_0023student_002doutcomes_002d4.html b/0.0.14/html_split/_0023student_002doutcomes_002d4.html new file mode 100644 index 0000000..3e30430 --- /dev/null +++ b/0.0.14/html_split/_0023student_002doutcomes_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #student-outcomes-4.

          + diff --git a/0.0.14/html_split/_0023student_002doutcomes_002d5.html b/0.0.14/html_split/_0023student_002doutcomes_002d5.html new file mode 100644 index 0000000..0a4a7da --- /dev/null +++ b/0.0.14/html_split/_0023student_002doutcomes_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #student-outcomes-5.

          + diff --git a/0.0.14/html_split/_0023student_002doutcomes_002d6.html b/0.0.14/html_split/_0023student_002doutcomes_002d6.html new file mode 100644 index 0000000..c5c4ac0 --- /dev/null +++ b/0.0.14/html_split/_0023student_002doutcomes_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #student-outcomes-6.

          + diff --git a/0.0.14/html_split/_0023student_002doutcomes_002d7.html b/0.0.14/html_split/_0023student_002doutcomes_002d7.html new file mode 100644 index 0000000..5233f94 --- /dev/null +++ b/0.0.14/html_split/_0023student_002doutcomes_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #student-outcomes-7.

          + diff --git a/0.0.14/html_split/_0023student_002doutcomes_002d8.html b/0.0.14/html_split/_0023student_002doutcomes_002d8.html new file mode 100644 index 0000000..f19fd7f --- /dev/null +++ b/0.0.14/html_split/_0023student_002doutcomes_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #student-outcomes-8.

          + diff --git a/0.0.14/html_split/_0023student_002doutcomes_002d9.html b/0.0.14/html_split/_0023student_002doutcomes_002d9.html new file mode 100644 index 0000000..735a21f --- /dev/null +++ b/0.0.14/html_split/_0023student_002doutcomes_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #student-outcomes-9.

          + diff --git a/0.0.14/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html b/0.0.14/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html new file mode 100644 index 0000000..4801178 --- /dev/null +++ b/0.0.14/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html @@ -0,0 +1,40 @@ + + + + + + +#summary-of-modules-and-topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #summary-of-modules-and-topics.

          + diff --git a/0.0.14/html_split/_0023testing_002dand_002ddebugging.html b/0.0.14/html_split/_0023testing_002dand_002ddebugging.html new file mode 100644 index 0000000..1ae096d --- /dev/null +++ b/0.0.14/html_split/_0023testing_002dand_002ddebugging.html @@ -0,0 +1,40 @@ + + + + + + +#testing-and-debugging (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #testing-and-debugging.

          + diff --git a/0.0.14/html_split/_0023tooling.html b/0.0.14/html_split/_0023tooling.html new file mode 100644 index 0000000..634a8dc --- /dev/null +++ b/0.0.14/html_split/_0023tooling.html @@ -0,0 +1,40 @@ + + + + + + +#tooling (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #tooling.

          + diff --git a/0.0.14/html_split/_0023topic_002dintroduction.html b/0.0.14/html_split/_0023topic_002dintroduction.html new file mode 100644 index 0000000..742d5d9 --- /dev/null +++ b/0.0.14/html_split/_0023topic_002dintroduction.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #topic-introduction.

          + diff --git a/0.0.14/html_split/_0023topic_002dintroduction_002d1.html b/0.0.14/html_split/_0023topic_002dintroduction_002d1.html new file mode 100644 index 0000000..a110644 --- /dev/null +++ b/0.0.14/html_split/_0023topic_002dintroduction_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #topic-introduction-1.

          + diff --git a/0.0.14/html_split/_0023topic_002dintroduction_002d2.html b/0.0.14/html_split/_0023topic_002dintroduction_002d2.html new file mode 100644 index 0000000..986bf37 --- /dev/null +++ b/0.0.14/html_split/_0023topic_002dintroduction_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #topic-introduction-2.

          + diff --git a/0.0.14/html_split/_0023topic_002dintroduction_002d3.html b/0.0.14/html_split/_0023topic_002dintroduction_002d3.html new file mode 100644 index 0000000..3d14fd9 --- /dev/null +++ b/0.0.14/html_split/_0023topic_002dintroduction_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #topic-introduction-3.

          + diff --git a/0.0.14/html_split/_0023topic_002dintroduction_002d4.html b/0.0.14/html_split/_0023topic_002dintroduction_002d4.html new file mode 100644 index 0000000..c73a236 --- /dev/null +++ b/0.0.14/html_split/_0023topic_002dintroduction_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #topic-introduction-4.

          + diff --git a/0.0.14/html_split/_0023use_002dof_002dthis_002ddocument.html b/0.0.14/html_split/_0023use_002dof_002dthis_002ddocument.html new file mode 100644 index 0000000..68d835d --- /dev/null +++ b/0.0.14/html_split/_0023use_002dof_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#use-of-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #use-of-this-document.

          + diff --git a/0.0.14/html_split/_0023user_002ddefined_002dtypes_002dclasses.html b/0.0.14/html_split/_0023user_002ddefined_002dtypes_002dclasses.html new file mode 100644 index 0000000..04771a9 --- /dev/null +++ b/0.0.14/html_split/_0023user_002ddefined_002dtypes_002dclasses.html @@ -0,0 +1,40 @@ + + + + + + +#user-defined-types-classes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #user-defined-types-classes.

          + diff --git a/0.0.14/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html b/0.0.14/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html new file mode 100644 index 0000000..f4b9435 --- /dev/null +++ b/0.0.14/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html @@ -0,0 +1,40 @@ + + + + + + +#working-group-documents-related-to-c-teaching-guidelines (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #working-group-documents-related-to-c-teaching-guidelines.

          + diff --git a/0.0.14/html_split/index.html b/0.0.14/html_split/index.html new file mode 100644 index 0000000..da85671 --- /dev/null +++ b/0.0.14/html_split/index.html @@ -0,0 +1,240 @@ + + + + + +Top (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +

          Table of Contents

          + +
          + + +
          + + + +
          +

          Guidelines for Teaching C++

          + + + + + + + + + + + + + + + + + + +
          + + + + + + diff --git a/0.0.14/html_split/unknown_node.html b/0.0.14/html_split/unknown_node.html new file mode 100644 index 0000000..fa2561b --- /dev/null +++ b/0.0.14/html_split/unknown_node.html @@ -0,0 +1,818 @@ + + + + + +Guidelines for Teaching C++ + + + + + + + + + + + + + + + + +
          +

          +   [Contents]

          +
          +
          +

          8.1.5.1 Background/Required Knowledge

          +

          A student is able to: * identify special member functions +[C++ object model: +special member functions] +

          +

          It helps when a student is able to: * use move semantics +[C++ object model: move +semantics] * explain the rule of zero +[C++ object model: rule-of-zero] +* explain the rule of five [C++ +object model: rule-of-five] +

          +
          +

          +   [Contents]

          +
          +

          8.1.5.2 Student outcomes

          +

          A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

          +

          A student should be able to: * explain when they have to implement the +copy operations for their own type * Copy constructor * Copy assignment +operator * implement copy operations for their own types * +Optional: explain when copying with basic and strong exception +guarantees is useful +

          +
          +

          +   [Contents]

          +
          +

          8.1.5.3 Caveats

          +

          This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

          +
            +
          • Intricacies when implementing copy operations: +
              +
            • Examples of how not to write copy operations (e.g., C++03 +std::auto_ptr) +
            + +
          + +
          +

          +   [Contents]

          +
          +

          8.1.5.4 Points to cover

          +

          This section lists important details for each point. +

          +
            +
          • Copy constructors and copy assignment operators +
              +
            • How compiler generates default copy operations +
            • =default, =delete (No copy) +
            • How-to write your own copy operations +
            • Rule-of-five +
            • Copy assignment operators can be ref-qualified to avoid assigning into +temporary objects. +
            + +
          + +
          +

          +   [Contents]

          +
          +

          8.2.1 Overview

          +

          Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

          + + + + + +
          LevelObjectives
          FoundationalDefine and use requires-expressions to check satisfaction of +expressions by given parameters
          MainDefine and use requires-expressions to check properties of +expressions
          Advanced
          + +
          +

          +   [Contents]

          +
          +

          8.2.2 Motivation

          +

          Why is this important? Why do we want to learn/teach this +topic? +

          +

          Requires-expressions allow a developer to perform compile-time +evaluation on the validity of other expressions. These are fundamental +to the ability to write concepts. +[Compile-time programming: +concepts] +

          +
          +

          +   [Contents]

          +
          +

          8.3 Topic introduction

          +

          Very brief introduction to the topic. +

          +

          Requires-expressions are compile-time predicates which evaluate to true +when their specified set of expressions are all valid for a given set of +inputs. +

          + + + + + + +
          +

          +   [Contents]

          +
          +

          8.3.1.1 Background/Required Knowledge

          +

          A student is able to: +

          + + +

          It is helpful if: +

          +
            +
          • The student is aware that attempting to specialize the template with +types or values which do not match otherwise unstated assumptions will +cause errors within the template. +
          + +
          +

          +   [Contents]

          +
          +

          8.3.1.2 Student outcomes

          +

          A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

          +

          A student should be able to: +

          +
            +
          1. Write a simple-requirement to assert the validity of an expression +
          2. Write a type-requirement to check the existence of a type by its +identifier +
          3. Write a compound-requirement to test the resulting type of an expression +
          4. Write a nested-requirement to test the constexpr value of an operation, +as opposed to just the syntactic validity +
          5. Use a requires-expression within a concept, requires-clause, or +if constexpr condition +
          + +
          +

          +   [Contents]

          +
          +

          8.3.1.3 Caveats

          +

          This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

          +

          To require that expressions, which evaluate to a boolean value like +sizeof(t) == 4, evaluate to true a nested-requirement is +needed (e.g., requires sizeof(t) == 4;). Omitting the +requires results in a simple-requirement, which is satisfied +based purely on syntactic validity, not on the result of the operation. +

          +
          +

          +   [Contents]

          +
          +

          8.3.1.4 Points to cover

          +

          This section lists important details for each point. +

          +
            +
          • All requires-expression requirements terminate with a semicolon. +
          • simple-requirements are used to check that an expression is well-formed. +
          • nested-requirements are introduced with requires and primarily +used to check the result of an expression computable by the compiler, +including concepts or other requires-expressions. +
          • type-requirements are introduced with typename and used to verify +the existence of a type with a particular identifier. +
          • compound-requirements are enclosed in braces and can be used to check +the resulting type of an expression. +
          • Checks are performed by the compiler, not at run time. +
          • If covering usage of requires-expression with requires-clause, +[Compile-time programming: +requires clause] demonstrate requires requires and show how to +ever avoid writing it by using a concept. +[Compile-time programming: +concepts] +
          + +
          +

          +   [Contents]

          +
          +

          8.3.2.1 Background/Required Knowledge

          +
            +
          • All of the above. +
          • Knowledge of noexcept +
          + +

          A student is able to: +

          + + +
          +

          +   [Contents]

          +
          +

          8.3.2.2 Student outcomes

          +

          A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

          +

          A student should be able to: +

          +
            +
          1. Write compound-requirements which test the noexceptness of an +expression. +
          2. Use a concept as the target of a compound-requirement. +
          + +
          +

          +   [Contents]

          +
          +

          8.3.2.3 Caveats

          +

          This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

          +
          +

          +   [Contents]

          +
          +

          8.3.2.4 Points to cover

          +

          This section lists important details for each point. +

          +
            +
          • Compound-requirements allow the optional ability to test whether an +expression is marked as noexcept, by using a trailing +noexcept keyword. +
          + +
          struct S
          +{
          +    void foo() noexcept {}
          +    void bar() {}
          +};
          +
          +static_assert(requires(S s) { { s.foo() } noexcept; } ); // Succeeds. s.foo() is noexcept
          +static_assert(requires(S s) { { s.bar() } noexcept; } ); // Fails. s.bar() is not noexcept
          +
          +
            +
          • If the return-type-requirement of a compound-requirement is a concept, +that concept is given the resulting type as the first parameter, +followed by the specified parameters in the compound-requirement. +{ ++x } -> C<int> would substitute +C<decltype((++x)), int> and check that concept C is satisfied for +those parameters. +
          + +
          +

          +   [Contents]

          +
          +

          8.3.3 Advanced

          +

          See user-defined-literals. +

          +
          +

          +   [Contents]

          +
          +

          8.4.1 Overview

          +

          Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

          + + + + + +
          LevelObjectives
          Foundationalusing and understanding UDLs
          Mainimplementing your own UDLs
          AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
          + +
          +

          +   [Contents]

          +
          +

          8.4.2 Motivation

          +

          Why is this important? Why do we want to learn/teach this +topic? +

          +
            +
          • Allows clearer expression of intent in C++. +
          • std::string: "Hello, world!"s +
          • std::chrono: 3h + 10min + 5s +
          + +
          +

          +   [Contents]

          +
          +

          8.4.3 Topic introduction

          +

          Very brief introduction to the topic. +

          +
            +
          • Explain the existence of user defined literals. Example: +12min + 17s is terse, expressive and type safe. +
          + +
          +

          +   [Contents]

          +
          +

          8.4.4.1 Background/Required Knowledge

          +

          A student: * knows how to form numeric literals, e.g., 1.5f means +a float of value 1.5. * is familiar with the major C++ +types: * bool (Boolean type) * int (Integer type) * +double (Floating-point type) * std::string (Text type) * +std::vector (Collection type) * knows that namespaces exist, and +namespace std. * knows what using-declarations and +using-directives are. [C++ object +model: declarations] +

          +
          +

          +   [Contents]

          +
          +

          8.4.4.2 Student outcomes

          +

          A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

          +

          A student should be able to: +

          +
            +
          1. use using namespace std::string_literals[1]. +
          2. recognise UDLs in code that they are reading. +
          3. figure out which UDL definitions for a used type exist. +
          4. identify parts of the standard library that make use of UDLs. +
          5. prevent the dangers of temporaries created with "blah"s as well +as with std::string{"blah"}. +
          6. effectively selects the right set of namespaces in using-directives from +the sub-namespaces std::literals. +
          + +

          [1]: explain that it’s okay to use a using-directive to “activate” +UDLs. +

          +
          +

          +   [Contents]

          +
          +

          8.4.4.3 Caveats

          +

          This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

          +
            +
          • A student gets confused by the similarities and differences between +built-in suffixes and UDLs and between UDLs from different namespaces. +
          • A student “activates” two suffixes with the same signature from +different namespaces. +
          + +
          +

          +   [Contents]

          +
          +

          8.4.4.4 Points to cover

          +

          This section lists important details for each point. +

          +
          +

          +   [Contents]

          +
          +

          8.4.5.1 Background/Required Knowledge

          +
            +
          • All of the above. +
          + +
          +

          +   [Contents]

          +
          +

          8.4.5.2 Student outcomes

          +

          A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

          +

          A student should be able to: +

          +
            +
          1. write a UDL operator of their own. +
          2. separate unrelated UDLs into distinct namespaces. +
          + +
          +

          +   [Contents]

          +
          +

          8.4.5.3 Caveats

          +

          This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

          +

          No caveats at present. #### Points to cover +

          +

          This section lists important details for each point. +

          +

          No caveats at present. ### Advanced {#udl-advanced} +

          +

          These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

          +
          +

          +   [Contents]

          +
          +

          8.5.1 Overview

          +

          Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

          +

          Functions in C++ may be overloaded with different numbers and types of +parameters. It may be of value to specify default arguments for some +number of parameters, to allow a caller to avoid specifying arguments +that rarely change, or to enable expanding the set of parameters while +maintaining backward compatibility with existing callers. +

          + + + + + +
          LevelObjective
          FoundationalDefine and use functions with default arguments
          Main
          Advancedrefinement of default arguments through multiple declarations
          + +
          +

          +   [Contents]

          +
          +

          8.5.2 Motivation

          +

          Why is this important? Why do we want to learn/teach this +topic? +

          +

          Default arguments allow the omission of arguments with obvious or common +values. Also may be utilized to extend an existing function signature +without forcing changes to existing calling code. +

          +
          +

          +   [Contents]

          +
          +

          8.5.3 Topic introduction

          +

          Very brief introduction to the topic. +

          +

          Explain how default arguments work and how to define them. +

          +
          +

          +   [Contents]

          +
          +

          8.5.4.1 Background/Required Knowledge

          +

          A student is able to: +

          + + +
          +

          +   [Contents]

          +
          +

          8.5.4.2 Student outcomes

          +

          A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

          +

          A student should be able to: +

          +
            +
          1. Call to a function with a default argument with or without that argument +specified +
          2. Declare a function with a default argument, and omit the default in the +definition’s signature +
          3. Explain when the lifetime of a default argument begins and ends +
          + +
          +

          +   [Contents]

          +
          +

          8.5.4.3 Caveats

          +

          This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

          +
            +
          • When no forward-declaration exists, the definition serves as the +declaration +
          • When multiple declarations exist, only one may specify the default for +any particular parameter, but multiple declarations may specify the +defaults for different parameters. +
          • Additional default values may be specified for other parameters in +repeat declarations +
          • Calling an overloaded function with fewer arguments may be ambiguous +with regard to an overload with default arguments +
          + +
          +

          +   [Contents]

          +
          +

          8.5.4.4 Points to cover

          +

          This section lists important details for each point. +

          +
            +
          • Default value may only be specified once for each parameter among all +declarations +
          • Default values must start from the rightmost parameter and continue +leftward without gaps +
          • Considerations of when to use default arguments vs overload set +
          + +
          +

          +   [Contents]

          +
          +

          8.5.5.2 Student outcomes

          +

          A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

          +

          A student should be able to: +

          +
          +

          +   [Contents]

          +
          +

          8.5.5.3 Caveats

          +

          This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

          +
          +

          +   [Contents]

          +
          +

          8.5.5.4 Points to cover

          +

          This section lists important details for each point. +

          +
          +

          +   [Contents]

          +
          +

          8.5.6 Advanced

          +

          These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

          +

          Subsequent redeclarations of the same function may add default argument +values, which are then usable by callers. Though a single parameter +cannot be given a default argument twice in the same translation unit, +it is legal, though ill-advised, to give the same function different +default arguments in different translation units. +

          +

          See concepts. +

          +
          +

          +   [Contents]

          +
          +

          8.6.1 Overview

          +

          Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

          + + + + + +
          LevelObjectives
          FoundationalCalling static_assert with a constant expression
          MainUsing static_assert to detect contract violations and +improve error messages
          Advanced
          + +
          +

          +   [Contents]

          +
          +

          8.6.2 Motivation

          +

          Why is this important? Why do we want to learn/teach this +topic? +

          +

          static_assert allows the developer to enforce that conditions +which can be checked during compilation will force build errors when +violated. Additionally, they are the best mechanism by which a developer +can pass useful information to other developers regarding what violation +occurred or what must be done, instead. +

          +
          +

          +   [Contents]

          +
          +

          8.6.3 Topic introduction

          +

          Very brief introduction to the topic. +

          +

          static_assert is a compile-time evaluated function that asserts +the truth of a supplied predicate, issuing an optional user-supplied +error message if the predicate is false. +

          +
          +

          +   [Contents]

          +
          +

          8.6.4.1 Background/Required Knowledge

          +

          A student: +

          +
            +
          • Should be able to explain the difference between code evaluated at +compile-time and run-time +
          • Should be able to cite some examples of compile-time known information, +such as sizeof(T) +
          + +
          +

          +   [Contents]

          +
          +

          8.6.4.2 Student outcomes

          +

          A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

          +

          A student should be able to: +

          +
            +
          1. Assert the expected size of a structure using static_assert +
          + +
          +

          +   [Contents]

          +
          +

          8.6.4.3 Caveats

          +

          This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

          +
          +

          +   [Contents]

          +
          +

          8.6.4.4 Points to cover

          +

          This section lists important details for each point. +

          +
            +
          • X +
          • In addition to what is wrong, a good error message will inform the user +of how to correct it +
          + +
          +

          +   [Contents]

          +
          +

          8.6.5.1 Background/Required Knowledge

          +
            +
          • All of the above. +
          • General understanding of compile-time requirements +
          + +
          +

          +   [Contents]

          +
          +

          8.6.5.2 Student outcomes

          +

          A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

          +

          A student should be able to: +

          +
            +
          1. Utilize static_assert to verify preconditions of a meta-function +
          2. Utilize static_assert to verify the results of meta-functions for +known values +
          + +
          +

          +   [Contents]

          +
          +

          8.6.5.3 Caveats

          +

          This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

          +
          +

          +   [Contents]

          +
          +

          8.6.5.4 Points to cover

          +

          This section lists important details for each point. +

          +
            +
          • When writing a meta-function, use static_assert to test the +results +
          • Write static_assert calls at the scope of the code they are +guarding +
          + +
          template<typename T>
          +struct container {
          +    std::map<int, T> vals;
          +
          +    // Test location #1
          +    static_assert(
          +        std::is_default_constructible_v<T>,
          +        "container type T must be default constructible");i
          +
          +    void add(int key, T const& t) {
          +        // Test location #2
          +        static_assert(
          +            std::is_default_constructible_v<T>,
          +            "container type T must be default constructible");
          +        // std::map::operator[] requires default constructible type for 
          +        // the value. This will cause a build failure deep in the 
          +        // implementation of std::map, when T is not default constructible
          +        vals[key] = t;
          +    }
          +};
          +
          +struct NoDefCtor {
          +    NoDefCtor() = delete;
          +    NoDefCtor(double d) {}
          +};
          +
          +container<NoDefCtor> c; // If Test #1 was omitted, this would succeed
          +// This is ill-formed. Test #2 would catch this and provide a better 
          +// error message for the user
          +c.add(42, NoDefCtor(1.0)); 
          +
          +
          +

          +   [Contents]

          +
          +

          8.6.6 Advanced

          +

          These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

          + + + + + diff --git a/latest/index.html b/latest/index.html index ea3931d..a59fb2e 100644 --- a/latest/index.html +++ b/latest/index.html @@ -106,7 +106,7 @@

          Guidelines for Teaching C++

          -

          Version 0.0.13

          +

          Version 0.0.14

          SG20 (ISO C++ Study Group on Education)

          @@ -203,9 +203,9 @@

          <

          The most recent version of this document is available as an online HTML document at: https://cplusplus.github.io/SG20/latest/.

          The version of the document that you are currently reading is available in the following formats:

            -
          1. online (HTML) format as a single large HTML document: https://cplusplus.github.io/SG20/0.0.13/html

          2. -
          3. EPUB format: https://cplusplus.github.io/SG20/0.0.13/guidelines.epub

          4. -
          5. online (HTML) format, split across multiple HTML documents: https://cplusplus.github.io/SG20/0.0.13/html_split/ [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

          6. +
          7. online (HTML) format as a single large HTML document: https://cplusplus.github.io/SG20/0.0.14/html

          8. +
          9. EPUB format: https://cplusplus.github.io/SG20/0.0.14/guidelines.epub

          10. +
          11. online (HTML) format, split across multiple HTML documents: https://cplusplus.github.io/SG20/0.0.14/html_split/ [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

          Older versions of this document are also available. In general version ver is available at https://cplusplus.github.io/SG20/ver/html. For example, version 0.1.0 (assuming that this version exists) would be available at https://cplusplus.github.io/SG20/0.1.0/html.

          2 Disclaimer

          @@ -234,7 +234,6 @@

          6The remainder of this document is organized as follows. The various topics are listed grouped by module. In cases where a topic might be classified into more than one module, the topic is listed under the module of most direct relevance. This is done in order to avoid duplication of content. (In the case that a topic is equally relevant to multiple modules, the decision of which to select is made by a proverbial coin toss.) The order in which modules and topics are presented is not meant to imply any order of coverage in a course. The order in which items are listed is essentially arbitrary.

          7 Summary of Modules and Topics

          In the sections that follow, the various modules and topics are presented. There is one section per module. For each module, a table listing the various topics in that module is provided. The ID for a topic is linked to the detailed coverage of that topic that comes later in the document. If a topic has any learning outcomes at a given proficiency level, this is indicated by a checkmark (“✔️”). If a topic has no learning outcomes (simply because there are not any, not because the information is missing), this is indicated by an em dash (“—”). In the case that the information for a topic is completely missing, a question mark (“?”) symbol is used.

          -

          [NOTE: These topics are taken mostly from the SG20 GitHub repository. They are not intended to be complete in any sense. In fact, by gathering together all topics in one place where they are easily viewed, it is hoped that missing and unbalanced items will be more obvious.]

          7.1 Compilation Model

          From 455bff6888268f50cd8cf6664c0f3fd56d1bc0a0 Mon Sep 17 00:00:00 2001 From: vulder Date: Wed, 3 Nov 2021 17:53:27 +0000 Subject: [PATCH 16/21] deploy: 8f6fd8fffded1fee996f759a9f2526625850f051 --- 0.0.16/guidelines.epub | Bin 0 -> 29659 bytes 0.0.16/html/images/cpp_logo.png | Bin 0 -> 23613 bytes 0.0.16/html/index.html | 1443 +++++++++++++++++ 0.0.16/html_split/Advanced.html | 60 + .../Background_002fRequired-Knowledge.html | 63 + .../Background_002fRequired-knowledge.html | 54 + ...ments-and-Control_002dFlow-Constructs.html | 60 + 0.0.16/html_split/Building.html | 57 + ...002b_002b-object-model-copy-semantics.html | 69 + 0.0.16/html_split/Caveats.html | 62 + 0.0.16/html_split/Compilation-Model.html | 62 + .../Compile_002dTime-Computation.html | 57 + .../Context-and-Aim-of-This-Guide.html | 76 + .../Contributing-to-This-Document.html | 55 + 0.0.16/html_split/Contributors.html | 57 + ...ed-Information-for-Modules-and-Topics.html | 67 + 0.0.16/html_split/Error-Handling.html | 59 + .../External-ie-Non-Standard-Libraries.html | 56 + ...005fassert-with-a-constant-expression.html | 62 + ...dational-How-and-when-are-copies-made.html | 63 + .../html_split/Foundational-Using-UDLs.html | 61 + ...ning-functions-with-default-arguments.html | 62 + ...onal-Writing-requires_002dexpressions.html | 60 + .../Functions-default-argument.html | 67 + .../Functions-user_002ddefined-literals.html | 65 + 0.0.16/html_split/Functions.html | 61 + .../Generic-Programming-Templates.html | 61 + 0.0.16/html_split/Glossary.html | 58 + 0.0.16/html_split/How-To-Contribute.html | 89 + .../Inheritance-and-Class-Hierarchies.html | 57 + 0.0.16/html_split/License.html | 99 ++ .../Main-Advanced-requirements.html | 60 + .../Main-Contracts-and-static_005fassert.html | 61 + ...ting-user_002ddefined-copy-operations.html | 62 + 0.0.16/html_split/Main-implementing-UDLs.html | 59 + .../html_split/Main-implementing-_002a.html | 62 + ..._002derror-handling-static_005fassert.html | 67 + .../Module-name-Requires-Expressions.html | 60 + 0.0.16/html_split/Motivation.html | 57 + ...-Recent-Version-and-Alternate-Formats.html | 78 + .../Organization-of-This-Document.html | 95 ++ 0.0.16/html_split/Overview.html | 61 + 0.0.16/html_split/Points-to-cover.html | 69 + 0.0.16/html_split/Preprocessor.html | 58 + .../References-on-Learning-Outcomes.html | 71 + 0.0.16/html_split/References.html | 59 + 0.0.16/html_split/Software-Design.html | 56 + 0.0.16/html_split/Standard-Library.html | 57 + 0.0.16/html_split/Student-outcomes.html | 73 + .../Summary-of-Modules-and-Topics.html | 100 ++ 0.0.16/html_split/Testing-and-Debugging.html | 59 + 0.0.16/html_split/Tooling.html | 57 + 0.0.16/html_split/Topic-introduction.html | 55 + 0.0.16/html_split/Use-of-This-Document.html | 58 + .../User_002dDefined-Types-Classes.html | 69 + ...ed-to-C_002b_002b-Teaching-Guidelines.html | 69 + 0.0.16/html_split/_0023advanced.html | 40 + 0.0.16/html_split/_0023advanced_002d1.html | 40 + 0.0.16/html_split/_0023advanced_002d2.html | 40 + 0.0.16/html_split/_0023advanced_002d3.html | 40 + ..._0023backgroundrequired_002dknowledge.html | 40 + ...ackgroundrequired_002dknowledge_002d1.html | 40 + ...ackgroundrequired_002dknowledge_002d2.html | 40 + ...ackgroundrequired_002dknowledge_002d3.html | 40 + ...ackgroundrequired_002dknowledge_002d4.html | 40 + ...ackgroundrequired_002dknowledge_002d5.html | 40 + ...ackgroundrequired_002dknowledge_002d6.html | 40 + ...ackgroundrequired_002dknowledge_002d7.html | 40 + ...ackgroundrequired_002dknowledge_002d8.html | 40 + ...ackgroundrequired_002dknowledge_002d9.html | 40 + ...d_002dcontrol_002dflow_002dconstructs.html | 40 + 0.0.16/html_split/_0023building.html | 40 + ...ject_002dmodel_002dcopy_002dsemantics.html | 40 + 0.0.16/html_split/_0023caveats.html | 40 + 0.0.16/html_split/_0023caveats_002d1.html | 40 + 0.0.16/html_split/_0023caveats_002d2.html | 40 + 0.0.16/html_split/_0023caveats_002d3.html | 40 + 0.0.16/html_split/_0023caveats_002d4.html | 40 + 0.0.16/html_split/_0023caveats_002d5.html | 40 + 0.0.16/html_split/_0023caveats_002d6.html | 40 + 0.0.16/html_split/_0023caveats_002d7.html | 40 + 0.0.16/html_split/_0023caveats_002d8.html | 40 + 0.0.16/html_split/_0023caveats_002d9.html | 40 + .../_0023compilation_002dmodel.html | 40 + ..._0023compile_002dtime_002dcomputation.html | 40 + ...and_002daim_002dof_002dthis_002dguide.html | 40 + ...ributing_002dto_002dthis_002ddocument.html | 40 + 0.0.16/html_split/_0023contributors.html | 40 + ...02dfor_002dmodules_002dand_002dtopics.html | 40 + .../html_split/_0023error_002dhandling.html | 40 + ...2e_002dnon_002dstandard_002dlibraries.html | 40 + ...ith_002da_002dconstant_002dexpression.html | 40 + ..._002dwhen_002dare_002dcopies_002dmade.html | 40 + ...ns_002dwith_002ddefault_002darguments.html | 40 + .../_0023foundational_002dusing_002dudls.html | 40 + ...dwriting_002drequires_002dexpressions.html | 40 + 0.0.16/html_split/_0023functions.html | 40 + ...023functions_002ddefault_002dargument.html | 40 + ...ons_002duser_002ddefined_002dliterals.html | 40 + ...generic_002dprogramming_002dtemplates.html | 40 + 0.0.16/html_split/_0023glossary.html | 40 + .../_0023how_002dto_002dcontribute.html | 40 + ...nce_002dand_002dclass_002dhierarchies.html | 40 + 0.0.16/html_split/_0023license.html | 40 + ...023main_002dadvanced_002drequirements.html | 40 + ...ntracts_002dand_002dstatic_005fassert.html | 40 + .../_0023main_002dimplementing.html | 40 + .../_0023main_002dimplementing_002dudls.html | 40 + ...r_002ddefined_002dcopy_002doperations.html | 40 + ...or_002dhandling_002dstatic_005fassert.html | 40 + ...002dname_002drequires_002dexpressions.html | 40 + 0.0.16/html_split/_0023motivation.html | 40 + 0.0.16/html_split/_0023motivation_002d1.html | 40 + 0.0.16/html_split/_0023motivation_002d2.html | 40 + 0.0.16/html_split/_0023motivation_002d3.html | 40 + 0.0.16/html_split/_0023motivation_002d4.html | 40 + ...ion_002dand_002dalternate_002dformats.html | 40 + ...nization_002dof_002dthis_002ddocument.html | 40 + 0.0.16/html_split/_0023overview.html | 40 + 0.0.16/html_split/_0023overview_002d1.html | 40 + 0.0.16/html_split/_0023overview_002d2.html | 40 + 0.0.16/html_split/_0023overview_002d3.html | 40 + 0.0.16/html_split/_0023overview_002d4.html | 40 + .../_0023points_002dto_002dcover.html | 40 + .../_0023points_002dto_002dcover_002d1.html | 40 + .../_0023points_002dto_002dcover_002d2.html | 40 + .../_0023points_002dto_002dcover_002d3.html | 40 + .../_0023points_002dto_002dcover_002d4.html | 40 + .../_0023points_002dto_002dcover_002d5.html | 40 + .../_0023points_002dto_002dcover_002d6.html | 40 + .../_0023points_002dto_002dcover_002d7.html | 40 + .../_0023points_002dto_002dcover_002d8.html | 40 + 0.0.16/html_split/_0023preprocessor.html | 40 + 0.0.16/html_split/_0023references.html | 40 + ...nces_002don_002dlearning_002doutcomes.html | 40 + .../html_split/_0023software_002ddesign.html | 40 + .../html_split/_0023standard_002dlibrary.html | 40 + .../html_split/_0023student_002doutcomes.html | 40 + .../_0023student_002doutcomes_002d1.html | 40 + .../_0023student_002doutcomes_002d2.html | 40 + .../_0023student_002doutcomes_002d3.html | 40 + .../_0023student_002doutcomes_002d4.html | 40 + .../_0023student_002doutcomes_002d5.html | 40 + .../_0023student_002doutcomes_002d6.html | 40 + .../_0023student_002doutcomes_002d7.html | 40 + .../_0023student_002doutcomes_002d8.html | 40 + .../_0023student_002doutcomes_002d9.html | 40 + ...002dof_002dmodules_002dand_002dtopics.html | 40 + .../_0023testing_002dand_002ddebugging.html | 40 + 0.0.16/html_split/_0023tooling.html | 40 + .../_0023topic_002dintroduction.html | 40 + .../_0023topic_002dintroduction_002d1.html | 40 + .../_0023topic_002dintroduction_002d2.html | 40 + .../_0023topic_002dintroduction_002d3.html | 40 + .../_0023topic_002dintroduction_002d4.html | 40 + ..._0023use_002dof_002dthis_002ddocument.html | 40 + ...ser_002ddefined_002dtypes_002dclasses.html | 40 + ...dto_002dc_002dteaching_002dguidelines.html | 40 + 0.0.16/html_split/index.html | 234 +++ 0.0.16/html_split/unknown_node.html | 817 ++++++++++ latest/index.html | 504 +++--- 161 files changed, 10234 insertions(+), 255 deletions(-) create mode 100644 0.0.16/guidelines.epub create mode 100644 0.0.16/html/images/cpp_logo.png create mode 100644 0.0.16/html/index.html create mode 100644 0.0.16/html_split/Advanced.html create mode 100644 0.0.16/html_split/Background_002fRequired-Knowledge.html create mode 100644 0.0.16/html_split/Background_002fRequired-knowledge.html create mode 100644 0.0.16/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html create mode 100644 0.0.16/html_split/Building.html create mode 100644 0.0.16/html_split/C_002b_002b-object-model-copy-semantics.html create mode 100644 0.0.16/html_split/Caveats.html create mode 100644 0.0.16/html_split/Compilation-Model.html create mode 100644 0.0.16/html_split/Compile_002dTime-Computation.html create mode 100644 0.0.16/html_split/Context-and-Aim-of-This-Guide.html create mode 100644 0.0.16/html_split/Contributing-to-This-Document.html create mode 100644 0.0.16/html_split/Contributors.html create mode 100644 0.0.16/html_split/Detailed-Information-for-Modules-and-Topics.html create mode 100644 0.0.16/html_split/Error-Handling.html create mode 100644 0.0.16/html_split/External-ie-Non-Standard-Libraries.html create mode 100644 0.0.16/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html create mode 100644 0.0.16/html_split/Foundational-How-and-when-are-copies-made.html create mode 100644 0.0.16/html_split/Foundational-Using-UDLs.html create mode 100644 0.0.16/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html create mode 100644 0.0.16/html_split/Foundational-Writing-requires_002dexpressions.html create mode 100644 0.0.16/html_split/Functions-default-argument.html create mode 100644 0.0.16/html_split/Functions-user_002ddefined-literals.html create mode 100644 0.0.16/html_split/Functions.html create mode 100644 0.0.16/html_split/Generic-Programming-Templates.html create mode 100644 0.0.16/html_split/Glossary.html create mode 100644 0.0.16/html_split/How-To-Contribute.html create mode 100644 0.0.16/html_split/Inheritance-and-Class-Hierarchies.html create mode 100644 0.0.16/html_split/License.html create mode 100644 0.0.16/html_split/Main-Advanced-requirements.html create mode 100644 0.0.16/html_split/Main-Contracts-and-static_005fassert.html create mode 100644 0.0.16/html_split/Main-Implementing-user_002ddefined-copy-operations.html create mode 100644 0.0.16/html_split/Main-implementing-UDLs.html create mode 100644 0.0.16/html_split/Main-implementing-_002a.html create mode 100644 0.0.16/html_split/Meta_002derror-handling-static_005fassert.html create mode 100644 0.0.16/html_split/Module-name-Requires-Expressions.html create mode 100644 0.0.16/html_split/Motivation.html create mode 100644 0.0.16/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html create mode 100644 0.0.16/html_split/Organization-of-This-Document.html create mode 100644 0.0.16/html_split/Overview.html create mode 100644 0.0.16/html_split/Points-to-cover.html create mode 100644 0.0.16/html_split/Preprocessor.html create mode 100644 0.0.16/html_split/References-on-Learning-Outcomes.html create mode 100644 0.0.16/html_split/References.html create mode 100644 0.0.16/html_split/Software-Design.html create mode 100644 0.0.16/html_split/Standard-Library.html create mode 100644 0.0.16/html_split/Student-outcomes.html create mode 100644 0.0.16/html_split/Summary-of-Modules-and-Topics.html create mode 100644 0.0.16/html_split/Testing-and-Debugging.html create mode 100644 0.0.16/html_split/Tooling.html create mode 100644 0.0.16/html_split/Topic-introduction.html create mode 100644 0.0.16/html_split/Use-of-This-Document.html create mode 100644 0.0.16/html_split/User_002dDefined-Types-Classes.html create mode 100644 0.0.16/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html create mode 100644 0.0.16/html_split/_0023advanced.html create mode 100644 0.0.16/html_split/_0023advanced_002d1.html create mode 100644 0.0.16/html_split/_0023advanced_002d2.html create mode 100644 0.0.16/html_split/_0023advanced_002d3.html create mode 100644 0.0.16/html_split/_0023backgroundrequired_002dknowledge.html create mode 100644 0.0.16/html_split/_0023backgroundrequired_002dknowledge_002d1.html create mode 100644 0.0.16/html_split/_0023backgroundrequired_002dknowledge_002d2.html create mode 100644 0.0.16/html_split/_0023backgroundrequired_002dknowledge_002d3.html create mode 100644 0.0.16/html_split/_0023backgroundrequired_002dknowledge_002d4.html create mode 100644 0.0.16/html_split/_0023backgroundrequired_002dknowledge_002d5.html create mode 100644 0.0.16/html_split/_0023backgroundrequired_002dknowledge_002d6.html create mode 100644 0.0.16/html_split/_0023backgroundrequired_002dknowledge_002d7.html create mode 100644 0.0.16/html_split/_0023backgroundrequired_002dknowledge_002d8.html create mode 100644 0.0.16/html_split/_0023backgroundrequired_002dknowledge_002d9.html create mode 100644 0.0.16/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html create mode 100644 0.0.16/html_split/_0023building.html create mode 100644 0.0.16/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html create mode 100644 0.0.16/html_split/_0023caveats.html create mode 100644 0.0.16/html_split/_0023caveats_002d1.html create mode 100644 0.0.16/html_split/_0023caveats_002d2.html create mode 100644 0.0.16/html_split/_0023caveats_002d3.html create mode 100644 0.0.16/html_split/_0023caveats_002d4.html create mode 100644 0.0.16/html_split/_0023caveats_002d5.html create mode 100644 0.0.16/html_split/_0023caveats_002d6.html create mode 100644 0.0.16/html_split/_0023caveats_002d7.html create mode 100644 0.0.16/html_split/_0023caveats_002d8.html create mode 100644 0.0.16/html_split/_0023caveats_002d9.html create mode 100644 0.0.16/html_split/_0023compilation_002dmodel.html create mode 100644 0.0.16/html_split/_0023compile_002dtime_002dcomputation.html create mode 100644 0.0.16/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html create mode 100644 0.0.16/html_split/_0023contributing_002dto_002dthis_002ddocument.html create mode 100644 0.0.16/html_split/_0023contributors.html create mode 100644 0.0.16/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html create mode 100644 0.0.16/html_split/_0023error_002dhandling.html create mode 100644 0.0.16/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html create mode 100644 0.0.16/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html create mode 100644 0.0.16/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html create mode 100644 0.0.16/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html create mode 100644 0.0.16/html_split/_0023foundational_002dusing_002dudls.html create mode 100644 0.0.16/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html create mode 100644 0.0.16/html_split/_0023functions.html create mode 100644 0.0.16/html_split/_0023functions_002ddefault_002dargument.html create mode 100644 0.0.16/html_split/_0023functions_002duser_002ddefined_002dliterals.html create mode 100644 0.0.16/html_split/_0023generic_002dprogramming_002dtemplates.html create mode 100644 0.0.16/html_split/_0023glossary.html create mode 100644 0.0.16/html_split/_0023how_002dto_002dcontribute.html create mode 100644 0.0.16/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html create mode 100644 0.0.16/html_split/_0023license.html create mode 100644 0.0.16/html_split/_0023main_002dadvanced_002drequirements.html create mode 100644 0.0.16/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html create mode 100644 0.0.16/html_split/_0023main_002dimplementing.html create mode 100644 0.0.16/html_split/_0023main_002dimplementing_002dudls.html create mode 100644 0.0.16/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html create mode 100644 0.0.16/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html create mode 100644 0.0.16/html_split/_0023module_002dname_002drequires_002dexpressions.html create mode 100644 0.0.16/html_split/_0023motivation.html create mode 100644 0.0.16/html_split/_0023motivation_002d1.html create mode 100644 0.0.16/html_split/_0023motivation_002d2.html create mode 100644 0.0.16/html_split/_0023motivation_002d3.html create mode 100644 0.0.16/html_split/_0023motivation_002d4.html create mode 100644 0.0.16/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html create mode 100644 0.0.16/html_split/_0023organization_002dof_002dthis_002ddocument.html create mode 100644 0.0.16/html_split/_0023overview.html create mode 100644 0.0.16/html_split/_0023overview_002d1.html create mode 100644 0.0.16/html_split/_0023overview_002d2.html create mode 100644 0.0.16/html_split/_0023overview_002d3.html create mode 100644 0.0.16/html_split/_0023overview_002d4.html create mode 100644 0.0.16/html_split/_0023points_002dto_002dcover.html create mode 100644 0.0.16/html_split/_0023points_002dto_002dcover_002d1.html create mode 100644 0.0.16/html_split/_0023points_002dto_002dcover_002d2.html create mode 100644 0.0.16/html_split/_0023points_002dto_002dcover_002d3.html create mode 100644 0.0.16/html_split/_0023points_002dto_002dcover_002d4.html create mode 100644 0.0.16/html_split/_0023points_002dto_002dcover_002d5.html create mode 100644 0.0.16/html_split/_0023points_002dto_002dcover_002d6.html create mode 100644 0.0.16/html_split/_0023points_002dto_002dcover_002d7.html create mode 100644 0.0.16/html_split/_0023points_002dto_002dcover_002d8.html create mode 100644 0.0.16/html_split/_0023preprocessor.html create mode 100644 0.0.16/html_split/_0023references.html create mode 100644 0.0.16/html_split/_0023references_002don_002dlearning_002doutcomes.html create mode 100644 0.0.16/html_split/_0023software_002ddesign.html create mode 100644 0.0.16/html_split/_0023standard_002dlibrary.html create mode 100644 0.0.16/html_split/_0023student_002doutcomes.html create mode 100644 0.0.16/html_split/_0023student_002doutcomes_002d1.html create mode 100644 0.0.16/html_split/_0023student_002doutcomes_002d2.html create mode 100644 0.0.16/html_split/_0023student_002doutcomes_002d3.html create mode 100644 0.0.16/html_split/_0023student_002doutcomes_002d4.html create mode 100644 0.0.16/html_split/_0023student_002doutcomes_002d5.html create mode 100644 0.0.16/html_split/_0023student_002doutcomes_002d6.html create mode 100644 0.0.16/html_split/_0023student_002doutcomes_002d7.html create mode 100644 0.0.16/html_split/_0023student_002doutcomes_002d8.html create mode 100644 0.0.16/html_split/_0023student_002doutcomes_002d9.html create mode 100644 0.0.16/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html create mode 100644 0.0.16/html_split/_0023testing_002dand_002ddebugging.html create mode 100644 0.0.16/html_split/_0023tooling.html create mode 100644 0.0.16/html_split/_0023topic_002dintroduction.html create mode 100644 0.0.16/html_split/_0023topic_002dintroduction_002d1.html create mode 100644 0.0.16/html_split/_0023topic_002dintroduction_002d2.html create mode 100644 0.0.16/html_split/_0023topic_002dintroduction_002d3.html create mode 100644 0.0.16/html_split/_0023topic_002dintroduction_002d4.html create mode 100644 0.0.16/html_split/_0023use_002dof_002dthis_002ddocument.html create mode 100644 0.0.16/html_split/_0023user_002ddefined_002dtypes_002dclasses.html create mode 100644 0.0.16/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html create mode 100644 0.0.16/html_split/index.html create mode 100644 0.0.16/html_split/unknown_node.html diff --git a/0.0.16/guidelines.epub b/0.0.16/guidelines.epub new file mode 100644 index 0000000000000000000000000000000000000000..a09fed057c50ff0c861447e5694dc0aebe2aa625 GIT binary patch literal 29659 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 literal 0 HcmV?d00001 diff --git a/0.0.16/html/index.html b/0.0.16/html/index.html new file mode 100644 index 0000000..d0fe143 --- /dev/null +++ b/0.0.16/html/index.html @@ -0,0 +1,1443 @@ + + + + + + + Guidelines for Teaching C++ + + + + + + + + + + + + + + + + + + + + + Guidelines for Teaching C++ + + + + + + + +
          + +
          + +
          + +
          + +
          +

          Guidelines for Teaching C++

          + +

          Version 0.0.16

          + +

          SG20 (ISO C++ Study Group on Education)

          +
          +
          + +
          +
          +
          + +
          +
          + +
          +

          1 Obtaining This Document: The Most Recent Version and Alternate Formats

          +

          The most recent version of this document is available as an online HTML document at: https://cplusplus.github.io/SG20/latest/.

          +

          The version of the document that you are currently reading is available in the following formats:

          +
            +
          1. online (HTML) format as a single large HTML document: https://cplusplus.github.io/SG20/0.0.16/html

          2. +
          3. EPUB format: https://cplusplus.github.io/SG20/0.0.16/guidelines.epub

          4. +
          5. online (HTML) format, split across multiple HTML documents: https://cplusplus.github.io/SG20/0.0.16/html_split/ [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

          6. +
          +

          Older versions of this document are also available. In general version ver is available at https://cplusplus.github.io/SG20/ver/html. For example, version 0.1.0 (assuming that this version exists) would be available at https://cplusplus.github.io/SG20/0.1.0/html.

          +

          2 Context and Aim of This Guide

          +

          This document is intended to serve as a resource for instructors to assist in the preparation of courses on C++ in a variety of settings, including university, college, and industry environments. The main objectives of this document are as follows:

          +
            +
          • to provide guidelines for content to be covered by courses of various difficulty levels on C++ (e.g., topics and learning outcomes)
          • +
          • to note some common misunderstandings and problematic points that may be encountered when teaching particular topics
          • +
          • to suggest resources useful for teaching C++
          • +
          • to present examples of curriculum for specific courses
          • +
          +

          This document does not itself provide a curriculum for a single specific course, but is rather a set of guidelines that can be used to prepare curricula for a wide variety of courses that differ in focus and level of sophistication. (This said, however, some links to other documents with examples of curricula for specific courses may be included herein.) This document only intends to target the teaching of the most recently ratified version of the C++ standard. (This said, however, since older versions of this document are also available, these older versions may be of some use to those who need guidance in older versions of the standard, at least versions that do not predate C++20.)

          +

          3 Use of This Document

          +

          [NOTE: This document follows the same license model as the C++ Core Guidelines. The LICENSE document is taken verbatim from the C++ Core Guidelines.] This document is made available under a MIT-style license. In simple terms, this license permits copying, use, modification, and creation of derivative works. A copy of the license is included in the section LICENSE.

          +

          4 Contributing to This Document

          +

          Contributions to this document are welcome. If you would like to help with this project as a contributor, please read the section How to Contribute.

          +

          5 Organization of This Document

          +

          The various concepts (i.e., ideas) to potentially be covered are partitioned into modules. A module is very broad in scope and consists of numerous topics.

          +

          For each module, topics related to the module are identified. Then, for each topic, learning outcomes are specified. In order to address a wide variety of courses on C++, each topic is addressed at three proficiency levels. These proficiency levels allow each topic to be covered at more than one level of detail. This allows target audiences with different background and learning objectives to be accommodated. The three proficiency levels are as follows:

          +
            +
          • foundational: This level gives the learner the idea that a facility exists, what benefits it offers, and the basic ways of using it.

          • +
          • main: This level shows mainstream uses and techniques. For abstraction and organizational mechanisms it also demonstrates how to build them. This level should also give the learner a basic (but not detailed) understanding of how a facility might be implemented so that the learner can have a first-order understanding of any costs involved.

          • +
          • advanced: This level gives information suitable for an expert. For most topics there is an expert level of knowledge that most programmers rarely need and techniques that require detailed understanding of language rules or library implementation.

          • +
          +

          The remainder of this document is organized as follows. The various topics are listed grouped by module. In cases where a topic might be classified into more than one module, the topic is listed under the module of most direct relevance. This is done in order to avoid duplication of content. (In the case that a topic is equally relevant to multiple modules, the decision of which to select is made by a proverbial coin toss.) The order in which modules and topics are presented is not meant to imply any order of coverage in a course. The order in which items are listed is essentially arbitrary.

          +

          6 Summary of Modules and Topics

          +

          In the sections that follow, the various modules and topics are presented. There is one section per module. For each module, a table listing the various topics in that module is provided. The ID for a topic is linked to the detailed coverage of that topic that comes later in the document. If a topic has any learning outcomes at a given proficiency level, this is indicated by a checkmark (“✔️”). If a topic has no learning outcomes (simply because there are not any, not because the information is missing), this is indicated by an em dash (“—”). In the case that the information for a topic is completely missing, a question mark (“?”) symbol is used.

          +

          6.1 Compilation Model

          +
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          IDUnitFoundationalMainAdvanced
          [?]Translation Units???
          [?]Headers???
          [?]Modules???
          [?]Name Mangling???
          [?]Phases of Translation???
          [?]Separate Compilation???
          [?]Linkage???
          +

          6.2 Preprocessor

          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          IDUnitFoundationalMainAdvanced
          [?]Preprocessor Metaprogramming???
          [?]Inclusion???
          [?]Macros???
          +

          6.3 Basics Types, Objects, Values, Expressions, Statements, and Control-Flow Constructs

          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          IDUnitFoundationalMainAdvanced
          [?]Constant Objects???
          [?]Declarations and Definitions???
          [?]Selection Constructs (e.g., if, ternary)???
          [?]Looping Constructs (e.g., for, while, etc.)???
          +

          6.4 Functions

          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          IDUnitFoundationalMainAdvanced
          [?]Calling Functions???
          [?]Parameter Passing (e.g., Passing By Value and Reference)???
          [func-args]Default Arguments✔️
          [?]Returning Multiple Values???
          [?]Overloading???
          [udl]User-Defined Literals✔️✔️
          +

          6.5 User-Defined Types (Classes)

          + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          IDUnitFoundationalMainAdvanced
          [?]Special Member Functions???
          [?]Types???
          [?]Conversions???
          [?]Constructors and Destructors???
          [?]Move/Copy Constructors and Assignment Operators???
          [?]Member Functions???
          [?]Sum Types???
          [?]User-Defined Literals???
          [?]Special Member Functions???
          [?]Guidelines for Special Member Functions (e.g., Rule of Five, Rule of Zero)???
          [copy]Copy Semantics✔️✔️
          [?]Moving and Copying???
          [?]Lambdas???
          +

          6.6 Inheritance and Class Hierarchies

          + + + + + + + + + + + + + + + + + + + + + + + + + + +
          IDUnitFoundationalMainAdvanced
          [?]Virtual Functions???
          [?]Run-Time Type Information???
          +

          6.7 Compile-Time Computation

          + + + + + + + + + + + + + + + + + + + + + + + + + + +
          IDUnitFoundationalMainAdvanced
          [?]Constant Expressions and Constant Evaluation???
          [static-assert]static_assert✔️✔️
          +

          6.8 Generic Programming (Templates)

          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          IDUnitFoundationalMainAdvanced
          [?]Concepts???
          [?]SFINAE???
          [?]Template Metaprogramming???
          [?]Function Templates???
          [?]Requires Clauses???
          [req-expr]Requires Expressions✔️✔️
          +

          6.9 Error Handling

          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          IDUnitFoundationalMainAdvanced
          [?]Classes of Errors???
          [?]errno???
          [?]Error Codes???
          [?]Exception Handling???
          +

          6.10 Standard Library

          + + + + + + + + + + + + + + + + + + + + + + + + + + +
          IDUnitFoundationalMainAdvanced
          [?]Input/Output (I/O)???
          [?]Containers, Iterators, and Algorithms???
          +

          6.11 External (i.e., Non Standard) Libraries

          + + + + + + + + + + + + + + + + + + + +
          IDUnitFoundationalMainAdvanced
          [?]Graphical User Interfaces???
          +

          6.12 Building

          + + + + + + + + + + + + + + + + + + + + + + + + + + +
          IDUnitFoundationalMainAdvanced
          [?]Software Build Tools???
          [?]Strategies for Handling Build Problems???
          +

          6.13 Testing and Debugging

          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          IDUnitFoundationalMainAdvanced
          [?]Source-Level Debuggers???
          [?]Code Sanitizers???
          [?]Test Frameworks???
          [?]Debugging Strategies???
          +

          6.14 Tooling

          + + + + + + + + + + + + + + + + + + + + + + + + + + +
          IDUnitFoundationalMainAdvanced
          [?]Compiler Toolchains???
          [?]IDEs???
          +

          6.15 Software Design

          + + + + + + + + + + + + + + + + + + + +
          IDUnitFoundationalMainAdvanced
          [?]Design by Contract???
          +

          7 Detailed Information for Modules and Topics

          +

          7.1 C++ object model: copy semantics

          +

          Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

          +

          7.1.1 Overview

          +

          Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

          + ++++ + + + + + + + + + + + + + + + + + + + + +
          LevelObjectives
          Foundationalunderstanding how and when are copies made
          Mainimplementing user-defined copy operations
          Advancedspecial cases: copy elision
          +

          7.1.2 Motivation

          +

          Why is this important? Why do we want to learn/teach this topic?

          +

          Copy semantics allows the user to define how objects of a class get replicated and interact on a value level.

          +

          7.1.3 Topic introduction

          +

          Very brief introduction to the topic.

          +

          Explains when and how objects are copied.

          +

          7.1.4 Foundational: How and when are copies made

          +

          7.1.4.1 Background/Required Knowledge

          +

          A student is able to: * explain what a C++ type is? [C++ object model: types] * explain what an object is? [C++ object model: objects], [C++ object model: constant objects] * define and understand class invariants?

          +

          It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain special member functions [C++ object model: special member functions]

          +

          7.1.4.2 Student outcomes

          +

          A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

          +

          A student should be able to:

          +
            +
          1. explain what copy semantics accomplish
          2. +
          +
            +
          • establishing “equivalent” object state in another object
          • +
          +
            +
          1. explain difference between copying a reference and copying a value*
          2. +
          3. explain where copies are made
          4. +
          +

          * In other languages these differences are sometimes referred to as shallow and deep copy.

          +

          7.1.4.3 Caveats

          +

          This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

          +
            +
          • Compiler-provided copy operations may result in ownership problems (e.g., char*). These ownership problems can generally be solved by using types whose copy operations have the appropriate semantics, e.g., std::string instead of char* to hold string values.
          • +
          +

          7.1.4.4 Points to cover

          +

          This section lists important details for each point.

          +
            +
          • Principle of copying +
              +
            • Copying of types, which follow the rule of zero
            • +
            • Copying of types, with user defined copy operations
            • +
            • Copying an object does not change the original
            • +
          • +
          • Practical applications +
              +
            • std::unique_ptr (has no copy)
            • +
            • Strings (copies the value)
            • +
          • +
          +

          7.1.5 Main: Implementing user-defined copy operations

          +

          7.1.5.1 Background/Required Knowledge

          +

          A student is able to: * identify special member functions [C++ object model: special member functions]

          +

          It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain the rule of zero [C++ object model: rule-of-zero] * explain the rule of five [C++ object model: rule-of-five]

          +

          7.1.5.2 Student outcomes

          +

          A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

          +

          A student should be able to: * explain when they have to implement the copy operations for their own type * Copy constructor * Copy assignment operator * implement copy operations for their own types * Optional: explain when copying with basic and strong exception guarantees is useful

          +

          7.1.5.3 Caveats

          +

          This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

          +
            +
          • Intricacies when implementing copy operations: +
              +
            • Examples of how not to write copy operations (e.g., C++03 std::auto_ptr)
            • +
          • +
          +

          7.1.5.4 Points to cover

          +

          This section lists important details for each point.

          +
            +
          • Copy constructors and copy assignment operators +
              +
            • How compiler generates default copy operations
            • +
            • =default, =delete (No copy)
            • +
            • How-to write your own copy operations
            • +
            • Rule-of-five
            • +
            • Copy assignment operators can be ref-qualified to avoid assigning into temporary objects.
            • +
          • +
          +

          7.1.6 Advanced

          +

          These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

          +

          When can copies be elided and when does the standard guarantee copy elision. References: * Abseil tip of the Week #166 * cppreference - Copy elision

          +

          7.2 Module name: Requires Expressions

          +

          Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

          +

          7.2.1 Overview

          +

          Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

          + ++++ + + + + + + + + + + + + + + + + + + + + +
          LevelObjectives
          FoundationalDefine and use requires-expressions to check satisfaction of expressions by given parameters
          MainDefine and use requires-expressions to check properties of expressions
          Advanced
          +

          7.2.2 Motivation

          +

          Why is this important? Why do we want to learn/teach this topic?

          +

          Requires-expressions allow a developer to perform compile-time evaluation on the validity of other expressions. These are fundamental to the ability to write concepts. [Compile-time programming: concepts]

          +

          7.3 Topic introduction

          +

          Very brief introduction to the topic.

          +

          Requires-expressions are compile-time predicates which evaluate to true when their specified set of expressions are all valid for a given set of inputs.

          +

          7.3.1 Foundational: Writing requires-expressions

          +

          7.3.1.1 Background/Required Knowledge

          +

          A student is able to:

          + +

          It is helpful if:

          +
            +
          • The student is aware that attempting to specialize the template with types or values which do not match otherwise unstated assumptions will cause errors within the template.
          • +
          +

          7.3.1.2 Student outcomes

          +

          A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

          +

          A student should be able to:

          +
            +
          1. Write a simple-requirement to assert the validity of an expression
          2. +
          3. Write a type-requirement to check the existence of a type by its identifier
          4. +
          5. Write a compound-requirement to test the resulting type of an expression
          6. +
          7. Write a nested-requirement to test the constexpr value of an operation, as opposed to just the syntactic validity
          8. +
          9. Use a requires-expression within a concept, requires-clause, or if constexpr condition
          10. +
          +

          7.3.1.3 Caveats

          +

          This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

          +

          To require that expressions, which evaluate to a boolean value like sizeof(t) == 4, evaluate to true a nested-requirement is needed (e.g., requires sizeof(t) == 4;). Omitting the requires results in a simple-requirement, which is satisfied based purely on syntactic validity, not on the result of the operation.

          +

          7.3.1.4 Points to cover

          +

          This section lists important details for each point.

          +
            +
          • All requires-expression requirements terminate with a semicolon.
          • +
          • simple-requirements are used to check that an expression is well-formed.
          • +
          • nested-requirements are introduced with requires and primarily used to check the result of an expression computable by the compiler, including concepts or other requires-expressions.
          • +
          • type-requirements are introduced with typename and used to verify the existence of a type with a particular identifier.
          • +
          • compound-requirements are enclosed in braces and can be used to check the resulting type of an expression.
          • +
          • Checks are performed by the compiler, not at run time.
          • +
          • If covering usage of requires-expression with requires-clause, [Compile-time programming: requires clause] demonstrate requires requires and show how to ever avoid writing it by using a concept. [Compile-time programming: concepts]
          • +
          +

          7.3.2 Main: Advanced requirements

          +

          7.3.2.1 Background/Required Knowledge

          +
            +
          • All of the above.
          • +
          • Knowledge of noexcept
          • +
          +

          A student is able to:

          + +

          7.3.2.2 Student outcomes

          +

          A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

          +

          A student should be able to:

          +
            +
          1. Write compound-requirements which test the noexceptness of an expression.
          2. +
          3. Use a concept as the target of a compound-requirement.
          4. +
          +

          7.3.2.3 Caveats

          +

          This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

          +

          7.3.2.4 Points to cover

          +

          This section lists important details for each point.

          +
            +
          • Compound-requirements allow the optional ability to test whether an expression is marked as noexcept, by using a trailing noexcept keyword.
          • +
          + +
            +
          • If the return-type-requirement of a compound-requirement is a concept, that concept is given the resulting type as the first parameter, followed by the specified parameters in the compound-requirement. { ++x } -> C<int> would substitute C<decltype((++x)), int> and check that concept C is satisfied for those parameters.
          • +
          +

          7.3.3 Advanced

          +

          7.4 Meta-error handling: static_assert

          +

          Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

          +

          7.4.1 Overview

          +

          Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

          + ++++ + + + + + + + + + + + + + + + + + + + + +
          LevelObjectives
          FoundationalCalling static_assert with a constant expression
          MainUsing static_assert to detect contract violations and improve error messages
          Advanced
          +

          7.4.2 Motivation

          +

          Why is this important? Why do we want to learn/teach this topic?

          +

          static_assert allows the developer to enforce that conditions which can be checked during compilation will force build errors when violated. Additionally, they are the best mechanism by which a developer can pass useful information to other developers regarding what violation occurred or what must be done, instead.

          +

          7.4.3 Topic introduction

          +

          Very brief introduction to the topic.

          +

          static_assert is a compile-time evaluated function that asserts the truth of a supplied predicate, issuing an optional user-supplied error message if the predicate is false.

          +

          7.4.4 Foundational: Calling static_assert with a constant expression

          +

          7.4.4.1 Background/Required Knowledge

          +

          A student:

          +
            +
          • Should be able to explain the difference between code evaluated at compile-time and run-time
          • +
          • Should be able to cite some examples of compile-time known information, such as sizeof(T)
          • +
          +

          7.4.4.2 Student outcomes

          +

          A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

          +

          A student should be able to:

          +
            +
          1. Assert the expected size of a structure using static_assert
          2. +
          +

          7.4.4.3 Caveats

          +

          This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

          +

          7.4.4.4 Points to cover

          +

          This section lists important details for each point.

          +
            +
          • X
          • +
          • In addition to what is wrong, a good error message will inform the user of how to correct it
          • +
          +

          7.4.5 Main: Contracts and static_assert

          +

          7.4.5.1 Background/Required Knowledge

          +
            +
          • All of the above.
          • +
          • General understanding of compile-time requirements
          • +
          +

          7.4.5.2 Student outcomes

          +

          A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

          +

          A student should be able to:

          +
            +
          1. Utilize static_assert to verify preconditions of a meta-function
          2. +
          3. Utilize static_assert to verify the results of meta-functions for known values
          4. +
          +

          7.4.5.3 Caveats

          +

          This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

          +

          7.4.5.4 Points to cover

          +

          This section lists important details for each point.

          +
            +
          • When writing a meta-function, use static_assert to test the results
          • +
          • Write static_assert calls at the scope of the code they are guarding
          • +
          + +

          7.4.6 Advanced

          +

          These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

          +

          See concepts.

          +

          7.5 Functions: default argument

          +

          Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

          +

          7.5.1 Overview

          +

          Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

          +

          Functions in C++ may be overloaded with different numbers and types of parameters. It may be of value to specify default arguments for some number of parameters, to allow a caller to avoid specifying arguments that rarely change, or to enable expanding the set of parameters while maintaining backward compatibility with existing callers.

          + ++++ + + + + + + + + + + + + + + + + + + + + +
          LevelObjective
          FoundationalDefine and use functions with default arguments
          Main
          Advancedrefinement of default arguments through multiple declarations
          +

          7.5.2 Motivation

          +

          Why is this important? Why do we want to learn/teach this topic?

          +

          Default arguments allow the omission of arguments with obvious or common values. Also may be utilized to extend an existing function signature without forcing changes to existing calling code.

          +

          7.5.3 Topic introduction

          +

          Very brief introduction to the topic.

          +

          Explain how default arguments work and how to define them.

          +

          7.5.4 Foundational: Using and defining functions with default arguments

          +

          7.5.4.1 Background/Required Knowledge

          +

          A student is able to:

          + +

          7.5.4.2 Student outcomes

          +

          A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

          +

          A student should be able to:

          +
            +
          1. Call to a function with a default argument with or without that argument specified
          2. +
          3. Declare a function with a default argument, and omit the default in the definition’s signature
          4. +
          5. Explain when the lifetime of a default argument begins and ends
          6. +
          +

          7.5.4.3 Caveats

          +

          This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

          +
            +
          • When no forward-declaration exists, the definition serves as the declaration
          • +
          • When multiple declarations exist, only one may specify the default for any particular parameter, but multiple declarations may specify the defaults for different parameters.
          • +
          • Additional default values may be specified for other parameters in repeat declarations
          • +
          • Calling an overloaded function with fewer arguments may be ambiguous with regard to an overload with default arguments
          • +
          +

          7.5.4.4 Points to cover

          +

          This section lists important details for each point.

          +
            +
          • Default value may only be specified once for each parameter among all declarations
          • +
          • Default values must start from the rightmost parameter and continue leftward without gaps
          • +
          • Considerations of when to use default arguments vs overload set
          • +
          +

          7.5.5 Main: implementing *

          +

          7.5.5.1 Background/Required knowledge

          +
            +
          • All of the above.
          • +
          +

          7.5.5.2 Student outcomes

          +

          A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

          +

          A student should be able to:

          +

          7.5.5.3 Caveats

          +

          This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

          +

          7.5.5.4 Points to cover

          +

          This section lists important details for each point.

          +

          7.5.6 Advanced

          +

          These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

          +

          Subsequent redeclarations of the same function may add default argument values, which are then usable by callers. Though a single parameter cannot be given a default argument twice in the same translation unit, it is legal, though ill-advised, to give the same function different default arguments in different translation units.

          +

          7.6 Functions: user-defined literals

          +

          Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

          +

          7.6.1 Overview

          +

          Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

          + ++++ + + + + + + + + + + + + + + + + + + + + +
          LevelObjectives
          Foundationalusing and understanding UDLs
          Mainimplementing your own UDLs
          AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
          +

          7.6.2 Motivation

          +

          Why is this important? Why do we want to learn/teach this topic?

          +
            +
          • Allows clearer expression of intent in C++.
          • +
          • std::string: "Hello, world!"s
          • +
          • std::chrono: 3h + 10min + 5s
          • +
          +

          7.6.3 Topic introduction

          +

          Very brief introduction to the topic.

          +
            +
          • Explain the existence of user defined literals. Example: 12min + 17s is terse, expressive and type safe.
          • +
          +

          7.6.4 Foundational: Using UDLs

          +

          7.6.4.1 Background/Required Knowledge

          +

          A student: * knows how to form numeric literals, e.g., 1.5f means a float of value 1.5. * is familiar with the major C++ types: * bool (Boolean type) * int (Integer type) * double (Floating-point type) * std::string (Text type) * std::vector (Collection type) * knows that namespaces exist, and namespace std. * knows what using-declarations and using-directives are. [C++ object model: declarations]

          +

          7.6.4.2 Student outcomes

          +

          A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

          +

          A student should be able to:

          +
            +
          1. use using namespace std::string_literals[1].
          2. +
          3. recognise UDLs in code that they are reading.
          4. +
          5. figure out which UDL definitions for a used type exist.
          6. +
          7. identify parts of the standard library that make use of UDLs.
          8. +
          9. prevent the dangers of temporaries created with "blah"s as well as with std::string{"blah"}.
          10. +
          11. effectively selects the right set of namespaces in using-directives from the sub-namespaces std::literals.
          12. +
          +

          [1]: explain that it’s okay to use a using-directive to “activate” UDLs.

          +

          7.6.4.3 Caveats

          +

          This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

          +
            +
          • A student gets confused by the similarities and differences between built-in suffixes and UDLs and between UDLs from different namespaces.
          • +
          • A student “activates” two suffixes with the same signature from different namespaces.
          • +
          +

          7.6.4.4 Points to cover

          +

          This section lists important details for each point.

          +

          7.6.5 Main: implementing UDLs

          +

          7.6.5.1 Background/Required Knowledge

          +
            +
          • All of the above.
          • +
          +

          7.6.5.2 Student outcomes

          +

          A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

          +

          A student should be able to:

          +
            +
          1. write a UDL operator of their own.
          2. +
          3. separate unrelated UDLs into distinct namespaces.
          4. +
          +

          7.6.5.3 Caveats

          +

          This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

          +

          No caveats at present. #### Points to cover

          +

          This section lists important details for each point.

          +

          No caveats at present. ### Advanced {#udl-advanced}

          +

          These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

          +

          See user-defined-literals.

          +

          8 License

          +

          [NOTE: This license is copied verbatim from the C++ Core Guidelines.]

          +
          Copyright (c) Standard C++ Foundation and its contributors
          +
          +Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
          +perpetual license to copy, use, modify, and create derivative works from this
          +project for your personal or internal business use only. The above copyright
          +notice and this permission notice shall be included in all copies or
          +substantial portions of the project. This license does not grant permission
          +to use the trade names, trademarks, service marks, or product names of the
          +licensor, except as required for reasonable and customary use in describing
          +the origin of the project.
          +
          +Standard C++ Foundation reserves the right to accept contributions to the
          +project at its discretion.
          +
          +By contributing material to this project, you grant Standard C++ Foundation,
          +and those who receive the material directly or indirectly from Standard C++
          +Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
          +transferrable license to reproduce, prepare derivative works of, publicly
          +display, publicly perform, and distribute your contributed material and such
          +derivative works, and to sublicense any or all of the foregoing rights to third
          +parties for commercial or non-commercial use.  You also grant Standard C++
          +Foundation, and those who receive the material directly or indirectly from
          +Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
          +irrevocable license under your patent claims that directly read on your
          +contributed material to make, have made, use, offer to sell, sell and import
          +or otherwise dispose of the material. You warrant that your material is your
          +original work, or that you have the right to grant the above licenses.
          +
          +THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
          +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
          +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
          +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
          +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
          +OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
          +PROJECT.
          +
          +If you believe that anything in the project infringes your copyright, please
          +contact us at admin@isocpp.org with your contact information and a detailed
          +description of your intellectual property, including a specific URL where you
          +believe your intellectual property is being infringed.
          +
          +

          9 Contributors

          +
          Christopher Di Bella
          +Florian Sattler
          +Michael Adams
          +rwdougla
          +

          10 How To Contribute

          +

          Before attempting to contribute any content for consideration for inclusion in this document, please read the information below and and the referenced documents as appropriate.

          +

          All contributions to this project must be made in accordance with the license in section License. This teaching-guidelines document only offers guidance on teaching C++ as it is specified in the current version of the C++ standard. So, content should be presented relative to the most-recently ratified version of the standard. A detailed explanation of how to present the material for a topic is given in:

          +
            +
          • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.
          • +
          +

          Any potential contributors should ensure that they read this document. The following document may also be helpful in providing some general background on the modular approach to teaching followed herein:

          + +

          In order to prepare content, it is important to understand what learning outcomes are, and how to prepare good ones. Some information on learning outcomes can be found in the References section. The following document offers a concise introduction to learning outcomes:

          + +

          11 Glossary

          +

          Some possible terms to include in the glossary:

          +
            +
          • learning objective
          • +
          • learning outcome
          • +
          +

          12 References

          +

          12.1 References on Learning Outcomes

          + + +
            +
          • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — Standing Document for SG20: Guidelines for Teaching C++ to Beginners. https://wg21.link/p1389.

          • +
          • Christopher Di Bella. P1725R0 — Modular Topic Design. https://wg21.link/p1725.

          • +
          • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.

          • +
          • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study Group: C++ Education. https://wg21.link/p1231.

          • +
          • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 — Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0.

          • +
          + + + + + + diff --git a/0.0.16/html_split/Advanced.html b/0.0.16/html_split/Advanced.html new file mode 100644 index 0000000..23c357c --- /dev/null +++ b/0.0.16/html_split/Advanced.html @@ -0,0 +1,60 @@ + + + + + +Advanced (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
          +

          7.1.6 Advanced

          +

          These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

          +

          When can copies be elided and when does the standard guarantee copy +elision. References: * Abseil tip of +the Week #166 * +cppreference +- Copy elision +

          + + + + + diff --git a/0.0.16/html_split/Background_002fRequired-Knowledge.html b/0.0.16/html_split/Background_002fRequired-Knowledge.html new file mode 100644 index 0000000..a07e680 --- /dev/null +++ b/0.0.16/html_split/Background_002fRequired-Knowledge.html @@ -0,0 +1,63 @@ + + + + + +Background/Required Knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          7.1.4.1 Background/Required Knowledge

          +

          A student is able to: * explain what a C++ type is? +[C++ object model: types] * explain what +an object is? [C++ object model: +objects], [C++ object model: +constant objects] * define and understand class invariants? +

          +

          It helps when a student is able to: * use move semantics +[C++ object model: move +semantics] * explain special member functions +[C++ object model: +special member functions] +

          + + + + + diff --git a/0.0.16/html_split/Background_002fRequired-knowledge.html b/0.0.16/html_split/Background_002fRequired-knowledge.html new file mode 100644 index 0000000..cc56cd7 --- /dev/null +++ b/0.0.16/html_split/Background_002fRequired-knowledge.html @@ -0,0 +1,54 @@ + + + + + +Background/Required knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
          +

          7.5.5.1 Background/Required knowledge

          +
            +
          • All of the above. +
          + + + + + + diff --git a/0.0.16/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html b/0.0.16/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html new file mode 100644 index 0000000..81f5e06 --- /dev/null +++ b/0.0.16/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html @@ -0,0 +1,60 @@ + + + + + +Basics Types Objects Values Expressions Statements and Control-Flow Constructs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          6.3 Basics Types, Objects, Values, Expressions, Statements, and

          +

          Control-Flow Constructs +

          + + + + + +
          IDUnitFoundationalMainAdvanced
          [‘?’]Constant Objects???
          [‘?’]Declarations and Definitions???
          [‘?’]Selection Constructs (e.g., if, ternary)???
          [‘?’]Looping Constructs (e.g., for, while, etc.)???
          + + + + + + diff --git a/0.0.16/html_split/Building.html b/0.0.16/html_split/Building.html new file mode 100644 index 0000000..a50a84a --- /dev/null +++ b/0.0.16/html_split/Building.html @@ -0,0 +1,57 @@ + + + + + +Building (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          6.12 Building

          + + + + +
          IDUnitFoundationalMainAdvanced
          [‘?’]Software Build Tools???
          [‘?’]Strategies for Handling Build Problems???
          + + + + + + diff --git a/0.0.16/html_split/C_002b_002b-object-model-copy-semantics.html b/0.0.16/html_split/C_002b_002b-object-model-copy-semantics.html new file mode 100644 index 0000000..a57b947 --- /dev/null +++ b/0.0.16/html_split/C_002b_002b-object-model-copy-semantics.html @@ -0,0 +1,69 @@ + + + + + +C++ object model copy semantics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          7.1 C++ object model: copy semantics

          +

          Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

          + + + + + + + + + + + + + + diff --git a/0.0.16/html_split/Caveats.html b/0.0.16/html_split/Caveats.html new file mode 100644 index 0000000..a3ad88c --- /dev/null +++ b/0.0.16/html_split/Caveats.html @@ -0,0 +1,62 @@ + + + + + +Caveats (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          7.1.4.3 Caveats

          +

          This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

          +
            +
          • Compiler-provided copy operations may result in ownership problems +(e.g., char*). These ownership problems can generally be solved +by using types whose copy operations have the appropriate semantics, +e.g., std::string instead of char* to hold string values. +
          + + + + + + diff --git a/0.0.16/html_split/Compilation-Model.html b/0.0.16/html_split/Compilation-Model.html new file mode 100644 index 0000000..41802d4 --- /dev/null +++ b/0.0.16/html_split/Compilation-Model.html @@ -0,0 +1,62 @@ + + + + + +Compilation Model (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          6.1 Compilation Model

          + + + + + + + + + +
          IDUnitFoundationalMainAdvanced
          [‘?’]Translation Units???
          [‘?’]Headers???
          [‘?’]Modules???
          [‘?’]Name Mangling???
          [‘?’]Phases of Translation???
          [‘?’]Separate Compilation???
          [‘?’]Linkage???
          + + + + + + diff --git a/0.0.16/html_split/Compile_002dTime-Computation.html b/0.0.16/html_split/Compile_002dTime-Computation.html new file mode 100644 index 0000000..4e9e67d --- /dev/null +++ b/0.0.16/html_split/Compile_002dTime-Computation.html @@ -0,0 +1,57 @@ + + + + + +Compile-Time Computation (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          6.7 Compile-Time Computation

          + + + + +
          IDUnitFoundationalMainAdvanced
          [‘?’]Constant Expressions and Constant Evaluation???
          [‘static-assert’]static_assert‘✔️’‘✔️’
          + + + + + + diff --git a/0.0.16/html_split/Context-and-Aim-of-This-Guide.html b/0.0.16/html_split/Context-and-Aim-of-This-Guide.html new file mode 100644 index 0000000..57fb059 --- /dev/null +++ b/0.0.16/html_split/Context-and-Aim-of-This-Guide.html @@ -0,0 +1,76 @@ + + + + + +Context and Aim of This Guide (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          2 Context and Aim of This Guide

          +

          This document is intended to serve as a resource for instructors to +assist in the preparation of courses on C++ in a variety of settings, +including university, college, and industry environments. The main +objectives of this document are as follows: +

          +
            +
          • to provide guidelines for content to be covered by courses of various +difficulty levels on C++ (e.g., topics and learning outcomes) +
          • to note some common misunderstandings and problematic points that may be +encountered when teaching particular topics +
          • to suggest resources useful for teaching C++ +
          • to present examples of curriculum for specific courses +
          + +

          This document does not itself provide a curriculum for a single specific +course, but is rather a set of guidelines that can be used to prepare +curricula for a wide variety of courses that differ in focus and level +of sophistication. (This said, however, some links to other documents +with examples of curricula for specific courses may be included herein.) +This document only intends to target the teaching of the most recently +ratified version of the C++ standard. (This said, however, since older +versions of this document are also available, these older versions may +be of some use to those who need guidance in older versions of the +standard, at least versions that do not predate C++20.) +

          + + + + + diff --git a/0.0.16/html_split/Contributing-to-This-Document.html b/0.0.16/html_split/Contributing-to-This-Document.html new file mode 100644 index 0000000..2faa772 --- /dev/null +++ b/0.0.16/html_split/Contributing-to-This-Document.html @@ -0,0 +1,55 @@ + + + + + +Contributing to This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          4 Contributing to This Document

          +

          Contributions to this document are welcome. If you would like to help +with this project as a contributor, please read the section +‘How to Contribute’. +

          + + + + + diff --git a/0.0.16/html_split/Contributors.html b/0.0.16/html_split/Contributors.html new file mode 100644 index 0000000..5531c92 --- /dev/null +++ b/0.0.16/html_split/Contributors.html @@ -0,0 +1,57 @@ + + + + + +Contributors (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
          +

          +Next: , Previous: , Up: Top   [Contents]

          +
          +
          +

          9 Contributors

          + +
          Christopher Di Bella
          +Florian Sattler
          +Michael Adams
          +rwdougla
          +
          + + + + + diff --git a/0.0.16/html_split/Detailed-Information-for-Modules-and-Topics.html b/0.0.16/html_split/Detailed-Information-for-Modules-and-Topics.html new file mode 100644 index 0000000..fc95dfa --- /dev/null +++ b/0.0.16/html_split/Detailed-Information-for-Modules-and-Topics.html @@ -0,0 +1,67 @@ + + + + + +Detailed Information for Modules and Topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
          +

          +Next: , Previous: , Up: Top   [Contents]

          +
          +
          +

          7 Detailed Information for Modules and Topics

          + + + + + + + + + + + + + + + diff --git a/0.0.16/html_split/Error-Handling.html b/0.0.16/html_split/Error-Handling.html new file mode 100644 index 0000000..1260ebe --- /dev/null +++ b/0.0.16/html_split/Error-Handling.html @@ -0,0 +1,59 @@ + + + + + +Error Handling (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          6.9 Error Handling

          + + + + + + +
          IDUnitFoundationalMainAdvanced
          [‘?’]Classes of Errors???
          [‘?’]errno???
          [‘?’]Error Codes???
          [‘?’]Exception Handling???
          + + + + + + diff --git a/0.0.16/html_split/External-ie-Non-Standard-Libraries.html b/0.0.16/html_split/External-ie-Non-Standard-Libraries.html new file mode 100644 index 0000000..0b3c0fa --- /dev/null +++ b/0.0.16/html_split/External-ie-Non-Standard-Libraries.html @@ -0,0 +1,56 @@ + + + + + +External ie Non Standard Libraries (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          6.11 External (i.e., Non Standard) Libraries

          + + + +
          IDUnitFoundationalMainAdvanced
          [‘?’]Graphical User Interfaces???
          + + + + + + diff --git a/0.0.16/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html b/0.0.16/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html new file mode 100644 index 0000000..0919c62 --- /dev/null +++ b/0.0.16/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html @@ -0,0 +1,62 @@ + + + + + +Foundational Calling static_assert with a constant expression (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
          +

          7.4.4 Foundational: Calling static_assert with a constant

          +

          expression +

          + + + + + + + + + + + + diff --git a/0.0.16/html_split/Foundational-How-and-when-are-copies-made.html b/0.0.16/html_split/Foundational-How-and-when-are-copies-made.html new file mode 100644 index 0000000..a3e9be7 --- /dev/null +++ b/0.0.16/html_split/Foundational-How-and-when-are-copies-made.html @@ -0,0 +1,63 @@ + + + + + +Foundational How and when are copies made (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          7.1.4 Foundational: How and when are copies made

          + + + + + + + + + + + + + diff --git a/0.0.16/html_split/Foundational-Using-UDLs.html b/0.0.16/html_split/Foundational-Using-UDLs.html new file mode 100644 index 0000000..84fb109 --- /dev/null +++ b/0.0.16/html_split/Foundational-Using-UDLs.html @@ -0,0 +1,61 @@ + + + + + +Foundational Using UDLs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
          +

          7.6.4 Foundational: Using UDLs

          + + + + + + + + + + + + + diff --git a/0.0.16/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html b/0.0.16/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html new file mode 100644 index 0000000..edab680 --- /dev/null +++ b/0.0.16/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html @@ -0,0 +1,62 @@ + + + + + +Foundational Using and defining functions with default arguments (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
          +

          7.5.4 Foundational: Using and defining functions with default

          +

          arguments +

          + + + + + + + + + + + + diff --git a/0.0.16/html_split/Foundational-Writing-requires_002dexpressions.html b/0.0.16/html_split/Foundational-Writing-requires_002dexpressions.html new file mode 100644 index 0000000..ab09ef4 --- /dev/null +++ b/0.0.16/html_split/Foundational-Writing-requires_002dexpressions.html @@ -0,0 +1,60 @@ + + + + + +Foundational Writing requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +
          +

          7.3.1 Foundational: Writing requires-expressions

          + + + + + + + + + + + + + diff --git a/0.0.16/html_split/Functions-default-argument.html b/0.0.16/html_split/Functions-default-argument.html new file mode 100644 index 0000000..8ecca35 --- /dev/null +++ b/0.0.16/html_split/Functions-default-argument.html @@ -0,0 +1,67 @@ + + + + + +Functions default argument (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
          +

          7.5 Functions: default argument

          +

          Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

          + + + + + + + + + + + + + + diff --git a/0.0.16/html_split/Functions-user_002ddefined-literals.html b/0.0.16/html_split/Functions-user_002ddefined-literals.html new file mode 100644 index 0000000..2631a71 --- /dev/null +++ b/0.0.16/html_split/Functions-user_002ddefined-literals.html @@ -0,0 +1,65 @@ + + + + + +Functions user-defined literals (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
          +

          7.6 Functions: user-defined literals

          +

          Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

          + + + + + + + + + + + + + diff --git a/0.0.16/html_split/Functions.html b/0.0.16/html_split/Functions.html new file mode 100644 index 0000000..8e3d484 --- /dev/null +++ b/0.0.16/html_split/Functions.html @@ -0,0 +1,61 @@ + + + + + +Functions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          6.4 Functions

          + + + + + + + + +
          IDUnitFoundationalMainAdvanced
          [‘?’]Calling Functions???
          [‘?’]Parameter Passing (e.g., Passing By Value and Reference)???
          [‘func-args’]Default Arguments‘✔️’
          [‘?’]Returning Multiple Values???
          [‘?’]Overloading???
          [‘udl’]User-Defined Literals‘✔️’‘✔️’
          + + + + + + diff --git a/0.0.16/html_split/Generic-Programming-Templates.html b/0.0.16/html_split/Generic-Programming-Templates.html new file mode 100644 index 0000000..3ed32f5 --- /dev/null +++ b/0.0.16/html_split/Generic-Programming-Templates.html @@ -0,0 +1,61 @@ + + + + + +Generic Programming Templates (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          6.8 Generic Programming (Templates)

          + + + + + + + + +
          IDUnitFoundationalMainAdvanced
          [‘?’]Concepts???
          [‘?’]SFINAE???
          [‘?’]Template Metaprogramming???
          [‘?’]Function Templates???
          [‘?’]Requires Clauses???
          [‘req-expr’]Requires Expressions‘✔️’‘✔️’
          + + + + + + diff --git a/0.0.16/html_split/Glossary.html b/0.0.16/html_split/Glossary.html new file mode 100644 index 0000000..99ff357 --- /dev/null +++ b/0.0.16/html_split/Glossary.html @@ -0,0 +1,58 @@ + + + + + +Glossary (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
          +

          +Next: , Previous: , Up: Top   [Contents]

          +
          +
          +

          11 Glossary

          +

          Some possible terms to include in the glossary: +

          +
            +
          • learning objective +
          • learning outcome +
          + + + + + + diff --git a/0.0.16/html_split/How-To-Contribute.html b/0.0.16/html_split/How-To-Contribute.html new file mode 100644 index 0000000..91b73c9 --- /dev/null +++ b/0.0.16/html_split/How-To-Contribute.html @@ -0,0 +1,89 @@ + + + + + +How To Contribute (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
          +

          +Next: , Previous: , Up: Top   [Contents]

          +
          +
          +

          10 How To Contribute

          +

          Before attempting to contribute any content for consideration for +inclusion in this document, please read the information below and and +the referenced documents as appropriate. +

          +

          All contributions to this project must be made in accordance with the +license in section License. This teaching-guidelines +document only offers guidance on teaching C++ as it is specified in the +current version of the C++ standard. So, content should be presented +relative to the most-recently ratified version of the standard. A +detailed explanation of how to present the material for a topic is given +in: +

          +
            +
          • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to +structure a teaching topic. https://wg21.link/p2193. +
          + +

          Any potential contributors should ensure that they read this document. +The following document may also be helpful in providing some general +background on the modular approach to teaching followed herein: +

          + + +

          In order to prepare content, it is important to understand what learning +outcomes are, and how to prepare good ones. Some information on learning +outcomes can be found in the References section. The +following document offers a concise introduction to learning outcomes: +

          + + + + + + + diff --git a/0.0.16/html_split/Inheritance-and-Class-Hierarchies.html b/0.0.16/html_split/Inheritance-and-Class-Hierarchies.html new file mode 100644 index 0000000..1454f01 --- /dev/null +++ b/0.0.16/html_split/Inheritance-and-Class-Hierarchies.html @@ -0,0 +1,57 @@ + + + + + +Inheritance and Class Hierarchies (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          6.6 Inheritance and Class Hierarchies

          + + + + +
          IDUnitFoundationalMainAdvanced
          [‘?’]Virtual Functions???
          [‘?’]Run-Time Type Information???
          + + + + + + diff --git a/0.0.16/html_split/License.html b/0.0.16/html_split/License.html new file mode 100644 index 0000000..5835f48 --- /dev/null +++ b/0.0.16/html_split/License.html @@ -0,0 +1,99 @@ + + + + + +License (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
          +

          8 License

          +

          [NOTE: This license is copied verbatim from the C++ Core +Guidelines.] +

          +
          Copyright (c) Standard C++ Foundation and its contributors
          +
          +Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
          +perpetual license to copy, use, modify, and create derivative works from this
          +project for your personal or internal business use only. The above copyright
          +notice and this permission notice shall be included in all copies or
          +substantial portions of the project. This license does not grant permission
          +to use the trade names, trademarks, service marks, or product names of the
          +licensor, except as required for reasonable and customary use in describing
          +the origin of the project.
          +
          +Standard C++ Foundation reserves the right to accept contributions to the
          +project at its discretion.
          +
          +By contributing material to this project, you grant Standard C++ Foundation,
          +and those who receive the material directly or indirectly from Standard C++
          +Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
          +transferrable license to reproduce, prepare derivative works of, publicly
          +display, publicly perform, and distribute your contributed material and such
          +derivative works, and to sublicense any or all of the foregoing rights to third
          +parties for commercial or non-commercial use.  You also grant Standard C++
          +Foundation, and those who receive the material directly or indirectly from
          +Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
          +irrevocable license under your patent claims that directly read on your
          +contributed material to make, have made, use, offer to sell, sell and import
          +or otherwise dispose of the material. You warrant that your material is your
          +original work, or that you have the right to grant the above licenses.
          +
          +THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
          +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
          +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
          +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
          +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
          +OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
          +PROJECT.
          +
          +If you believe that anything in the project infringes your copyright, please
          +contact us at admin@isocpp.org with your contact information and a detailed
          +description of your intellectual property, including a specific URL where you
          +believe your intellectual property is being infringed.
          +
          +
          + + + + + + diff --git a/0.0.16/html_split/Main-Advanced-requirements.html b/0.0.16/html_split/Main-Advanced-requirements.html new file mode 100644 index 0000000..c117bb0 --- /dev/null +++ b/0.0.16/html_split/Main-Advanced-requirements.html @@ -0,0 +1,60 @@ + + + + + +Main Advanced requirements (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +
          +

          7.3.2 Main: Advanced requirements

          + + + + + + + + + + + + + diff --git a/0.0.16/html_split/Main-Contracts-and-static_005fassert.html b/0.0.16/html_split/Main-Contracts-and-static_005fassert.html new file mode 100644 index 0000000..b0d6e8d --- /dev/null +++ b/0.0.16/html_split/Main-Contracts-and-static_005fassert.html @@ -0,0 +1,61 @@ + + + + + +Main Contracts and static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
          +

          7.4.5 Main: Contracts and static_assert

          + + + + + + + + + + + + + diff --git a/0.0.16/html_split/Main-Implementing-user_002ddefined-copy-operations.html b/0.0.16/html_split/Main-Implementing-user_002ddefined-copy-operations.html new file mode 100644 index 0000000..3f51dae --- /dev/null +++ b/0.0.16/html_split/Main-Implementing-user_002ddefined-copy-operations.html @@ -0,0 +1,62 @@ + + + + + +Main Implementing user-defined copy operations (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
          +

          7.1.5 Main: Implementing user-defined copy operations

          + + + + + + + + + + + + + diff --git a/0.0.16/html_split/Main-implementing-UDLs.html b/0.0.16/html_split/Main-implementing-UDLs.html new file mode 100644 index 0000000..6357f96 --- /dev/null +++ b/0.0.16/html_split/Main-implementing-UDLs.html @@ -0,0 +1,59 @@ + + + + + +Main implementing UDLs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
          +

          7.6.5 Main: implementing UDLs

          + + + + + + + + + + + + diff --git a/0.0.16/html_split/Main-implementing-_002a.html b/0.0.16/html_split/Main-implementing-_002a.html new file mode 100644 index 0000000..abec4e4 --- /dev/null +++ b/0.0.16/html_split/Main-implementing-_002a.html @@ -0,0 +1,62 @@ + + + + + +Main implementing * (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
          +

          7.5.5 Main: implementing *

          + + + + + + + + + + + + + diff --git a/0.0.16/html_split/Meta_002derror-handling-static_005fassert.html b/0.0.16/html_split/Meta_002derror-handling-static_005fassert.html new file mode 100644 index 0000000..96041bf --- /dev/null +++ b/0.0.16/html_split/Meta_002derror-handling-static_005fassert.html @@ -0,0 +1,67 @@ + + + + + +Meta-error handling static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
          +

          7.4 Meta-error handling: static_assert

          +

          Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

          + + + + + + + + + + + + + + diff --git a/0.0.16/html_split/Module-name-Requires-Expressions.html b/0.0.16/html_split/Module-name-Requires-Expressions.html new file mode 100644 index 0000000..2e8a05c --- /dev/null +++ b/0.0.16/html_split/Module-name-Requires-Expressions.html @@ -0,0 +1,60 @@ + + + + + +Module name Requires Expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
          +

          7.2 Module name: Requires Expressions

          +

          Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

          + + + + + + + + + + diff --git a/0.0.16/html_split/Motivation.html b/0.0.16/html_split/Motivation.html new file mode 100644 index 0000000..e169339 --- /dev/null +++ b/0.0.16/html_split/Motivation.html @@ -0,0 +1,57 @@ + + + + + +Motivation (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          7.1.2 Motivation

          +

          Why is this important? Why do we want to learn/teach this +topic? +

          +

          Copy semantics allows the user to define how objects of a class get +replicated and interact on a value level. +

          + + + + + diff --git a/0.0.16/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html b/0.0.16/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html new file mode 100644 index 0000000..17ee667 --- /dev/null +++ b/0.0.16/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html @@ -0,0 +1,78 @@ + + + + + +Obtaining This Document The Most Recent Version and Alternate Formats (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
          +

          +Next: , Previous: , Up: Top   [Contents]

          +
          +
          +

          1 Obtaining This Document: The Most Recent Version and Alternate

          +

          Formats +The most recent version of this document is available as an online HTML +document at: https://cplusplus.github.io/SG20/latest/. +

          +

          The version of the document that you are currently reading is available +in the following formats: +

          +
            +
          1. online (HTML) format as a single large HTML document: +https://cplusplus.github.io/SG20/0.0.16/html + +
          2. EPUB format: +https://cplusplus.github.io/SG20/0.0.16/guidelines.epub + +
          3. online (HTML) format, split across multiple HTML documents: +https://cplusplus.github.io/SG20/0.0.16/html_split/ [Note: +The support for this format needs more work (in order to beautify and +fix linking issues).] + +
          + +

          Older versions of this document are also available. In general version +ver is available at +https://cplusplus.github.io/SG20/ver/html. For example, version +0.1.0 (assuming that this version exists) would be available at +https://cplusplus.github.io/SG20/0.1.0/html. +

          + + + + + diff --git a/0.0.16/html_split/Organization-of-This-Document.html b/0.0.16/html_split/Organization-of-This-Document.html new file mode 100644 index 0000000..37c73db --- /dev/null +++ b/0.0.16/html_split/Organization-of-This-Document.html @@ -0,0 +1,95 @@ + + + + + +Organization of This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          5 Organization of This Document

          +

          The various concepts (i.e., ideas) to potentially be covered are +partitioned into modules. A module is very broad in scope and consists +of numerous topics. +

          +

          For each module, topics related to the module are identified. Then, for +each topic, learning outcomes are specified. In order to address a wide +variety of courses on C++, each topic is addressed at three proficiency +levels. These proficiency levels allow each topic to be covered at more +than one level of detail. This allows target audiences with different +background and learning objectives to be accommodated. The three +proficiency levels are as follows: +

          +
            +
          • foundational: This level gives the learner the idea that a facility +exists, what benefits it offers, and the basic ways of using it. + +
          • main: This level shows mainstream uses and techniques. For abstraction +and organizational mechanisms it also demonstrates how to build them. +This level should also give the learner a basic (but not detailed) +understanding of how a facility might be implemented so that the learner +can have a first-order understanding of any costs involved. + +
          • advanced: This level gives information suitable for an expert. For most +topics there is an expert level of knowledge that most programmers +rarely need and techniques that require detailed understanding of +language rules or library implementation. + +
          + +

          The remainder of this document is organized as follows. The various +topics are listed grouped by module. In cases where a topic might be +classified into more than one module, the topic is listed under the +module of most direct relevance. This is done in order to avoid +duplication of content. (In the case that a topic is equally relevant to +multiple modules, the decision of which to select is made by a +proverbial coin toss.) The order in which modules and topics are +presented is not meant to imply any order of coverage in a course. The +order in which items are listed is essentially arbitrary. +

          +
          + + + + + + diff --git a/0.0.16/html_split/Overview.html b/0.0.16/html_split/Overview.html new file mode 100644 index 0000000..2f320ad --- /dev/null +++ b/0.0.16/html_split/Overview.html @@ -0,0 +1,61 @@ + + + + + +Overview (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          7.1.1 Overview

          +

          Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

          + + + + + +
          LevelObjectives
          Foundationalunderstanding how and when are copies made
          Mainimplementing user-defined copy operations
          Advancedspecial cases: copy elision
          + + + + + + diff --git a/0.0.16/html_split/Points-to-cover.html b/0.0.16/html_split/Points-to-cover.html new file mode 100644 index 0000000..4444075 --- /dev/null +++ b/0.0.16/html_split/Points-to-cover.html @@ -0,0 +1,69 @@ + + + + + +Points to cover (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          7.1.4.4 Points to cover

          +

          This section lists important details for each point. +

          +
            +
          • Principle of copying +
              +
            • Copying of types, which follow the rule of zero +
            • Copying of types, with user defined copy operations +
            • Copying an object does not change the original +
            + +
          • Practical applications +
              +
            • std::unique_ptr (has no copy) +
            • Strings (copies the value) +
            + +
          + + + + + + diff --git a/0.0.16/html_split/Preprocessor.html b/0.0.16/html_split/Preprocessor.html new file mode 100644 index 0000000..b20bf65 --- /dev/null +++ b/0.0.16/html_split/Preprocessor.html @@ -0,0 +1,58 @@ + + + + + +Preprocessor (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          6.2 Preprocessor

          + + + + + +
          IDUnitFoundationalMainAdvanced
          [‘?’]Preprocessor Metaprogramming???
          [‘?’]Inclusion???
          [‘?’]Macros???
          + + + + + + diff --git a/0.0.16/html_split/References-on-Learning-Outcomes.html b/0.0.16/html_split/References-on-Learning-Outcomes.html new file mode 100644 index 0000000..edf4993 --- /dev/null +++ b/0.0.16/html_split/References-on-Learning-Outcomes.html @@ -0,0 +1,71 @@ + + + + + +References on Learning Outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          12.1 References on Learning Outcomes

          + + + + + + + diff --git a/0.0.16/html_split/References.html b/0.0.16/html_split/References.html new file mode 100644 index 0000000..8484d34 --- /dev/null +++ b/0.0.16/html_split/References.html @@ -0,0 +1,59 @@ + + + + + +References (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
          +

          +Previous: , Up: Top   [Contents]

          +
          +
          +

          12 References

          + + + + + + + + + + + diff --git a/0.0.16/html_split/Software-Design.html b/0.0.16/html_split/Software-Design.html new file mode 100644 index 0000000..dbd34b6 --- /dev/null +++ b/0.0.16/html_split/Software-Design.html @@ -0,0 +1,56 @@ + + + + + +Software Design (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          6.15 Software Design

          + + + +
          IDUnitFoundationalMainAdvanced
          [‘?’]Design by Contract???
          + + + + + + diff --git a/0.0.16/html_split/Standard-Library.html b/0.0.16/html_split/Standard-Library.html new file mode 100644 index 0000000..0d173a4 --- /dev/null +++ b/0.0.16/html_split/Standard-Library.html @@ -0,0 +1,57 @@ + + + + + +Standard Library (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          6.10 Standard Library

          + + + + +
          IDUnitFoundationalMainAdvanced
          [‘?’]Input/Output (I/O)???
          [‘?’]Containers, Iterators, and Algorithms???
          + + + + + + diff --git a/0.0.16/html_split/Student-outcomes.html b/0.0.16/html_split/Student-outcomes.html new file mode 100644 index 0000000..1d53b49 --- /dev/null +++ b/0.0.16/html_split/Student-outcomes.html @@ -0,0 +1,73 @@ + + + + + +Student outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          7.1.4.2 Student outcomes

          +

          A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

          +

          A student should be able to: +

          +
            +
          1. explain what copy semantics accomplish +
          + +
            +
          • establishing “equivalent” object state in another object +
          + +
            +
          1. explain difference between copying a reference and copying a value* +
          2. explain where copies are made +
          + +

          * In other languages these differences are sometimes referred to as +shallow and deep copy. +

          + + + + + diff --git a/0.0.16/html_split/Summary-of-Modules-and-Topics.html b/0.0.16/html_split/Summary-of-Modules-and-Topics.html new file mode 100644 index 0000000..33358df --- /dev/null +++ b/0.0.16/html_split/Summary-of-Modules-and-Topics.html @@ -0,0 +1,100 @@ + + + + + +Summary of Modules and Topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          6 Summary of Modules and Topics

          +

          In the sections that follow, the various modules and topics are +presented. There is one section per module. For each module, a table +listing the various topics in that module is provided. The ID for a +topic is linked to the detailed coverage of that topic that comes later +in the document. If a topic has any learning outcomes at a given +proficiency level, this is indicated by a checkmark (“✔️”). If a topic +has no learning outcomes (simply because there are not any, not because +the information is missing), this is indicated by an em dash (“—”). +In the case that the information for a topic is completely missing, a +question mark (“?”) symbol is used. +

          + + + + + + + + + + + + + + + + + + +
          + + + + + + diff --git a/0.0.16/html_split/Testing-and-Debugging.html b/0.0.16/html_split/Testing-and-Debugging.html new file mode 100644 index 0000000..497707a --- /dev/null +++ b/0.0.16/html_split/Testing-and-Debugging.html @@ -0,0 +1,59 @@ + + + + + +Testing and Debugging (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
          +

          +Next: , Previous: , Up: Summary of Modules and Topics   [Contents]

          +
          +
          +

          6.13 Testing and Debugging

          + + + + + + +
          IDUnitFoundationalMainAdvanced
          [‘?’]Source-Level Debuggers???
          [‘?’]Code Sanitizers???
          [‘?’]Test Frameworks???
          [‘?’]Debugging Strategies???
          + + + + + + diff --git a/0.0.16/html_split/Tooling.html b/0.0.16/html_split/Tooling.html new file mode 100644 index 0000000..e479ed2 --- /dev/null +++ b/0.0.16/html_split/Tooling.html @@ -0,0 +1,57 @@ + + + + + +Tooling (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          6.14 Tooling

          + + + + +
          IDUnitFoundationalMainAdvanced
          [‘?’]Compiler Toolchains???
          [‘?’]IDEs???
          + + + + + + diff --git a/0.0.16/html_split/Topic-introduction.html b/0.0.16/html_split/Topic-introduction.html new file mode 100644 index 0000000..c011ddf --- /dev/null +++ b/0.0.16/html_split/Topic-introduction.html @@ -0,0 +1,55 @@ + + + + + +Topic introduction (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          7.1.3 Topic introduction

          +

          Very brief introduction to the topic. +

          +

          Explains when and how objects are copied. +

          + + + + + diff --git a/0.0.16/html_split/Use-of-This-Document.html b/0.0.16/html_split/Use-of-This-Document.html new file mode 100644 index 0000000..dedcdd3 --- /dev/null +++ b/0.0.16/html_split/Use-of-This-Document.html @@ -0,0 +1,58 @@ + + + + + +Use of This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          3 Use of This Document

          +

          [NOTE: This document follows the same license model as the C++ +Core Guidelines. The LICENSE document is taken verbatim from the C++ +Core Guidelines.] This document is made available under a MIT-style +license. In simple terms, this license permits copying, use, +modification, and creation of derivative works. A copy of the license is +included in the section LICENSE. +

          + + + + + diff --git a/0.0.16/html_split/User_002dDefined-Types-Classes.html b/0.0.16/html_split/User_002dDefined-Types-Classes.html new file mode 100644 index 0000000..d7acd5e --- /dev/null +++ b/0.0.16/html_split/User_002dDefined-Types-Classes.html @@ -0,0 +1,69 @@ + + + + + +User-Defined Types Classes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
          +

          6.5 User-Defined Types (Classes)

          + + + + + + + + + + + + + + + +
          IDUnitFoundationalMainAdvanced
          [‘?’]Special Member Functions???
          [‘?’]Types???
          [‘?’]Conversions???
          [‘?’]Constructors and Destructors???
          [‘?’]Move/Copy Constructors and Assignment Operators???
          [‘?’]Member Functions???
          [‘?’]Sum Types???
          [‘?’]User-Defined Literals???
          [‘?’]Special Member Functions???
          [‘?’]Guidelines for Special Member Functions (e.g., Rule of Five, Rule +of Zero)???
          [‘copy’]Copy Semantics‘✔️’‘✔️’
          [‘?’]Moving and Copying???
          [‘?’]Lambdas???
          + + + + + + diff --git a/0.0.16/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html b/0.0.16/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html new file mode 100644 index 0000000..c5a1bfb --- /dev/null +++ b/0.0.16/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html @@ -0,0 +1,69 @@ + + + + + +Working Group Documents Related to C++ Teaching Guidelines (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
          +

          12.2 Working Group Documents Related to C++ Teaching Guidelines

          +
            +
          • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — +Standing Document for SG20: Guidelines for Teaching C++ to Beginners. +https://wg21.link/p1389. + +
          • Christopher Di Bella. P1725R0 — Modular Topic Design. +https://wg21.link/p1725. + +
          • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to +structure a teaching topic. https://wg21.link/p2193. + +
          • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study +Group: C++ Education. https://wg21.link/p1231. + +
          • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 +— Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0. + +
          + + + + + + diff --git a/0.0.16/html_split/_0023advanced.html b/0.0.16/html_split/_0023advanced.html new file mode 100644 index 0000000..d503bfc --- /dev/null +++ b/0.0.16/html_split/_0023advanced.html @@ -0,0 +1,40 @@ + + + + + + +#advanced (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #advanced.

          + diff --git a/0.0.16/html_split/_0023advanced_002d1.html b/0.0.16/html_split/_0023advanced_002d1.html new file mode 100644 index 0000000..282a7b8 --- /dev/null +++ b/0.0.16/html_split/_0023advanced_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #advanced-1.

          + diff --git a/0.0.16/html_split/_0023advanced_002d2.html b/0.0.16/html_split/_0023advanced_002d2.html new file mode 100644 index 0000000..039b3ff --- /dev/null +++ b/0.0.16/html_split/_0023advanced_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #advanced-2.

          + diff --git a/0.0.16/html_split/_0023advanced_002d3.html b/0.0.16/html_split/_0023advanced_002d3.html new file mode 100644 index 0000000..ebf5529 --- /dev/null +++ b/0.0.16/html_split/_0023advanced_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #advanced-3.

          + diff --git a/0.0.16/html_split/_0023backgroundrequired_002dknowledge.html b/0.0.16/html_split/_0023backgroundrequired_002dknowledge.html new file mode 100644 index 0000000..9959745 --- /dev/null +++ b/0.0.16/html_split/_0023backgroundrequired_002dknowledge.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #backgroundrequired-knowledge.

          + diff --git a/0.0.16/html_split/_0023backgroundrequired_002dknowledge_002d1.html b/0.0.16/html_split/_0023backgroundrequired_002dknowledge_002d1.html new file mode 100644 index 0000000..f6f6bd0 --- /dev/null +++ b/0.0.16/html_split/_0023backgroundrequired_002dknowledge_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #backgroundrequired-knowledge-1.

          + diff --git a/0.0.16/html_split/_0023backgroundrequired_002dknowledge_002d2.html b/0.0.16/html_split/_0023backgroundrequired_002dknowledge_002d2.html new file mode 100644 index 0000000..b0b297d --- /dev/null +++ b/0.0.16/html_split/_0023backgroundrequired_002dknowledge_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #backgroundrequired-knowledge-2.

          + diff --git a/0.0.16/html_split/_0023backgroundrequired_002dknowledge_002d3.html b/0.0.16/html_split/_0023backgroundrequired_002dknowledge_002d3.html new file mode 100644 index 0000000..ae34d91 --- /dev/null +++ b/0.0.16/html_split/_0023backgroundrequired_002dknowledge_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #backgroundrequired-knowledge-3.

          + diff --git a/0.0.16/html_split/_0023backgroundrequired_002dknowledge_002d4.html b/0.0.16/html_split/_0023backgroundrequired_002dknowledge_002d4.html new file mode 100644 index 0000000..7417f62 --- /dev/null +++ b/0.0.16/html_split/_0023backgroundrequired_002dknowledge_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #backgroundrequired-knowledge-4.

          + diff --git a/0.0.16/html_split/_0023backgroundrequired_002dknowledge_002d5.html b/0.0.16/html_split/_0023backgroundrequired_002dknowledge_002d5.html new file mode 100644 index 0000000..34298e9 --- /dev/null +++ b/0.0.16/html_split/_0023backgroundrequired_002dknowledge_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #backgroundrequired-knowledge-5.

          + diff --git a/0.0.16/html_split/_0023backgroundrequired_002dknowledge_002d6.html b/0.0.16/html_split/_0023backgroundrequired_002dknowledge_002d6.html new file mode 100644 index 0000000..a1cdee1 --- /dev/null +++ b/0.0.16/html_split/_0023backgroundrequired_002dknowledge_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #backgroundrequired-knowledge-6.

          + diff --git a/0.0.16/html_split/_0023backgroundrequired_002dknowledge_002d7.html b/0.0.16/html_split/_0023backgroundrequired_002dknowledge_002d7.html new file mode 100644 index 0000000..0a8d35a --- /dev/null +++ b/0.0.16/html_split/_0023backgroundrequired_002dknowledge_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #backgroundrequired-knowledge-7.

          + diff --git a/0.0.16/html_split/_0023backgroundrequired_002dknowledge_002d8.html b/0.0.16/html_split/_0023backgroundrequired_002dknowledge_002d8.html new file mode 100644 index 0000000..6080498 --- /dev/null +++ b/0.0.16/html_split/_0023backgroundrequired_002dknowledge_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #backgroundrequired-knowledge-8.

          + diff --git a/0.0.16/html_split/_0023backgroundrequired_002dknowledge_002d9.html b/0.0.16/html_split/_0023backgroundrequired_002dknowledge_002d9.html new file mode 100644 index 0000000..3ea462d --- /dev/null +++ b/0.0.16/html_split/_0023backgroundrequired_002dknowledge_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #backgroundrequired-knowledge-9.

          + diff --git a/0.0.16/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html b/0.0.16/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html new file mode 100644 index 0000000..925c568 --- /dev/null +++ b/0.0.16/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html @@ -0,0 +1,40 @@ + + + + + + +#basics-types-objects-values-expressions-statements-and-control-flow-constructs (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #basics-types-objects-values-expressions-statements-and-control-flow-constructs.

          + diff --git a/0.0.16/html_split/_0023building.html b/0.0.16/html_split/_0023building.html new file mode 100644 index 0000000..8ffc9df --- /dev/null +++ b/0.0.16/html_split/_0023building.html @@ -0,0 +1,40 @@ + + + + + + +#building (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #building.

          + diff --git a/0.0.16/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html b/0.0.16/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html new file mode 100644 index 0000000..a7e6bad --- /dev/null +++ b/0.0.16/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html @@ -0,0 +1,40 @@ + + + + + + +#c-object-model-copy-semantics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #c-object-model-copy-semantics.

          + diff --git a/0.0.16/html_split/_0023caveats.html b/0.0.16/html_split/_0023caveats.html new file mode 100644 index 0000000..d4bac8b --- /dev/null +++ b/0.0.16/html_split/_0023caveats.html @@ -0,0 +1,40 @@ + + + + + + +#caveats (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #caveats.

          + diff --git a/0.0.16/html_split/_0023caveats_002d1.html b/0.0.16/html_split/_0023caveats_002d1.html new file mode 100644 index 0000000..64faefd --- /dev/null +++ b/0.0.16/html_split/_0023caveats_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #caveats-1.

          + diff --git a/0.0.16/html_split/_0023caveats_002d2.html b/0.0.16/html_split/_0023caveats_002d2.html new file mode 100644 index 0000000..6c66559 --- /dev/null +++ b/0.0.16/html_split/_0023caveats_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #caveats-2.

          + diff --git a/0.0.16/html_split/_0023caveats_002d3.html b/0.0.16/html_split/_0023caveats_002d3.html new file mode 100644 index 0000000..479063f --- /dev/null +++ b/0.0.16/html_split/_0023caveats_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #caveats-3.

          + diff --git a/0.0.16/html_split/_0023caveats_002d4.html b/0.0.16/html_split/_0023caveats_002d4.html new file mode 100644 index 0000000..9588a55 --- /dev/null +++ b/0.0.16/html_split/_0023caveats_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #caveats-4.

          + diff --git a/0.0.16/html_split/_0023caveats_002d5.html b/0.0.16/html_split/_0023caveats_002d5.html new file mode 100644 index 0000000..11edee5 --- /dev/null +++ b/0.0.16/html_split/_0023caveats_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #caveats-5.

          + diff --git a/0.0.16/html_split/_0023caveats_002d6.html b/0.0.16/html_split/_0023caveats_002d6.html new file mode 100644 index 0000000..6cea721 --- /dev/null +++ b/0.0.16/html_split/_0023caveats_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #caveats-6.

          + diff --git a/0.0.16/html_split/_0023caveats_002d7.html b/0.0.16/html_split/_0023caveats_002d7.html new file mode 100644 index 0000000..2a8f1cd --- /dev/null +++ b/0.0.16/html_split/_0023caveats_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #caveats-7.

          + diff --git a/0.0.16/html_split/_0023caveats_002d8.html b/0.0.16/html_split/_0023caveats_002d8.html new file mode 100644 index 0000000..e330642 --- /dev/null +++ b/0.0.16/html_split/_0023caveats_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #caveats-8.

          + diff --git a/0.0.16/html_split/_0023caveats_002d9.html b/0.0.16/html_split/_0023caveats_002d9.html new file mode 100644 index 0000000..004e434 --- /dev/null +++ b/0.0.16/html_split/_0023caveats_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #caveats-9.

          + diff --git a/0.0.16/html_split/_0023compilation_002dmodel.html b/0.0.16/html_split/_0023compilation_002dmodel.html new file mode 100644 index 0000000..1017867 --- /dev/null +++ b/0.0.16/html_split/_0023compilation_002dmodel.html @@ -0,0 +1,40 @@ + + + + + + +#compilation-model (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #compilation-model.

          + diff --git a/0.0.16/html_split/_0023compile_002dtime_002dcomputation.html b/0.0.16/html_split/_0023compile_002dtime_002dcomputation.html new file mode 100644 index 0000000..59b0c57 --- /dev/null +++ b/0.0.16/html_split/_0023compile_002dtime_002dcomputation.html @@ -0,0 +1,40 @@ + + + + + + +#compile-time-computation (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #compile-time-computation.

          + diff --git a/0.0.16/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html b/0.0.16/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html new file mode 100644 index 0000000..9294adf --- /dev/null +++ b/0.0.16/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html @@ -0,0 +1,40 @@ + + + + + + +#context-and-aim-of-this-guide (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #context-and-aim-of-this-guide.

          + diff --git a/0.0.16/html_split/_0023contributing_002dto_002dthis_002ddocument.html b/0.0.16/html_split/_0023contributing_002dto_002dthis_002ddocument.html new file mode 100644 index 0000000..272d848 --- /dev/null +++ b/0.0.16/html_split/_0023contributing_002dto_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#contributing-to-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #contributing-to-this-document.

          + diff --git a/0.0.16/html_split/_0023contributors.html b/0.0.16/html_split/_0023contributors.html new file mode 100644 index 0000000..a391f9d --- /dev/null +++ b/0.0.16/html_split/_0023contributors.html @@ -0,0 +1,40 @@ + + + + + + +#contributors (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #contributors.

          + diff --git a/0.0.16/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html b/0.0.16/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html new file mode 100644 index 0000000..d32c27e --- /dev/null +++ b/0.0.16/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html @@ -0,0 +1,40 @@ + + + + + + +#detailed-information-for-modules-and-topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #detailed-information-for-modules-and-topics.

          + diff --git a/0.0.16/html_split/_0023error_002dhandling.html b/0.0.16/html_split/_0023error_002dhandling.html new file mode 100644 index 0000000..80cfb94 --- /dev/null +++ b/0.0.16/html_split/_0023error_002dhandling.html @@ -0,0 +1,40 @@ + + + + + + +#error-handling (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #error-handling.

          + diff --git a/0.0.16/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html b/0.0.16/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html new file mode 100644 index 0000000..fc9b3eb --- /dev/null +++ b/0.0.16/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html @@ -0,0 +1,40 @@ + + + + + + +#external-i.e.-non-standard-libraries (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #external-i.e.-non-standard-libraries.

          + diff --git a/0.0.16/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html b/0.0.16/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html new file mode 100644 index 0000000..f915680 --- /dev/null +++ b/0.0.16/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-calling-static_assert-with-a-constant-expression (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #foundational-calling-static_assert-with-a-constant-expression.

          + diff --git a/0.0.16/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html b/0.0.16/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html new file mode 100644 index 0000000..88f62bc --- /dev/null +++ b/0.0.16/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-how-and-when-are-copies-made (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #foundational-how-and-when-are-copies-made.

          + diff --git a/0.0.16/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html b/0.0.16/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html new file mode 100644 index 0000000..95ab098 --- /dev/null +++ b/0.0.16/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-using-and-defining-functions-with-default-arguments (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #foundational-using-and-defining-functions-with-default-arguments.

          + diff --git a/0.0.16/html_split/_0023foundational_002dusing_002dudls.html b/0.0.16/html_split/_0023foundational_002dusing_002dudls.html new file mode 100644 index 0000000..2f7afdd --- /dev/null +++ b/0.0.16/html_split/_0023foundational_002dusing_002dudls.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-using-udls (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #foundational-using-udls.

          + diff --git a/0.0.16/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html b/0.0.16/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html new file mode 100644 index 0000000..708f2d3 --- /dev/null +++ b/0.0.16/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-writing-requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #foundational-writing-requires-expressions.

          + diff --git a/0.0.16/html_split/_0023functions.html b/0.0.16/html_split/_0023functions.html new file mode 100644 index 0000000..e304abe --- /dev/null +++ b/0.0.16/html_split/_0023functions.html @@ -0,0 +1,40 @@ + + + + + + +#functions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #functions.

          + diff --git a/0.0.16/html_split/_0023functions_002ddefault_002dargument.html b/0.0.16/html_split/_0023functions_002ddefault_002dargument.html new file mode 100644 index 0000000..ccfbcbb --- /dev/null +++ b/0.0.16/html_split/_0023functions_002ddefault_002dargument.html @@ -0,0 +1,40 @@ + + + + + + +#functions-default-argument (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #functions-default-argument.

          + diff --git a/0.0.16/html_split/_0023functions_002duser_002ddefined_002dliterals.html b/0.0.16/html_split/_0023functions_002duser_002ddefined_002dliterals.html new file mode 100644 index 0000000..b4f78b5 --- /dev/null +++ b/0.0.16/html_split/_0023functions_002duser_002ddefined_002dliterals.html @@ -0,0 +1,40 @@ + + + + + + +#functions-user-defined-literals (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #functions-user-defined-literals.

          + diff --git a/0.0.16/html_split/_0023generic_002dprogramming_002dtemplates.html b/0.0.16/html_split/_0023generic_002dprogramming_002dtemplates.html new file mode 100644 index 0000000..3b91080 --- /dev/null +++ b/0.0.16/html_split/_0023generic_002dprogramming_002dtemplates.html @@ -0,0 +1,40 @@ + + + + + + +#generic-programming-templates (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #generic-programming-templates.

          + diff --git a/0.0.16/html_split/_0023glossary.html b/0.0.16/html_split/_0023glossary.html new file mode 100644 index 0000000..9b46bf6 --- /dev/null +++ b/0.0.16/html_split/_0023glossary.html @@ -0,0 +1,40 @@ + + + + + + +#glossary (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #glossary.

          + diff --git a/0.0.16/html_split/_0023how_002dto_002dcontribute.html b/0.0.16/html_split/_0023how_002dto_002dcontribute.html new file mode 100644 index 0000000..d9cff4a --- /dev/null +++ b/0.0.16/html_split/_0023how_002dto_002dcontribute.html @@ -0,0 +1,40 @@ + + + + + + +#how-to-contribute (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #how-to-contribute.

          + diff --git a/0.0.16/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html b/0.0.16/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html new file mode 100644 index 0000000..def5140 --- /dev/null +++ b/0.0.16/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html @@ -0,0 +1,40 @@ + + + + + + +#inheritance-and-class-hierarchies (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #inheritance-and-class-hierarchies.

          + diff --git a/0.0.16/html_split/_0023license.html b/0.0.16/html_split/_0023license.html new file mode 100644 index 0000000..6b44dd1 --- /dev/null +++ b/0.0.16/html_split/_0023license.html @@ -0,0 +1,40 @@ + + + + + + +#license (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #license.

          + diff --git a/0.0.16/html_split/_0023main_002dadvanced_002drequirements.html b/0.0.16/html_split/_0023main_002dadvanced_002drequirements.html new file mode 100644 index 0000000..8214533 --- /dev/null +++ b/0.0.16/html_split/_0023main_002dadvanced_002drequirements.html @@ -0,0 +1,40 @@ + + + + + + +#main-advanced-requirements (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #main-advanced-requirements.

          + diff --git a/0.0.16/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html b/0.0.16/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html new file mode 100644 index 0000000..22b0484 --- /dev/null +++ b/0.0.16/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html @@ -0,0 +1,40 @@ + + + + + + +#main-contracts-and-static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #main-contracts-and-static_assert.

          + diff --git a/0.0.16/html_split/_0023main_002dimplementing.html b/0.0.16/html_split/_0023main_002dimplementing.html new file mode 100644 index 0000000..260008c --- /dev/null +++ b/0.0.16/html_split/_0023main_002dimplementing.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #main-implementing.

          + diff --git a/0.0.16/html_split/_0023main_002dimplementing_002dudls.html b/0.0.16/html_split/_0023main_002dimplementing_002dudls.html new file mode 100644 index 0000000..a41d194 --- /dev/null +++ b/0.0.16/html_split/_0023main_002dimplementing_002dudls.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing-udls (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #main-implementing-udls.

          + diff --git a/0.0.16/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html b/0.0.16/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html new file mode 100644 index 0000000..1e5a4d8 --- /dev/null +++ b/0.0.16/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing-user-defined-copy-operations (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #main-implementing-user-defined-copy-operations.

          + diff --git a/0.0.16/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html b/0.0.16/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html new file mode 100644 index 0000000..4502ed8 --- /dev/null +++ b/0.0.16/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html @@ -0,0 +1,40 @@ + + + + + + +#meta-error-handling-static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #meta-error-handling-static_assert.

          + diff --git a/0.0.16/html_split/_0023module_002dname_002drequires_002dexpressions.html b/0.0.16/html_split/_0023module_002dname_002drequires_002dexpressions.html new file mode 100644 index 0000000..56a9ebf --- /dev/null +++ b/0.0.16/html_split/_0023module_002dname_002drequires_002dexpressions.html @@ -0,0 +1,40 @@ + + + + + + +#module-name-requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #module-name-requires-expressions.

          + diff --git a/0.0.16/html_split/_0023motivation.html b/0.0.16/html_split/_0023motivation.html new file mode 100644 index 0000000..0141374 --- /dev/null +++ b/0.0.16/html_split/_0023motivation.html @@ -0,0 +1,40 @@ + + + + + + +#motivation (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #motivation.

          + diff --git a/0.0.16/html_split/_0023motivation_002d1.html b/0.0.16/html_split/_0023motivation_002d1.html new file mode 100644 index 0000000..7e4a69e --- /dev/null +++ b/0.0.16/html_split/_0023motivation_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #motivation-1.

          + diff --git a/0.0.16/html_split/_0023motivation_002d2.html b/0.0.16/html_split/_0023motivation_002d2.html new file mode 100644 index 0000000..7901fd3 --- /dev/null +++ b/0.0.16/html_split/_0023motivation_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #motivation-2.

          + diff --git a/0.0.16/html_split/_0023motivation_002d3.html b/0.0.16/html_split/_0023motivation_002d3.html new file mode 100644 index 0000000..ec720ad --- /dev/null +++ b/0.0.16/html_split/_0023motivation_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #motivation-3.

          + diff --git a/0.0.16/html_split/_0023motivation_002d4.html b/0.0.16/html_split/_0023motivation_002d4.html new file mode 100644 index 0000000..f53583a --- /dev/null +++ b/0.0.16/html_split/_0023motivation_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #motivation-4.

          + diff --git a/0.0.16/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html b/0.0.16/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html new file mode 100644 index 0000000..57e8b6e --- /dev/null +++ b/0.0.16/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html @@ -0,0 +1,40 @@ + + + + + + +#obtaining-this-document-the-most-recent-version-and-alternate-formats (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #obtaining-this-document-the-most-recent-version-and-alternate-formats.

          + diff --git a/0.0.16/html_split/_0023organization_002dof_002dthis_002ddocument.html b/0.0.16/html_split/_0023organization_002dof_002dthis_002ddocument.html new file mode 100644 index 0000000..e312b8e --- /dev/null +++ b/0.0.16/html_split/_0023organization_002dof_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#organization-of-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #organization-of-this-document.

          + diff --git a/0.0.16/html_split/_0023overview.html b/0.0.16/html_split/_0023overview.html new file mode 100644 index 0000000..b2d4bdc --- /dev/null +++ b/0.0.16/html_split/_0023overview.html @@ -0,0 +1,40 @@ + + + + + + +#overview (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #overview.

          + diff --git a/0.0.16/html_split/_0023overview_002d1.html b/0.0.16/html_split/_0023overview_002d1.html new file mode 100644 index 0000000..d551764 --- /dev/null +++ b/0.0.16/html_split/_0023overview_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#overview-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #overview-1.

          + diff --git a/0.0.16/html_split/_0023overview_002d2.html b/0.0.16/html_split/_0023overview_002d2.html new file mode 100644 index 0000000..5a34b05 --- /dev/null +++ b/0.0.16/html_split/_0023overview_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#overview-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #overview-2.

          + diff --git a/0.0.16/html_split/_0023overview_002d3.html b/0.0.16/html_split/_0023overview_002d3.html new file mode 100644 index 0000000..f230145 --- /dev/null +++ b/0.0.16/html_split/_0023overview_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#overview-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #overview-3.

          + diff --git a/0.0.16/html_split/_0023overview_002d4.html b/0.0.16/html_split/_0023overview_002d4.html new file mode 100644 index 0000000..2436b9a --- /dev/null +++ b/0.0.16/html_split/_0023overview_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#overview-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #overview-4.

          + diff --git a/0.0.16/html_split/_0023points_002dto_002dcover.html b/0.0.16/html_split/_0023points_002dto_002dcover.html new file mode 100644 index 0000000..424b02b --- /dev/null +++ b/0.0.16/html_split/_0023points_002dto_002dcover.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #points-to-cover.

          + diff --git a/0.0.16/html_split/_0023points_002dto_002dcover_002d1.html b/0.0.16/html_split/_0023points_002dto_002dcover_002d1.html new file mode 100644 index 0000000..2a554bb --- /dev/null +++ b/0.0.16/html_split/_0023points_002dto_002dcover_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #points-to-cover-1.

          + diff --git a/0.0.16/html_split/_0023points_002dto_002dcover_002d2.html b/0.0.16/html_split/_0023points_002dto_002dcover_002d2.html new file mode 100644 index 0000000..053a51a --- /dev/null +++ b/0.0.16/html_split/_0023points_002dto_002dcover_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #points-to-cover-2.

          + diff --git a/0.0.16/html_split/_0023points_002dto_002dcover_002d3.html b/0.0.16/html_split/_0023points_002dto_002dcover_002d3.html new file mode 100644 index 0000000..b0dad48 --- /dev/null +++ b/0.0.16/html_split/_0023points_002dto_002dcover_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #points-to-cover-3.

          + diff --git a/0.0.16/html_split/_0023points_002dto_002dcover_002d4.html b/0.0.16/html_split/_0023points_002dto_002dcover_002d4.html new file mode 100644 index 0000000..94de8fa --- /dev/null +++ b/0.0.16/html_split/_0023points_002dto_002dcover_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #points-to-cover-4.

          + diff --git a/0.0.16/html_split/_0023points_002dto_002dcover_002d5.html b/0.0.16/html_split/_0023points_002dto_002dcover_002d5.html new file mode 100644 index 0000000..39d1eaf --- /dev/null +++ b/0.0.16/html_split/_0023points_002dto_002dcover_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #points-to-cover-5.

          + diff --git a/0.0.16/html_split/_0023points_002dto_002dcover_002d6.html b/0.0.16/html_split/_0023points_002dto_002dcover_002d6.html new file mode 100644 index 0000000..92df88f --- /dev/null +++ b/0.0.16/html_split/_0023points_002dto_002dcover_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #points-to-cover-6.

          + diff --git a/0.0.16/html_split/_0023points_002dto_002dcover_002d7.html b/0.0.16/html_split/_0023points_002dto_002dcover_002d7.html new file mode 100644 index 0000000..6e6c895 --- /dev/null +++ b/0.0.16/html_split/_0023points_002dto_002dcover_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #points-to-cover-7.

          + diff --git a/0.0.16/html_split/_0023points_002dto_002dcover_002d8.html b/0.0.16/html_split/_0023points_002dto_002dcover_002d8.html new file mode 100644 index 0000000..b5574e1 --- /dev/null +++ b/0.0.16/html_split/_0023points_002dto_002dcover_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #points-to-cover-8.

          + diff --git a/0.0.16/html_split/_0023preprocessor.html b/0.0.16/html_split/_0023preprocessor.html new file mode 100644 index 0000000..a3bb5f6 --- /dev/null +++ b/0.0.16/html_split/_0023preprocessor.html @@ -0,0 +1,40 @@ + + + + + + +#preprocessor (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #preprocessor.

          + diff --git a/0.0.16/html_split/_0023references.html b/0.0.16/html_split/_0023references.html new file mode 100644 index 0000000..69fbd6b --- /dev/null +++ b/0.0.16/html_split/_0023references.html @@ -0,0 +1,40 @@ + + + + + + +#references (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #references.

          + diff --git a/0.0.16/html_split/_0023references_002don_002dlearning_002doutcomes.html b/0.0.16/html_split/_0023references_002don_002dlearning_002doutcomes.html new file mode 100644 index 0000000..d28fbbf --- /dev/null +++ b/0.0.16/html_split/_0023references_002don_002dlearning_002doutcomes.html @@ -0,0 +1,40 @@ + + + + + + +#references-on-learning-outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #references-on-learning-outcomes.

          + diff --git a/0.0.16/html_split/_0023software_002ddesign.html b/0.0.16/html_split/_0023software_002ddesign.html new file mode 100644 index 0000000..16f5f54 --- /dev/null +++ b/0.0.16/html_split/_0023software_002ddesign.html @@ -0,0 +1,40 @@ + + + + + + +#software-design (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #software-design.

          + diff --git a/0.0.16/html_split/_0023standard_002dlibrary.html b/0.0.16/html_split/_0023standard_002dlibrary.html new file mode 100644 index 0000000..71956d3 --- /dev/null +++ b/0.0.16/html_split/_0023standard_002dlibrary.html @@ -0,0 +1,40 @@ + + + + + + +#standard-library (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #standard-library.

          + diff --git a/0.0.16/html_split/_0023student_002doutcomes.html b/0.0.16/html_split/_0023student_002doutcomes.html new file mode 100644 index 0000000..df0035d --- /dev/null +++ b/0.0.16/html_split/_0023student_002doutcomes.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #student-outcomes.

          + diff --git a/0.0.16/html_split/_0023student_002doutcomes_002d1.html b/0.0.16/html_split/_0023student_002doutcomes_002d1.html new file mode 100644 index 0000000..e9344b7 --- /dev/null +++ b/0.0.16/html_split/_0023student_002doutcomes_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #student-outcomes-1.

          + diff --git a/0.0.16/html_split/_0023student_002doutcomes_002d2.html b/0.0.16/html_split/_0023student_002doutcomes_002d2.html new file mode 100644 index 0000000..6fa7724 --- /dev/null +++ b/0.0.16/html_split/_0023student_002doutcomes_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #student-outcomes-2.

          + diff --git a/0.0.16/html_split/_0023student_002doutcomes_002d3.html b/0.0.16/html_split/_0023student_002doutcomes_002d3.html new file mode 100644 index 0000000..195d9d2 --- /dev/null +++ b/0.0.16/html_split/_0023student_002doutcomes_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #student-outcomes-3.

          + diff --git a/0.0.16/html_split/_0023student_002doutcomes_002d4.html b/0.0.16/html_split/_0023student_002doutcomes_002d4.html new file mode 100644 index 0000000..3e30430 --- /dev/null +++ b/0.0.16/html_split/_0023student_002doutcomes_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #student-outcomes-4.

          + diff --git a/0.0.16/html_split/_0023student_002doutcomes_002d5.html b/0.0.16/html_split/_0023student_002doutcomes_002d5.html new file mode 100644 index 0000000..0a4a7da --- /dev/null +++ b/0.0.16/html_split/_0023student_002doutcomes_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #student-outcomes-5.

          + diff --git a/0.0.16/html_split/_0023student_002doutcomes_002d6.html b/0.0.16/html_split/_0023student_002doutcomes_002d6.html new file mode 100644 index 0000000..c5c4ac0 --- /dev/null +++ b/0.0.16/html_split/_0023student_002doutcomes_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #student-outcomes-6.

          + diff --git a/0.0.16/html_split/_0023student_002doutcomes_002d7.html b/0.0.16/html_split/_0023student_002doutcomes_002d7.html new file mode 100644 index 0000000..5233f94 --- /dev/null +++ b/0.0.16/html_split/_0023student_002doutcomes_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #student-outcomes-7.

          + diff --git a/0.0.16/html_split/_0023student_002doutcomes_002d8.html b/0.0.16/html_split/_0023student_002doutcomes_002d8.html new file mode 100644 index 0000000..f19fd7f --- /dev/null +++ b/0.0.16/html_split/_0023student_002doutcomes_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #student-outcomes-8.

          + diff --git a/0.0.16/html_split/_0023student_002doutcomes_002d9.html b/0.0.16/html_split/_0023student_002doutcomes_002d9.html new file mode 100644 index 0000000..735a21f --- /dev/null +++ b/0.0.16/html_split/_0023student_002doutcomes_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #student-outcomes-9.

          + diff --git a/0.0.16/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html b/0.0.16/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html new file mode 100644 index 0000000..4801178 --- /dev/null +++ b/0.0.16/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html @@ -0,0 +1,40 @@ + + + + + + +#summary-of-modules-and-topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #summary-of-modules-and-topics.

          + diff --git a/0.0.16/html_split/_0023testing_002dand_002ddebugging.html b/0.0.16/html_split/_0023testing_002dand_002ddebugging.html new file mode 100644 index 0000000..1ae096d --- /dev/null +++ b/0.0.16/html_split/_0023testing_002dand_002ddebugging.html @@ -0,0 +1,40 @@ + + + + + + +#testing-and-debugging (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #testing-and-debugging.

          + diff --git a/0.0.16/html_split/_0023tooling.html b/0.0.16/html_split/_0023tooling.html new file mode 100644 index 0000000..634a8dc --- /dev/null +++ b/0.0.16/html_split/_0023tooling.html @@ -0,0 +1,40 @@ + + + + + + +#tooling (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #tooling.

          + diff --git a/0.0.16/html_split/_0023topic_002dintroduction.html b/0.0.16/html_split/_0023topic_002dintroduction.html new file mode 100644 index 0000000..742d5d9 --- /dev/null +++ b/0.0.16/html_split/_0023topic_002dintroduction.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #topic-introduction.

          + diff --git a/0.0.16/html_split/_0023topic_002dintroduction_002d1.html b/0.0.16/html_split/_0023topic_002dintroduction_002d1.html new file mode 100644 index 0000000..a110644 --- /dev/null +++ b/0.0.16/html_split/_0023topic_002dintroduction_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #topic-introduction-1.

          + diff --git a/0.0.16/html_split/_0023topic_002dintroduction_002d2.html b/0.0.16/html_split/_0023topic_002dintroduction_002d2.html new file mode 100644 index 0000000..986bf37 --- /dev/null +++ b/0.0.16/html_split/_0023topic_002dintroduction_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #topic-introduction-2.

          + diff --git a/0.0.16/html_split/_0023topic_002dintroduction_002d3.html b/0.0.16/html_split/_0023topic_002dintroduction_002d3.html new file mode 100644 index 0000000..3d14fd9 --- /dev/null +++ b/0.0.16/html_split/_0023topic_002dintroduction_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #topic-introduction-3.

          + diff --git a/0.0.16/html_split/_0023topic_002dintroduction_002d4.html b/0.0.16/html_split/_0023topic_002dintroduction_002d4.html new file mode 100644 index 0000000..c73a236 --- /dev/null +++ b/0.0.16/html_split/_0023topic_002dintroduction_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #topic-introduction-4.

          + diff --git a/0.0.16/html_split/_0023use_002dof_002dthis_002ddocument.html b/0.0.16/html_split/_0023use_002dof_002dthis_002ddocument.html new file mode 100644 index 0000000..68d835d --- /dev/null +++ b/0.0.16/html_split/_0023use_002dof_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#use-of-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #use-of-this-document.

          + diff --git a/0.0.16/html_split/_0023user_002ddefined_002dtypes_002dclasses.html b/0.0.16/html_split/_0023user_002ddefined_002dtypes_002dclasses.html new file mode 100644 index 0000000..04771a9 --- /dev/null +++ b/0.0.16/html_split/_0023user_002ddefined_002dtypes_002dclasses.html @@ -0,0 +1,40 @@ + + + + + + +#user-defined-types-classes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #user-defined-types-classes.

          + diff --git a/0.0.16/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html b/0.0.16/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html new file mode 100644 index 0000000..f4b9435 --- /dev/null +++ b/0.0.16/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html @@ -0,0 +1,40 @@ + + + + + + +#working-group-documents-related-to-c-teaching-guidelines (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

          The node you are looking for is at #working-group-documents-related-to-c-teaching-guidelines.

          + diff --git a/0.0.16/html_split/index.html b/0.0.16/html_split/index.html new file mode 100644 index 0000000..0e30552 --- /dev/null +++ b/0.0.16/html_split/index.html @@ -0,0 +1,234 @@ + + + + + +Top (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +

          Table of Contents

          + +
          + + +
          + + + +
          +

          Guidelines for Teaching C++

          + + + + + + + + + + + + + + + + +
          + + + + + + diff --git a/0.0.16/html_split/unknown_node.html b/0.0.16/html_split/unknown_node.html new file mode 100644 index 0000000..f73b566 --- /dev/null +++ b/0.0.16/html_split/unknown_node.html @@ -0,0 +1,817 @@ + + + + + +Guidelines for Teaching C++ + + + + + + + + + + + + + + + + +
          +

          +   [Contents]

          +
          +
          +

          7.1.5.1 Background/Required Knowledge

          +

          A student is able to: * identify special member functions +[C++ object model: +special member functions] +

          +

          It helps when a student is able to: * use move semantics +[C++ object model: move +semantics] * explain the rule of zero +[C++ object model: rule-of-zero] +* explain the rule of five [C++ +object model: rule-of-five] +

          +
          +

          +   [Contents]

          +
          +

          7.1.5.2 Student outcomes

          +

          A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

          +

          A student should be able to: * explain when they have to implement the +copy operations for their own type * Copy constructor * Copy assignment +operator * implement copy operations for their own types * +Optional: explain when copying with basic and strong exception +guarantees is useful +

          +
          +

          +   [Contents]

          +
          +

          7.1.5.3 Caveats

          +

          This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

          +
            +
          • Intricacies when implementing copy operations: +
              +
            • Examples of how not to write copy operations (e.g., C++03 +std::auto_ptr) +
            + +
          + +
          +

          +   [Contents]

          +
          +

          7.1.5.4 Points to cover

          +

          This section lists important details for each point. +

          +
            +
          • Copy constructors and copy assignment operators +
              +
            • How compiler generates default copy operations +
            • =default, =delete (No copy) +
            • How-to write your own copy operations +
            • Rule-of-five +
            • Copy assignment operators can be ref-qualified to avoid assigning into +temporary objects. +
            + +
          + +
          +

          +   [Contents]

          +
          +

          7.2.1 Overview

          +

          Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

          + + + + + +
          LevelObjectives
          FoundationalDefine and use requires-expressions to check satisfaction of +expressions by given parameters
          MainDefine and use requires-expressions to check properties of +expressions
          Advanced
          + +
          +

          +   [Contents]

          +
          +

          7.2.2 Motivation

          +

          Why is this important? Why do we want to learn/teach this +topic? +

          +

          Requires-expressions allow a developer to perform compile-time +evaluation on the validity of other expressions. These are fundamental +to the ability to write concepts. +[Compile-time programming: concepts] +

          +
          +

          +   [Contents]

          +
          +

          7.3 Topic introduction

          +

          Very brief introduction to the topic. +

          +

          Requires-expressions are compile-time predicates which evaluate to true +when their specified set of expressions are all valid for a given set of +inputs. +

          + + + + + + +
          +

          +   [Contents]

          +
          +

          7.3.1.1 Background/Required Knowledge

          +

          A student is able to: +

          + + +

          It is helpful if: +

          +
            +
          • The student is aware that attempting to specialize the template with +types or values which do not match otherwise unstated assumptions will +cause errors within the template. +
          + +
          +

          +   [Contents]

          +
          +

          7.3.1.2 Student outcomes

          +

          A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

          +

          A student should be able to: +

          +
            +
          1. Write a simple-requirement to assert the validity of an expression +
          2. Write a type-requirement to check the existence of a type by its +identifier +
          3. Write a compound-requirement to test the resulting type of an expression +
          4. Write a nested-requirement to test the constexpr value of an operation, +as opposed to just the syntactic validity +
          5. Use a requires-expression within a concept, requires-clause, or +if constexpr condition +
          + +
          +

          +   [Contents]

          +
          +

          7.3.1.3 Caveats

          +

          This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

          +

          To require that expressions, which evaluate to a boolean value like +sizeof(t) == 4, evaluate to true a nested-requirement is +needed (e.g., requires sizeof(t) == 4;). Omitting the +requires results in a simple-requirement, which is satisfied +based purely on syntactic validity, not on the result of the operation. +

          +
          +

          +   [Contents]

          +
          +

          7.3.1.4 Points to cover

          +

          This section lists important details for each point. +

          +
            +
          • All requires-expression requirements terminate with a semicolon. +
          • simple-requirements are used to check that an expression is well-formed. +
          • nested-requirements are introduced with requires and primarily +used to check the result of an expression computable by the compiler, +including concepts or other requires-expressions. +
          • type-requirements are introduced with typename and used to verify +the existence of a type with a particular identifier. +
          • compound-requirements are enclosed in braces and can be used to check +the resulting type of an expression. +
          • Checks are performed by the compiler, not at run time. +
          • If covering usage of requires-expression with requires-clause, +[Compile-time programming: +requires clause] demonstrate requires requires and show how to +ever avoid writing it by using a concept. +[Compile-time programming: concepts] +
          + +
          +

          +   [Contents]

          +
          +

          7.3.2.1 Background/Required Knowledge

          +
            +
          • All of the above. +
          • Knowledge of noexcept +
          + +

          A student is able to: +

          + + +
          +

          +   [Contents]

          +
          +

          7.3.2.2 Student outcomes

          +

          A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

          +

          A student should be able to: +

          +
            +
          1. Write compound-requirements which test the noexceptness of an +expression. +
          2. Use a concept as the target of a compound-requirement. +
          + +
          +

          +   [Contents]

          +
          +

          7.3.2.3 Caveats

          +

          This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

          +
          +

          +   [Contents]

          +
          +

          7.3.2.4 Points to cover

          +

          This section lists important details for each point. +

          +
            +
          • Compound-requirements allow the optional ability to test whether an +expression is marked as noexcept, by using a trailing +noexcept keyword. +
          + +
          struct S
          +{
          +    void foo() noexcept {}
          +    void bar() {}
          +};
          +
          +static_assert(requires(S s) { { s.foo() } noexcept; } ); // Succeeds. s.foo() is noexcept
          +static_assert(requires(S s) { { s.bar() } noexcept; } ); // Fails. s.bar() is not noexcept
          +
          +
            +
          • If the return-type-requirement of a compound-requirement is a concept, +that concept is given the resulting type as the first parameter, +followed by the specified parameters in the compound-requirement. +{ ++x } -> C<int> would substitute +C<decltype((++x)), int> and check that concept C is satisfied for +those parameters. +
          + +
          +

          +   [Contents]

          +
          +

          7.3.3 Advanced

          + +
          +

          +   [Contents]

          +
          +

          7.4.1 Overview

          +

          Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

          + + + + + +
          LevelObjectives
          FoundationalCalling static_assert with a constant expression
          MainUsing static_assert to detect contract violations and +improve error messages
          Advanced
          + +
          +

          +   [Contents]

          +
          +

          7.4.2 Motivation

          +

          Why is this important? Why do we want to learn/teach this +topic? +

          +

          static_assert allows the developer to enforce that conditions +which can be checked during compilation will force build errors when +violated. Additionally, they are the best mechanism by which a developer +can pass useful information to other developers regarding what violation +occurred or what must be done, instead. +

          +
          +

          +   [Contents]

          +
          +

          7.4.3 Topic introduction

          +

          Very brief introduction to the topic. +

          +

          static_assert is a compile-time evaluated function that asserts +the truth of a supplied predicate, issuing an optional user-supplied +error message if the predicate is false. +

          +
          +

          +   [Contents]

          +
          +

          7.4.4.1 Background/Required Knowledge

          +

          A student: +

          +
            +
          • Should be able to explain the difference between code evaluated at +compile-time and run-time +
          • Should be able to cite some examples of compile-time known information, +such as sizeof(T) +
          + +
          +

          +   [Contents]

          +
          +

          7.4.4.2 Student outcomes

          +

          A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

          +

          A student should be able to: +

          +
            +
          1. Assert the expected size of a structure using static_assert +
          + +
          +

          +   [Contents]

          +
          +

          7.4.4.3 Caveats

          +

          This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

          +
          +

          +   [Contents]

          +
          +

          7.4.4.4 Points to cover

          +

          This section lists important details for each point. +

          +
            +
          • X +
          • In addition to what is wrong, a good error message will inform the user +of how to correct it +
          + +
          +

          +   [Contents]

          +
          +

          7.4.5.1 Background/Required Knowledge

          +
            +
          • All of the above. +
          • General understanding of compile-time requirements +
          + +
          +

          +   [Contents]

          +
          +

          7.4.5.2 Student outcomes

          +

          A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

          +

          A student should be able to: +

          +
            +
          1. Utilize static_assert to verify preconditions of a meta-function +
          2. Utilize static_assert to verify the results of meta-functions for +known values +
          + +
          +

          +   [Contents]

          +
          +

          7.4.5.3 Caveats

          +

          This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

          +
          +

          +   [Contents]

          +
          +

          7.4.5.4 Points to cover

          +

          This section lists important details for each point. +

          +
            +
          • When writing a meta-function, use static_assert to test the +results +
          • Write static_assert calls at the scope of the code they are +guarding +
          + +
          template<typename T>
          +struct container {
          +    std::map<int, T> vals;
          +
          +    // Test location #1
          +    static_assert(
          +        std::is_default_constructible_v<T>,
          +        "container type T must be default constructible");i
          +
          +    void add(int key, T const& t) {
          +        // Test location #2
          +        static_assert(
          +            std::is_default_constructible_v<T>,
          +            "container type T must be default constructible");
          +        // std::map::operator[] requires default constructible type for 
          +        // the value. This will cause a build failure deep in the 
          +        // implementation of std::map, when T is not default constructible
          +        vals[key] = t;
          +    }
          +};
          +
          +struct NoDefCtor {
          +    NoDefCtor() = delete;
          +    NoDefCtor(double d) {}
          +};
          +
          +container<NoDefCtor> c; // If Test #1 was omitted, this would succeed
          +// This is ill-formed. Test #2 would catch this and provide a better 
          +// error message for the user
          +c.add(42, NoDefCtor(1.0)); 
          +
          +
          +

          +   [Contents]

          +
          +

          7.4.6 Advanced

          +

          These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

          +

          See concepts. +

          +
          +

          +   [Contents]

          +
          +

          7.5.1 Overview

          +

          Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

          +

          Functions in C++ may be overloaded with different numbers and types of +parameters. It may be of value to specify default arguments for some +number of parameters, to allow a caller to avoid specifying arguments +that rarely change, or to enable expanding the set of parameters while +maintaining backward compatibility with existing callers. +

          + + + + + +
          LevelObjective
          FoundationalDefine and use functions with default arguments
          Main
          Advancedrefinement of default arguments through multiple declarations
          + +
          +

          +   [Contents]

          +
          +

          7.5.2 Motivation

          +

          Why is this important? Why do we want to learn/teach this +topic? +

          +

          Default arguments allow the omission of arguments with obvious or common +values. Also may be utilized to extend an existing function signature +without forcing changes to existing calling code. +

          +
          +

          +   [Contents]

          +
          +

          7.5.3 Topic introduction

          +

          Very brief introduction to the topic. +

          +

          Explain how default arguments work and how to define them. +

          +
          +

          +   [Contents]

          +
          +

          7.5.4.1 Background/Required Knowledge

          +

          A student is able to: +

          + + +
          +

          +   [Contents]

          +
          +

          7.5.4.2 Student outcomes

          +

          A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

          +

          A student should be able to: +

          +
            +
          1. Call to a function with a default argument with or without that argument +specified +
          2. Declare a function with a default argument, and omit the default in the +definition’s signature +
          3. Explain when the lifetime of a default argument begins and ends +
          + +
          +

          +   [Contents]

          +
          +

          7.5.4.3 Caveats

          +

          This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

          +
            +
          • When no forward-declaration exists, the definition serves as the +declaration +
          • When multiple declarations exist, only one may specify the default for +any particular parameter, but multiple declarations may specify the +defaults for different parameters. +
          • Additional default values may be specified for other parameters in +repeat declarations +
          • Calling an overloaded function with fewer arguments may be ambiguous +with regard to an overload with default arguments +
          + +
          +

          +   [Contents]

          +
          +

          7.5.4.4 Points to cover

          +

          This section lists important details for each point. +

          +
            +
          • Default value may only be specified once for each parameter among all +declarations +
          • Default values must start from the rightmost parameter and continue +leftward without gaps +
          • Considerations of when to use default arguments vs overload set +
          + +
          +

          +   [Contents]

          +
          +

          7.5.5.2 Student outcomes

          +

          A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

          +

          A student should be able to: +

          +
          +

          +   [Contents]

          +
          +

          7.5.5.3 Caveats

          +

          This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

          +
          +

          +   [Contents]

          +
          +

          7.5.5.4 Points to cover

          +

          This section lists important details for each point. +

          +
          +

          +   [Contents]

          +
          +

          7.5.6 Advanced

          +

          These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

          +

          Subsequent redeclarations of the same function may add default argument +values, which are then usable by callers. Though a single parameter +cannot be given a default argument twice in the same translation unit, +it is legal, though ill-advised, to give the same function different +default arguments in different translation units. +

          +
          +

          +   [Contents]

          +
          +

          7.6.1 Overview

          +

          Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

          + + + + + +
          LevelObjectives
          Foundationalusing and understanding UDLs
          Mainimplementing your own UDLs
          AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
          + +
          +

          +   [Contents]

          +
          +

          7.6.2 Motivation

          +

          Why is this important? Why do we want to learn/teach this +topic? +

          +
            +
          • Allows clearer expression of intent in C++. +
          • std::string: "Hello, world!"s +
          • std::chrono: 3h + 10min + 5s +
          + +
          +

          +   [Contents]

          +
          +

          7.6.3 Topic introduction

          +

          Very brief introduction to the topic. +

          +
            +
          • Explain the existence of user defined literals. Example: +12min + 17s is terse, expressive and type safe. +
          + +
          +

          +   [Contents]

          +
          +

          7.6.4.1 Background/Required Knowledge

          +

          A student: * knows how to form numeric literals, e.g., 1.5f means +a float of value 1.5. * is familiar with the major C++ +types: * bool (Boolean type) * int (Integer type) * +double (Floating-point type) * std::string (Text type) * +std::vector (Collection type) * knows that namespaces exist, and +namespace std. * knows what using-declarations and +using-directives are. [C++ object +model: declarations] +

          +
          +

          +   [Contents]

          +
          +

          7.6.4.2 Student outcomes

          +

          A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

          +

          A student should be able to: +

          +
            +
          1. use using namespace std::string_literals[1]. +
          2. recognise UDLs in code that they are reading. +
          3. figure out which UDL definitions for a used type exist. +
          4. identify parts of the standard library that make use of UDLs. +
          5. prevent the dangers of temporaries created with "blah"s as well +as with std::string{"blah"}. +
          6. effectively selects the right set of namespaces in using-directives from +the sub-namespaces std::literals. +
          + +

          [1]: explain that it’s okay to use a using-directive to “activate” +UDLs. +

          +
          +

          +   [Contents]

          +
          +

          7.6.4.3 Caveats

          +

          This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

          +
            +
          • A student gets confused by the similarities and differences between +built-in suffixes and UDLs and between UDLs from different namespaces. +
          • A student “activates” two suffixes with the same signature from +different namespaces. +
          + +
          +

          +   [Contents]

          +
          +

          7.6.4.4 Points to cover

          +

          This section lists important details for each point. +

          +
          +

          +   [Contents]

          +
          +

          7.6.5.1 Background/Required Knowledge

          +
            +
          • All of the above. +
          + +
          +

          +   [Contents]

          +
          +

          7.6.5.2 Student outcomes

          +

          A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

          +

          A student should be able to: +

          +
            +
          1. write a UDL operator of their own. +
          2. separate unrelated UDLs into distinct namespaces. +
          + +
          +

          +   [Contents]

          +
          +

          7.6.5.3 Caveats

          +

          This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

          +

          No caveats at present. #### Points to cover +

          +

          This section lists important details for each point. +

          +

          No caveats at present. ### Advanced {#udl-advanced} +

          +

          These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

          +

          See user-defined-literals. +

          + + + + + diff --git a/latest/index.html b/latest/index.html index a59fb2e..d0fe143 100644 --- a/latest/index.html +++ b/latest/index.html @@ -106,7 +106,7 @@

          Guidelines for Teaching C++

          -

          Version 0.0.14

          +

          Version 0.0.16

          SG20 (ISO C++ Study Group on Education)

          @@ -119,78 +119,76 @@

          Version 0.0.14

          • 1 Obtaining This Document: The Most Recent Version and Alternate Formats
          • -
          • 2 Disclaimer
          • -
          • 3 Context and Aim of This Guide
          • -
          • 4 Use of This Document
          • -
          • 5 Contributing to This Document
          • -
          • 6 Organization of This Document
          • -
          • 7 Summary of Modules and Topics
              -
            • 7.1 Compilation Model
            • -
            • 7.2 Preprocessor
            • -
            • 7.3 Basics Types, Objects, Values, Expressions, Statements, and Control-Flow Constructs
            • -
            • 7.4 Functions
            • -
            • 7.5 User-Defined Types (Classes)
            • -
            • 7.6 Inheritance and Class Hierarchies
            • -
            • 7.7 Compile-Time Computation
            • -
            • 7.8 Generic Programming (Templates)
            • -
            • 7.9 Error Handling
            • -
            • 7.10 Standard Library
            • -
            • 7.11 External (i.e., Non Standard) Libraries
            • -
            • 7.12 Building
            • -
            • 7.13 Testing and Debugging
            • -
            • 7.14 Tooling
            • -
            • 7.15 Software Design
            • +
            • 2 Context and Aim of This Guide
            • +
            • 3 Use of This Document
            • +
            • 4 Contributing to This Document
            • +
            • 5 Organization of This Document
            • +
            • 6 Summary of Modules and Topics
            • -
            • 8 Detailed Information for Modules and Topics
                -
              • 8.1 C++ object model: copy semantics
                  -
                • 8.1.1 Overview
                • -
                • 8.1.2 Motivation
                • -
                • 8.1.3 Topic introduction
                • -
                • 8.1.4 Foundational: How and when are copies made
                • -
                • 8.1.5 Main: Implementing user-defined copy operations
                • -
                • 8.1.6 Advanced
                • +
                • 7 Detailed Information for Modules and Topics
                    +
                  • 7.1 C++ object model: copy semantics
                  • -
                  • 8.2 Module name: Requires Expressions
                      -
                    • 8.2.1 Overview
                    • -
                    • 8.2.2 Motivation
                    • +
                    • 7.2 Module name: Requires Expressions
                    • -
                    • 8.3 Topic introduction
                        -
                      • 8.3.1 Foundational: Writing requires-expressions
                      • -
                      • 8.3.2 Main: Advanced requirements
                      • -
                      • 8.3.3 Advanced
                      • +
                      • 7.3 Topic introduction
                      • -
                      • 8.4 Functions: user-defined literals
                          -
                        • 8.4.1 Overview
                        • -
                        • 8.4.2 Motivation
                        • -
                        • 8.4.3 Topic introduction
                        • -
                        • 8.4.4 Foundational: Using UDLs
                        • -
                        • 8.4.5 Main: implementing UDLs
                        • +
                        • 7.4 Meta-error handling: static_assert
                        • -
                        • 8.5 Functions: default argument
                            -
                          • 8.5.1 Overview
                          • -
                          • 8.5.2 Motivation
                          • -
                          • 8.5.3 Topic introduction
                          • -
                          • 8.5.4 Foundational: Using and defining functions with default arguments
                          • -
                          • 8.5.5 Main: implementing *
                          • -
                          • 8.5.6 Advanced
                          • +
                          • 7.5 Functions: default argument
                          • -
                          • 8.6 Meta-error handling: static_assert
                          • -
                          • 9 Examples of Course Curricula
                          • -
                          • 10 License
                          • -
                          • 11 Contributors
                          • -
                          • 12 How To Contribute
                          • -
                          • 13 Glossary
                          • -
                          • 14 References @@ -203,14 +201,12 @@

                            <

                            The most recent version of this document is available as an online HTML document at: https://cplusplus.github.io/SG20/latest/.

                            The version of the document that you are currently reading is available in the following formats:

                              -
                            1. online (HTML) format as a single large HTML document: https://cplusplus.github.io/SG20/0.0.14/html

                            2. -
                            3. EPUB format: https://cplusplus.github.io/SG20/0.0.14/guidelines.epub

                            4. -
                            5. online (HTML) format, split across multiple HTML documents: https://cplusplus.github.io/SG20/0.0.14/html_split/ [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

                            6. +
                            7. online (HTML) format as a single large HTML document: https://cplusplus.github.io/SG20/0.0.16/html

                            8. +
                            9. EPUB format: https://cplusplus.github.io/SG20/0.0.16/guidelines.epub

                            10. +
                            11. online (HTML) format, split across multiple HTML documents: https://cplusplus.github.io/SG20/0.0.16/html_split/ [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

                            Older versions of this document are also available. In general version ver is available at https://cplusplus.github.io/SG20/ver/html. For example, version 0.1.0 (assuming that this version exists) would be available at https://cplusplus.github.io/SG20/0.1.0/html.

                            -

                            2 Disclaimer

                            -

                            This document is intended as a proof of concept to solicit feedback from others. This document is incomplete. This document likely has at least a few errors.

                            -

                            3 Context and Aim of This Guide

                            +

                            2 Context and Aim of This Guide

                            This document is intended to serve as a resource for instructors to assist in the preparation of courses on C++ in a variety of settings, including university, college, and industry environments. The main objectives of this document are as follows:

                            • to provide guidelines for content to be covered by courses of various difficulty levels on C++ (e.g., topics and learning outcomes)
                            • @@ -219,11 +215,11 @@

                              3to present examples of curriculum for specific courses

                            This document does not itself provide a curriculum for a single specific course, but is rather a set of guidelines that can be used to prepare curricula for a wide variety of courses that differ in focus and level of sophistication. (This said, however, some links to other documents with examples of curricula for specific courses may be included herein.) This document only intends to target the teaching of the most recently ratified version of the C++ standard. (This said, however, since older versions of this document are also available, these older versions may be of some use to those who need guidance in older versions of the standard, at least versions that do not predate C++20.)

                            -

                            4 Use of This Document

                            +

                            3 Use of This Document

                            [NOTE: This document follows the same license model as the C++ Core Guidelines. The LICENSE document is taken verbatim from the C++ Core Guidelines.] This document is made available under a MIT-style license. In simple terms, this license permits copying, use, modification, and creation of derivative works. A copy of the license is included in the section LICENSE.

                            -

                            5 Contributing to This Document

                            +

                            4 Contributing to This Document

                            Contributions to this document are welcome. If you would like to help with this project as a contributor, please read the section How to Contribute.

                            -

                            6 Organization of This Document

                            +

                            5 Organization of This Document

                            The various concepts (i.e., ideas) to potentially be covered are partitioned into modules. A module is very broad in scope and consists of numerous topics.

                            For each module, topics related to the module are identified. Then, for each topic, learning outcomes are specified. In order to address a wide variety of courses on C++, each topic is addressed at three proficiency levels. These proficiency levels allow each topic to be covered at more than one level of detail. This allows target audiences with different background and learning objectives to be accommodated. The three proficiency levels are as follows:

                              @@ -232,9 +228,9 @@

                              6

                              advanced: This level gives information suitable for an expert. For most topics there is an expert level of knowledge that most programmers rarely need and techniques that require detailed understanding of language rules or library implementation.

                            The remainder of this document is organized as follows. The various topics are listed grouped by module. In cases where a topic might be classified into more than one module, the topic is listed under the module of most direct relevance. This is done in order to avoid duplication of content. (In the case that a topic is equally relevant to multiple modules, the decision of which to select is made by a proverbial coin toss.) The order in which modules and topics are presented is not meant to imply any order of coverage in a course. The order in which items are listed is essentially arbitrary.

                            -

                            7 Summary of Modules and Topics

                            +

                            6 Summary of Modules and Topics

                            In the sections that follow, the various modules and topics are presented. There is one section per module. For each module, a table listing the various topics in that module is provided. The ID for a topic is linked to the detailed coverage of that topic that comes later in the document. If a topic has any learning outcomes at a given proficiency level, this is indicated by a checkmark (“✔️”). If a topic has no learning outcomes (simply because there are not any, not because the information is missing), this is indicated by an em dash (“—”). In the case that the information for a topic is completely missing, a question mark (“?”) symbol is used.

                            -

                            7.1 Compilation Model

                            +

                            6.1 Compilation Model

                            @@ -297,7 +293,7 @@

                            7.1 Compilation Model

                            -

                            7.2 Preprocessor

                            +

                            6.2 Preprocessor

                            @@ -332,7 +328,7 @@

                            7.2 Preprocessor

                            -

                            7.3 Basics Types, Objects, Values, Expressions, Statements, and Control-Flow Constructs

                            +

                            6.3 Basics Types, Objects, Values, Expressions, Statements, and Control-Flow Constructs

                            @@ -374,7 +370,7 @@

                            7.3 Basics Types, Objects,

                            -

                            7.4 Functions

                            +

                            6.4 Functions

                            @@ -430,7 +426,7 @@

                            7.4 Functions

                            -

                            7.5 User-Defined Types (Classes)

                            +

                            6.5 User-Defined Types (Classes)

                            @@ -542,7 +538,7 @@

                            7.5 User-Defined Types (Cl

                            -

                            7.6 Inheritance and Class Hierarchies

                            +

                            6.6 Inheritance and Class Hierarchies

                            @@ -570,7 +566,7 @@

                            7.6 Inheritance and Class

                            -

                            7.7 Compile-Time Computation

                            +

                            6.7 Compile-Time Computation

                            @@ -598,7 +594,7 @@

                            7.7 Compile-Time Computat

                            -

                            7.8 Generic Programming (Templates)

                            +

                            6.8 Generic Programming (Templates)

                            @@ -654,7 +650,7 @@

                            7.8 Generic Programming (T

                            -

                            7.9 Error Handling

                            +

                            6.9 Error Handling

                            @@ -696,7 +692,7 @@

                            7.9 Error Handling

                            -

                            7.10 Standard Library

                            +

                            6.10 Standard Library

                            @@ -724,7 +720,7 @@

                            7.10 Standard Library

                            -

                            7.11 External (i.e., Non Standard) Libraries

                            +

                            6.11 External (i.e., Non Standard) Libraries

                            @@ -745,7 +741,7 @@

                            7.11 External (i.e., Non

                            -

                            7.12 Building

                            +

                            6.12 Building

                            @@ -773,7 +769,7 @@

                            7.12 Building

                            -

                            7.13 Testing and Debugging

                            +

                            6.13 Testing and Debugging

                            @@ -815,7 +811,7 @@

                            7.13 Testing and Debuggin

                            -

                            7.14 Tooling

                            +

                            6.14 Tooling

                            @@ -843,7 +839,7 @@

                            7.14 Tooling

                            -

                            7.15 Software Design

                            +

                            6.15 Software Design

                            @@ -864,10 +860,10 @@

                            7.15 Software Design

                            -

                            8 Detailed Information for Modules and Topics

                            -

                            8.1 C++ object model: copy semantics

                            +

                            7 Detailed Information for Modules and Topics

                            +

                            7.1 C++ object model: copy semantics

                            Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                            -

                            8.1.1 Overview

                            +

                            7.1.1 Overview

                            Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                            @@ -895,17 +891,17 @@

                            8.1.1 Overview

                            -

                            8.1.2 Motivation

                            +

                            7.1.2 Motivation

                            Why is this important? Why do we want to learn/teach this topic?

                            Copy semantics allows the user to define how objects of a class get replicated and interact on a value level.

                            -

                            8.1.3 Topic introduction

                            +

                            7.1.3 Topic introduction

                            Very brief introduction to the topic.

                            Explains when and how objects are copied.

                            -

                            8.1.4 Foundational: How and when are copies made

                            -

                            8.1.4.1 Background/Required Knowledge

                            -

                            A student is able to: * explain what a C++ type is? [C++ object model: types] * explain what an object is? [C++ object model: objects], [C++ object model: constant objects] * define and understand class invariants?

                            +

                            7.1.4 Foundational: How and when are copies made

                            +

                            7.1.4.1 Background/Required Knowledge

                            +

                            A student is able to: * explain what a C++ type is? [C++ object model: types] * explain what an object is? [C++ object model: objects], [C++ object model: constant objects] * define and understand class invariants?

                            It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain special member functions [C++ object model: special member functions]

                            -

                            8.1.4.2 Student outcomes

                            +

                            7.1.4.2 Student outcomes

                            A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                            A student should be able to:

                              @@ -919,12 +915,12 @@

                              8.1.4.2 Stu
                            1. explain where copies are made

                            * In other languages these differences are sometimes referred to as shallow and deep copy.

                            -

                            8.1.4.3 Caveats

                            +

                            7.1.4.3 Caveats

                            This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                            • Compiler-provided copy operations may result in ownership problems (e.g., char*). These ownership problems can generally be solved by using types whose copy operations have the appropriate semantics, e.g., std::string instead of char* to hold string values.
                            -

                            8.1.4.4 Points to cover

                            +

                            7.1.4.4 Points to cover

                            This section lists important details for each point.

                            • Principle of copying @@ -939,14 +935,14 @@

                              8.1.4.4 Poin
                            • Strings (copies the value)
                          -

                          8.1.5 Main: Implementing user-defined copy operations

                          -

                          8.1.5.1 Background/Required Knowledge

                          +

                          7.1.5 Main: Implementing user-defined copy operations

                          +

                          7.1.5.1 Background/Required Knowledge

                          A student is able to: * identify special member functions [C++ object model: special member functions]

                          It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain the rule of zero [C++ object model: rule-of-zero] * explain the rule of five [C++ object model: rule-of-five]

                          -

                          8.1.5.2 Student outcomes

                          +

                          7.1.5.2 Student outcomes

                          A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                          A student should be able to: * explain when they have to implement the copy operations for their own type * Copy constructor * Copy assignment operator * implement copy operations for their own types * Optional: explain when copying with basic and strong exception guarantees is useful

                          -

                          8.1.5.3 Caveats

                          +

                          7.1.5.3 Caveats

                          This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                          • Intricacies when implementing copy operations: @@ -954,7 +950,7 @@

                            8.1.5.3 CaveatsExamples of how not to write copy operations (e.g., C++03 std::auto_ptr)

                        -

                        8.1.5.4 Points to cover

                        +

                        7.1.5.4 Points to cover

                        This section lists important details for each point.

                        • Copy constructors and copy assignment operators @@ -966,12 +962,12 @@

                          8.1.5.4 Po
                        • Copy assignment operators can be ref-qualified to avoid assigning into temporary objects.
                      -

                      8.1.6 Advanced

                      +

                      7.1.6 Advanced

                      These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                      When can copies be elided and when does the standard guarantee copy elision. References: * Abseil tip of the Week #166 * cppreference - Copy elision

                      -

                      8.2 Module name: Requires Expressions

                      +

                      7.2 Module name: Requires Expressions

                      Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                      -

                      8.2.1 Overview

                      +

                      7.2.1 Overview

                      Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                      @@ -999,24 +995,24 @@

                      8.2.1 Overview

                      -

                      8.2.2 Motivation

                      +

                      7.2.2 Motivation

                      Why is this important? Why do we want to learn/teach this topic?

                      -

                      Requires-expressions allow a developer to perform compile-time evaluation on the validity of other expressions. These are fundamental to the ability to write concepts. [Compile-time programming: concepts]

                      -

                      8.3 Topic introduction

                      +

                      Requires-expressions allow a developer to perform compile-time evaluation on the validity of other expressions. These are fundamental to the ability to write concepts. [Compile-time programming: concepts]

                      +

                      7.3 Topic introduction

                      Very brief introduction to the topic.

                      Requires-expressions are compile-time predicates which evaluate to true when their specified set of expressions are all valid for a given set of inputs.

                      -

                      8.3.1 Foundational: Writing requires-expressions

                      -

                      8.3.1.1 Background/Required Knowledge

                      +

                      7.3.1 Foundational: Writing requires-expressions

                      +

                      7.3.1.1 Background/Required Knowledge

                      A student is able to:

                      It is helpful if:

                      • The student is aware that attempting to specialize the template with types or values which do not match otherwise unstated assumptions will cause errors within the template.
                      -

                      8.3.1.2 Student outcomes

                      +

                      7.3.1.2 Student outcomes

                      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                      A student should be able to:

                        @@ -1026,10 +1022,10 @@

                        8.3.1.2 S
                      1. Write a nested-requirement to test the constexpr value of an operation, as opposed to just the syntactic validity
                      2. Use a requires-expression within a concept, requires-clause, or if constexpr condition
                      -

                      8.3.1.3 Caveats

                      +

                      7.3.1.3 Caveats

                      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                      To require that expressions, which evaluate to a boolean value like sizeof(t) == 4, evaluate to true a nested-requirement is needed (e.g., requires sizeof(t) == 4;). Omitting the requires results in a simple-requirement, which is satisfied based purely on syntactic validity, not on the result of the operation.

                      -

                      8.3.1.4 Points to cover

                      +

                      7.3.1.4 Points to cover

                      This section lists important details for each point.

                      • All requires-expression requirements terminate with a semicolon.
                      • @@ -1038,28 +1034,28 @@

                        8.3.1.4 Po
                      • type-requirements are introduced with typename and used to verify the existence of a type with a particular identifier.
                      • compound-requirements are enclosed in braces and can be used to check the resulting type of an expression.
                      • Checks are performed by the compiler, not at run time.
                      • -
                      • If covering usage of requires-expression with requires-clause, [Compile-time programming: requires clause] demonstrate requires requires and show how to ever avoid writing it by using a concept. [Compile-time programming: concepts]
                      • +
                      • If covering usage of requires-expression with requires-clause, [Compile-time programming: requires clause] demonstrate requires requires and show how to ever avoid writing it by using a concept. [Compile-time programming: concepts]
                      -

                      8.3.2 Main: Advanced requirements

                      -

                      8.3.2.1 Background/Required Knowledge

                      +

                      7.3.2 Main: Advanced requirements

                      +

                      7.3.2.1 Background/Required Knowledge

                      • All of the above.
                      • Knowledge of noexcept

                      A student is able to:

                      -

                      8.3.2.2 Student outcomes

                      +

                      7.3.2.2 Student outcomes

                      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                      A student should be able to:

                      1. Write compound-requirements which test the noexceptness of an expression.
                      2. Use a concept as the target of a compound-requirement.
                      -

                      8.3.2.3 Caveats

                      +

                      7.3.2.3 Caveats

                      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                      -

                      8.3.2.4 Points to cover

                      +

                      7.3.2.4 Points to cover

                      This section lists important details for each point.

                      • Compound-requirements allow the optional ability to test whether an expression is marked as noexcept, by using a trailing noexcept keyword.
                      • @@ -1075,11 +1071,10 @@

                        8.3.2.4 Po
                        • If the return-type-requirement of a compound-requirement is a concept, that concept is given the resulting type as the first parameter, followed by the specified parameters in the compound-requirement. { ++x } -> C<int> would substitute C<decltype((++x)), int> and check that concept C is satisfied for those parameters.
                        -

                        8.3.3 Advanced

                        -

                        See user-defined-literals.

                        -

                        8.4 Functions: user-defined literals

                        +

                        7.3.3 Advanced

                        +

                        7.4 Meta-error handling: static_assert

                        Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                        -

                        8.4.1 Overview

                        +

                        7.4.1 Overview

                        Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                        @@ -1095,74 +1090,102 @@

                        8.4.1 Overview

                        - + - + - +
                        Foundationalusing and understanding UDLsCalling static_assert with a constant expression
                        Mainimplementing your own UDLsUsing static_assert to detect contract violations and improve error messages
                        AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
                        -

                        8.4.2 Motivation

                        +

                        7.4.2 Motivation

                        Why is this important? Why do we want to learn/teach this topic?

                        -
                          -
                        • Allows clearer expression of intent in C++.
                        • -
                        • std::string: "Hello, world!"s
                        • -
                        • std::chrono: 3h + 10min + 5s
                        • -
                        -

                        8.4.3 Topic introduction

                        +

                        static_assert allows the developer to enforce that conditions which can be checked during compilation will force build errors when violated. Additionally, they are the best mechanism by which a developer can pass useful information to other developers regarding what violation occurred or what must be done, instead.

                        +

                        7.4.3 Topic introduction

                        Very brief introduction to the topic.

                        +

                        static_assert is a compile-time evaluated function that asserts the truth of a supplied predicate, issuing an optional user-supplied error message if the predicate is false.

                        +

                        7.4.4 Foundational: Calling static_assert with a constant expression

                        +

                        7.4.4.1 Background/Required Knowledge

                        +

                        A student:

                          -
                        • Explain the existence of user defined literals. Example: 12min + 17s is terse, expressive and type safe.
                        • +
                        • Should be able to explain the difference between code evaluated at compile-time and run-time
                        • +
                        • Should be able to cite some examples of compile-time known information, such as sizeof(T)
                        -

                        8.4.4 Foundational: Using UDLs

                        -

                        8.4.4.1 Background/Required Knowledge

                        -

                        A student: * knows how to form numeric literals, e.g., 1.5f means a float of value 1.5. * is familiar with the major C++ types: * bool (Boolean type) * int (Integer type) * double (Floating-point type) * std::string (Text type) * std::vector (Collection type) * knows that namespaces exist, and namespace std. * knows what using-declarations and using-directives are. [C++ object model: declarations]

                        -

                        8.4.4.2 Student outcomes

                        +

                        7.4.4.2 Student outcomes

                        A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                        A student should be able to:

                          -
                        1. use using namespace std::string_literals[1].
                        2. -
                        3. recognise UDLs in code that they are reading.
                        4. -
                        5. figure out which UDL definitions for a used type exist.
                        6. -
                        7. identify parts of the standard library that make use of UDLs.
                        8. -
                        9. prevent the dangers of temporaries created with "blah"s as well as with std::string{"blah"}.
                        10. -
                        11. effectively selects the right set of namespaces in using-directives from the sub-namespaces std::literals.
                        12. +
                        13. Assert the expected size of a structure using static_assert
                        -

                        [1]: explain that it’s okay to use a using-directive to “activate” UDLs.

                        -

                        8.4.4.3 Caveats

                        +

                        7.4.4.3 Caveats

                        This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                        +

                        7.4.4.4 Points to cover

                        +

                        This section lists important details for each point.

                          -
                        • A student gets confused by the similarities and differences between built-in suffixes and UDLs and between UDLs from different namespaces.
                        • -
                        • A student “activates” two suffixes with the same signature from different namespaces.
                        • +
                        • X
                        • +
                        • In addition to what is wrong, a good error message will inform the user of how to correct it
                        -

                        8.4.4.4 Points to cover

                        -

                        This section lists important details for each point.

                        -

                        8.4.5 Main: implementing UDLs

                        -

                        8.4.5.1 Background/Required Knowledge

                        +

                        7.4.5 Main: Contracts and static_assert

                        +

                        7.4.5.1 Background/Required Knowledge

                        • All of the above.
                        • +
                        • General understanding of compile-time requirements
                        -

                        8.4.5.2 Student outcomes

                        +

                        7.4.5.2 Student outcomes

                        A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                        A student should be able to:

                          -
                        1. write a UDL operator of their own.
                        2. -
                        3. separate unrelated UDLs into distinct namespaces.
                        4. +
                        5. Utilize static_assert to verify preconditions of a meta-function
                        6. +
                        7. Utilize static_assert to verify the results of meta-functions for known values
                        -

                        8.4.5.3 Caveats

                        +

                        7.4.5.3 Caveats

                        This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                        -

                        No caveats at present. #### Points to cover

                        +

                        7.4.5.4 Points to cover

                        This section lists important details for each point.

                        -

                        No caveats at present. ### Advanced {#udl-advanced}

                        +
                          +
                        • When writing a meta-function, use static_assert to test the results
                        • +
                        • Write static_assert calls at the scope of the code they are guarding
                        • +
                        + +

                        7.4.6 Advanced

                        These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                        -

                        8.5 Functions: default argument

                        +

                        See concepts.

                        +

                        7.5 Functions: default argument

                        Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                        -

                        8.5.1 Overview

                        +

                        7.5.1 Overview

                        Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                        Functions in C++ may be overloaded with different numbers and types of parameters. It may be of value to specify default arguments for some number of parameters, to allow a caller to avoid specifying arguments that rarely change, or to enable expanding the set of parameters while maintaining backward compatibility with existing callers.

                        @@ -1191,22 +1214,22 @@

                        8.5.1 Overview

                        -

                        8.5.2 Motivation

                        +

                        7.5.2 Motivation

                        Why is this important? Why do we want to learn/teach this topic?

                        Default arguments allow the omission of arguments with obvious or common values. Also may be utilized to extend an existing function signature without forcing changes to existing calling code.

                        -

                        8.5.3 Topic introduction

                        +

                        7.5.3 Topic introduction

                        Very brief introduction to the topic.

                        Explain how default arguments work and how to define them.

                        -

                        8.5.4 Foundational: Using and defining functions with default arguments

                        -

                        8.5.4.1 Background/Required Knowledge

                        +

                        7.5.4 Foundational: Using and defining functions with default arguments

                        +

                        7.5.4.1 Background/Required Knowledge

                        A student is able to:

                        -

                        8.5.4.2 Student outcomes

                        +

                        7.5.4.2 Student outcomes

                        A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                        A student should be able to:

                          @@ -1214,7 +1237,7 @@

                          8.5.4.2 S
                        1. Declare a function with a default argument, and omit the default in the definition’s signature
                        2. Explain when the lifetime of a default argument begins and ends
                        -

                        8.5.4.3 Caveats

                        +

                        7.5.4.3 Caveats

                        This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                        • When no forward-declaration exists, the definition serves as the declaration
                        • @@ -1222,32 +1245,31 @@

                          8.5.4.3 CaveatsAdditional default values may be specified for other parameters in repeat declarations
                        • Calling an overloaded function with fewer arguments may be ambiguous with regard to an overload with default arguments
                        -

                        8.5.4.4 Points to cover

                        +

                        7.5.4.4 Points to cover

                        This section lists important details for each point.

                        • Default value may only be specified once for each parameter among all declarations
                        • Default values must start from the rightmost parameter and continue leftward without gaps
                        • Considerations of when to use default arguments vs overload set
                        -

                        8.5.5 Main: implementing *

                        -

                        8.5.5.1 Background/Required knowledge

                        +

                        7.5.5 Main: implementing *

                        +

                        7.5.5.1 Background/Required knowledge

                        • All of the above.
                        -

                        8.5.5.2 Student outcomes

                        +

                        7.5.5.2 Student outcomes

                        A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                        A student should be able to:

                        -

                        8.5.5.3 Caveats

                        +

                        7.5.5.3 Caveats

                        This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                        -

                        8.5.5.4 Points to cover

                        +

                        7.5.5.4 Points to cover

                        This section lists important details for each point.

                        -

                        8.5.6 Advanced

                        +

                        7.5.6 Advanced

                        These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                        Subsequent redeclarations of the same function may add default argument values, which are then usable by callers. Though a single parameter cannot be given a default argument twice in the same translation unit, it is legal, though ill-advised, to give the same function different default arguments in different translation units.

                        -

                        See concepts.

                        -

                        8.6 Meta-error handling: static_assert

                        +

                        7.6 Functions: user-defined literals

                        Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                        -

                        8.6.1 Overview

                        +

                        7.6.1 Overview

                        Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                        @@ -1263,101 +1285,73 @@

                        8.6.1 Overview

                        - + - + - +
                        FoundationalCalling static_assert with a constant expressionusing and understanding UDLs
                        MainUsing static_assert to detect contract violations and improve error messagesimplementing your own UDLs
                        AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
                        -

                        8.6.2 Motivation

                        +

                        7.6.2 Motivation

                        Why is this important? Why do we want to learn/teach this topic?

                        -

                        static_assert allows the developer to enforce that conditions which can be checked during compilation will force build errors when violated. Additionally, they are the best mechanism by which a developer can pass useful information to other developers regarding what violation occurred or what must be done, instead.

                        -

                        8.6.3 Topic introduction

                        +
                          +
                        • Allows clearer expression of intent in C++.
                        • +
                        • std::string: "Hello, world!"s
                        • +
                        • std::chrono: 3h + 10min + 5s
                        • +
                        +

                        7.6.3 Topic introduction

                        Very brief introduction to the topic.

                        -

                        static_assert is a compile-time evaluated function that asserts the truth of a supplied predicate, issuing an optional user-supplied error message if the predicate is false.

                        -

                        8.6.4 Foundational: Calling static_assert with a constant expression

                        -

                        8.6.4.1 Background/Required Knowledge

                        -

                        A student:

                          -
                        • Should be able to explain the difference between code evaluated at compile-time and run-time
                        • -
                        • Should be able to cite some examples of compile-time known information, such as sizeof(T)
                        • +
                        • Explain the existence of user defined literals. Example: 12min + 17s is terse, expressive and type safe.
                        -

                        8.6.4.2 Student outcomes

                        +

                        7.6.4 Foundational: Using UDLs

                        +

                        7.6.4.1 Background/Required Knowledge

                        +

                        A student: * knows how to form numeric literals, e.g., 1.5f means a float of value 1.5. * is familiar with the major C++ types: * bool (Boolean type) * int (Integer type) * double (Floating-point type) * std::string (Text type) * std::vector (Collection type) * knows that namespaces exist, and namespace std. * knows what using-declarations and using-directives are. [C++ object model: declarations]

                        +

                        7.6.4.2 Student outcomes

                        A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                        A student should be able to:

                          -
                        1. Assert the expected size of a structure using static_assert
                        2. +
                        3. use using namespace std::string_literals[1].
                        4. +
                        5. recognise UDLs in code that they are reading.
                        6. +
                        7. figure out which UDL definitions for a used type exist.
                        8. +
                        9. identify parts of the standard library that make use of UDLs.
                        10. +
                        11. prevent the dangers of temporaries created with "blah"s as well as with std::string{"blah"}.
                        12. +
                        13. effectively selects the right set of namespaces in using-directives from the sub-namespaces std::literals.
                        -

                        8.6.4.3 Caveats

                        +

                        [1]: explain that it’s okay to use a using-directive to “activate” UDLs.

                        +

                        7.6.4.3 Caveats

                        This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                        -

                        8.6.4.4 Points to cover

                        -

                        This section lists important details for each point.

                          -
                        • X
                        • -
                        • In addition to what is wrong, a good error message will inform the user of how to correct it
                        • +
                        • A student gets confused by the similarities and differences between built-in suffixes and UDLs and between UDLs from different namespaces.
                        • +
                        • A student “activates” two suffixes with the same signature from different namespaces.
                        -

                        8.6.5 Main: Contracts and static_assert

                        -

                        8.6.5.1 Background/Required Knowledge

                        +

                        7.6.4.4 Points to cover

                        +

                        This section lists important details for each point.

                        +

                        7.6.5 Main: implementing UDLs

                        +

                        7.6.5.1 Background/Required Knowledge

                        • All of the above.
                        • -
                        • General understanding of compile-time requirements
                        -

                        8.6.5.2 Student outcomes

                        +

                        7.6.5.2 Student outcomes

                        A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                        A student should be able to:

                          -
                        1. Utilize static_assert to verify preconditions of a meta-function
                        2. -
                        3. Utilize static_assert to verify the results of meta-functions for known values
                        4. +
                        5. write a UDL operator of their own.
                        6. +
                        7. separate unrelated UDLs into distinct namespaces.
                        -

                        8.6.5.3 Caveats

                        +

                        7.6.5.3 Caveats

                        This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                        -

                        8.6.5.4 Points to cover

                        +

                        No caveats at present. #### Points to cover

                        This section lists important details for each point.

                        -
                          -
                        • When writing a meta-function, use static_assert to test the results
                        • -
                        • Write static_assert calls at the scope of the code they are guarding
                        • -
                        - -

                        8.6.6 Advanced

                        +

                        No caveats at present. ### Advanced {#udl-advanced}

                        These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                        -

                        9 Examples of Course Curricula

                        -

                        [NOTE: Anyone have any suggestions of items to add here?] The following are examples of curricula for course on C++: …

                        -

                        10 License

                        +

                        See user-defined-literals.

                        +

                        8 License

                        [NOTE: This license is copied verbatim from the C++ Core Guidelines.]

                        Copyright (c) Standard C++ Foundation and its contributors
                         
                        @@ -1400,12 +1394,12 @@ 

                        10 License

                        description of your intellectual property, including a specific URL where you believe your intellectual property is being infringed.
                        -

                        11 Contributors

                        +

                        9 Contributors

                        Christopher Di Bella
                         Florian Sattler
                         Michael Adams
                         rwdougla
                        -

                        12 How To Contribute

                        +

                        10 How To Contribute

                        Before attempting to contribute any content for consideration for inclusion in this document, please read the information below and and the referenced documents as appropriate.

                        All contributions to this project must be made in accordance with the license in section License. This teaching-guidelines document only offers guidance on teaching C++ as it is specified in the current version of the C++ standard. So, content should be presented relative to the most-recently ratified version of the standard. A detailed explanation of how to present the material for a topic is given in:

                          @@ -1419,21 +1413,21 @@

                          12 How To Contr -

                          13 Glossary

                          +

                          11 Glossary

                          Some possible terms to include in the glossary:

                          • learning objective
                          • learning outcome
                          -

                          14 References

                          -

                          14.1 References on Learning Outcomes

                          +

                          12 References

                          +

                          12.1 References on Learning Outcomes

                          - +
                          • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — Standing Document for SG20: Guidelines for Teaching C++ to Beginners. https://wg21.link/p1389.

                          • Christopher Di Bella. P1725R0 — Modular Topic Design. https://wg21.link/p1725.

                          • From cd937ac4b48a1499246c5783be1eb61aa79ddc56 Mon Sep 17 00:00:00 2001 From: vulder Date: Sun, 6 Feb 2022 22:29:45 +0000 Subject: [PATCH 17/21] deploy: cfe4a20cb84bb5575f4c5f0cfa42e9b5463238ea --- 0.0.17/guidelines.epub | Bin 0 -> 29655 bytes 0.0.17/html/images/cpp_logo.png | Bin 0 -> 23613 bytes 0.0.17/html/index.html | 1443 +++++++++++++++++ 0.0.17/html_split/Advanced.html | 54 + .../Background_002fRequired-Knowledge.html | 60 + .../Background_002fRequired-knowledge.html | 54 + ...ments-and-Control_002dFlow-Constructs.html | 60 + 0.0.17/html_split/Building.html | 57 + ...002b_002b-object-model-copy-semantics.html | 67 + 0.0.17/html_split/Caveats.html | 55 + 0.0.17/html_split/Compilation-Model.html | 62 + .../Compile_002dTime-Computation.html | 57 + .../Context-and-Aim-of-This-Guide.html | 76 + .../Contributing-to-This-Document.html | 55 + 0.0.17/html_split/Contributors.html | 57 + ...ed-Information-for-Modules-and-Topics.html | 67 + 0.0.17/html_split/Error-Handling.html | 59 + .../External-ie-Non-Standard-Libraries.html | 56 + ...005fassert-with-a-constant-expression.html | 64 + ...dational-How-and-when-are-copies-made.html | 61 + .../html_split/Foundational-Using-UDLs.html | 61 + ...ning-functions-with-default-arguments.html | 62 + ...onal-Writing-requires_002dexpressions.html | 60 + .../Functions-default-argument.html | 67 + .../Functions-user_002ddefined-literals.html | 65 + 0.0.17/html_split/Functions.html | 61 + .../Generic-Programming-Templates.html | 61 + 0.0.17/html_split/Glossary.html | 58 + 0.0.17/html_split/How-To-Contribute.html | 89 + .../Inheritance-and-Class-Hierarchies.html | 57 + 0.0.17/html_split/License.html | 99 ++ .../Main-Advanced-requirements.html | 60 + .../Main-Contracts-and-static_005fassert.html | 62 + ...ting-user_002ddefined-copy-operations.html | 61 + 0.0.17/html_split/Main-implementing-UDLs.html | 59 + .../html_split/Main-implementing-_002a.html | 62 + ..._002derror-handling-static_005fassert.html | 69 + .../Module-name-Requires-Expressions.html | 60 + 0.0.17/html_split/Motivation.html | 60 + ...-Recent-Version-and-Alternate-Formats.html | 78 + .../Organization-of-This-Document.html | 95 ++ 0.0.17/html_split/Overview.html | 62 + 0.0.17/html_split/Points-to-cover.html | 59 + 0.0.17/html_split/Preprocessor.html | 58 + .../References-on-Learning-Outcomes.html | 71 + 0.0.17/html_split/References.html | 59 + 0.0.17/html_split/Software-Design.html | 56 + 0.0.17/html_split/Standard-Library.html | 57 + 0.0.17/html_split/Student-outcomes.html | 61 + .../Summary-of-Modules-and-Topics.html | 100 ++ 0.0.17/html_split/Testing-and-Debugging.html | 59 + 0.0.17/html_split/Tooling.html | 57 + 0.0.17/html_split/Topic-introduction.html | 57 + 0.0.17/html_split/Use-of-This-Document.html | 58 + .../User_002dDefined-Types-Classes.html | 69 + ...ed-to-C_002b_002b-Teaching-Guidelines.html | 69 + 0.0.17/html_split/_0023advanced.html | 40 + 0.0.17/html_split/_0023advanced_002d1.html | 40 + 0.0.17/html_split/_0023advanced_002d2.html | 40 + 0.0.17/html_split/_0023advanced_002d3.html | 40 + ..._0023backgroundrequired_002dknowledge.html | 40 + ...ackgroundrequired_002dknowledge_002d1.html | 40 + ...ackgroundrequired_002dknowledge_002d2.html | 40 + ...ackgroundrequired_002dknowledge_002d3.html | 40 + ...ackgroundrequired_002dknowledge_002d4.html | 40 + ...ackgroundrequired_002dknowledge_002d5.html | 40 + ...ackgroundrequired_002dknowledge_002d6.html | 40 + ...ackgroundrequired_002dknowledge_002d7.html | 40 + ...ackgroundrequired_002dknowledge_002d8.html | 40 + ...ackgroundrequired_002dknowledge_002d9.html | 40 + ...d_002dcontrol_002dflow_002dconstructs.html | 40 + 0.0.17/html_split/_0023building.html | 40 + ...ject_002dmodel_002dcopy_002dsemantics.html | 40 + 0.0.17/html_split/_0023caveats.html | 40 + 0.0.17/html_split/_0023caveats_002d1.html | 40 + 0.0.17/html_split/_0023caveats_002d2.html | 40 + 0.0.17/html_split/_0023caveats_002d3.html | 40 + 0.0.17/html_split/_0023caveats_002d4.html | 40 + 0.0.17/html_split/_0023caveats_002d5.html | 40 + 0.0.17/html_split/_0023caveats_002d6.html | 40 + 0.0.17/html_split/_0023caveats_002d7.html | 40 + 0.0.17/html_split/_0023caveats_002d8.html | 40 + 0.0.17/html_split/_0023caveats_002d9.html | 40 + .../_0023compilation_002dmodel.html | 40 + ..._0023compile_002dtime_002dcomputation.html | 40 + ...and_002daim_002dof_002dthis_002dguide.html | 40 + ...ributing_002dto_002dthis_002ddocument.html | 40 + 0.0.17/html_split/_0023contributors.html | 40 + ...02dfor_002dmodules_002dand_002dtopics.html | 40 + .../html_split/_0023error_002dhandling.html | 40 + ...2e_002dnon_002dstandard_002dlibraries.html | 40 + ...ith_002da_002dconstant_002dexpression.html | 40 + ..._002dwhen_002dare_002dcopies_002dmade.html | 40 + ...ns_002dwith_002ddefault_002darguments.html | 40 + .../_0023foundational_002dusing_002dudls.html | 40 + ...dwriting_002drequires_002dexpressions.html | 40 + 0.0.17/html_split/_0023functions.html | 40 + ...023functions_002ddefault_002dargument.html | 40 + ...ons_002duser_002ddefined_002dliterals.html | 40 + ...generic_002dprogramming_002dtemplates.html | 40 + 0.0.17/html_split/_0023glossary.html | 40 + .../_0023how_002dto_002dcontribute.html | 40 + ...nce_002dand_002dclass_002dhierarchies.html | 40 + 0.0.17/html_split/_0023license.html | 40 + ...023main_002dadvanced_002drequirements.html | 40 + ...ntracts_002dand_002dstatic_005fassert.html | 40 + .../_0023main_002dimplementing.html | 40 + .../_0023main_002dimplementing_002dudls.html | 40 + ...r_002ddefined_002dcopy_002doperations.html | 40 + ...or_002dhandling_002dstatic_005fassert.html | 40 + ...002dname_002drequires_002dexpressions.html | 40 + 0.0.17/html_split/_0023motivation.html | 40 + 0.0.17/html_split/_0023motivation_002d1.html | 40 + 0.0.17/html_split/_0023motivation_002d2.html | 40 + 0.0.17/html_split/_0023motivation_002d3.html | 40 + 0.0.17/html_split/_0023motivation_002d4.html | 40 + ...ion_002dand_002dalternate_002dformats.html | 40 + ...nization_002dof_002dthis_002ddocument.html | 40 + 0.0.17/html_split/_0023overview.html | 40 + 0.0.17/html_split/_0023overview_002d1.html | 40 + 0.0.17/html_split/_0023overview_002d2.html | 40 + 0.0.17/html_split/_0023overview_002d3.html | 40 + 0.0.17/html_split/_0023overview_002d4.html | 40 + .../_0023points_002dto_002dcover.html | 40 + .../_0023points_002dto_002dcover_002d1.html | 40 + .../_0023points_002dto_002dcover_002d2.html | 40 + .../_0023points_002dto_002dcover_002d3.html | 40 + .../_0023points_002dto_002dcover_002d4.html | 40 + .../_0023points_002dto_002dcover_002d5.html | 40 + .../_0023points_002dto_002dcover_002d6.html | 40 + .../_0023points_002dto_002dcover_002d7.html | 40 + .../_0023points_002dto_002dcover_002d8.html | 40 + 0.0.17/html_split/_0023preprocessor.html | 40 + 0.0.17/html_split/_0023references.html | 40 + ...nces_002don_002dlearning_002doutcomes.html | 40 + .../html_split/_0023software_002ddesign.html | 40 + .../html_split/_0023standard_002dlibrary.html | 40 + .../html_split/_0023student_002doutcomes.html | 40 + .../_0023student_002doutcomes_002d1.html | 40 + .../_0023student_002doutcomes_002d2.html | 40 + .../_0023student_002doutcomes_002d3.html | 40 + .../_0023student_002doutcomes_002d4.html | 40 + .../_0023student_002doutcomes_002d5.html | 40 + .../_0023student_002doutcomes_002d6.html | 40 + .../_0023student_002doutcomes_002d7.html | 40 + .../_0023student_002doutcomes_002d8.html | 40 + .../_0023student_002doutcomes_002d9.html | 40 + ...002dof_002dmodules_002dand_002dtopics.html | 40 + .../_0023testing_002dand_002ddebugging.html | 40 + 0.0.17/html_split/_0023tooling.html | 40 + .../_0023topic_002dintroduction.html | 40 + .../_0023topic_002dintroduction_002d1.html | 40 + .../_0023topic_002dintroduction_002d2.html | 40 + .../_0023topic_002dintroduction_002d3.html | 40 + .../_0023topic_002dintroduction_002d4.html | 40 + ..._0023use_002dof_002dthis_002ddocument.html | 40 + ...ser_002ddefined_002dtypes_002dclasses.html | 40 + ...dto_002dc_002dteaching_002dguidelines.html | 40 + 0.0.17/html_split/index.html | 234 +++ 0.0.17/html_split/unknown_node.html | 849 ++++++++++ latest/index.html | 276 ++-- 161 files changed, 10123 insertions(+), 138 deletions(-) create mode 100644 0.0.17/guidelines.epub create mode 100644 0.0.17/html/images/cpp_logo.png create mode 100644 0.0.17/html/index.html create mode 100644 0.0.17/html_split/Advanced.html create mode 100644 0.0.17/html_split/Background_002fRequired-Knowledge.html create mode 100644 0.0.17/html_split/Background_002fRequired-knowledge.html create mode 100644 0.0.17/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html create mode 100644 0.0.17/html_split/Building.html create mode 100644 0.0.17/html_split/C_002b_002b-object-model-copy-semantics.html create mode 100644 0.0.17/html_split/Caveats.html create mode 100644 0.0.17/html_split/Compilation-Model.html create mode 100644 0.0.17/html_split/Compile_002dTime-Computation.html create mode 100644 0.0.17/html_split/Context-and-Aim-of-This-Guide.html create mode 100644 0.0.17/html_split/Contributing-to-This-Document.html create mode 100644 0.0.17/html_split/Contributors.html create mode 100644 0.0.17/html_split/Detailed-Information-for-Modules-and-Topics.html create mode 100644 0.0.17/html_split/Error-Handling.html create mode 100644 0.0.17/html_split/External-ie-Non-Standard-Libraries.html create mode 100644 0.0.17/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html create mode 100644 0.0.17/html_split/Foundational-How-and-when-are-copies-made.html create mode 100644 0.0.17/html_split/Foundational-Using-UDLs.html create mode 100644 0.0.17/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html create mode 100644 0.0.17/html_split/Foundational-Writing-requires_002dexpressions.html create mode 100644 0.0.17/html_split/Functions-default-argument.html create mode 100644 0.0.17/html_split/Functions-user_002ddefined-literals.html create mode 100644 0.0.17/html_split/Functions.html create mode 100644 0.0.17/html_split/Generic-Programming-Templates.html create mode 100644 0.0.17/html_split/Glossary.html create mode 100644 0.0.17/html_split/How-To-Contribute.html create mode 100644 0.0.17/html_split/Inheritance-and-Class-Hierarchies.html create mode 100644 0.0.17/html_split/License.html create mode 100644 0.0.17/html_split/Main-Advanced-requirements.html create mode 100644 0.0.17/html_split/Main-Contracts-and-static_005fassert.html create mode 100644 0.0.17/html_split/Main-Implementing-user_002ddefined-copy-operations.html create mode 100644 0.0.17/html_split/Main-implementing-UDLs.html create mode 100644 0.0.17/html_split/Main-implementing-_002a.html create mode 100644 0.0.17/html_split/Meta_002derror-handling-static_005fassert.html create mode 100644 0.0.17/html_split/Module-name-Requires-Expressions.html create mode 100644 0.0.17/html_split/Motivation.html create mode 100644 0.0.17/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html create mode 100644 0.0.17/html_split/Organization-of-This-Document.html create mode 100644 0.0.17/html_split/Overview.html create mode 100644 0.0.17/html_split/Points-to-cover.html create mode 100644 0.0.17/html_split/Preprocessor.html create mode 100644 0.0.17/html_split/References-on-Learning-Outcomes.html create mode 100644 0.0.17/html_split/References.html create mode 100644 0.0.17/html_split/Software-Design.html create mode 100644 0.0.17/html_split/Standard-Library.html create mode 100644 0.0.17/html_split/Student-outcomes.html create mode 100644 0.0.17/html_split/Summary-of-Modules-and-Topics.html create mode 100644 0.0.17/html_split/Testing-and-Debugging.html create mode 100644 0.0.17/html_split/Tooling.html create mode 100644 0.0.17/html_split/Topic-introduction.html create mode 100644 0.0.17/html_split/Use-of-This-Document.html create mode 100644 0.0.17/html_split/User_002dDefined-Types-Classes.html create mode 100644 0.0.17/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html create mode 100644 0.0.17/html_split/_0023advanced.html create mode 100644 0.0.17/html_split/_0023advanced_002d1.html create mode 100644 0.0.17/html_split/_0023advanced_002d2.html create mode 100644 0.0.17/html_split/_0023advanced_002d3.html create mode 100644 0.0.17/html_split/_0023backgroundrequired_002dknowledge.html create mode 100644 0.0.17/html_split/_0023backgroundrequired_002dknowledge_002d1.html create mode 100644 0.0.17/html_split/_0023backgroundrequired_002dknowledge_002d2.html create mode 100644 0.0.17/html_split/_0023backgroundrequired_002dknowledge_002d3.html create mode 100644 0.0.17/html_split/_0023backgroundrequired_002dknowledge_002d4.html create mode 100644 0.0.17/html_split/_0023backgroundrequired_002dknowledge_002d5.html create mode 100644 0.0.17/html_split/_0023backgroundrequired_002dknowledge_002d6.html create mode 100644 0.0.17/html_split/_0023backgroundrequired_002dknowledge_002d7.html create mode 100644 0.0.17/html_split/_0023backgroundrequired_002dknowledge_002d8.html create mode 100644 0.0.17/html_split/_0023backgroundrequired_002dknowledge_002d9.html create mode 100644 0.0.17/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html create mode 100644 0.0.17/html_split/_0023building.html create mode 100644 0.0.17/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html create mode 100644 0.0.17/html_split/_0023caveats.html create mode 100644 0.0.17/html_split/_0023caveats_002d1.html create mode 100644 0.0.17/html_split/_0023caveats_002d2.html create mode 100644 0.0.17/html_split/_0023caveats_002d3.html create mode 100644 0.0.17/html_split/_0023caveats_002d4.html create mode 100644 0.0.17/html_split/_0023caveats_002d5.html create mode 100644 0.0.17/html_split/_0023caveats_002d6.html create mode 100644 0.0.17/html_split/_0023caveats_002d7.html create mode 100644 0.0.17/html_split/_0023caveats_002d8.html create mode 100644 0.0.17/html_split/_0023caveats_002d9.html create mode 100644 0.0.17/html_split/_0023compilation_002dmodel.html create mode 100644 0.0.17/html_split/_0023compile_002dtime_002dcomputation.html create mode 100644 0.0.17/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html create mode 100644 0.0.17/html_split/_0023contributing_002dto_002dthis_002ddocument.html create mode 100644 0.0.17/html_split/_0023contributors.html create mode 100644 0.0.17/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html create mode 100644 0.0.17/html_split/_0023error_002dhandling.html create mode 100644 0.0.17/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html create mode 100644 0.0.17/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html create mode 100644 0.0.17/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html create mode 100644 0.0.17/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html create mode 100644 0.0.17/html_split/_0023foundational_002dusing_002dudls.html create mode 100644 0.0.17/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html create mode 100644 0.0.17/html_split/_0023functions.html create mode 100644 0.0.17/html_split/_0023functions_002ddefault_002dargument.html create mode 100644 0.0.17/html_split/_0023functions_002duser_002ddefined_002dliterals.html create mode 100644 0.0.17/html_split/_0023generic_002dprogramming_002dtemplates.html create mode 100644 0.0.17/html_split/_0023glossary.html create mode 100644 0.0.17/html_split/_0023how_002dto_002dcontribute.html create mode 100644 0.0.17/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html create mode 100644 0.0.17/html_split/_0023license.html create mode 100644 0.0.17/html_split/_0023main_002dadvanced_002drequirements.html create mode 100644 0.0.17/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html create mode 100644 0.0.17/html_split/_0023main_002dimplementing.html create mode 100644 0.0.17/html_split/_0023main_002dimplementing_002dudls.html create mode 100644 0.0.17/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html create mode 100644 0.0.17/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html create mode 100644 0.0.17/html_split/_0023module_002dname_002drequires_002dexpressions.html create mode 100644 0.0.17/html_split/_0023motivation.html create mode 100644 0.0.17/html_split/_0023motivation_002d1.html create mode 100644 0.0.17/html_split/_0023motivation_002d2.html create mode 100644 0.0.17/html_split/_0023motivation_002d3.html create mode 100644 0.0.17/html_split/_0023motivation_002d4.html create mode 100644 0.0.17/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html create mode 100644 0.0.17/html_split/_0023organization_002dof_002dthis_002ddocument.html create mode 100644 0.0.17/html_split/_0023overview.html create mode 100644 0.0.17/html_split/_0023overview_002d1.html create mode 100644 0.0.17/html_split/_0023overview_002d2.html create mode 100644 0.0.17/html_split/_0023overview_002d3.html create mode 100644 0.0.17/html_split/_0023overview_002d4.html create mode 100644 0.0.17/html_split/_0023points_002dto_002dcover.html create mode 100644 0.0.17/html_split/_0023points_002dto_002dcover_002d1.html create mode 100644 0.0.17/html_split/_0023points_002dto_002dcover_002d2.html create mode 100644 0.0.17/html_split/_0023points_002dto_002dcover_002d3.html create mode 100644 0.0.17/html_split/_0023points_002dto_002dcover_002d4.html create mode 100644 0.0.17/html_split/_0023points_002dto_002dcover_002d5.html create mode 100644 0.0.17/html_split/_0023points_002dto_002dcover_002d6.html create mode 100644 0.0.17/html_split/_0023points_002dto_002dcover_002d7.html create mode 100644 0.0.17/html_split/_0023points_002dto_002dcover_002d8.html create mode 100644 0.0.17/html_split/_0023preprocessor.html create mode 100644 0.0.17/html_split/_0023references.html create mode 100644 0.0.17/html_split/_0023references_002don_002dlearning_002doutcomes.html create mode 100644 0.0.17/html_split/_0023software_002ddesign.html create mode 100644 0.0.17/html_split/_0023standard_002dlibrary.html create mode 100644 0.0.17/html_split/_0023student_002doutcomes.html create mode 100644 0.0.17/html_split/_0023student_002doutcomes_002d1.html create mode 100644 0.0.17/html_split/_0023student_002doutcomes_002d2.html create mode 100644 0.0.17/html_split/_0023student_002doutcomes_002d3.html create mode 100644 0.0.17/html_split/_0023student_002doutcomes_002d4.html create mode 100644 0.0.17/html_split/_0023student_002doutcomes_002d5.html create mode 100644 0.0.17/html_split/_0023student_002doutcomes_002d6.html create mode 100644 0.0.17/html_split/_0023student_002doutcomes_002d7.html create mode 100644 0.0.17/html_split/_0023student_002doutcomes_002d8.html create mode 100644 0.0.17/html_split/_0023student_002doutcomes_002d9.html create mode 100644 0.0.17/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html create mode 100644 0.0.17/html_split/_0023testing_002dand_002ddebugging.html create mode 100644 0.0.17/html_split/_0023tooling.html create mode 100644 0.0.17/html_split/_0023topic_002dintroduction.html create mode 100644 0.0.17/html_split/_0023topic_002dintroduction_002d1.html create mode 100644 0.0.17/html_split/_0023topic_002dintroduction_002d2.html create mode 100644 0.0.17/html_split/_0023topic_002dintroduction_002d3.html create mode 100644 0.0.17/html_split/_0023topic_002dintroduction_002d4.html create mode 100644 0.0.17/html_split/_0023use_002dof_002dthis_002ddocument.html create mode 100644 0.0.17/html_split/_0023user_002ddefined_002dtypes_002dclasses.html create mode 100644 0.0.17/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html create mode 100644 0.0.17/html_split/index.html create mode 100644 0.0.17/html_split/unknown_node.html diff --git a/0.0.17/guidelines.epub b/0.0.17/guidelines.epub new file mode 100644 index 0000000000000000000000000000000000000000..5439fad9e0a8a22824fde3384ecafe1dd27d6809 GIT binary patch literal 29655 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

                            -%s7sarLo0H5IWXND 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%0Dy_SK*j*&yQc&p42)x4 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 literal 0 HcmV?d00001 diff --git a/0.0.17/html/index.html b/0.0.17/html/index.html new file mode 100644 index 0000000..c1fd816 --- /dev/null +++ b/0.0.17/html/index.html @@ -0,0 +1,1443 @@ + + + + + + + Guidelines for Teaching C++ + + + + + + + + + + + + + + + + + + + + + Guidelines for Teaching C++ + + + + + + + +

                            + +
                            + +
                            + +
                            + +
                            +

                            Guidelines for Teaching C++

                            + +

                            Version 0.0.17

                            + +

                            SG20 (ISO C++ Study Group on Education)

                            +
                            +
                            + +
                            +
                            +
                            + +
                            +
                            + +
                            +

                            1 Obtaining This Document: The Most Recent Version and Alternate Formats

                            +

                            The most recent version of this document is available as an online HTML document at: https://cplusplus.github.io/SG20/latest/.

                            +

                            The version of the document that you are currently reading is available in the following formats:

                            +
                              +
                            1. online (HTML) format as a single large HTML document: https://cplusplus.github.io/SG20/0.0.17/html

                            2. +
                            3. EPUB format: https://cplusplus.github.io/SG20/0.0.17/guidelines.epub

                            4. +
                            5. online (HTML) format, split across multiple HTML documents: https://cplusplus.github.io/SG20/0.0.17/html_split/ [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

                            6. +
                            +

                            Older versions of this document are also available. In general version ver is available at https://cplusplus.github.io/SG20/ver/html. For example, version 0.1.0 (assuming that this version exists) would be available at https://cplusplus.github.io/SG20/0.1.0/html.

                            +

                            2 Context and Aim of This Guide

                            +

                            This document is intended to serve as a resource for instructors to assist in the preparation of courses on C++ in a variety of settings, including university, college, and industry environments. The main objectives of this document are as follows:

                            +
                              +
                            • to provide guidelines for content to be covered by courses of various difficulty levels on C++ (e.g., topics and learning outcomes)
                            • +
                            • to note some common misunderstandings and problematic points that may be encountered when teaching particular topics
                            • +
                            • to suggest resources useful for teaching C++
                            • +
                            • to present examples of curriculum for specific courses
                            • +
                            +

                            This document does not itself provide a curriculum for a single specific course, but is rather a set of guidelines that can be used to prepare curricula for a wide variety of courses that differ in focus and level of sophistication. (This said, however, some links to other documents with examples of curricula for specific courses may be included herein.) This document only intends to target the teaching of the most recently ratified version of the C++ standard. (This said, however, since older versions of this document are also available, these older versions may be of some use to those who need guidance in older versions of the standard, at least versions that do not predate C++20.)

                            +

                            3 Use of This Document

                            +

                            [NOTE: This document follows the same license model as the C++ Core Guidelines. The LICENSE document is taken verbatim from the C++ Core Guidelines.] This document is made available under a MIT-style license. In simple terms, this license permits copying, use, modification, and creation of derivative works. A copy of the license is included in the section LICENSE.

                            +

                            4 Contributing to This Document

                            +

                            Contributions to this document are welcome. If you would like to help with this project as a contributor, please read the section How to Contribute.

                            +

                            5 Organization of This Document

                            +

                            The various concepts (i.e., ideas) to potentially be covered are partitioned into modules. A module is very broad in scope and consists of numerous topics.

                            +

                            For each module, topics related to the module are identified. Then, for each topic, learning outcomes are specified. In order to address a wide variety of courses on C++, each topic is addressed at three proficiency levels. These proficiency levels allow each topic to be covered at more than one level of detail. This allows target audiences with different background and learning objectives to be accommodated. The three proficiency levels are as follows:

                            +
                              +
                            • foundational: This level gives the learner the idea that a facility exists, what benefits it offers, and the basic ways of using it.

                            • +
                            • main: This level shows mainstream uses and techniques. For abstraction and organizational mechanisms it also demonstrates how to build them. This level should also give the learner a basic (but not detailed) understanding of how a facility might be implemented so that the learner can have a first-order understanding of any costs involved.

                            • +
                            • advanced: This level gives information suitable for an expert. For most topics there is an expert level of knowledge that most programmers rarely need and techniques that require detailed understanding of language rules or library implementation.

                            • +
                            +

                            The remainder of this document is organized as follows. The various topics are listed grouped by module. In cases where a topic might be classified into more than one module, the topic is listed under the module of most direct relevance. This is done in order to avoid duplication of content. (In the case that a topic is equally relevant to multiple modules, the decision of which to select is made by a proverbial coin toss.) The order in which modules and topics are presented is not meant to imply any order of coverage in a course. The order in which items are listed is essentially arbitrary.

                            +

                            6 Summary of Modules and Topics

                            +

                            In the sections that follow, the various modules and topics are presented. There is one section per module. For each module, a table listing the various topics in that module is provided. The ID for a topic is linked to the detailed coverage of that topic that comes later in the document. If a topic has any learning outcomes at a given proficiency level, this is indicated by a checkmark (“✔️”). If a topic has no learning outcomes (simply because there are not any, not because the information is missing), this is indicated by an em dash (“—”). In the case that the information for a topic is completely missing, a question mark (“?”) symbol is used.

                            +

                            6.1 Compilation Model

                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                            IDUnitFoundationalMainAdvanced
                            [?]Translation Units???
                            [?]Headers???
                            [?]Modules???
                            [?]Name Mangling???
                            [?]Phases of Translation???
                            [?]Separate Compilation???
                            [?]Linkage???
                            +

                            6.2 Preprocessor

                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                            IDUnitFoundationalMainAdvanced
                            [?]Preprocessor Metaprogramming???
                            [?]Inclusion???
                            [?]Macros???
                            +

                            6.3 Basics Types, Objects, Values, Expressions, Statements, and Control-Flow Constructs

                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                            IDUnitFoundationalMainAdvanced
                            [?]Constant Objects???
                            [?]Declarations and Definitions???
                            [?]Selection Constructs (e.g., if, ternary)???
                            [?]Looping Constructs (e.g., for, while, etc.)???
                            +

                            6.4 Functions

                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                            IDUnitFoundationalMainAdvanced
                            [?]Calling Functions???
                            [?]Parameter Passing (e.g., Passing By Value and Reference)???
                            [func-args]Default Arguments✔️
                            [?]Returning Multiple Values???
                            [?]Overloading???
                            [udl]User-Defined Literals✔️✔️
                            +

                            6.5 User-Defined Types (Classes)

                            + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                            IDUnitFoundationalMainAdvanced
                            [?]Special Member Functions???
                            [?]Types???
                            [?]Conversions???
                            [?]Constructors and Destructors???
                            [?]Move/Copy Constructors and Assignment Operators???
                            [?]Member Functions???
                            [?]Sum Types???
                            [?]User-Defined Literals???
                            [?]Special Member Functions???
                            [?]Guidelines for Special Member Functions (e.g., Rule of Five, Rule of Zero)???
                            [copy]Copy Semantics✔️✔️
                            [?]Moving and Copying???
                            [?]Lambdas???
                            +

                            6.6 Inheritance and Class Hierarchies

                            + + + + + + + + + + + + + + + + + + + + + + + + + + +
                            IDUnitFoundationalMainAdvanced
                            [?]Virtual Functions???
                            [?]Run-Time Type Information???
                            +

                            6.7 Compile-Time Computation

                            + + + + + + + + + + + + + + + + + + + + + + + + + + +
                            IDUnitFoundationalMainAdvanced
                            [?]Constant Expressions and Constant Evaluation???
                            [static-assert]static_assert✔️✔️
                            +

                            6.8 Generic Programming (Templates)

                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                            IDUnitFoundationalMainAdvanced
                            [?]Concepts???
                            [?]SFINAE???
                            [?]Template Metaprogramming???
                            [?]Function Templates???
                            [?]Requires Clauses???
                            [req-expr]Requires Expressions✔️✔️
                            +

                            6.9 Error Handling

                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                            IDUnitFoundationalMainAdvanced
                            [?]Classes of Errors???
                            [?]errno???
                            [?]Error Codes???
                            [?]Exception Handling???
                            +

                            6.10 Standard Library

                            + + + + + + + + + + + + + + + + + + + + + + + + + + +
                            IDUnitFoundationalMainAdvanced
                            [?]Input/Output (I/O)???
                            [?]Containers, Iterators, and Algorithms???
                            +

                            6.11 External (i.e., Non Standard) Libraries

                            + + + + + + + + + + + + + + + + + + + +
                            IDUnitFoundationalMainAdvanced
                            [?]Graphical User Interfaces???
                            +

                            6.12 Building

                            + + + + + + + + + + + + + + + + + + + + + + + + + + +
                            IDUnitFoundationalMainAdvanced
                            [?]Software Build Tools???
                            [?]Strategies for Handling Build Problems???
                            +

                            6.13 Testing and Debugging

                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                            IDUnitFoundationalMainAdvanced
                            [?]Source-Level Debuggers???
                            [?]Code Sanitizers???
                            [?]Test Frameworks???
                            [?]Debugging Strategies???
                            +

                            6.14 Tooling

                            + + + + + + + + + + + + + + + + + + + + + + + + + + +
                            IDUnitFoundationalMainAdvanced
                            [?]Compiler Toolchains???
                            [?]IDEs???
                            +

                            6.15 Software Design

                            + + + + + + + + + + + + + + + + + + + +
                            IDUnitFoundationalMainAdvanced
                            [?]Design by Contract???
                            +

                            7 Detailed Information for Modules and Topics

                            +

                            7.1 Meta-error handling: static_assert

                            +

                            Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                            +

                            7.1.1 Overview

                            +

                            Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                            + ++++ + + + + + + + + + + + + + + + + + + + + +
                            LevelObjectives
                            FoundationalCalling static_assert with a constant expression
                            MainUsing static_assert to detect contract violations and improve error messages
                            Advanced
                            +

                            7.1.2 Motivation

                            +

                            Why is this important? Why do we want to learn/teach this topic?

                            +

                            static_assert allows the developer to enforce that conditions which can be checked during compilation will force build errors when violated. Additionally, they are the best mechanism by which a developer can pass useful information to other developers regarding what violation occurred or what must be done, instead.

                            +

                            7.1.3 Topic introduction

                            +

                            Very brief introduction to the topic.

                            +

                            static_assert is a compile-time evaluated function that asserts the truth of a supplied predicate, issuing an optional user-supplied error message if the predicate is false.

                            +

                            7.1.4 Foundational: Calling static_assert with a constant expression

                            +

                            7.1.4.1 Background/Required Knowledge

                            +

                            A student:

                            +
                              +
                            • Should be able to explain the difference between code evaluated at compile-time and run-time
                            • +
                            • Should be able to cite some examples of compile-time known information, such as sizeof(T)
                            • +
                            +

                            7.1.4.2 Student outcomes

                            +

                            A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                            +

                            A student should be able to:

                            +
                              +
                            1. Assert the expected size of a structure using static_assert
                            2. +
                            +

                            7.1.4.3 Caveats

                            +

                            This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                            +

                            7.1.4.4 Points to cover

                            +

                            This section lists important details for each point.

                            +
                              +
                            • X
                            • +
                            • In addition to what is wrong, a good error message will inform the user of how to correct it
                            • +
                            +

                            7.1.5 Main: Contracts and static_assert

                            +

                            7.1.5.1 Background/Required Knowledge

                            +
                              +
                            • All of the above.
                            • +
                            • General understanding of compile-time requirements
                            • +
                            +

                            7.1.5.2 Student outcomes

                            +

                            A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                            +

                            A student should be able to:

                            +
                              +
                            1. Utilize static_assert to verify preconditions of a meta-function
                            2. +
                            3. Utilize static_assert to verify the results of meta-functions for known values
                            4. +
                            +

                            7.1.5.3 Caveats

                            +

                            This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                            +

                            7.1.5.4 Points to cover

                            +

                            This section lists important details for each point.

                            +
                              +
                            • When writing a meta-function, use static_assert to test the results
                            • +
                            • Write static_assert calls at the scope of the code they are guarding
                            • +
                            + +

                            7.1.6 Advanced

                            +

                            These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                            +

                            7.2 Module name: Requires Expressions

                            +

                            Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                            +

                            7.2.1 Overview

                            +

                            Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                            + ++++ + + + + + + + + + + + + + + + + + + + + +
                            LevelObjectives
                            FoundationalDefine and use requires-expressions to check satisfaction of expressions by given parameters
                            MainDefine and use requires-expressions to check properties of expressions
                            Advanced
                            +

                            7.2.2 Motivation

                            +

                            Why is this important? Why do we want to learn/teach this topic?

                            +

                            Requires-expressions allow a developer to perform compile-time evaluation on the validity of other expressions. These are fundamental to the ability to write concepts. [Compile-time programming: concepts]

                            +

                            7.3 Topic introduction

                            +

                            Very brief introduction to the topic.

                            +

                            Requires-expressions are compile-time predicates which evaluate to true when their specified set of expressions are all valid for a given set of inputs.

                            +

                            7.3.1 Foundational: Writing requires-expressions

                            +

                            7.3.1.1 Background/Required Knowledge

                            +

                            A student is able to:

                            + +

                            It is helpful if:

                            +
                              +
                            • The student is aware that attempting to specialize the template with types or values which do not match otherwise unstated assumptions will cause errors within the template.
                            • +
                            +

                            7.3.1.2 Student outcomes

                            +

                            A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                            +

                            A student should be able to:

                            +
                              +
                            1. Write a simple-requirement to assert the validity of an expression
                            2. +
                            3. Write a type-requirement to check the existence of a type by its identifier
                            4. +
                            5. Write a compound-requirement to test the resulting type of an expression
                            6. +
                            7. Write a nested-requirement to test the constexpr value of an operation, as opposed to just the syntactic validity
                            8. +
                            9. Use a requires-expression within a concept, requires-clause, or if constexpr condition
                            10. +
                            +

                            7.3.1.3 Caveats

                            +

                            This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                            +

                            To require that expressions, which evaluate to a boolean value like sizeof(t) == 4, evaluate to true a nested-requirement is needed (e.g., requires sizeof(t) == 4;). Omitting the requires results in a simple-requirement, which is satisfied based purely on syntactic validity, not on the result of the operation.

                            +

                            7.3.1.4 Points to cover

                            +

                            This section lists important details for each point.

                            +
                              +
                            • All requires-expression requirements terminate with a semicolon.
                            • +
                            • simple-requirements are used to check that an expression is well-formed.
                            • +
                            • nested-requirements are introduced with requires and primarily used to check the result of an expression computable by the compiler, including concepts or other requires-expressions.
                            • +
                            • type-requirements are introduced with typename and used to verify the existence of a type with a particular identifier.
                            • +
                            • compound-requirements are enclosed in braces and can be used to check the resulting type of an expression.
                            • +
                            • Checks are performed by the compiler, not at run time.
                            • +
                            • If covering usage of requires-expression with requires-clause, [Compile-time programming: requires clause] demonstrate requires requires and show how to ever avoid writing it by using a concept. [Compile-time programming: concepts]
                            • +
                            +

                            7.3.2 Main: Advanced requirements

                            +

                            7.3.2.1 Background/Required Knowledge

                            +
                              +
                            • All of the above.
                            • +
                            • Knowledge of noexcept
                            • +
                            +

                            A student is able to:

                            + +

                            7.3.2.2 Student outcomes

                            +

                            A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                            +

                            A student should be able to:

                            +
                              +
                            1. Write compound-requirements which test the noexceptness of an expression.
                            2. +
                            3. Use a concept as the target of a compound-requirement.
                            4. +
                            +

                            7.3.2.3 Caveats

                            +

                            This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                            +

                            7.3.2.4 Points to cover

                            +

                            This section lists important details for each point.

                            +
                              +
                            • Compound-requirements allow the optional ability to test whether an expression is marked as noexcept, by using a trailing noexcept keyword.
                            • +
                            + +
                              +
                            • If the return-type-requirement of a compound-requirement is a concept, that concept is given the resulting type as the first parameter, followed by the specified parameters in the compound-requirement. { ++x } -> C<int> would substitute C<decltype((++x)), int> and check that concept C is satisfied for those parameters.
                            • +
                            +

                            7.3.3 Advanced

                            +

                            7.4 C++ object model: copy semantics

                            +

                            Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                            +

                            7.4.1 Overview

                            +

                            Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                            + ++++ + + + + + + + + + + + + + + + + + + + + +
                            LevelObjectives
                            Foundationalunderstanding how and when are copies made
                            Mainimplementing user-defined copy operations
                            Advancedspecial cases: copy elision
                            +

                            7.4.2 Motivation

                            +

                            Why is this important? Why do we want to learn/teach this topic?

                            +

                            Copy semantics allows the user to define how objects of a class get replicated and interact on a value level.

                            +

                            7.4.3 Topic introduction

                            +

                            Very brief introduction to the topic.

                            +

                            Explains when and how objects are copied.

                            +

                            7.4.4 Foundational: How and when are copies made

                            +

                            7.4.4.1 Background/Required Knowledge

                            +

                            A student is able to: * explain what a C++ type is? [C++ object model: types] * explain what an object is? [C++ object model: objects], [C++ object model: constant objects] * define and understand class invariants?

                            +

                            It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain special member functions [C++ object model: special member functions]

                            +

                            7.4.4.2 Student outcomes

                            +

                            A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                            +

                            A student should be able to:

                            +
                              +
                            1. explain what copy semantics accomplish
                            2. +
                            +
                              +
                            • establishing “equivalent” object state in another object
                            • +
                            +
                              +
                            1. explain difference between copying a reference and copying a value*
                            2. +
                            3. explain where copies are made
                            4. +
                            +

                            * In other languages these differences are sometimes referred to as shallow and deep copy.

                            +

                            7.4.4.3 Caveats

                            +

                            This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                            +
                              +
                            • Compiler-provided copy operations may result in ownership problems (e.g., char*). These ownership problems can generally be solved by using types whose copy operations have the appropriate semantics, e.g., std::string instead of char* to hold string values.
                            • +
                            +

                            7.4.4.4 Points to cover

                            +

                            This section lists important details for each point.

                            +
                              +
                            • Principle of copying +
                                +
                              • Copying of types, which follow the rule of zero
                              • +
                              • Copying of types, with user defined copy operations
                              • +
                              • Copying an object does not change the original
                              • +
                            • +
                            • Practical applications +
                                +
                              • std::unique_ptr (has no copy)
                              • +
                              • Strings (copies the value)
                              • +
                            • +
                            +

                            7.4.5 Main: Implementing user-defined copy operations

                            +

                            7.4.5.1 Background/Required Knowledge

                            +

                            A student is able to: * identify special member functions [C++ object model: special member functions]

                            +

                            It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain the rule of zero [C++ object model: rule-of-zero] * explain the rule of five [C++ object model: rule-of-five]

                            +

                            7.4.5.2 Student outcomes

                            +

                            A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                            +

                            A student should be able to: * explain when they have to implement the copy operations for their own type * Copy constructor * Copy assignment operator * implement copy operations for their own types * Optional: explain when copying with basic and strong exception guarantees is useful

                            +

                            7.4.5.3 Caveats

                            +

                            This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                            +
                              +
                            • Intricacies when implementing copy operations: +
                                +
                              • Examples of how not to write copy operations (e.g., C++03 std::auto_ptr)
                              • +
                            • +
                            +

                            7.4.5.4 Points to cover

                            +

                            This section lists important details for each point.

                            +
                              +
                            • Copy constructors and copy assignment operators +
                                +
                              • How compiler generates default copy operations
                              • +
                              • =default, =delete (No copy)
                              • +
                              • How-to write your own copy operations
                              • +
                              • Rule-of-five
                              • +
                              • Copy assignment operators can be ref-qualified to avoid assigning into temporary objects.
                              • +
                            • +
                            +

                            7.4.6 Advanced

                            +

                            These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                            +

                            When can copies be elided and when does the standard guarantee copy elision. References: * Abseil tip of the Week #166 * cppreference - Copy elision

                            +

                            See user-defined-literals.

                            +

                            7.5 Functions: default argument

                            +

                            Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                            +

                            7.5.1 Overview

                            +

                            Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                            +

                            Functions in C++ may be overloaded with different numbers and types of parameters. It may be of value to specify default arguments for some number of parameters, to allow a caller to avoid specifying arguments that rarely change, or to enable expanding the set of parameters while maintaining backward compatibility with existing callers.

                            + ++++ + + + + + + + + + + + + + + + + + + + + +
                            LevelObjective
                            FoundationalDefine and use functions with default arguments
                            Main
                            Advancedrefinement of default arguments through multiple declarations
                            +

                            7.5.2 Motivation

                            +

                            Why is this important? Why do we want to learn/teach this topic?

                            +

                            Default arguments allow the omission of arguments with obvious or common values. Also may be utilized to extend an existing function signature without forcing changes to existing calling code.

                            +

                            7.5.3 Topic introduction

                            +

                            Very brief introduction to the topic.

                            +

                            Explain how default arguments work and how to define them.

                            +

                            7.5.4 Foundational: Using and defining functions with default arguments

                            +

                            7.5.4.1 Background/Required Knowledge

                            +

                            A student is able to:

                            + +

                            7.5.4.2 Student outcomes

                            +

                            A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                            +

                            A student should be able to:

                            +
                              +
                            1. Call to a function with a default argument with or without that argument specified
                            2. +
                            3. Declare a function with a default argument, and omit the default in the definition’s signature
                            4. +
                            5. Explain when the lifetime of a default argument begins and ends
                            6. +
                            +

                            7.5.4.3 Caveats

                            +

                            This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                            +
                              +
                            • When no forward-declaration exists, the definition serves as the declaration
                            • +
                            • When multiple declarations exist, only one may specify the default for any particular parameter, but multiple declarations may specify the defaults for different parameters.
                            • +
                            • Additional default values may be specified for other parameters in repeat declarations
                            • +
                            • Calling an overloaded function with fewer arguments may be ambiguous with regard to an overload with default arguments
                            • +
                            +

                            7.5.4.4 Points to cover

                            +

                            This section lists important details for each point.

                            +
                              +
                            • Default value may only be specified once for each parameter among all declarations
                            • +
                            • Default values must start from the rightmost parameter and continue leftward without gaps
                            • +
                            • Considerations of when to use default arguments vs overload set
                            • +
                            +

                            7.5.5 Main: implementing *

                            +

                            7.5.5.1 Background/Required knowledge

                            +
                              +
                            • All of the above.
                            • +
                            +

                            7.5.5.2 Student outcomes

                            +

                            A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                            +

                            A student should be able to:

                            +

                            7.5.5.3 Caveats

                            +

                            This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                            +

                            7.5.5.4 Points to cover

                            +

                            This section lists important details for each point.

                            +

                            7.5.6 Advanced

                            +

                            These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                            +

                            Subsequent redeclarations of the same function may add default argument values, which are then usable by callers. Though a single parameter cannot be given a default argument twice in the same translation unit, it is legal, though ill-advised, to give the same function different default arguments in different translation units.

                            +

                            7.6 Functions: user-defined literals

                            +

                            Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                            +

                            7.6.1 Overview

                            +

                            Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                            + ++++ + + + + + + + + + + + + + + + + + + + + +
                            LevelObjectives
                            Foundationalusing and understanding UDLs
                            Mainimplementing your own UDLs
                            AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
                            +

                            7.6.2 Motivation

                            +

                            Why is this important? Why do we want to learn/teach this topic?

                            +
                              +
                            • Allows clearer expression of intent in C++.
                            • +
                            • std::string: "Hello, world!"s
                            • +
                            • std::chrono: 3h + 10min + 5s
                            • +
                            +

                            7.6.3 Topic introduction

                            +

                            Very brief introduction to the topic.

                            +
                              +
                            • Explain the existence of user defined literals. Example: 12min + 17s is terse, expressive and type safe.
                            • +
                            +

                            7.6.4 Foundational: Using UDLs

                            +

                            7.6.4.1 Background/Required Knowledge

                            +

                            A student: * knows how to form numeric literals, e.g., 1.5f means a float of value 1.5. * is familiar with the major C++ types: * bool (Boolean type) * int (Integer type) * double (Floating-point type) * std::string (Text type) * std::vector (Collection type) * knows that namespaces exist, and namespace std. * knows what using-declarations and using-directives are. [C++ object model: declarations]

                            +

                            7.6.4.2 Student outcomes

                            +

                            A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                            +

                            A student should be able to:

                            +
                              +
                            1. use using namespace std::string_literals[1].
                            2. +
                            3. recognise UDLs in code that they are reading.
                            4. +
                            5. figure out which UDL definitions for a used type exist.
                            6. +
                            7. identify parts of the standard library that make use of UDLs.
                            8. +
                            9. prevent the dangers of temporaries created with "blah"s as well as with std::string{"blah"}.
                            10. +
                            11. effectively selects the right set of namespaces in using-directives from the sub-namespaces std::literals.
                            12. +
                            +

                            [1]: explain that it’s okay to use a using-directive to “activate” UDLs.

                            +

                            7.6.4.3 Caveats

                            +

                            This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                            +
                              +
                            • A student gets confused by the similarities and differences between built-in suffixes and UDLs and between UDLs from different namespaces.
                            • +
                            • A student “activates” two suffixes with the same signature from different namespaces.
                            • +
                            +

                            7.6.4.4 Points to cover

                            +

                            This section lists important details for each point.

                            +

                            7.6.5 Main: implementing UDLs

                            +

                            7.6.5.1 Background/Required Knowledge

                            +
                              +
                            • All of the above.
                            • +
                            +

                            7.6.5.2 Student outcomes

                            +

                            A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                            +

                            A student should be able to:

                            +
                              +
                            1. write a UDL operator of their own.
                            2. +
                            3. separate unrelated UDLs into distinct namespaces.
                            4. +
                            +

                            7.6.5.3 Caveats

                            +

                            This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                            +

                            No caveats at present. #### Points to cover

                            +

                            This section lists important details for each point.

                            +

                            No caveats at present. ### Advanced {#udl-advanced}

                            +

                            These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                            +

                            See concepts.

                            +

                            8 License

                            +

                            [NOTE: This license is copied verbatim from the C++ Core Guidelines.]

                            +
                            Copyright (c) Standard C++ Foundation and its contributors
                            +
                            +Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
                            +perpetual license to copy, use, modify, and create derivative works from this
                            +project for your personal or internal business use only. The above copyright
                            +notice and this permission notice shall be included in all copies or
                            +substantial portions of the project. This license does not grant permission
                            +to use the trade names, trademarks, service marks, or product names of the
                            +licensor, except as required for reasonable and customary use in describing
                            +the origin of the project.
                            +
                            +Standard C++ Foundation reserves the right to accept contributions to the
                            +project at its discretion.
                            +
                            +By contributing material to this project, you grant Standard C++ Foundation,
                            +and those who receive the material directly or indirectly from Standard C++
                            +Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
                            +transferrable license to reproduce, prepare derivative works of, publicly
                            +display, publicly perform, and distribute your contributed material and such
                            +derivative works, and to sublicense any or all of the foregoing rights to third
                            +parties for commercial or non-commercial use.  You also grant Standard C++
                            +Foundation, and those who receive the material directly or indirectly from
                            +Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
                            +irrevocable license under your patent claims that directly read on your
                            +contributed material to make, have made, use, offer to sell, sell and import
                            +or otherwise dispose of the material. You warrant that your material is your
                            +original work, or that you have the right to grant the above licenses.
                            +
                            +THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
                            +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
                            +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
                            +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
                            +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
                            +OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
                            +PROJECT.
                            +
                            +If you believe that anything in the project infringes your copyright, please
                            +contact us at admin@isocpp.org with your contact information and a detailed
                            +description of your intellectual property, including a specific URL where you
                            +believe your intellectual property is being infringed.
                            +
                            +

                            9 Contributors

                            +
                            Christopher Di Bella
                            +Florian Sattler
                            +Michael Adams
                            +rwdougla
                            +

                            10 How To Contribute

                            +

                            Before attempting to contribute any content for consideration for inclusion in this document, please read the information below and and the referenced documents as appropriate.

                            +

                            All contributions to this project must be made in accordance with the license in section License. This teaching-guidelines document only offers guidance on teaching C++ as it is specified in the current version of the C++ standard. So, content should be presented relative to the most-recently ratified version of the standard. A detailed explanation of how to present the material for a topic is given in:

                            +
                              +
                            • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.
                            • +
                            +

                            Any potential contributors should ensure that they read this document. The following document may also be helpful in providing some general background on the modular approach to teaching followed herein:

                            + +

                            In order to prepare content, it is important to understand what learning outcomes are, and how to prepare good ones. Some information on learning outcomes can be found in the References section. The following document offers a concise introduction to learning outcomes:

                            + +

                            11 Glossary

                            +

                            Some possible terms to include in the glossary:

                            +
                              +
                            • learning objective
                            • +
                            • learning outcome
                            • +
                            +

                            12 References

                            +

                            12.1 References on Learning Outcomes

                            + + +
                              +
                            • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — Standing Document for SG20: Guidelines for Teaching C++ to Beginners. https://wg21.link/p1389.

                            • +
                            • Christopher Di Bella. P1725R0 — Modular Topic Design. https://wg21.link/p1725.

                            • +
                            • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.

                            • +
                            • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study Group: C++ Education. https://wg21.link/p1231.

                            • +
                            • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 — Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0.

                            • +
                            +
                            +
                            + +
                            + + diff --git a/0.0.17/html_split/Advanced.html b/0.0.17/html_split/Advanced.html new file mode 100644 index 0000000..26a02e1 --- /dev/null +++ b/0.0.17/html_split/Advanced.html @@ -0,0 +1,54 @@ + + + + + +Advanced (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                            +

                            7.1.6 Advanced

                            +

                            These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

                            + + + + + diff --git a/0.0.17/html_split/Background_002fRequired-Knowledge.html b/0.0.17/html_split/Background_002fRequired-Knowledge.html new file mode 100644 index 0000000..6e7a2b0 --- /dev/null +++ b/0.0.17/html_split/Background_002fRequired-Knowledge.html @@ -0,0 +1,60 @@ + + + + + +Background/Required Knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                            +

                            7.1.4.1 Background/Required Knowledge

                            +

                            A student: +

                            +
                              +
                            • Should be able to explain the difference between code evaluated at +compile-time and run-time +
                            • Should be able to cite some examples of compile-time known information, +such as sizeof(T) +
                            + + + + + + diff --git a/0.0.17/html_split/Background_002fRequired-knowledge.html b/0.0.17/html_split/Background_002fRequired-knowledge.html new file mode 100644 index 0000000..cc56cd7 --- /dev/null +++ b/0.0.17/html_split/Background_002fRequired-knowledge.html @@ -0,0 +1,54 @@ + + + + + +Background/Required knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                            +

                            7.5.5.1 Background/Required knowledge

                            +
                              +
                            • All of the above. +
                            + + + + + + diff --git a/0.0.17/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html b/0.0.17/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html new file mode 100644 index 0000000..81f5e06 --- /dev/null +++ b/0.0.17/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html @@ -0,0 +1,60 @@ + + + + + +Basics Types Objects Values Expressions Statements and Control-Flow Constructs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                            +

                            6.3 Basics Types, Objects, Values, Expressions, Statements, and

                            +

                            Control-Flow Constructs +

                            + + + + + +
                            IDUnitFoundationalMainAdvanced
                            [‘?’]Constant Objects???
                            [‘?’]Declarations and Definitions???
                            [‘?’]Selection Constructs (e.g., if, ternary)???
                            [‘?’]Looping Constructs (e.g., for, while, etc.)???
                            + + + + + + diff --git a/0.0.17/html_split/Building.html b/0.0.17/html_split/Building.html new file mode 100644 index 0000000..a50a84a --- /dev/null +++ b/0.0.17/html_split/Building.html @@ -0,0 +1,57 @@ + + + + + +Building (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                            +

                            6.12 Building

                            + + + + +
                            IDUnitFoundationalMainAdvanced
                            [‘?’]Software Build Tools???
                            [‘?’]Strategies for Handling Build Problems???
                            + + + + + + diff --git a/0.0.17/html_split/C_002b_002b-object-model-copy-semantics.html b/0.0.17/html_split/C_002b_002b-object-model-copy-semantics.html new file mode 100644 index 0000000..1240fc6 --- /dev/null +++ b/0.0.17/html_split/C_002b_002b-object-model-copy-semantics.html @@ -0,0 +1,67 @@ + + + + + +C++ object model copy semantics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                            +

                            7.4 C++ object model: copy semantics

                            +

                            Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

                            + + + + + + + + + + + + + + diff --git a/0.0.17/html_split/Caveats.html b/0.0.17/html_split/Caveats.html new file mode 100644 index 0000000..4b77443 --- /dev/null +++ b/0.0.17/html_split/Caveats.html @@ -0,0 +1,55 @@ + + + + + +Caveats (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                            +

                            7.1.4.3 Caveats

                            +

                            This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                            + + + + + diff --git a/0.0.17/html_split/Compilation-Model.html b/0.0.17/html_split/Compilation-Model.html new file mode 100644 index 0000000..41802d4 --- /dev/null +++ b/0.0.17/html_split/Compilation-Model.html @@ -0,0 +1,62 @@ + + + + + +Compilation Model (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                            +

                            6.1 Compilation Model

                            + + + + + + + + + +
                            IDUnitFoundationalMainAdvanced
                            [‘?’]Translation Units???
                            [‘?’]Headers???
                            [‘?’]Modules???
                            [‘?’]Name Mangling???
                            [‘?’]Phases of Translation???
                            [‘?’]Separate Compilation???
                            [‘?’]Linkage???
                            + + + + + + diff --git a/0.0.17/html_split/Compile_002dTime-Computation.html b/0.0.17/html_split/Compile_002dTime-Computation.html new file mode 100644 index 0000000..4e9e67d --- /dev/null +++ b/0.0.17/html_split/Compile_002dTime-Computation.html @@ -0,0 +1,57 @@ + + + + + +Compile-Time Computation (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                            +

                            6.7 Compile-Time Computation

                            + + + + +
                            IDUnitFoundationalMainAdvanced
                            [‘?’]Constant Expressions and Constant Evaluation???
                            [‘static-assert’]static_assert‘✔️’‘✔️’
                            + + + + + + diff --git a/0.0.17/html_split/Context-and-Aim-of-This-Guide.html b/0.0.17/html_split/Context-and-Aim-of-This-Guide.html new file mode 100644 index 0000000..57fb059 --- /dev/null +++ b/0.0.17/html_split/Context-and-Aim-of-This-Guide.html @@ -0,0 +1,76 @@ + + + + + +Context and Aim of This Guide (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                            +

                            2 Context and Aim of This Guide

                            +

                            This document is intended to serve as a resource for instructors to +assist in the preparation of courses on C++ in a variety of settings, +including university, college, and industry environments. The main +objectives of this document are as follows: +

                            +
                              +
                            • to provide guidelines for content to be covered by courses of various +difficulty levels on C++ (e.g., topics and learning outcomes) +
                            • to note some common misunderstandings and problematic points that may be +encountered when teaching particular topics +
                            • to suggest resources useful for teaching C++ +
                            • to present examples of curriculum for specific courses +
                            + +

                            This document does not itself provide a curriculum for a single specific +course, but is rather a set of guidelines that can be used to prepare +curricula for a wide variety of courses that differ in focus and level +of sophistication. (This said, however, some links to other documents +with examples of curricula for specific courses may be included herein.) +This document only intends to target the teaching of the most recently +ratified version of the C++ standard. (This said, however, since older +versions of this document are also available, these older versions may +be of some use to those who need guidance in older versions of the +standard, at least versions that do not predate C++20.) +

                            + + + + + diff --git a/0.0.17/html_split/Contributing-to-This-Document.html b/0.0.17/html_split/Contributing-to-This-Document.html new file mode 100644 index 0000000..2faa772 --- /dev/null +++ b/0.0.17/html_split/Contributing-to-This-Document.html @@ -0,0 +1,55 @@ + + + + + +Contributing to This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                            +

                            4 Contributing to This Document

                            +

                            Contributions to this document are welcome. If you would like to help +with this project as a contributor, please read the section +‘How to Contribute’. +

                            + + + + + diff --git a/0.0.17/html_split/Contributors.html b/0.0.17/html_split/Contributors.html new file mode 100644 index 0000000..5531c92 --- /dev/null +++ b/0.0.17/html_split/Contributors.html @@ -0,0 +1,57 @@ + + + + + +Contributors (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                            +

                            +Next: , Previous: , Up: Top   [Contents]

                            +
                            +
                            +

                            9 Contributors

                            + +
                            Christopher Di Bella
                            +Florian Sattler
                            +Michael Adams
                            +rwdougla
                            +
                            + + + + + diff --git a/0.0.17/html_split/Detailed-Information-for-Modules-and-Topics.html b/0.0.17/html_split/Detailed-Information-for-Modules-and-Topics.html new file mode 100644 index 0000000..5ad5117 --- /dev/null +++ b/0.0.17/html_split/Detailed-Information-for-Modules-and-Topics.html @@ -0,0 +1,67 @@ + + + + + +Detailed Information for Modules and Topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                            +

                            +Next: , Previous: , Up: Top   [Contents]

                            +
                            +
                            +

                            7 Detailed Information for Modules and Topics

                            + + + + + + + + + + + + + + + diff --git a/0.0.17/html_split/Error-Handling.html b/0.0.17/html_split/Error-Handling.html new file mode 100644 index 0000000..1260ebe --- /dev/null +++ b/0.0.17/html_split/Error-Handling.html @@ -0,0 +1,59 @@ + + + + + +Error Handling (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                            +

                            6.9 Error Handling

                            + + + + + + +
                            IDUnitFoundationalMainAdvanced
                            [‘?’]Classes of Errors???
                            [‘?’]errno???
                            [‘?’]Error Codes???
                            [‘?’]Exception Handling???
                            + + + + + + diff --git a/0.0.17/html_split/External-ie-Non-Standard-Libraries.html b/0.0.17/html_split/External-ie-Non-Standard-Libraries.html new file mode 100644 index 0000000..0b3c0fa --- /dev/null +++ b/0.0.17/html_split/External-ie-Non-Standard-Libraries.html @@ -0,0 +1,56 @@ + + + + + +External ie Non Standard Libraries (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                            +

                            6.11 External (i.e., Non Standard) Libraries

                            + + + +
                            IDUnitFoundationalMainAdvanced
                            [‘?’]Graphical User Interfaces???
                            + + + + + + diff --git a/0.0.17/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html b/0.0.17/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html new file mode 100644 index 0000000..d041d33 --- /dev/null +++ b/0.0.17/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html @@ -0,0 +1,64 @@ + + + + + +Foundational Calling static_assert with a constant expression (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                            +

                            7.1.4 Foundational: Calling static_assert with a constant

                            +

                            expression +

                            + + + + + + + + + + + + diff --git a/0.0.17/html_split/Foundational-How-and-when-are-copies-made.html b/0.0.17/html_split/Foundational-How-and-when-are-copies-made.html new file mode 100644 index 0000000..aef5cf0 --- /dev/null +++ b/0.0.17/html_split/Foundational-How-and-when-are-copies-made.html @@ -0,0 +1,61 @@ + + + + + +Foundational How and when are copies made (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                            +

                            7.4.4 Foundational: How and when are copies made

                            + + + + + + + + + + + + + diff --git a/0.0.17/html_split/Foundational-Using-UDLs.html b/0.0.17/html_split/Foundational-Using-UDLs.html new file mode 100644 index 0000000..84fb109 --- /dev/null +++ b/0.0.17/html_split/Foundational-Using-UDLs.html @@ -0,0 +1,61 @@ + + + + + +Foundational Using UDLs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                            +

                            7.6.4 Foundational: Using UDLs

                            + + + + + + + + + + + + + diff --git a/0.0.17/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html b/0.0.17/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html new file mode 100644 index 0000000..edab680 --- /dev/null +++ b/0.0.17/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html @@ -0,0 +1,62 @@ + + + + + +Foundational Using and defining functions with default arguments (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                            +

                            7.5.4 Foundational: Using and defining functions with default

                            +

                            arguments +

                            + + + + + + + + + + + + diff --git a/0.0.17/html_split/Foundational-Writing-requires_002dexpressions.html b/0.0.17/html_split/Foundational-Writing-requires_002dexpressions.html new file mode 100644 index 0000000..ab09ef4 --- /dev/null +++ b/0.0.17/html_split/Foundational-Writing-requires_002dexpressions.html @@ -0,0 +1,60 @@ + + + + + +Foundational Writing requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +
                            +

                            7.3.1 Foundational: Writing requires-expressions

                            + + + + + + + + + + + + + diff --git a/0.0.17/html_split/Functions-default-argument.html b/0.0.17/html_split/Functions-default-argument.html new file mode 100644 index 0000000..0cb1c25 --- /dev/null +++ b/0.0.17/html_split/Functions-default-argument.html @@ -0,0 +1,67 @@ + + + + + +Functions default argument (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                            +

                            7.5 Functions: default argument

                            +

                            Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

                            + + + + + + + + + + + + + + diff --git a/0.0.17/html_split/Functions-user_002ddefined-literals.html b/0.0.17/html_split/Functions-user_002ddefined-literals.html new file mode 100644 index 0000000..2631a71 --- /dev/null +++ b/0.0.17/html_split/Functions-user_002ddefined-literals.html @@ -0,0 +1,65 @@ + + + + + +Functions user-defined literals (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                            +

                            7.6 Functions: user-defined literals

                            +

                            Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

                            + + + + + + + + + + + + + diff --git a/0.0.17/html_split/Functions.html b/0.0.17/html_split/Functions.html new file mode 100644 index 0000000..8e3d484 --- /dev/null +++ b/0.0.17/html_split/Functions.html @@ -0,0 +1,61 @@ + + + + + +Functions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                            +

                            6.4 Functions

                            + + + + + + + + +
                            IDUnitFoundationalMainAdvanced
                            [‘?’]Calling Functions???
                            [‘?’]Parameter Passing (e.g., Passing By Value and Reference)???
                            [‘func-args’]Default Arguments‘✔️’
                            [‘?’]Returning Multiple Values???
                            [‘?’]Overloading???
                            [‘udl’]User-Defined Literals‘✔️’‘✔️’
                            + + + + + + diff --git a/0.0.17/html_split/Generic-Programming-Templates.html b/0.0.17/html_split/Generic-Programming-Templates.html new file mode 100644 index 0000000..3ed32f5 --- /dev/null +++ b/0.0.17/html_split/Generic-Programming-Templates.html @@ -0,0 +1,61 @@ + + + + + +Generic Programming Templates (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                            +

                            6.8 Generic Programming (Templates)

                            + + + + + + + + +
                            IDUnitFoundationalMainAdvanced
                            [‘?’]Concepts???
                            [‘?’]SFINAE???
                            [‘?’]Template Metaprogramming???
                            [‘?’]Function Templates???
                            [‘?’]Requires Clauses???
                            [‘req-expr’]Requires Expressions‘✔️’‘✔️’
                            + + + + + + diff --git a/0.0.17/html_split/Glossary.html b/0.0.17/html_split/Glossary.html new file mode 100644 index 0000000..99ff357 --- /dev/null +++ b/0.0.17/html_split/Glossary.html @@ -0,0 +1,58 @@ + + + + + +Glossary (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                            +

                            +Next: , Previous: , Up: Top   [Contents]

                            +
                            +
                            +

                            11 Glossary

                            +

                            Some possible terms to include in the glossary: +

                            +
                              +
                            • learning objective +
                            • learning outcome +
                            + + + + + + diff --git a/0.0.17/html_split/How-To-Contribute.html b/0.0.17/html_split/How-To-Contribute.html new file mode 100644 index 0000000..91b73c9 --- /dev/null +++ b/0.0.17/html_split/How-To-Contribute.html @@ -0,0 +1,89 @@ + + + + + +How To Contribute (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                            +

                            +Next: , Previous: , Up: Top   [Contents]

                            +
                            +
                            +

                            10 How To Contribute

                            +

                            Before attempting to contribute any content for consideration for +inclusion in this document, please read the information below and and +the referenced documents as appropriate. +

                            +

                            All contributions to this project must be made in accordance with the +license in section License. This teaching-guidelines +document only offers guidance on teaching C++ as it is specified in the +current version of the C++ standard. So, content should be presented +relative to the most-recently ratified version of the standard. A +detailed explanation of how to present the material for a topic is given +in: +

                            +
                              +
                            • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to +structure a teaching topic. https://wg21.link/p2193. +
                            + +

                            Any potential contributors should ensure that they read this document. +The following document may also be helpful in providing some general +background on the modular approach to teaching followed herein: +

                            + + +

                            In order to prepare content, it is important to understand what learning +outcomes are, and how to prepare good ones. Some information on learning +outcomes can be found in the References section. The +following document offers a concise introduction to learning outcomes: +

                            + + + + + + + diff --git a/0.0.17/html_split/Inheritance-and-Class-Hierarchies.html b/0.0.17/html_split/Inheritance-and-Class-Hierarchies.html new file mode 100644 index 0000000..1454f01 --- /dev/null +++ b/0.0.17/html_split/Inheritance-and-Class-Hierarchies.html @@ -0,0 +1,57 @@ + + + + + +Inheritance and Class Hierarchies (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                            +

                            6.6 Inheritance and Class Hierarchies

                            + + + + +
                            IDUnitFoundationalMainAdvanced
                            [‘?’]Virtual Functions???
                            [‘?’]Run-Time Type Information???
                            + + + + + + diff --git a/0.0.17/html_split/License.html b/0.0.17/html_split/License.html new file mode 100644 index 0000000..5835f48 --- /dev/null +++ b/0.0.17/html_split/License.html @@ -0,0 +1,99 @@ + + + + + +License (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                            +

                            8 License

                            +

                            [NOTE: This license is copied verbatim from the C++ Core +Guidelines.] +

                            +
                            Copyright (c) Standard C++ Foundation and its contributors
                            +
                            +Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
                            +perpetual license to copy, use, modify, and create derivative works from this
                            +project for your personal or internal business use only. The above copyright
                            +notice and this permission notice shall be included in all copies or
                            +substantial portions of the project. This license does not grant permission
                            +to use the trade names, trademarks, service marks, or product names of the
                            +licensor, except as required for reasonable and customary use in describing
                            +the origin of the project.
                            +
                            +Standard C++ Foundation reserves the right to accept contributions to the
                            +project at its discretion.
                            +
                            +By contributing material to this project, you grant Standard C++ Foundation,
                            +and those who receive the material directly or indirectly from Standard C++
                            +Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
                            +transferrable license to reproduce, prepare derivative works of, publicly
                            +display, publicly perform, and distribute your contributed material and such
                            +derivative works, and to sublicense any or all of the foregoing rights to third
                            +parties for commercial or non-commercial use.  You also grant Standard C++
                            +Foundation, and those who receive the material directly or indirectly from
                            +Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
                            +irrevocable license under your patent claims that directly read on your
                            +contributed material to make, have made, use, offer to sell, sell and import
                            +or otherwise dispose of the material. You warrant that your material is your
                            +original work, or that you have the right to grant the above licenses.
                            +
                            +THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
                            +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
                            +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
                            +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
                            +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
                            +OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
                            +PROJECT.
                            +
                            +If you believe that anything in the project infringes your copyright, please
                            +contact us at admin@isocpp.org with your contact information and a detailed
                            +description of your intellectual property, including a specific URL where you
                            +believe your intellectual property is being infringed.
                            +
                            +
                            + + + + + + diff --git a/0.0.17/html_split/Main-Advanced-requirements.html b/0.0.17/html_split/Main-Advanced-requirements.html new file mode 100644 index 0000000..c117bb0 --- /dev/null +++ b/0.0.17/html_split/Main-Advanced-requirements.html @@ -0,0 +1,60 @@ + + + + + +Main Advanced requirements (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +
                            +

                            7.3.2 Main: Advanced requirements

                            + + + + + + + + + + + + + diff --git a/0.0.17/html_split/Main-Contracts-and-static_005fassert.html b/0.0.17/html_split/Main-Contracts-and-static_005fassert.html new file mode 100644 index 0000000..a094a0d --- /dev/null +++ b/0.0.17/html_split/Main-Contracts-and-static_005fassert.html @@ -0,0 +1,62 @@ + + + + + +Main Contracts and static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                            +

                            7.1.5 Main: Contracts and static_assert

                            + + + + + + + + + + + + + diff --git a/0.0.17/html_split/Main-Implementing-user_002ddefined-copy-operations.html b/0.0.17/html_split/Main-Implementing-user_002ddefined-copy-operations.html new file mode 100644 index 0000000..73d8c03 --- /dev/null +++ b/0.0.17/html_split/Main-Implementing-user_002ddefined-copy-operations.html @@ -0,0 +1,61 @@ + + + + + +Main Implementing user-defined copy operations (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                            +

                            7.4.5 Main: Implementing user-defined copy operations

                            + + + + + + + + + + + + + diff --git a/0.0.17/html_split/Main-implementing-UDLs.html b/0.0.17/html_split/Main-implementing-UDLs.html new file mode 100644 index 0000000..6357f96 --- /dev/null +++ b/0.0.17/html_split/Main-implementing-UDLs.html @@ -0,0 +1,59 @@ + + + + + +Main implementing UDLs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                            +

                            7.6.5 Main: implementing UDLs

                            + + + + + + + + + + + + diff --git a/0.0.17/html_split/Main-implementing-_002a.html b/0.0.17/html_split/Main-implementing-_002a.html new file mode 100644 index 0000000..abec4e4 --- /dev/null +++ b/0.0.17/html_split/Main-implementing-_002a.html @@ -0,0 +1,62 @@ + + + + + +Main implementing * (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                            +

                            7.5.5 Main: implementing *

                            + + + + + + + + + + + + + diff --git a/0.0.17/html_split/Meta_002derror-handling-static_005fassert.html b/0.0.17/html_split/Meta_002derror-handling-static_005fassert.html new file mode 100644 index 0000000..9c610af --- /dev/null +++ b/0.0.17/html_split/Meta_002derror-handling-static_005fassert.html @@ -0,0 +1,69 @@ + + + + + +Meta-error handling static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                            +

                            7.1 Meta-error handling: static_assert

                            +

                            Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

                            + + + + + + + + + + + + + + diff --git a/0.0.17/html_split/Module-name-Requires-Expressions.html b/0.0.17/html_split/Module-name-Requires-Expressions.html new file mode 100644 index 0000000..0a8db19 --- /dev/null +++ b/0.0.17/html_split/Module-name-Requires-Expressions.html @@ -0,0 +1,60 @@ + + + + + +Module name Requires Expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                            +

                            7.2 Module name: Requires Expressions

                            +

                            Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

                            + + + + + + + + + + diff --git a/0.0.17/html_split/Motivation.html b/0.0.17/html_split/Motivation.html new file mode 100644 index 0000000..48010a1 --- /dev/null +++ b/0.0.17/html_split/Motivation.html @@ -0,0 +1,60 @@ + + + + + +Motivation (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                            +

                            7.1.2 Motivation

                            +

                            Why is this important? Why do we want to learn/teach this +topic? +

                            +

                            static_assert allows the developer to enforce that conditions +which can be checked during compilation will force build errors when +violated. Additionally, they are the best mechanism by which a developer +can pass useful information to other developers regarding what violation +occurred or what must be done, instead. +

                            + + + + + diff --git a/0.0.17/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html b/0.0.17/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html new file mode 100644 index 0000000..e72d222 --- /dev/null +++ b/0.0.17/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html @@ -0,0 +1,78 @@ + + + + + +Obtaining This Document The Most Recent Version and Alternate Formats (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                            +

                            +Next: , Previous: , Up: Top   [Contents]

                            +
                            +
                            +

                            1 Obtaining This Document: The Most Recent Version and Alternate

                            +

                            Formats +The most recent version of this document is available as an online HTML +document at: https://cplusplus.github.io/SG20/latest/. +

                            +

                            The version of the document that you are currently reading is available +in the following formats: +

                            +
                              +
                            1. online (HTML) format as a single large HTML document: +https://cplusplus.github.io/SG20/0.0.17/html + +
                            2. EPUB format: +https://cplusplus.github.io/SG20/0.0.17/guidelines.epub + +
                            3. online (HTML) format, split across multiple HTML documents: +https://cplusplus.github.io/SG20/0.0.17/html_split/ [Note: +The support for this format needs more work (in order to beautify and +fix linking issues).] + +
                            + +

                            Older versions of this document are also available. In general version +ver is available at +https://cplusplus.github.io/SG20/ver/html. For example, version +0.1.0 (assuming that this version exists) would be available at +https://cplusplus.github.io/SG20/0.1.0/html. +

                            + + + + + diff --git a/0.0.17/html_split/Organization-of-This-Document.html b/0.0.17/html_split/Organization-of-This-Document.html new file mode 100644 index 0000000..37c73db --- /dev/null +++ b/0.0.17/html_split/Organization-of-This-Document.html @@ -0,0 +1,95 @@ + + + + + +Organization of This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                            +

                            5 Organization of This Document

                            +

                            The various concepts (i.e., ideas) to potentially be covered are +partitioned into modules. A module is very broad in scope and consists +of numerous topics. +

                            +

                            For each module, topics related to the module are identified. Then, for +each topic, learning outcomes are specified. In order to address a wide +variety of courses on C++, each topic is addressed at three proficiency +levels. These proficiency levels allow each topic to be covered at more +than one level of detail. This allows target audiences with different +background and learning objectives to be accommodated. The three +proficiency levels are as follows: +

                            +
                              +
                            • foundational: This level gives the learner the idea that a facility +exists, what benefits it offers, and the basic ways of using it. + +
                            • main: This level shows mainstream uses and techniques. For abstraction +and organizational mechanisms it also demonstrates how to build them. +This level should also give the learner a basic (but not detailed) +understanding of how a facility might be implemented so that the learner +can have a first-order understanding of any costs involved. + +
                            • advanced: This level gives information suitable for an expert. For most +topics there is an expert level of knowledge that most programmers +rarely need and techniques that require detailed understanding of +language rules or library implementation. + +
                            + +

                            The remainder of this document is organized as follows. The various +topics are listed grouped by module. In cases where a topic might be +classified into more than one module, the topic is listed under the +module of most direct relevance. This is done in order to avoid +duplication of content. (In the case that a topic is equally relevant to +multiple modules, the decision of which to select is made by a +proverbial coin toss.) The order in which modules and topics are +presented is not meant to imply any order of coverage in a course. The +order in which items are listed is essentially arbitrary. +

                            +
                            + + + + + + diff --git a/0.0.17/html_split/Overview.html b/0.0.17/html_split/Overview.html new file mode 100644 index 0000000..205f6dc --- /dev/null +++ b/0.0.17/html_split/Overview.html @@ -0,0 +1,62 @@ + + + + + +Overview (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                            +

                            7.1.1 Overview

                            +

                            Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

                            + + + + + +
                            LevelObjectives
                            FoundationalCalling static_assert with a constant expression
                            MainUsing static_assert to detect contract violations and +improve error messages
                            Advanced
                            + + + + + + diff --git a/0.0.17/html_split/Points-to-cover.html b/0.0.17/html_split/Points-to-cover.html new file mode 100644 index 0000000..e15ebf7 --- /dev/null +++ b/0.0.17/html_split/Points-to-cover.html @@ -0,0 +1,59 @@ + + + + + +Points to cover (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                            +

                            7.1.4.4 Points to cover

                            +

                            This section lists important details for each point. +

                            +
                              +
                            • X +
                            • In addition to what is wrong, a good error message will inform the user +of how to correct it +
                            + + + + + + diff --git a/0.0.17/html_split/Preprocessor.html b/0.0.17/html_split/Preprocessor.html new file mode 100644 index 0000000..b20bf65 --- /dev/null +++ b/0.0.17/html_split/Preprocessor.html @@ -0,0 +1,58 @@ + + + + + +Preprocessor (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                            +

                            6.2 Preprocessor

                            + + + + + +
                            IDUnitFoundationalMainAdvanced
                            [‘?’]Preprocessor Metaprogramming???
                            [‘?’]Inclusion???
                            [‘?’]Macros???
                            + + + + + + diff --git a/0.0.17/html_split/References-on-Learning-Outcomes.html b/0.0.17/html_split/References-on-Learning-Outcomes.html new file mode 100644 index 0000000..edf4993 --- /dev/null +++ b/0.0.17/html_split/References-on-Learning-Outcomes.html @@ -0,0 +1,71 @@ + + + + + +References on Learning Outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                            +

                            12.1 References on Learning Outcomes

                            + + + + + + + diff --git a/0.0.17/html_split/References.html b/0.0.17/html_split/References.html new file mode 100644 index 0000000..8484d34 --- /dev/null +++ b/0.0.17/html_split/References.html @@ -0,0 +1,59 @@ + + + + + +References (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                            +

                            +Previous: , Up: Top   [Contents]

                            +
                            +
                            +

                            12 References

                            + + + + + + + + + + + diff --git a/0.0.17/html_split/Software-Design.html b/0.0.17/html_split/Software-Design.html new file mode 100644 index 0000000..dbd34b6 --- /dev/null +++ b/0.0.17/html_split/Software-Design.html @@ -0,0 +1,56 @@ + + + + + +Software Design (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                            +

                            6.15 Software Design

                            + + + +
                            IDUnitFoundationalMainAdvanced
                            [‘?’]Design by Contract???
                            + + + + + + diff --git a/0.0.17/html_split/Standard-Library.html b/0.0.17/html_split/Standard-Library.html new file mode 100644 index 0000000..0d173a4 --- /dev/null +++ b/0.0.17/html_split/Standard-Library.html @@ -0,0 +1,57 @@ + + + + + +Standard Library (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                            +

                            6.10 Standard Library

                            + + + + +
                            IDUnitFoundationalMainAdvanced
                            [‘?’]Input/Output (I/O)???
                            [‘?’]Containers, Iterators, and Algorithms???
                            + + + + + + diff --git a/0.0.17/html_split/Student-outcomes.html b/0.0.17/html_split/Student-outcomes.html new file mode 100644 index 0000000..a06cf3a --- /dev/null +++ b/0.0.17/html_split/Student-outcomes.html @@ -0,0 +1,61 @@ + + + + + +Student outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                            +

                            7.1.4.2 Student outcomes

                            +

                            A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                            +

                            A student should be able to: +

                            +
                              +
                            1. Assert the expected size of a structure using static_assert +
                            + + + + + + diff --git a/0.0.17/html_split/Summary-of-Modules-and-Topics.html b/0.0.17/html_split/Summary-of-Modules-and-Topics.html new file mode 100644 index 0000000..33358df --- /dev/null +++ b/0.0.17/html_split/Summary-of-Modules-and-Topics.html @@ -0,0 +1,100 @@ + + + + + +Summary of Modules and Topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                            +

                            6 Summary of Modules and Topics

                            +

                            In the sections that follow, the various modules and topics are +presented. There is one section per module. For each module, a table +listing the various topics in that module is provided. The ID for a +topic is linked to the detailed coverage of that topic that comes later +in the document. If a topic has any learning outcomes at a given +proficiency level, this is indicated by a checkmark (“✔️”). If a topic +has no learning outcomes (simply because there are not any, not because +the information is missing), this is indicated by an em dash (“—”). +In the case that the information for a topic is completely missing, a +question mark (“?”) symbol is used. +

                            + + + + + + + + + + + + + + + + + + +
                            + + + + + + diff --git a/0.0.17/html_split/Testing-and-Debugging.html b/0.0.17/html_split/Testing-and-Debugging.html new file mode 100644 index 0000000..497707a --- /dev/null +++ b/0.0.17/html_split/Testing-and-Debugging.html @@ -0,0 +1,59 @@ + + + + + +Testing and Debugging (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                            +

                            +Next: , Previous: , Up: Summary of Modules and Topics   [Contents]

                            +
                            +
                            +

                            6.13 Testing and Debugging

                            + + + + + + +
                            IDUnitFoundationalMainAdvanced
                            [‘?’]Source-Level Debuggers???
                            [‘?’]Code Sanitizers???
                            [‘?’]Test Frameworks???
                            [‘?’]Debugging Strategies???
                            + + + + + + diff --git a/0.0.17/html_split/Tooling.html b/0.0.17/html_split/Tooling.html new file mode 100644 index 0000000..e479ed2 --- /dev/null +++ b/0.0.17/html_split/Tooling.html @@ -0,0 +1,57 @@ + + + + + +Tooling (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                            +

                            6.14 Tooling

                            + + + + +
                            IDUnitFoundationalMainAdvanced
                            [‘?’]Compiler Toolchains???
                            [‘?’]IDEs???
                            + + + + + + diff --git a/0.0.17/html_split/Topic-introduction.html b/0.0.17/html_split/Topic-introduction.html new file mode 100644 index 0000000..ba00033 --- /dev/null +++ b/0.0.17/html_split/Topic-introduction.html @@ -0,0 +1,57 @@ + + + + + +Topic introduction (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                            +

                            7.1.3 Topic introduction

                            +

                            Very brief introduction to the topic. +

                            +

                            static_assert is a compile-time evaluated function that asserts +the truth of a supplied predicate, issuing an optional user-supplied +error message if the predicate is false. +

                            + + + + + diff --git a/0.0.17/html_split/Use-of-This-Document.html b/0.0.17/html_split/Use-of-This-Document.html new file mode 100644 index 0000000..dedcdd3 --- /dev/null +++ b/0.0.17/html_split/Use-of-This-Document.html @@ -0,0 +1,58 @@ + + + + + +Use of This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                            +

                            3 Use of This Document

                            +

                            [NOTE: This document follows the same license model as the C++ +Core Guidelines. The LICENSE document is taken verbatim from the C++ +Core Guidelines.] This document is made available under a MIT-style +license. In simple terms, this license permits copying, use, +modification, and creation of derivative works. A copy of the license is +included in the section LICENSE. +

                            + + + + + diff --git a/0.0.17/html_split/User_002dDefined-Types-Classes.html b/0.0.17/html_split/User_002dDefined-Types-Classes.html new file mode 100644 index 0000000..d7acd5e --- /dev/null +++ b/0.0.17/html_split/User_002dDefined-Types-Classes.html @@ -0,0 +1,69 @@ + + + + + +User-Defined Types Classes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                            +

                            6.5 User-Defined Types (Classes)

                            + + + + + + + + + + + + + + + +
                            IDUnitFoundationalMainAdvanced
                            [‘?’]Special Member Functions???
                            [‘?’]Types???
                            [‘?’]Conversions???
                            [‘?’]Constructors and Destructors???
                            [‘?’]Move/Copy Constructors and Assignment Operators???
                            [‘?’]Member Functions???
                            [‘?’]Sum Types???
                            [‘?’]User-Defined Literals???
                            [‘?’]Special Member Functions???
                            [‘?’]Guidelines for Special Member Functions (e.g., Rule of Five, Rule +of Zero)???
                            [‘copy’]Copy Semantics‘✔️’‘✔️’
                            [‘?’]Moving and Copying???
                            [‘?’]Lambdas???
                            + + + + + + diff --git a/0.0.17/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html b/0.0.17/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html new file mode 100644 index 0000000..c5a1bfb --- /dev/null +++ b/0.0.17/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html @@ -0,0 +1,69 @@ + + + + + +Working Group Documents Related to C++ Teaching Guidelines (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                            +

                            12.2 Working Group Documents Related to C++ Teaching Guidelines

                            +
                              +
                            • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — +Standing Document for SG20: Guidelines for Teaching C++ to Beginners. +https://wg21.link/p1389. + +
                            • Christopher Di Bella. P1725R0 — Modular Topic Design. +https://wg21.link/p1725. + +
                            • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to +structure a teaching topic. https://wg21.link/p2193. + +
                            • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study +Group: C++ Education. https://wg21.link/p1231. + +
                            • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 +— Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0. + +
                            + + + + + + diff --git a/0.0.17/html_split/_0023advanced.html b/0.0.17/html_split/_0023advanced.html new file mode 100644 index 0000000..d503bfc --- /dev/null +++ b/0.0.17/html_split/_0023advanced.html @@ -0,0 +1,40 @@ + + + + + + +#advanced (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #advanced.

                            + diff --git a/0.0.17/html_split/_0023advanced_002d1.html b/0.0.17/html_split/_0023advanced_002d1.html new file mode 100644 index 0000000..282a7b8 --- /dev/null +++ b/0.0.17/html_split/_0023advanced_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #advanced-1.

                            + diff --git a/0.0.17/html_split/_0023advanced_002d2.html b/0.0.17/html_split/_0023advanced_002d2.html new file mode 100644 index 0000000..039b3ff --- /dev/null +++ b/0.0.17/html_split/_0023advanced_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #advanced-2.

                            + diff --git a/0.0.17/html_split/_0023advanced_002d3.html b/0.0.17/html_split/_0023advanced_002d3.html new file mode 100644 index 0000000..ebf5529 --- /dev/null +++ b/0.0.17/html_split/_0023advanced_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #advanced-3.

                            + diff --git a/0.0.17/html_split/_0023backgroundrequired_002dknowledge.html b/0.0.17/html_split/_0023backgroundrequired_002dknowledge.html new file mode 100644 index 0000000..9959745 --- /dev/null +++ b/0.0.17/html_split/_0023backgroundrequired_002dknowledge.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #backgroundrequired-knowledge.

                            + diff --git a/0.0.17/html_split/_0023backgroundrequired_002dknowledge_002d1.html b/0.0.17/html_split/_0023backgroundrequired_002dknowledge_002d1.html new file mode 100644 index 0000000..f6f6bd0 --- /dev/null +++ b/0.0.17/html_split/_0023backgroundrequired_002dknowledge_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #backgroundrequired-knowledge-1.

                            + diff --git a/0.0.17/html_split/_0023backgroundrequired_002dknowledge_002d2.html b/0.0.17/html_split/_0023backgroundrequired_002dknowledge_002d2.html new file mode 100644 index 0000000..b0b297d --- /dev/null +++ b/0.0.17/html_split/_0023backgroundrequired_002dknowledge_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #backgroundrequired-knowledge-2.

                            + diff --git a/0.0.17/html_split/_0023backgroundrequired_002dknowledge_002d3.html b/0.0.17/html_split/_0023backgroundrequired_002dknowledge_002d3.html new file mode 100644 index 0000000..ae34d91 --- /dev/null +++ b/0.0.17/html_split/_0023backgroundrequired_002dknowledge_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #backgroundrequired-knowledge-3.

                            + diff --git a/0.0.17/html_split/_0023backgroundrequired_002dknowledge_002d4.html b/0.0.17/html_split/_0023backgroundrequired_002dknowledge_002d4.html new file mode 100644 index 0000000..7417f62 --- /dev/null +++ b/0.0.17/html_split/_0023backgroundrequired_002dknowledge_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #backgroundrequired-knowledge-4.

                            + diff --git a/0.0.17/html_split/_0023backgroundrequired_002dknowledge_002d5.html b/0.0.17/html_split/_0023backgroundrequired_002dknowledge_002d5.html new file mode 100644 index 0000000..34298e9 --- /dev/null +++ b/0.0.17/html_split/_0023backgroundrequired_002dknowledge_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #backgroundrequired-knowledge-5.

                            + diff --git a/0.0.17/html_split/_0023backgroundrequired_002dknowledge_002d6.html b/0.0.17/html_split/_0023backgroundrequired_002dknowledge_002d6.html new file mode 100644 index 0000000..a1cdee1 --- /dev/null +++ b/0.0.17/html_split/_0023backgroundrequired_002dknowledge_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #backgroundrequired-knowledge-6.

                            + diff --git a/0.0.17/html_split/_0023backgroundrequired_002dknowledge_002d7.html b/0.0.17/html_split/_0023backgroundrequired_002dknowledge_002d7.html new file mode 100644 index 0000000..0a8d35a --- /dev/null +++ b/0.0.17/html_split/_0023backgroundrequired_002dknowledge_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #backgroundrequired-knowledge-7.

                            + diff --git a/0.0.17/html_split/_0023backgroundrequired_002dknowledge_002d8.html b/0.0.17/html_split/_0023backgroundrequired_002dknowledge_002d8.html new file mode 100644 index 0000000..6080498 --- /dev/null +++ b/0.0.17/html_split/_0023backgroundrequired_002dknowledge_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #backgroundrequired-knowledge-8.

                            + diff --git a/0.0.17/html_split/_0023backgroundrequired_002dknowledge_002d9.html b/0.0.17/html_split/_0023backgroundrequired_002dknowledge_002d9.html new file mode 100644 index 0000000..3ea462d --- /dev/null +++ b/0.0.17/html_split/_0023backgroundrequired_002dknowledge_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #backgroundrequired-knowledge-9.

                            + diff --git a/0.0.17/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html b/0.0.17/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html new file mode 100644 index 0000000..925c568 --- /dev/null +++ b/0.0.17/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html @@ -0,0 +1,40 @@ + + + + + + +#basics-types-objects-values-expressions-statements-and-control-flow-constructs (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #basics-types-objects-values-expressions-statements-and-control-flow-constructs.

                            + diff --git a/0.0.17/html_split/_0023building.html b/0.0.17/html_split/_0023building.html new file mode 100644 index 0000000..8ffc9df --- /dev/null +++ b/0.0.17/html_split/_0023building.html @@ -0,0 +1,40 @@ + + + + + + +#building (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #building.

                            + diff --git a/0.0.17/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html b/0.0.17/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html new file mode 100644 index 0000000..a7e6bad --- /dev/null +++ b/0.0.17/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html @@ -0,0 +1,40 @@ + + + + + + +#c-object-model-copy-semantics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #c-object-model-copy-semantics.

                            + diff --git a/0.0.17/html_split/_0023caveats.html b/0.0.17/html_split/_0023caveats.html new file mode 100644 index 0000000..d4bac8b --- /dev/null +++ b/0.0.17/html_split/_0023caveats.html @@ -0,0 +1,40 @@ + + + + + + +#caveats (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #caveats.

                            + diff --git a/0.0.17/html_split/_0023caveats_002d1.html b/0.0.17/html_split/_0023caveats_002d1.html new file mode 100644 index 0000000..64faefd --- /dev/null +++ b/0.0.17/html_split/_0023caveats_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #caveats-1.

                            + diff --git a/0.0.17/html_split/_0023caveats_002d2.html b/0.0.17/html_split/_0023caveats_002d2.html new file mode 100644 index 0000000..6c66559 --- /dev/null +++ b/0.0.17/html_split/_0023caveats_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #caveats-2.

                            + diff --git a/0.0.17/html_split/_0023caveats_002d3.html b/0.0.17/html_split/_0023caveats_002d3.html new file mode 100644 index 0000000..479063f --- /dev/null +++ b/0.0.17/html_split/_0023caveats_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #caveats-3.

                            + diff --git a/0.0.17/html_split/_0023caveats_002d4.html b/0.0.17/html_split/_0023caveats_002d4.html new file mode 100644 index 0000000..9588a55 --- /dev/null +++ b/0.0.17/html_split/_0023caveats_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #caveats-4.

                            + diff --git a/0.0.17/html_split/_0023caveats_002d5.html b/0.0.17/html_split/_0023caveats_002d5.html new file mode 100644 index 0000000..11edee5 --- /dev/null +++ b/0.0.17/html_split/_0023caveats_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #caveats-5.

                            + diff --git a/0.0.17/html_split/_0023caveats_002d6.html b/0.0.17/html_split/_0023caveats_002d6.html new file mode 100644 index 0000000..6cea721 --- /dev/null +++ b/0.0.17/html_split/_0023caveats_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #caveats-6.

                            + diff --git a/0.0.17/html_split/_0023caveats_002d7.html b/0.0.17/html_split/_0023caveats_002d7.html new file mode 100644 index 0000000..2a8f1cd --- /dev/null +++ b/0.0.17/html_split/_0023caveats_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #caveats-7.

                            + diff --git a/0.0.17/html_split/_0023caveats_002d8.html b/0.0.17/html_split/_0023caveats_002d8.html new file mode 100644 index 0000000..e330642 --- /dev/null +++ b/0.0.17/html_split/_0023caveats_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #caveats-8.

                            + diff --git a/0.0.17/html_split/_0023caveats_002d9.html b/0.0.17/html_split/_0023caveats_002d9.html new file mode 100644 index 0000000..004e434 --- /dev/null +++ b/0.0.17/html_split/_0023caveats_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #caveats-9.

                            + diff --git a/0.0.17/html_split/_0023compilation_002dmodel.html b/0.0.17/html_split/_0023compilation_002dmodel.html new file mode 100644 index 0000000..1017867 --- /dev/null +++ b/0.0.17/html_split/_0023compilation_002dmodel.html @@ -0,0 +1,40 @@ + + + + + + +#compilation-model (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #compilation-model.

                            + diff --git a/0.0.17/html_split/_0023compile_002dtime_002dcomputation.html b/0.0.17/html_split/_0023compile_002dtime_002dcomputation.html new file mode 100644 index 0000000..59b0c57 --- /dev/null +++ b/0.0.17/html_split/_0023compile_002dtime_002dcomputation.html @@ -0,0 +1,40 @@ + + + + + + +#compile-time-computation (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #compile-time-computation.

                            + diff --git a/0.0.17/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html b/0.0.17/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html new file mode 100644 index 0000000..9294adf --- /dev/null +++ b/0.0.17/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html @@ -0,0 +1,40 @@ + + + + + + +#context-and-aim-of-this-guide (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #context-and-aim-of-this-guide.

                            + diff --git a/0.0.17/html_split/_0023contributing_002dto_002dthis_002ddocument.html b/0.0.17/html_split/_0023contributing_002dto_002dthis_002ddocument.html new file mode 100644 index 0000000..272d848 --- /dev/null +++ b/0.0.17/html_split/_0023contributing_002dto_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#contributing-to-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #contributing-to-this-document.

                            + diff --git a/0.0.17/html_split/_0023contributors.html b/0.0.17/html_split/_0023contributors.html new file mode 100644 index 0000000..a391f9d --- /dev/null +++ b/0.0.17/html_split/_0023contributors.html @@ -0,0 +1,40 @@ + + + + + + +#contributors (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #contributors.

                            + diff --git a/0.0.17/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html b/0.0.17/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html new file mode 100644 index 0000000..d32c27e --- /dev/null +++ b/0.0.17/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html @@ -0,0 +1,40 @@ + + + + + + +#detailed-information-for-modules-and-topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #detailed-information-for-modules-and-topics.

                            + diff --git a/0.0.17/html_split/_0023error_002dhandling.html b/0.0.17/html_split/_0023error_002dhandling.html new file mode 100644 index 0000000..80cfb94 --- /dev/null +++ b/0.0.17/html_split/_0023error_002dhandling.html @@ -0,0 +1,40 @@ + + + + + + +#error-handling (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #error-handling.

                            + diff --git a/0.0.17/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html b/0.0.17/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html new file mode 100644 index 0000000..fc9b3eb --- /dev/null +++ b/0.0.17/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html @@ -0,0 +1,40 @@ + + + + + + +#external-i.e.-non-standard-libraries (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #external-i.e.-non-standard-libraries.

                            + diff --git a/0.0.17/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html b/0.0.17/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html new file mode 100644 index 0000000..f915680 --- /dev/null +++ b/0.0.17/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-calling-static_assert-with-a-constant-expression (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #foundational-calling-static_assert-with-a-constant-expression.

                            + diff --git a/0.0.17/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html b/0.0.17/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html new file mode 100644 index 0000000..88f62bc --- /dev/null +++ b/0.0.17/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-how-and-when-are-copies-made (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #foundational-how-and-when-are-copies-made.

                            + diff --git a/0.0.17/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html b/0.0.17/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html new file mode 100644 index 0000000..95ab098 --- /dev/null +++ b/0.0.17/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-using-and-defining-functions-with-default-arguments (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #foundational-using-and-defining-functions-with-default-arguments.

                            + diff --git a/0.0.17/html_split/_0023foundational_002dusing_002dudls.html b/0.0.17/html_split/_0023foundational_002dusing_002dudls.html new file mode 100644 index 0000000..2f7afdd --- /dev/null +++ b/0.0.17/html_split/_0023foundational_002dusing_002dudls.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-using-udls (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #foundational-using-udls.

                            + diff --git a/0.0.17/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html b/0.0.17/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html new file mode 100644 index 0000000..708f2d3 --- /dev/null +++ b/0.0.17/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-writing-requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #foundational-writing-requires-expressions.

                            + diff --git a/0.0.17/html_split/_0023functions.html b/0.0.17/html_split/_0023functions.html new file mode 100644 index 0000000..e304abe --- /dev/null +++ b/0.0.17/html_split/_0023functions.html @@ -0,0 +1,40 @@ + + + + + + +#functions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #functions.

                            + diff --git a/0.0.17/html_split/_0023functions_002ddefault_002dargument.html b/0.0.17/html_split/_0023functions_002ddefault_002dargument.html new file mode 100644 index 0000000..ccfbcbb --- /dev/null +++ b/0.0.17/html_split/_0023functions_002ddefault_002dargument.html @@ -0,0 +1,40 @@ + + + + + + +#functions-default-argument (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #functions-default-argument.

                            + diff --git a/0.0.17/html_split/_0023functions_002duser_002ddefined_002dliterals.html b/0.0.17/html_split/_0023functions_002duser_002ddefined_002dliterals.html new file mode 100644 index 0000000..b4f78b5 --- /dev/null +++ b/0.0.17/html_split/_0023functions_002duser_002ddefined_002dliterals.html @@ -0,0 +1,40 @@ + + + + + + +#functions-user-defined-literals (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #functions-user-defined-literals.

                            + diff --git a/0.0.17/html_split/_0023generic_002dprogramming_002dtemplates.html b/0.0.17/html_split/_0023generic_002dprogramming_002dtemplates.html new file mode 100644 index 0000000..3b91080 --- /dev/null +++ b/0.0.17/html_split/_0023generic_002dprogramming_002dtemplates.html @@ -0,0 +1,40 @@ + + + + + + +#generic-programming-templates (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #generic-programming-templates.

                            + diff --git a/0.0.17/html_split/_0023glossary.html b/0.0.17/html_split/_0023glossary.html new file mode 100644 index 0000000..9b46bf6 --- /dev/null +++ b/0.0.17/html_split/_0023glossary.html @@ -0,0 +1,40 @@ + + + + + + +#glossary (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #glossary.

                            + diff --git a/0.0.17/html_split/_0023how_002dto_002dcontribute.html b/0.0.17/html_split/_0023how_002dto_002dcontribute.html new file mode 100644 index 0000000..d9cff4a --- /dev/null +++ b/0.0.17/html_split/_0023how_002dto_002dcontribute.html @@ -0,0 +1,40 @@ + + + + + + +#how-to-contribute (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #how-to-contribute.

                            + diff --git a/0.0.17/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html b/0.0.17/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html new file mode 100644 index 0000000..def5140 --- /dev/null +++ b/0.0.17/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html @@ -0,0 +1,40 @@ + + + + + + +#inheritance-and-class-hierarchies (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #inheritance-and-class-hierarchies.

                            + diff --git a/0.0.17/html_split/_0023license.html b/0.0.17/html_split/_0023license.html new file mode 100644 index 0000000..6b44dd1 --- /dev/null +++ b/0.0.17/html_split/_0023license.html @@ -0,0 +1,40 @@ + + + + + + +#license (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #license.

                            + diff --git a/0.0.17/html_split/_0023main_002dadvanced_002drequirements.html b/0.0.17/html_split/_0023main_002dadvanced_002drequirements.html new file mode 100644 index 0000000..8214533 --- /dev/null +++ b/0.0.17/html_split/_0023main_002dadvanced_002drequirements.html @@ -0,0 +1,40 @@ + + + + + + +#main-advanced-requirements (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #main-advanced-requirements.

                            + diff --git a/0.0.17/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html b/0.0.17/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html new file mode 100644 index 0000000..22b0484 --- /dev/null +++ b/0.0.17/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html @@ -0,0 +1,40 @@ + + + + + + +#main-contracts-and-static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #main-contracts-and-static_assert.

                            + diff --git a/0.0.17/html_split/_0023main_002dimplementing.html b/0.0.17/html_split/_0023main_002dimplementing.html new file mode 100644 index 0000000..260008c --- /dev/null +++ b/0.0.17/html_split/_0023main_002dimplementing.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #main-implementing.

                            + diff --git a/0.0.17/html_split/_0023main_002dimplementing_002dudls.html b/0.0.17/html_split/_0023main_002dimplementing_002dudls.html new file mode 100644 index 0000000..a41d194 --- /dev/null +++ b/0.0.17/html_split/_0023main_002dimplementing_002dudls.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing-udls (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #main-implementing-udls.

                            + diff --git a/0.0.17/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html b/0.0.17/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html new file mode 100644 index 0000000..1e5a4d8 --- /dev/null +++ b/0.0.17/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing-user-defined-copy-operations (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #main-implementing-user-defined-copy-operations.

                            + diff --git a/0.0.17/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html b/0.0.17/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html new file mode 100644 index 0000000..4502ed8 --- /dev/null +++ b/0.0.17/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html @@ -0,0 +1,40 @@ + + + + + + +#meta-error-handling-static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #meta-error-handling-static_assert.

                            + diff --git a/0.0.17/html_split/_0023module_002dname_002drequires_002dexpressions.html b/0.0.17/html_split/_0023module_002dname_002drequires_002dexpressions.html new file mode 100644 index 0000000..56a9ebf --- /dev/null +++ b/0.0.17/html_split/_0023module_002dname_002drequires_002dexpressions.html @@ -0,0 +1,40 @@ + + + + + + +#module-name-requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #module-name-requires-expressions.

                            + diff --git a/0.0.17/html_split/_0023motivation.html b/0.0.17/html_split/_0023motivation.html new file mode 100644 index 0000000..0141374 --- /dev/null +++ b/0.0.17/html_split/_0023motivation.html @@ -0,0 +1,40 @@ + + + + + + +#motivation (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #motivation.

                            + diff --git a/0.0.17/html_split/_0023motivation_002d1.html b/0.0.17/html_split/_0023motivation_002d1.html new file mode 100644 index 0000000..7e4a69e --- /dev/null +++ b/0.0.17/html_split/_0023motivation_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #motivation-1.

                            + diff --git a/0.0.17/html_split/_0023motivation_002d2.html b/0.0.17/html_split/_0023motivation_002d2.html new file mode 100644 index 0000000..7901fd3 --- /dev/null +++ b/0.0.17/html_split/_0023motivation_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #motivation-2.

                            + diff --git a/0.0.17/html_split/_0023motivation_002d3.html b/0.0.17/html_split/_0023motivation_002d3.html new file mode 100644 index 0000000..ec720ad --- /dev/null +++ b/0.0.17/html_split/_0023motivation_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #motivation-3.

                            + diff --git a/0.0.17/html_split/_0023motivation_002d4.html b/0.0.17/html_split/_0023motivation_002d4.html new file mode 100644 index 0000000..f53583a --- /dev/null +++ b/0.0.17/html_split/_0023motivation_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #motivation-4.

                            + diff --git a/0.0.17/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html b/0.0.17/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html new file mode 100644 index 0000000..57e8b6e --- /dev/null +++ b/0.0.17/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html @@ -0,0 +1,40 @@ + + + + + + +#obtaining-this-document-the-most-recent-version-and-alternate-formats (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #obtaining-this-document-the-most-recent-version-and-alternate-formats.

                            + diff --git a/0.0.17/html_split/_0023organization_002dof_002dthis_002ddocument.html b/0.0.17/html_split/_0023organization_002dof_002dthis_002ddocument.html new file mode 100644 index 0000000..e312b8e --- /dev/null +++ b/0.0.17/html_split/_0023organization_002dof_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#organization-of-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #organization-of-this-document.

                            + diff --git a/0.0.17/html_split/_0023overview.html b/0.0.17/html_split/_0023overview.html new file mode 100644 index 0000000..b2d4bdc --- /dev/null +++ b/0.0.17/html_split/_0023overview.html @@ -0,0 +1,40 @@ + + + + + + +#overview (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #overview.

                            + diff --git a/0.0.17/html_split/_0023overview_002d1.html b/0.0.17/html_split/_0023overview_002d1.html new file mode 100644 index 0000000..d551764 --- /dev/null +++ b/0.0.17/html_split/_0023overview_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#overview-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #overview-1.

                            + diff --git a/0.0.17/html_split/_0023overview_002d2.html b/0.0.17/html_split/_0023overview_002d2.html new file mode 100644 index 0000000..5a34b05 --- /dev/null +++ b/0.0.17/html_split/_0023overview_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#overview-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #overview-2.

                            + diff --git a/0.0.17/html_split/_0023overview_002d3.html b/0.0.17/html_split/_0023overview_002d3.html new file mode 100644 index 0000000..f230145 --- /dev/null +++ b/0.0.17/html_split/_0023overview_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#overview-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #overview-3.

                            + diff --git a/0.0.17/html_split/_0023overview_002d4.html b/0.0.17/html_split/_0023overview_002d4.html new file mode 100644 index 0000000..2436b9a --- /dev/null +++ b/0.0.17/html_split/_0023overview_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#overview-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #overview-4.

                            + diff --git a/0.0.17/html_split/_0023points_002dto_002dcover.html b/0.0.17/html_split/_0023points_002dto_002dcover.html new file mode 100644 index 0000000..424b02b --- /dev/null +++ b/0.0.17/html_split/_0023points_002dto_002dcover.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #points-to-cover.

                            + diff --git a/0.0.17/html_split/_0023points_002dto_002dcover_002d1.html b/0.0.17/html_split/_0023points_002dto_002dcover_002d1.html new file mode 100644 index 0000000..2a554bb --- /dev/null +++ b/0.0.17/html_split/_0023points_002dto_002dcover_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #points-to-cover-1.

                            + diff --git a/0.0.17/html_split/_0023points_002dto_002dcover_002d2.html b/0.0.17/html_split/_0023points_002dto_002dcover_002d2.html new file mode 100644 index 0000000..053a51a --- /dev/null +++ b/0.0.17/html_split/_0023points_002dto_002dcover_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #points-to-cover-2.

                            + diff --git a/0.0.17/html_split/_0023points_002dto_002dcover_002d3.html b/0.0.17/html_split/_0023points_002dto_002dcover_002d3.html new file mode 100644 index 0000000..b0dad48 --- /dev/null +++ b/0.0.17/html_split/_0023points_002dto_002dcover_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #points-to-cover-3.

                            + diff --git a/0.0.17/html_split/_0023points_002dto_002dcover_002d4.html b/0.0.17/html_split/_0023points_002dto_002dcover_002d4.html new file mode 100644 index 0000000..94de8fa --- /dev/null +++ b/0.0.17/html_split/_0023points_002dto_002dcover_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #points-to-cover-4.

                            + diff --git a/0.0.17/html_split/_0023points_002dto_002dcover_002d5.html b/0.0.17/html_split/_0023points_002dto_002dcover_002d5.html new file mode 100644 index 0000000..39d1eaf --- /dev/null +++ b/0.0.17/html_split/_0023points_002dto_002dcover_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #points-to-cover-5.

                            + diff --git a/0.0.17/html_split/_0023points_002dto_002dcover_002d6.html b/0.0.17/html_split/_0023points_002dto_002dcover_002d6.html new file mode 100644 index 0000000..92df88f --- /dev/null +++ b/0.0.17/html_split/_0023points_002dto_002dcover_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #points-to-cover-6.

                            + diff --git a/0.0.17/html_split/_0023points_002dto_002dcover_002d7.html b/0.0.17/html_split/_0023points_002dto_002dcover_002d7.html new file mode 100644 index 0000000..6e6c895 --- /dev/null +++ b/0.0.17/html_split/_0023points_002dto_002dcover_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #points-to-cover-7.

                            + diff --git a/0.0.17/html_split/_0023points_002dto_002dcover_002d8.html b/0.0.17/html_split/_0023points_002dto_002dcover_002d8.html new file mode 100644 index 0000000..b5574e1 --- /dev/null +++ b/0.0.17/html_split/_0023points_002dto_002dcover_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #points-to-cover-8.

                            + diff --git a/0.0.17/html_split/_0023preprocessor.html b/0.0.17/html_split/_0023preprocessor.html new file mode 100644 index 0000000..a3bb5f6 --- /dev/null +++ b/0.0.17/html_split/_0023preprocessor.html @@ -0,0 +1,40 @@ + + + + + + +#preprocessor (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #preprocessor.

                            + diff --git a/0.0.17/html_split/_0023references.html b/0.0.17/html_split/_0023references.html new file mode 100644 index 0000000..69fbd6b --- /dev/null +++ b/0.0.17/html_split/_0023references.html @@ -0,0 +1,40 @@ + + + + + + +#references (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #references.

                            + diff --git a/0.0.17/html_split/_0023references_002don_002dlearning_002doutcomes.html b/0.0.17/html_split/_0023references_002don_002dlearning_002doutcomes.html new file mode 100644 index 0000000..d28fbbf --- /dev/null +++ b/0.0.17/html_split/_0023references_002don_002dlearning_002doutcomes.html @@ -0,0 +1,40 @@ + + + + + + +#references-on-learning-outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #references-on-learning-outcomes.

                            + diff --git a/0.0.17/html_split/_0023software_002ddesign.html b/0.0.17/html_split/_0023software_002ddesign.html new file mode 100644 index 0000000..16f5f54 --- /dev/null +++ b/0.0.17/html_split/_0023software_002ddesign.html @@ -0,0 +1,40 @@ + + + + + + +#software-design (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #software-design.

                            + diff --git a/0.0.17/html_split/_0023standard_002dlibrary.html b/0.0.17/html_split/_0023standard_002dlibrary.html new file mode 100644 index 0000000..71956d3 --- /dev/null +++ b/0.0.17/html_split/_0023standard_002dlibrary.html @@ -0,0 +1,40 @@ + + + + + + +#standard-library (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #standard-library.

                            + diff --git a/0.0.17/html_split/_0023student_002doutcomes.html b/0.0.17/html_split/_0023student_002doutcomes.html new file mode 100644 index 0000000..df0035d --- /dev/null +++ b/0.0.17/html_split/_0023student_002doutcomes.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #student-outcomes.

                            + diff --git a/0.0.17/html_split/_0023student_002doutcomes_002d1.html b/0.0.17/html_split/_0023student_002doutcomes_002d1.html new file mode 100644 index 0000000..e9344b7 --- /dev/null +++ b/0.0.17/html_split/_0023student_002doutcomes_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #student-outcomes-1.

                            + diff --git a/0.0.17/html_split/_0023student_002doutcomes_002d2.html b/0.0.17/html_split/_0023student_002doutcomes_002d2.html new file mode 100644 index 0000000..6fa7724 --- /dev/null +++ b/0.0.17/html_split/_0023student_002doutcomes_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #student-outcomes-2.

                            + diff --git a/0.0.17/html_split/_0023student_002doutcomes_002d3.html b/0.0.17/html_split/_0023student_002doutcomes_002d3.html new file mode 100644 index 0000000..195d9d2 --- /dev/null +++ b/0.0.17/html_split/_0023student_002doutcomes_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #student-outcomes-3.

                            + diff --git a/0.0.17/html_split/_0023student_002doutcomes_002d4.html b/0.0.17/html_split/_0023student_002doutcomes_002d4.html new file mode 100644 index 0000000..3e30430 --- /dev/null +++ b/0.0.17/html_split/_0023student_002doutcomes_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #student-outcomes-4.

                            + diff --git a/0.0.17/html_split/_0023student_002doutcomes_002d5.html b/0.0.17/html_split/_0023student_002doutcomes_002d5.html new file mode 100644 index 0000000..0a4a7da --- /dev/null +++ b/0.0.17/html_split/_0023student_002doutcomes_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #student-outcomes-5.

                            + diff --git a/0.0.17/html_split/_0023student_002doutcomes_002d6.html b/0.0.17/html_split/_0023student_002doutcomes_002d6.html new file mode 100644 index 0000000..c5c4ac0 --- /dev/null +++ b/0.0.17/html_split/_0023student_002doutcomes_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #student-outcomes-6.

                            + diff --git a/0.0.17/html_split/_0023student_002doutcomes_002d7.html b/0.0.17/html_split/_0023student_002doutcomes_002d7.html new file mode 100644 index 0000000..5233f94 --- /dev/null +++ b/0.0.17/html_split/_0023student_002doutcomes_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #student-outcomes-7.

                            + diff --git a/0.0.17/html_split/_0023student_002doutcomes_002d8.html b/0.0.17/html_split/_0023student_002doutcomes_002d8.html new file mode 100644 index 0000000..f19fd7f --- /dev/null +++ b/0.0.17/html_split/_0023student_002doutcomes_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #student-outcomes-8.

                            + diff --git a/0.0.17/html_split/_0023student_002doutcomes_002d9.html b/0.0.17/html_split/_0023student_002doutcomes_002d9.html new file mode 100644 index 0000000..735a21f --- /dev/null +++ b/0.0.17/html_split/_0023student_002doutcomes_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #student-outcomes-9.

                            + diff --git a/0.0.17/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html b/0.0.17/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html new file mode 100644 index 0000000..4801178 --- /dev/null +++ b/0.0.17/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html @@ -0,0 +1,40 @@ + + + + + + +#summary-of-modules-and-topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #summary-of-modules-and-topics.

                            + diff --git a/0.0.17/html_split/_0023testing_002dand_002ddebugging.html b/0.0.17/html_split/_0023testing_002dand_002ddebugging.html new file mode 100644 index 0000000..1ae096d --- /dev/null +++ b/0.0.17/html_split/_0023testing_002dand_002ddebugging.html @@ -0,0 +1,40 @@ + + + + + + +#testing-and-debugging (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #testing-and-debugging.

                            + diff --git a/0.0.17/html_split/_0023tooling.html b/0.0.17/html_split/_0023tooling.html new file mode 100644 index 0000000..634a8dc --- /dev/null +++ b/0.0.17/html_split/_0023tooling.html @@ -0,0 +1,40 @@ + + + + + + +#tooling (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #tooling.

                            + diff --git a/0.0.17/html_split/_0023topic_002dintroduction.html b/0.0.17/html_split/_0023topic_002dintroduction.html new file mode 100644 index 0000000..742d5d9 --- /dev/null +++ b/0.0.17/html_split/_0023topic_002dintroduction.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #topic-introduction.

                            + diff --git a/0.0.17/html_split/_0023topic_002dintroduction_002d1.html b/0.0.17/html_split/_0023topic_002dintroduction_002d1.html new file mode 100644 index 0000000..a110644 --- /dev/null +++ b/0.0.17/html_split/_0023topic_002dintroduction_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #topic-introduction-1.

                            + diff --git a/0.0.17/html_split/_0023topic_002dintroduction_002d2.html b/0.0.17/html_split/_0023topic_002dintroduction_002d2.html new file mode 100644 index 0000000..986bf37 --- /dev/null +++ b/0.0.17/html_split/_0023topic_002dintroduction_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #topic-introduction-2.

                            + diff --git a/0.0.17/html_split/_0023topic_002dintroduction_002d3.html b/0.0.17/html_split/_0023topic_002dintroduction_002d3.html new file mode 100644 index 0000000..3d14fd9 --- /dev/null +++ b/0.0.17/html_split/_0023topic_002dintroduction_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #topic-introduction-3.

                            + diff --git a/0.0.17/html_split/_0023topic_002dintroduction_002d4.html b/0.0.17/html_split/_0023topic_002dintroduction_002d4.html new file mode 100644 index 0000000..c73a236 --- /dev/null +++ b/0.0.17/html_split/_0023topic_002dintroduction_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #topic-introduction-4.

                            + diff --git a/0.0.17/html_split/_0023use_002dof_002dthis_002ddocument.html b/0.0.17/html_split/_0023use_002dof_002dthis_002ddocument.html new file mode 100644 index 0000000..68d835d --- /dev/null +++ b/0.0.17/html_split/_0023use_002dof_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#use-of-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #use-of-this-document.

                            + diff --git a/0.0.17/html_split/_0023user_002ddefined_002dtypes_002dclasses.html b/0.0.17/html_split/_0023user_002ddefined_002dtypes_002dclasses.html new file mode 100644 index 0000000..04771a9 --- /dev/null +++ b/0.0.17/html_split/_0023user_002ddefined_002dtypes_002dclasses.html @@ -0,0 +1,40 @@ + + + + + + +#user-defined-types-classes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #user-defined-types-classes.

                            + diff --git a/0.0.17/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html b/0.0.17/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html new file mode 100644 index 0000000..f4b9435 --- /dev/null +++ b/0.0.17/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html @@ -0,0 +1,40 @@ + + + + + + +#working-group-documents-related-to-c-teaching-guidelines (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                            The node you are looking for is at #working-group-documents-related-to-c-teaching-guidelines.

                            + diff --git a/0.0.17/html_split/index.html b/0.0.17/html_split/index.html new file mode 100644 index 0000000..08c20ea --- /dev/null +++ b/0.0.17/html_split/index.html @@ -0,0 +1,234 @@ + + + + + +Top (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +

                            Table of Contents

                            + +
                            + + +
                            + + + +
                            +

                            Guidelines for Teaching C++

                            + + + + + + + + + + + + + + + + +
                            + + + + + + diff --git a/0.0.17/html_split/unknown_node.html b/0.0.17/html_split/unknown_node.html new file mode 100644 index 0000000..b40c083 --- /dev/null +++ b/0.0.17/html_split/unknown_node.html @@ -0,0 +1,849 @@ + + + + + +Guidelines for Teaching C++ + + + + + + + + + + + + + + + + +
                            +

                            +   [Contents]

                            +
                            +
                            +

                            7.1.5.1 Background/Required Knowledge

                            +
                              +
                            • All of the above. +
                            • General understanding of compile-time requirements +
                            + +
                            +

                            +   [Contents]

                            +
                            +

                            7.1.5.2 Student outcomes

                            +

                            A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                            +

                            A student should be able to: +

                            +
                              +
                            1. Utilize static_assert to verify preconditions of a meta-function +
                            2. Utilize static_assert to verify the results of meta-functions for +known values +
                            + +
                            +

                            +   [Contents]

                            +
                            +

                            7.1.5.3 Caveats

                            +

                            This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                            +
                            +

                            +   [Contents]

                            +
                            +

                            7.1.5.4 Points to cover

                            +

                            This section lists important details for each point. +

                            +
                              +
                            • When writing a meta-function, use static_assert to test the +results +
                            • Write static_assert calls at the scope of the code they are +guarding +
                            + +
                            template<typename T>
                            +struct container {
                            +    std::map<int, T> vals;
                            +
                            +    // Test location #1
                            +    static_assert(
                            +        std::is_default_constructible_v<T>,
                            +        "container type T must be default constructible");i
                            +
                            +    void add(int key, T const& t) {
                            +        // Test location #2
                            +        static_assert(
                            +            std::is_default_constructible_v<T>,
                            +            "container type T must be default constructible");
                            +        // std::map::operator[] requires default constructible type for 
                            +        // the value. This will cause a build failure deep in the 
                            +        // implementation of std::map, when T is not default constructible
                            +        vals[key] = t;
                            +    }
                            +};
                            +
                            +struct NoDefCtor {
                            +    NoDefCtor() = delete;
                            +    NoDefCtor(double d) {}
                            +};
                            +
                            +container<NoDefCtor> c; // If Test #1 was omitted, this would succeed
                            +// This is ill-formed. Test #2 would catch this and provide a better 
                            +// error message for the user
                            +c.add(42, NoDefCtor(1.0)); 
                            +
                            +
                            +

                            +   [Contents]

                            +
                            +

                            7.2.1 Overview

                            +

                            Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

                            + + + + + +
                            LevelObjectives
                            FoundationalDefine and use requires-expressions to check satisfaction of +expressions by given parameters
                            MainDefine and use requires-expressions to check properties of +expressions
                            Advanced
                            + +
                            +

                            +   [Contents]

                            +
                            +

                            7.2.2 Motivation

                            +

                            Why is this important? Why do we want to learn/teach this +topic? +

                            +

                            Requires-expressions allow a developer to perform compile-time +evaluation on the validity of other expressions. These are fundamental +to the ability to write concepts. +[Compile-time programming: concepts] +

                            +
                            +

                            +   [Contents]

                            +
                            +

                            7.3 Topic introduction

                            +

                            Very brief introduction to the topic. +

                            +

                            Requires-expressions are compile-time predicates which evaluate to true +when their specified set of expressions are all valid for a given set of +inputs. +

                            + + + + + + +
                            +

                            +   [Contents]

                            +
                            +

                            7.3.1.1 Background/Required Knowledge

                            +

                            A student is able to: +

                            + + +

                            It is helpful if: +

                            +
                              +
                            • The student is aware that attempting to specialize the template with +types or values which do not match otherwise unstated assumptions will +cause errors within the template. +
                            + +
                            +

                            +   [Contents]

                            +
                            +

                            7.3.1.2 Student outcomes

                            +

                            A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                            +

                            A student should be able to: +

                            +
                              +
                            1. Write a simple-requirement to assert the validity of an expression +
                            2. Write a type-requirement to check the existence of a type by its +identifier +
                            3. Write a compound-requirement to test the resulting type of an expression +
                            4. Write a nested-requirement to test the constexpr value of an operation, +as opposed to just the syntactic validity +
                            5. Use a requires-expression within a concept, requires-clause, or +if constexpr condition +
                            + +
                            +

                            +   [Contents]

                            +
                            +

                            7.3.1.3 Caveats

                            +

                            This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                            +

                            To require that expressions, which evaluate to a boolean value like +sizeof(t) == 4, evaluate to true a nested-requirement is +needed (e.g., requires sizeof(t) == 4;). Omitting the +requires results in a simple-requirement, which is satisfied +based purely on syntactic validity, not on the result of the operation. +

                            +
                            +

                            +   [Contents]

                            +
                            +

                            7.3.1.4 Points to cover

                            +

                            This section lists important details for each point. +

                            +
                              +
                            • All requires-expression requirements terminate with a semicolon. +
                            • simple-requirements are used to check that an expression is well-formed. +
                            • nested-requirements are introduced with requires and primarily +used to check the result of an expression computable by the compiler, +including concepts or other requires-expressions. +
                            • type-requirements are introduced with typename and used to verify +the existence of a type with a particular identifier. +
                            • compound-requirements are enclosed in braces and can be used to check +the resulting type of an expression. +
                            • Checks are performed by the compiler, not at run time. +
                            • If covering usage of requires-expression with requires-clause, +[Compile-time programming: +requires clause] demonstrate requires requires and show how to +ever avoid writing it by using a concept. +[Compile-time programming: concepts] +
                            + +
                            +

                            +   [Contents]

                            +
                            +

                            7.3.2.1 Background/Required Knowledge

                            +
                              +
                            • All of the above. +
                            • Knowledge of noexcept +
                            + +

                            A student is able to: +

                            + + +
                            +

                            +   [Contents]

                            +
                            +

                            7.3.2.2 Student outcomes

                            +

                            A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                            +

                            A student should be able to: +

                            +
                              +
                            1. Write compound-requirements which test the noexceptness of an +expression. +
                            2. Use a concept as the target of a compound-requirement. +
                            + +
                            +

                            +   [Contents]

                            +
                            +

                            7.3.2.3 Caveats

                            +

                            This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                            +
                            +

                            +   [Contents]

                            +
                            +

                            7.3.2.4 Points to cover

                            +

                            This section lists important details for each point. +

                            +
                              +
                            • Compound-requirements allow the optional ability to test whether an +expression is marked as noexcept, by using a trailing +noexcept keyword. +
                            + +
                            struct S
                            +{
                            +    void foo() noexcept {}
                            +    void bar() {}
                            +};
                            +
                            +static_assert(requires(S s) { { s.foo() } noexcept; } ); // Succeeds. s.foo() is noexcept
                            +static_assert(requires(S s) { { s.bar() } noexcept; } ); // Fails. s.bar() is not noexcept
                            +
                            +
                              +
                            • If the return-type-requirement of a compound-requirement is a concept, +that concept is given the resulting type as the first parameter, +followed by the specified parameters in the compound-requirement. +{ ++x } -> C<int> would substitute +C<decltype((++x)), int> and check that concept C is satisfied for +those parameters. +
                            + +
                            +

                            +   [Contents]

                            +
                            +

                            7.3.3 Advanced

                            + +
                            +

                            +   [Contents]

                            +
                            +

                            7.4.1 Overview

                            +

                            Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

                            + + + + + +
                            LevelObjectives
                            Foundationalunderstanding how and when are copies made
                            Mainimplementing user-defined copy operations
                            Advancedspecial cases: copy elision
                            + +
                            +

                            +   [Contents]

                            +
                            +

                            7.4.2 Motivation

                            +

                            Why is this important? Why do we want to learn/teach this +topic? +

                            +

                            Copy semantics allows the user to define how objects of a class get +replicated and interact on a value level. +

                            +
                            +

                            +   [Contents]

                            +
                            +

                            7.4.3 Topic introduction

                            +

                            Very brief introduction to the topic. +

                            +

                            Explains when and how objects are copied. +

                            +
                            +

                            +   [Contents]

                            +
                            +

                            7.4.4.1 Background/Required Knowledge

                            +

                            A student is able to: * explain what a C++ type is? +[C++ object model: types] * explain what +an object is? [C++ object model: +objects], [C++ object model: +constant objects] * define and understand class invariants? +

                            +

                            It helps when a student is able to: * use move semantics +[C++ object model: move +semantics] * explain special member functions +[C++ object model: +special member functions] +

                            +
                            +

                            +   [Contents]

                            +
                            +

                            7.4.4.2 Student outcomes

                            +

                            A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                            +

                            A student should be able to: +

                            +
                              +
                            1. explain what copy semantics accomplish +
                            + +
                              +
                            • establishing “equivalent” object state in another object +
                            + +
                              +
                            1. explain difference between copying a reference and copying a value* +
                            2. explain where copies are made +
                            + +

                            * In other languages these differences are sometimes referred to as +shallow and deep copy. +

                            +
                            +

                            +   [Contents]

                            +
                            +

                            7.4.4.3 Caveats

                            +

                            This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                            +
                              +
                            • Compiler-provided copy operations may result in ownership problems +(e.g., char*). These ownership problems can generally be solved +by using types whose copy operations have the appropriate semantics, +e.g., std::string instead of char* to hold string values. +
                            + +
                            +

                            +   [Contents]

                            +
                            +

                            7.4.4.4 Points to cover

                            +

                            This section lists important details for each point. +

                            +
                              +
                            • Principle of copying +
                                +
                              • Copying of types, which follow the rule of zero +
                              • Copying of types, with user defined copy operations +
                              • Copying an object does not change the original +
                              + +
                            • Practical applications +
                                +
                              • std::unique_ptr (has no copy) +
                              • Strings (copies the value) +
                              + +
                            + +
                            +

                            +   [Contents]

                            +
                            +

                            7.4.5.1 Background/Required Knowledge

                            +

                            A student is able to: * identify special member functions +[C++ object model: +special member functions] +

                            +

                            It helps when a student is able to: * use move semantics +[C++ object model: move +semantics] * explain the rule of zero +[C++ object model: rule-of-zero] +* explain the rule of five [C++ +object model: rule-of-five] +

                            +
                            +

                            +   [Contents]

                            +
                            +

                            7.4.5.2 Student outcomes

                            +

                            A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                            +

                            A student should be able to: * explain when they have to implement the +copy operations for their own type * Copy constructor * Copy assignment +operator * implement copy operations for their own types * +Optional: explain when copying with basic and strong exception +guarantees is useful +

                            +
                            +

                            +   [Contents]

                            +
                            +

                            7.4.5.3 Caveats

                            +

                            This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                            +
                              +
                            • Intricacies when implementing copy operations: +
                                +
                              • Examples of how not to write copy operations (e.g., C++03 +std::auto_ptr) +
                              + +
                            + +
                            +

                            +   [Contents]

                            +
                            +

                            7.4.5.4 Points to cover

                            +

                            This section lists important details for each point. +

                            +
                              +
                            • Copy constructors and copy assignment operators +
                                +
                              • How compiler generates default copy operations +
                              • =default, =delete (No copy) +
                              • How-to write your own copy operations +
                              • Rule-of-five +
                              • Copy assignment operators can be ref-qualified to avoid assigning into +temporary objects. +
                              + +
                            + +
                            +

                            +   [Contents]

                            +
                            +

                            7.4.6 Advanced

                            +

                            These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

                            +

                            When can copies be elided and when does the standard guarantee copy +elision. References: * Abseil tip of +the Week #166 * +cppreference +- Copy elision +

                            +

                            See user-defined-literals. +

                            +
                            +

                            +   [Contents]

                            +
                            +

                            7.5.1 Overview

                            +

                            Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

                            +

                            Functions in C++ may be overloaded with different numbers and types of +parameters. It may be of value to specify default arguments for some +number of parameters, to allow a caller to avoid specifying arguments +that rarely change, or to enable expanding the set of parameters while +maintaining backward compatibility with existing callers. +

                            + + + + + +
                            LevelObjective
                            FoundationalDefine and use functions with default arguments
                            Main
                            Advancedrefinement of default arguments through multiple declarations
                            + +
                            +

                            +   [Contents]

                            +
                            +

                            7.5.2 Motivation

                            +

                            Why is this important? Why do we want to learn/teach this +topic? +

                            +

                            Default arguments allow the omission of arguments with obvious or common +values. Also may be utilized to extend an existing function signature +without forcing changes to existing calling code. +

                            +
                            +

                            +   [Contents]

                            +
                            +

                            7.5.3 Topic introduction

                            +

                            Very brief introduction to the topic. +

                            +

                            Explain how default arguments work and how to define them. +

                            +
                            +

                            +   [Contents]

                            +
                            +

                            7.5.4.1 Background/Required Knowledge

                            +

                            A student is able to: +

                            + + +
                            +

                            +   [Contents]

                            +
                            +

                            7.5.4.2 Student outcomes

                            +

                            A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                            +

                            A student should be able to: +

                            +
                              +
                            1. Call to a function with a default argument with or without that argument +specified +
                            2. Declare a function with a default argument, and omit the default in the +definition’s signature +
                            3. Explain when the lifetime of a default argument begins and ends +
                            + +
                            +

                            +   [Contents]

                            +
                            +

                            7.5.4.3 Caveats

                            +

                            This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                            +
                              +
                            • When no forward-declaration exists, the definition serves as the +declaration +
                            • When multiple declarations exist, only one may specify the default for +any particular parameter, but multiple declarations may specify the +defaults for different parameters. +
                            • Additional default values may be specified for other parameters in +repeat declarations +
                            • Calling an overloaded function with fewer arguments may be ambiguous +with regard to an overload with default arguments +
                            + +
                            +

                            +   [Contents]

                            +
                            +

                            7.5.4.4 Points to cover

                            +

                            This section lists important details for each point. +

                            +
                              +
                            • Default value may only be specified once for each parameter among all +declarations +
                            • Default values must start from the rightmost parameter and continue +leftward without gaps +
                            • Considerations of when to use default arguments vs overload set +
                            + +
                            +

                            +   [Contents]

                            +
                            +

                            7.5.5.2 Student outcomes

                            +

                            A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                            +

                            A student should be able to: +

                            +
                            +

                            +   [Contents]

                            +
                            +

                            7.5.5.3 Caveats

                            +

                            This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                            +
                            +

                            +   [Contents]

                            +
                            +

                            7.5.5.4 Points to cover

                            +

                            This section lists important details for each point. +

                            +
                            +

                            +   [Contents]

                            +
                            +

                            7.5.6 Advanced

                            +

                            These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

                            +

                            Subsequent redeclarations of the same function may add default argument +values, which are then usable by callers. Though a single parameter +cannot be given a default argument twice in the same translation unit, +it is legal, though ill-advised, to give the same function different +default arguments in different translation units. +

                            +
                            +

                            +   [Contents]

                            +
                            +

                            7.6.1 Overview

                            +

                            Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

                            + + + + + +
                            LevelObjectives
                            Foundationalusing and understanding UDLs
                            Mainimplementing your own UDLs
                            AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
                            + +
                            +

                            +   [Contents]

                            +
                            +

                            7.6.2 Motivation

                            +

                            Why is this important? Why do we want to learn/teach this +topic? +

                            +
                              +
                            • Allows clearer expression of intent in C++. +
                            • std::string: "Hello, world!"s +
                            • std::chrono: 3h + 10min + 5s +
                            + +
                            +

                            +   [Contents]

                            +
                            +

                            7.6.3 Topic introduction

                            +

                            Very brief introduction to the topic. +

                            +
                              +
                            • Explain the existence of user defined literals. Example: +12min + 17s is terse, expressive and type safe. +
                            + +
                            +

                            +   [Contents]

                            +
                            +

                            7.6.4.1 Background/Required Knowledge

                            +

                            A student: * knows how to form numeric literals, e.g., 1.5f means +a float of value 1.5. * is familiar with the major C++ +types: * bool (Boolean type) * int (Integer type) * +double (Floating-point type) * std::string (Text type) * +std::vector (Collection type) * knows that namespaces exist, and +namespace std. * knows what using-declarations and +using-directives are. [C++ object +model: declarations] +

                            +
                            +

                            +   [Contents]

                            +
                            +

                            7.6.4.2 Student outcomes

                            +

                            A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                            +

                            A student should be able to: +

                            +
                              +
                            1. use using namespace std::string_literals[1]. +
                            2. recognise UDLs in code that they are reading. +
                            3. figure out which UDL definitions for a used type exist. +
                            4. identify parts of the standard library that make use of UDLs. +
                            5. prevent the dangers of temporaries created with "blah"s as well +as with std::string{"blah"}. +
                            6. effectively selects the right set of namespaces in using-directives from +the sub-namespaces std::literals. +
                            + +

                            [1]: explain that it’s okay to use a using-directive to “activate” +UDLs. +

                            +
                            +

                            +   [Contents]

                            +
                            +

                            7.6.4.3 Caveats

                            +

                            This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                            +
                              +
                            • A student gets confused by the similarities and differences between +built-in suffixes and UDLs and between UDLs from different namespaces. +
                            • A student “activates” two suffixes with the same signature from +different namespaces. +
                            + +
                            +

                            +   [Contents]

                            +
                            +

                            7.6.4.4 Points to cover

                            +

                            This section lists important details for each point. +

                            +
                            +

                            +   [Contents]

                            +
                            +

                            7.6.5.1 Background/Required Knowledge

                            +
                              +
                            • All of the above. +
                            + +
                            +

                            +   [Contents]

                            +
                            +

                            7.6.5.2 Student outcomes

                            +

                            A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                            +

                            A student should be able to: +

                            +
                              +
                            1. write a UDL operator of their own. +
                            2. separate unrelated UDLs into distinct namespaces. +
                            + +
                            +

                            +   [Contents]

                            +
                            +

                            7.6.5.3 Caveats

                            +

                            This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                            +

                            No caveats at present. #### Points to cover +

                            +

                            This section lists important details for each point. +

                            +

                            No caveats at present. ### Advanced {#udl-advanced} +

                            +

                            These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

                            +

                            See concepts. +

                            + + + + + diff --git a/latest/index.html b/latest/index.html index d0fe143..c1fd816 100644 --- a/latest/index.html +++ b/latest/index.html @@ -106,7 +106,7 @@

                            Guidelines for Teaching C++

                            -

                            Version 0.0.16

                            +

                            Version 0.0.17

                            SG20 (ISO C++ Study Group on Education)

                            @@ -141,13 +141,13 @@

                            Version 0.0.16

                          • 6.15 Software Design
                        • 7 Detailed Information for Modules and Topics
                            -
                          • 7.1 C++ object model: copy semantics
                              +
                            • 7.1 Meta-error handling: static_assert
                            • 7.2 Module name: Requires Expressions
                            • -
                            • 7.4 Meta-error handling: static_assert
                                +
                              • 7.4 C++ object model: copy semantics
                              • 7.5 Functions: default argument
                                • 7.5.1 Overview
                                • @@ -201,9 +201,9 @@

                                  <

                                  The most recent version of this document is available as an online HTML document at: https://cplusplus.github.io/SG20/latest/.

                                  The version of the document that you are currently reading is available in the following formats:

                                    -
                                  1. online (HTML) format as a single large HTML document: https://cplusplus.github.io/SG20/0.0.16/html

                                  2. -
                                  3. EPUB format: https://cplusplus.github.io/SG20/0.0.16/guidelines.epub

                                  4. -
                                  5. online (HTML) format, split across multiple HTML documents: https://cplusplus.github.io/SG20/0.0.16/html_split/ [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

                                  6. +
                                  7. online (HTML) format as a single large HTML document: https://cplusplus.github.io/SG20/0.0.17/html

                                  8. +
                                  9. EPUB format: https://cplusplus.github.io/SG20/0.0.17/guidelines.epub

                                  10. +
                                  11. online (HTML) format, split across multiple HTML documents: https://cplusplus.github.io/SG20/0.0.17/html_split/ [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

                                  Older versions of this document are also available. In general version ver is available at https://cplusplus.github.io/SG20/ver/html. For example, version 0.1.0 (assuming that this version exists) would be available at https://cplusplus.github.io/SG20/0.1.0/html.

                                  2 Context and Aim of This Guide

                                  @@ -861,14 +861,14 @@

                                  6.15 Software Design

                                  7 Detailed Information for Modules and Topics

                                  -

                                  7.1 C++ object model: copy semantics

                                  +

                                  7.1 Meta-error handling: static_assert

                                  Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                                  7.1.1 Overview

                                  Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                                  - +
                                  --++ @@ -879,92 +879,98 @@

                                  7.1.1 Overview

                                  - + - + - +
                                  Foundationalunderstanding how and when are copies madeCalling static_assert with a constant expression
                                  Mainimplementing user-defined copy operationsUsing static_assert to detect contract violations and improve error messages
                                  Advancedspecial cases: copy elision

                                  7.1.2 Motivation

                                  Why is this important? Why do we want to learn/teach this topic?

                                  -

                                  Copy semantics allows the user to define how objects of a class get replicated and interact on a value level.

                                  +

                                  static_assert allows the developer to enforce that conditions which can be checked during compilation will force build errors when violated. Additionally, they are the best mechanism by which a developer can pass useful information to other developers regarding what violation occurred or what must be done, instead.

                                  7.1.3 Topic introduction

                                  Very brief introduction to the topic.

                                  -

                                  Explains when and how objects are copied.

                                  -

                                  7.1.4 Foundational: How and when are copies made

                                  +

                                  static_assert is a compile-time evaluated function that asserts the truth of a supplied predicate, issuing an optional user-supplied error message if the predicate is false.

                                  +

                                  7.1.4 Foundational: Calling static_assert with a constant expression

                                  7.1.4.1 Background/Required Knowledge

                                  -

                                  A student is able to: * explain what a C++ type is? [C++ object model: types] * explain what an object is? [C++ object model: objects], [C++ object model: constant objects] * define and understand class invariants?

                                  -

                                  It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain special member functions [C++ object model: special member functions]

                                  +

                                  A student:

                                  +
                                    +
                                  • Should be able to explain the difference between code evaluated at compile-time and run-time
                                  • +
                                  • Should be able to cite some examples of compile-time known information, such as sizeof(T)
                                  • +

                                  7.1.4.2 Student outcomes

                                  A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                  A student should be able to:

                                    -
                                  1. explain what copy semantics accomplish
                                  2. -
                                  -
                                    -
                                  • establishing “equivalent” object state in another object
                                  • -
                                  -
                                    -
                                  1. explain difference between copying a reference and copying a value*
                                  2. -
                                  3. explain where copies are made
                                  4. +
                                  5. Assert the expected size of a structure using static_assert
                                  -

                                  * In other languages these differences are sometimes referred to as shallow and deep copy.

                                  7.1.4.3 Caveats

                                  This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                  -
                                    -
                                  • Compiler-provided copy operations may result in ownership problems (e.g., char*). These ownership problems can generally be solved by using types whose copy operations have the appropriate semantics, e.g., std::string instead of char* to hold string values.
                                  • -

                                  7.1.4.4 Points to cover

                                  This section lists important details for each point.

                                    -
                                  • Principle of copying -
                                      -
                                    • Copying of types, which follow the rule of zero
                                    • -
                                    • Copying of types, with user defined copy operations
                                    • -
                                    • Copying an object does not change the original
                                    • -
                                  • -
                                  • Practical applications -
                                      -
                                    • std::unique_ptr (has no copy)
                                    • -
                                    • Strings (copies the value)
                                    • -
                                  • +
                                  • X
                                  • +
                                  • In addition to what is wrong, a good error message will inform the user of how to correct it
                                  -

                                  7.1.5 Main: Implementing user-defined copy operations

                                  +

                                  7.1.5 Main: Contracts and static_assert

                                  7.1.5.1 Background/Required Knowledge

                                  -

                                  A student is able to: * identify special member functions [C++ object model: special member functions]

                                  -

                                  It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain the rule of zero [C++ object model: rule-of-zero] * explain the rule of five [C++ object model: rule-of-five]

                                  +
                                    +
                                  • All of the above.
                                  • +
                                  • General understanding of compile-time requirements
                                  • +

                                  7.1.5.2 Student outcomes

                                  A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                  -

                                  A student should be able to: * explain when they have to implement the copy operations for their own type * Copy constructor * Copy assignment operator * implement copy operations for their own types * Optional: explain when copying with basic and strong exception guarantees is useful

                                  +

                                  A student should be able to:

                                  +
                                    +
                                  1. Utilize static_assert to verify preconditions of a meta-function
                                  2. +
                                  3. Utilize static_assert to verify the results of meta-functions for known values
                                  4. +

                                  7.1.5.3 Caveats

                                  This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                  -
                                    -
                                  • Intricacies when implementing copy operations: -
                                      -
                                    • Examples of how not to write copy operations (e.g., C++03 std::auto_ptr)
                                    • -
                                  • -

                                  7.1.5.4 Points to cover

                                  This section lists important details for each point.

                                    -
                                  • Copy constructors and copy assignment operators -
                                      -
                                    • How compiler generates default copy operations
                                    • -
                                    • =default, =delete (No copy)
                                    • -
                                    • How-to write your own copy operations
                                    • -
                                    • Rule-of-five
                                    • -
                                    • Copy assignment operators can be ref-qualified to avoid assigning into temporary objects.
                                    • -
                                  • +
                                  • When writing a meta-function, use static_assert to test the results
                                  • +
                                  • Write static_assert calls at the scope of the code they are guarding
                                  -

                                  7.1.6 Advanced

                                  + +

                                  7.1.6 Advanced

                                  These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                                  -

                                  When can copies be elided and when does the standard guarantee copy elision. References: * Abseil tip of the Week #166 * cppreference - Copy elision

                                  7.2 Module name: Requires Expressions

                                  Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                                  7.2.1 Overview

                                  @@ -1060,26 +1066,26 @@

                                  7.3.2.4 Po
                                  • Compound-requirements allow the optional ability to test whether an expression is marked as noexcept, by using a trailing noexcept keyword.
                                  - +
                                  • If the return-type-requirement of a compound-requirement is a concept, that concept is given the resulting type as the first parameter, followed by the specified parameters in the compound-requirement. { ++x } -> C<int> would substitute C<decltype((++x)), int> and check that concept C is satisfied for those parameters.

                                  7.3.3 Advanced

                                  -

                                  7.4 Meta-error handling: static_assert

                                  +

                                  7.4 C++ object model: copy semantics

                                  Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                                  7.4.1 Overview

                                  Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                                  - +
                                  --++ @@ -1090,99 +1096,93 @@

                                  7.4.1 Overview

                                  - + - + - +
                                  FoundationalCalling static_assert with a constant expressionunderstanding how and when are copies made
                                  MainUsing static_assert to detect contract violations and improve error messagesimplementing user-defined copy operations
                                  Advancedspecial cases: copy elision

                                  7.4.2 Motivation

                                  Why is this important? Why do we want to learn/teach this topic?

                                  -

                                  static_assert allows the developer to enforce that conditions which can be checked during compilation will force build errors when violated. Additionally, they are the best mechanism by which a developer can pass useful information to other developers regarding what violation occurred or what must be done, instead.

                                  +

                                  Copy semantics allows the user to define how objects of a class get replicated and interact on a value level.

                                  7.4.3 Topic introduction

                                  Very brief introduction to the topic.

                                  -

                                  static_assert is a compile-time evaluated function that asserts the truth of a supplied predicate, issuing an optional user-supplied error message if the predicate is false.

                                  -

                                  7.4.4 Foundational: Calling static_assert with a constant expression

                                  +

                                  Explains when and how objects are copied.

                                  +

                                  7.4.4 Foundational: How and when are copies made

                                  7.4.4.1 Background/Required Knowledge

                                  -

                                  A student:

                                  -
                                    -
                                  • Should be able to explain the difference between code evaluated at compile-time and run-time
                                  • -
                                  • Should be able to cite some examples of compile-time known information, such as sizeof(T)
                                  • -
                                  +

                                  A student is able to: * explain what a C++ type is? [C++ object model: types] * explain what an object is? [C++ object model: objects], [C++ object model: constant objects] * define and understand class invariants?

                                  +

                                  It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain special member functions [C++ object model: special member functions]

                                  7.4.4.2 Student outcomes

                                  A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                  A student should be able to:

                                    -
                                  1. Assert the expected size of a structure using static_assert
                                  2. +
                                  3. explain what copy semantics accomplish
                                  4. +
                                  +
                                    +
                                  • establishing “equivalent” object state in another object
                                  • +
                                  +
                                    +
                                  1. explain difference between copying a reference and copying a value*
                                  2. +
                                  3. explain where copies are made
                                  +

                                  * In other languages these differences are sometimes referred to as shallow and deep copy.

                                  7.4.4.3 Caveats

                                  This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                  +
                                    +
                                  • Compiler-provided copy operations may result in ownership problems (e.g., char*). These ownership problems can generally be solved by using types whose copy operations have the appropriate semantics, e.g., std::string instead of char* to hold string values.
                                  • +

                                  7.4.4.4 Points to cover

                                  This section lists important details for each point.

                                    -
                                  • X
                                  • -
                                  • In addition to what is wrong, a good error message will inform the user of how to correct it
                                  • -
                                  -

                                  7.4.5 Main: Contracts and static_assert

                                  -

                                  7.4.5.1 Background/Required Knowledge

                                  +
                                • Principle of copying
                                    -
                                  • All of the above.
                                  • -
                                  • General understanding of compile-time requirements
                                  • +
                                  • Copying of types, which follow the rule of zero
                                  • +
                                  • Copying of types, with user defined copy operations
                                  • +
                                  • Copying an object does not change the original
                                  • +
                                • +
                                • Practical applications +
                                    +
                                  • std::unique_ptr (has no copy)
                                  • +
                                  • Strings (copies the value)
                                  • +
                                +

                                7.4.5 Main: Implementing user-defined copy operations

                                +

                                7.4.5.1 Background/Required Knowledge

                                +

                                A student is able to: * identify special member functions [C++ object model: special member functions]

                                +

                                It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain the rule of zero [C++ object model: rule-of-zero] * explain the rule of five [C++ object model: rule-of-five]

                                7.4.5.2 Student outcomes

                                A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                -

                                A student should be able to:

                                -
                                  -
                                1. Utilize static_assert to verify preconditions of a meta-function
                                2. -
                                3. Utilize static_assert to verify the results of meta-functions for known values
                                4. -
                                +

                                A student should be able to: * explain when they have to implement the copy operations for their own type * Copy constructor * Copy assignment operator * implement copy operations for their own types * Optional: explain when copying with basic and strong exception guarantees is useful

                                7.4.5.3 Caveats

                                This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                +
                                  +
                                • Intricacies when implementing copy operations: +
                                    +
                                  • Examples of how not to write copy operations (e.g., C++03 std::auto_ptr)
                                  • +
                                • +

                                7.4.5.4 Points to cover

                                This section lists important details for each point.

                                  -
                                • When writing a meta-function, use static_assert to test the results
                                • -
                                • Write static_assert calls at the scope of the code they are guarding
                                • +
                                • Copy constructors and copy assignment operators +
                                    +
                                  • How compiler generates default copy operations
                                  • +
                                  • =default, =delete (No copy)
                                  • +
                                  • How-to write your own copy operations
                                  • +
                                  • Rule-of-five
                                  • +
                                  • Copy assignment operators can be ref-qualified to avoid assigning into temporary objects.
                                  • +
                                - -

                                7.4.6 Advanced

                                +

                                7.4.6 Advanced

                                These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                                -

                                See concepts.

                                +

                                When can copies be elided and when does the standard guarantee copy elision. References: * Abseil tip of the Week #166 * cppreference - Copy elision

                                +

                                See user-defined-literals.

                                7.5 Functions: default argument

                                Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                                7.5.1 Overview

                                @@ -1350,7 +1350,7 @@

                                7.6.5.3 CaveatsThis section lists important details for each point.

                                No caveats at present. ### Advanced {#udl-advanced}

                                These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                                -

                                See user-defined-literals.

                                +

                                See concepts.

                                8 License

                                [NOTE: This license is copied verbatim from the C++ Core Guidelines.]

                                Copyright (c) Standard C++ Foundation and its contributors
                                
                                From 36365941f4451d17ddb97e4c63128086766fff36 Mon Sep 17 00:00:00 2001
                                From: vulder 
                                Date: Fri, 4 Nov 2022 13:51:43 +0000
                                Subject: [PATCH 18/21] deploy: 688e9d24d22629c0b35598996ae69e9bd85abb3c
                                
                                ---
                                 0.0.18/guidelines.epub                        |  Bin 0 -> 31393 bytes
                                 0.0.18/html/images/cpp_logo.png               |  Bin 0 -> 23613 bytes
                                 0.0.18/html/index.html                        | 1652 +++++++++++++++++
                                 ...anced-Special-cases-and-peculiarities.html |   59 +
                                 0.0.18/html_split/Advanced.html               |   60 +
                                 .../Background_002fRequired-Knowledge.html    |   65 +
                                 .../Background_002fRequired-knowledge.html    |   54 +
                                 ...ments-and-Control_002dFlow-Constructs.html |   61 +
                                 0.0.18/html_split/Building.html               |   57 +
                                 ...C_002b_002b-object-model-Declarations.html |   68 +
                                 .../C_002b_002b-object-model-Definitions.html |   68 +
                                 ...002b_002b-object-model-copy-semantics.html |   69 +
                                 0.0.18/html_split/Caveats.html                |   62 +
                                 0.0.18/html_split/Compilation-Model.html      |   62 +
                                 .../Compile_002dTime-Computation.html         |   57 +
                                 .../Context-and-Aim-of-This-Guide.html        |   76 +
                                 .../Contributing-to-This-Document.html        |   55 +
                                 0.0.18/html_split/Contributors.html           |   57 +
                                 ...ed-Information-for-Modules-and-Topics.html |   71 +
                                 0.0.18/html_split/Error-Handling.html         |   59 +
                                 .../External-ie-Non-Standard-Libraries.html   |   56 +
                                 ...005fassert-with-a-constant-expression.html |   62 +
                                 .../Foundational-Declaring-variables.html     |   61 +
                                 ...undational-Defining-variables-and-ODR.html |   61 +
                                 ...dational-How-and-when-are-copies-made.html |   63 +
                                 .../html_split/Foundational-Using-UDLs.html   |   61 +
                                 ...ning-functions-with-default-arguments.html |   62 +
                                 ...onal-Writing-requires_002dexpressions.html |   60 +
                                 .../Functions-default-argument.html           |   67 +
                                 .../Functions-user_002ddefined-literals.html  |   65 +
                                 0.0.18/html_split/Functions.html              |   61 +
                                 .../Generic-Programming-Templates.html        |   61 +
                                 0.0.18/html_split/Glossary.html               |   58 +
                                 0.0.18/html_split/How-To-Contribute.html      |   89 +
                                 .../Inheritance-and-Class-Hierarchies.html    |   57 +
                                 0.0.18/html_split/License.html                |   99 +
                                 .../Main-Advanced-requirements.html           |   60 +
                                 .../Main-Contracts-and-static_005fassert.html |   61 +
                                 .../Main-Declarations-for-programs.html       |   61 +
                                 .../Main-Defining-for-programs.html           |   61 +
                                 ...ting-user_002ddefined-copy-operations.html |   62 +
                                 0.0.18/html_split/Main-implementing-UDLs.html |   59 +
                                 .../html_split/Main-implementing-_002a.html   |   62 +
                                 ..._002derror-handling-static_005fassert.html |   67 +
                                 .../Module-name-Requires-Expressions.html     |   59 +
                                 0.0.18/html_split/Motivation.html             |   57 +
                                 ...-Recent-Version-and-Alternate-Formats.html |   78 +
                                 .../Organization-of-This-Document.html        |   95 +
                                 0.0.18/html_split/Overview.html               |   61 +
                                 0.0.18/html_split/Points-to-cover.html        |   69 +
                                 0.0.18/html_split/Preprocessor.html           |   58 +
                                 .../References-on-Learning-Outcomes.html      |   71 +
                                 0.0.18/html_split/References.html             |   59 +
                                 0.0.18/html_split/Software-Design.html        |   56 +
                                 0.0.18/html_split/Standard-Library.html       |   57 +
                                 0.0.18/html_split/Student-outcomes.html       |   73 +
                                 .../Summary-of-Modules-and-Topics.html        |  100 +
                                 0.0.18/html_split/Testing-and-Debugging.html  |   59 +
                                 0.0.18/html_split/Tooling.html                |   57 +
                                 0.0.18/html_split/Topic-introduction.html     |   55 +
                                 0.0.18/html_split/Use-of-This-Document.html   |   58 +
                                 .../User_002dDefined-Types-Classes.html       |   69 +
                                 ...ed-to-C_002b_002b-Teaching-Guidelines.html |   69 +
                                 0.0.18/html_split/_0023advanced.html          |   40 +
                                 0.0.18/html_split/_0023advanced_002d1.html    |   40 +
                                 0.0.18/html_split/_0023advanced_002d2.html    |   40 +
                                 0.0.18/html_split/_0023advanced_002d3.html    |   40 +
                                 0.0.18/html_split/_0023advanced_002d4.html    |   40 +
                                 ...l_002dcases_002dand_002dpeculiarities.html |   40 +
                                 ..._0023backgroundrequired_002dknowledge.html |   40 +
                                 ...ackgroundrequired_002dknowledge_002d1.html |   40 +
                                 ...ckgroundrequired_002dknowledge_002d10.html |   40 +
                                 ...ckgroundrequired_002dknowledge_002d11.html |   40 +
                                 ...ckgroundrequired_002dknowledge_002d12.html |   40 +
                                 ...ckgroundrequired_002dknowledge_002d13.html |   40 +
                                 ...ackgroundrequired_002dknowledge_002d2.html |   40 +
                                 ...ackgroundrequired_002dknowledge_002d3.html |   40 +
                                 ...ackgroundrequired_002dknowledge_002d4.html |   40 +
                                 ...ackgroundrequired_002dknowledge_002d5.html |   40 +
                                 ...ackgroundrequired_002dknowledge_002d6.html |   40 +
                                 ...ackgroundrequired_002dknowledge_002d7.html |   40 +
                                 ...ackgroundrequired_002dknowledge_002d8.html |   40 +
                                 ...ackgroundrequired_002dknowledge_002d9.html |   40 +
                                 ...d_002dcontrol_002dflow_002dconstructs.html |   40 +
                                 0.0.18/html_split/_0023building.html          |   40 +
                                 ...ject_002dmodel_002dcopy_002dsemantics.html |   40 +
                                 ...002dobject_002dmodel_002ddeclarations.html |   40 +
                                 ..._002dobject_002dmodel_002ddefinitions.html |   40 +
                                 0.0.18/html_split/_0023caveats.html           |   40 +
                                 0.0.18/html_split/_0023caveats_002d1.html     |   40 +
                                 0.0.18/html_split/_0023caveats_002d10.html    |   40 +
                                 0.0.18/html_split/_0023caveats_002d11.html    |   40 +
                                 0.0.18/html_split/_0023caveats_002d12.html    |   40 +
                                 0.0.18/html_split/_0023caveats_002d13.html    |   40 +
                                 0.0.18/html_split/_0023caveats_002d2.html     |   40 +
                                 0.0.18/html_split/_0023caveats_002d3.html     |   40 +
                                 0.0.18/html_split/_0023caveats_002d4.html     |   40 +
                                 0.0.18/html_split/_0023caveats_002d5.html     |   40 +
                                 0.0.18/html_split/_0023caveats_002d6.html     |   40 +
                                 0.0.18/html_split/_0023caveats_002d7.html     |   40 +
                                 0.0.18/html_split/_0023caveats_002d8.html     |   40 +
                                 0.0.18/html_split/_0023caveats_002d9.html     |   40 +
                                 .../_0023compilation_002dmodel.html           |   40 +
                                 ..._0023compile_002dtime_002dcomputation.html |   40 +
                                 ...and_002daim_002dof_002dthis_002dguide.html |   40 +
                                 ...ributing_002dto_002dthis_002ddocument.html |   40 +
                                 0.0.18/html_split/_0023contributors.html      |   40 +
                                 ...02dfor_002dmodules_002dand_002dtopics.html |   40 +
                                 .../html_split/_0023error_002dhandling.html   |   40 +
                                 ...2e_002dnon_002dstandard_002dlibraries.html |   40 +
                                 ...ith_002da_002dconstant_002dexpression.html |   40 +
                                 ...ndational_002ddeclaring_002dvariables.html |   40 +
                                 ...efining_002dvariables_002dand_002dodr.html |   40 +
                                 ..._002dwhen_002dare_002dcopies_002dmade.html |   40 +
                                 ...ns_002dwith_002ddefault_002darguments.html |   40 +
                                 .../_0023foundational_002dusing_002dudls.html |   40 +
                                 ...dwriting_002drequires_002dexpressions.html |   40 +
                                 0.0.18/html_split/_0023functions.html         |   40 +
                                 ...023functions_002ddefault_002dargument.html |   40 +
                                 ...ons_002duser_002ddefined_002dliterals.html |   40 +
                                 ...generic_002dprogramming_002dtemplates.html |   40 +
                                 0.0.18/html_split/_0023glossary.html          |   40 +
                                 .../_0023how_002dto_002dcontribute.html       |   40 +
                                 ...nce_002dand_002dclass_002dhierarchies.html |   40 +
                                 0.0.18/html_split/_0023license.html           |   40 +
                                 ...023main_002dadvanced_002drequirements.html |   40 +
                                 ...ntracts_002dand_002dstatic_005fassert.html |   40 +
                                 ...002ddeclarations_002dfor_002dprograms.html |   40 +
                                 ...ain_002ddefining_002dfor_002dprograms.html |   40 +
                                 .../_0023main_002dimplementing.html           |   40 +
                                 .../_0023main_002dimplementing_002dudls.html  |   40 +
                                 ...r_002ddefined_002dcopy_002doperations.html |   40 +
                                 ...or_002dhandling_002dstatic_005fassert.html |   40 +
                                 ...002dname_002drequires_002dexpressions.html |   40 +
                                 0.0.18/html_split/_0023motivation.html        |   40 +
                                 0.0.18/html_split/_0023motivation_002d1.html  |   40 +
                                 0.0.18/html_split/_0023motivation_002d2.html  |   40 +
                                 0.0.18/html_split/_0023motivation_002d3.html  |   40 +
                                 0.0.18/html_split/_0023motivation_002d4.html  |   40 +
                                 0.0.18/html_split/_0023motivation_002d5.html  |   40 +
                                 0.0.18/html_split/_0023motivation_002d6.html  |   40 +
                                 ...ion_002dand_002dalternate_002dformats.html |   40 +
                                 ...nization_002dof_002dthis_002ddocument.html |   40 +
                                 0.0.18/html_split/_0023overview.html          |   40 +
                                 0.0.18/html_split/_0023overview_002d1.html    |   40 +
                                 0.0.18/html_split/_0023overview_002d2.html    |   40 +
                                 0.0.18/html_split/_0023overview_002d3.html    |   40 +
                                 0.0.18/html_split/_0023overview_002d4.html    |   40 +
                                 0.0.18/html_split/_0023overview_002d5.html    |   40 +
                                 0.0.18/html_split/_0023overview_002d6.html    |   40 +
                                 .../_0023points_002dto_002dcover.html         |   40 +
                                 .../_0023points_002dto_002dcover_002d1.html   |   40 +
                                 .../_0023points_002dto_002dcover_002d10.html  |   40 +
                                 .../_0023points_002dto_002dcover_002d11.html  |   40 +
                                 .../_0023points_002dto_002dcover_002d12.html  |   40 +
                                 .../_0023points_002dto_002dcover_002d2.html   |   40 +
                                 .../_0023points_002dto_002dcover_002d3.html   |   40 +
                                 .../_0023points_002dto_002dcover_002d4.html   |   40 +
                                 .../_0023points_002dto_002dcover_002d5.html   |   40 +
                                 .../_0023points_002dto_002dcover_002d6.html   |   40 +
                                 .../_0023points_002dto_002dcover_002d7.html   |   40 +
                                 .../_0023points_002dto_002dcover_002d8.html   |   40 +
                                 .../_0023points_002dto_002dcover_002d9.html   |   40 +
                                 0.0.18/html_split/_0023preprocessor.html      |   40 +
                                 0.0.18/html_split/_0023references.html        |   40 +
                                 ...nces_002don_002dlearning_002doutcomes.html |   40 +
                                 .../html_split/_0023software_002ddesign.html  |   40 +
                                 .../html_split/_0023standard_002dlibrary.html |   40 +
                                 .../html_split/_0023student_002doutcomes.html |   40 +
                                 .../_0023student_002doutcomes_002d1.html      |   40 +
                                 .../_0023student_002doutcomes_002d10.html     |   40 +
                                 .../_0023student_002doutcomes_002d11.html     |   40 +
                                 .../_0023student_002doutcomes_002d12.html     |   40 +
                                 .../_0023student_002doutcomes_002d13.html     |   40 +
                                 .../_0023student_002doutcomes_002d2.html      |   40 +
                                 .../_0023student_002doutcomes_002d3.html      |   40 +
                                 .../_0023student_002doutcomes_002d4.html      |   40 +
                                 .../_0023student_002doutcomes_002d5.html      |   40 +
                                 .../_0023student_002doutcomes_002d6.html      |   40 +
                                 .../_0023student_002doutcomes_002d7.html      |   40 +
                                 .../_0023student_002doutcomes_002d8.html      |   40 +
                                 .../_0023student_002doutcomes_002d9.html      |   40 +
                                 ...002dof_002dmodules_002dand_002dtopics.html |   40 +
                                 .../_0023testing_002dand_002ddebugging.html   |   40 +
                                 0.0.18/html_split/_0023tooling.html           |   40 +
                                 .../_0023topic_002dintroduction.html          |   40 +
                                 .../_0023topic_002dintroduction_002d1.html    |   40 +
                                 .../_0023topic_002dintroduction_002d2.html    |   40 +
                                 .../_0023topic_002dintroduction_002d3.html    |   40 +
                                 .../_0023topic_002dintroduction_002d4.html    |   40 +
                                 .../_0023topic_002dintroduction_002d5.html    |   40 +
                                 .../_0023topic_002dintroduction_002d6.html    |   40 +
                                 ..._0023use_002dof_002dthis_002ddocument.html |   40 +
                                 ...ser_002ddefined_002dtypes_002dclasses.html |   40 +
                                 ...dto_002dc_002dteaching_002dguidelines.html |   40 +
                                 0.0.18/html_split/index.html                  |  276 +++
                                 0.0.18/html_split/unknown_node.html           | 1130 +++++++++++
                                 latest/index.html                             |  747 +++++---
                                 198 files changed, 12672 insertions(+), 269 deletions(-)
                                 create mode 100644 0.0.18/guidelines.epub
                                 create mode 100644 0.0.18/html/images/cpp_logo.png
                                 create mode 100644 0.0.18/html/index.html
                                 create mode 100644 0.0.18/html_split/Advanced-Special-cases-and-peculiarities.html
                                 create mode 100644 0.0.18/html_split/Advanced.html
                                 create mode 100644 0.0.18/html_split/Background_002fRequired-Knowledge.html
                                 create mode 100644 0.0.18/html_split/Background_002fRequired-knowledge.html
                                 create mode 100644 0.0.18/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html
                                 create mode 100644 0.0.18/html_split/Building.html
                                 create mode 100644 0.0.18/html_split/C_002b_002b-object-model-Declarations.html
                                 create mode 100644 0.0.18/html_split/C_002b_002b-object-model-Definitions.html
                                 create mode 100644 0.0.18/html_split/C_002b_002b-object-model-copy-semantics.html
                                 create mode 100644 0.0.18/html_split/Caveats.html
                                 create mode 100644 0.0.18/html_split/Compilation-Model.html
                                 create mode 100644 0.0.18/html_split/Compile_002dTime-Computation.html
                                 create mode 100644 0.0.18/html_split/Context-and-Aim-of-This-Guide.html
                                 create mode 100644 0.0.18/html_split/Contributing-to-This-Document.html
                                 create mode 100644 0.0.18/html_split/Contributors.html
                                 create mode 100644 0.0.18/html_split/Detailed-Information-for-Modules-and-Topics.html
                                 create mode 100644 0.0.18/html_split/Error-Handling.html
                                 create mode 100644 0.0.18/html_split/External-ie-Non-Standard-Libraries.html
                                 create mode 100644 0.0.18/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html
                                 create mode 100644 0.0.18/html_split/Foundational-Declaring-variables.html
                                 create mode 100644 0.0.18/html_split/Foundational-Defining-variables-and-ODR.html
                                 create mode 100644 0.0.18/html_split/Foundational-How-and-when-are-copies-made.html
                                 create mode 100644 0.0.18/html_split/Foundational-Using-UDLs.html
                                 create mode 100644 0.0.18/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html
                                 create mode 100644 0.0.18/html_split/Foundational-Writing-requires_002dexpressions.html
                                 create mode 100644 0.0.18/html_split/Functions-default-argument.html
                                 create mode 100644 0.0.18/html_split/Functions-user_002ddefined-literals.html
                                 create mode 100644 0.0.18/html_split/Functions.html
                                 create mode 100644 0.0.18/html_split/Generic-Programming-Templates.html
                                 create mode 100644 0.0.18/html_split/Glossary.html
                                 create mode 100644 0.0.18/html_split/How-To-Contribute.html
                                 create mode 100644 0.0.18/html_split/Inheritance-and-Class-Hierarchies.html
                                 create mode 100644 0.0.18/html_split/License.html
                                 create mode 100644 0.0.18/html_split/Main-Advanced-requirements.html
                                 create mode 100644 0.0.18/html_split/Main-Contracts-and-static_005fassert.html
                                 create mode 100644 0.0.18/html_split/Main-Declarations-for-programs.html
                                 create mode 100644 0.0.18/html_split/Main-Defining-for-programs.html
                                 create mode 100644 0.0.18/html_split/Main-Implementing-user_002ddefined-copy-operations.html
                                 create mode 100644 0.0.18/html_split/Main-implementing-UDLs.html
                                 create mode 100644 0.0.18/html_split/Main-implementing-_002a.html
                                 create mode 100644 0.0.18/html_split/Meta_002derror-handling-static_005fassert.html
                                 create mode 100644 0.0.18/html_split/Module-name-Requires-Expressions.html
                                 create mode 100644 0.0.18/html_split/Motivation.html
                                 create mode 100644 0.0.18/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html
                                 create mode 100644 0.0.18/html_split/Organization-of-This-Document.html
                                 create mode 100644 0.0.18/html_split/Overview.html
                                 create mode 100644 0.0.18/html_split/Points-to-cover.html
                                 create mode 100644 0.0.18/html_split/Preprocessor.html
                                 create mode 100644 0.0.18/html_split/References-on-Learning-Outcomes.html
                                 create mode 100644 0.0.18/html_split/References.html
                                 create mode 100644 0.0.18/html_split/Software-Design.html
                                 create mode 100644 0.0.18/html_split/Standard-Library.html
                                 create mode 100644 0.0.18/html_split/Student-outcomes.html
                                 create mode 100644 0.0.18/html_split/Summary-of-Modules-and-Topics.html
                                 create mode 100644 0.0.18/html_split/Testing-and-Debugging.html
                                 create mode 100644 0.0.18/html_split/Tooling.html
                                 create mode 100644 0.0.18/html_split/Topic-introduction.html
                                 create mode 100644 0.0.18/html_split/Use-of-This-Document.html
                                 create mode 100644 0.0.18/html_split/User_002dDefined-Types-Classes.html
                                 create mode 100644 0.0.18/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html
                                 create mode 100644 0.0.18/html_split/_0023advanced.html
                                 create mode 100644 0.0.18/html_split/_0023advanced_002d1.html
                                 create mode 100644 0.0.18/html_split/_0023advanced_002d2.html
                                 create mode 100644 0.0.18/html_split/_0023advanced_002d3.html
                                 create mode 100644 0.0.18/html_split/_0023advanced_002d4.html
                                 create mode 100644 0.0.18/html_split/_0023advanced_002dspecial_002dcases_002dand_002dpeculiarities.html
                                 create mode 100644 0.0.18/html_split/_0023backgroundrequired_002dknowledge.html
                                 create mode 100644 0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d1.html
                                 create mode 100644 0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d10.html
                                 create mode 100644 0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d11.html
                                 create mode 100644 0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d12.html
                                 create mode 100644 0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d13.html
                                 create mode 100644 0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d2.html
                                 create mode 100644 0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d3.html
                                 create mode 100644 0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d4.html
                                 create mode 100644 0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d5.html
                                 create mode 100644 0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d6.html
                                 create mode 100644 0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d7.html
                                 create mode 100644 0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d8.html
                                 create mode 100644 0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d9.html
                                 create mode 100644 0.0.18/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html
                                 create mode 100644 0.0.18/html_split/_0023building.html
                                 create mode 100644 0.0.18/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html
                                 create mode 100644 0.0.18/html_split/_0023c_002dobject_002dmodel_002ddeclarations.html
                                 create mode 100644 0.0.18/html_split/_0023c_002dobject_002dmodel_002ddefinitions.html
                                 create mode 100644 0.0.18/html_split/_0023caveats.html
                                 create mode 100644 0.0.18/html_split/_0023caveats_002d1.html
                                 create mode 100644 0.0.18/html_split/_0023caveats_002d10.html
                                 create mode 100644 0.0.18/html_split/_0023caveats_002d11.html
                                 create mode 100644 0.0.18/html_split/_0023caveats_002d12.html
                                 create mode 100644 0.0.18/html_split/_0023caveats_002d13.html
                                 create mode 100644 0.0.18/html_split/_0023caveats_002d2.html
                                 create mode 100644 0.0.18/html_split/_0023caveats_002d3.html
                                 create mode 100644 0.0.18/html_split/_0023caveats_002d4.html
                                 create mode 100644 0.0.18/html_split/_0023caveats_002d5.html
                                 create mode 100644 0.0.18/html_split/_0023caveats_002d6.html
                                 create mode 100644 0.0.18/html_split/_0023caveats_002d7.html
                                 create mode 100644 0.0.18/html_split/_0023caveats_002d8.html
                                 create mode 100644 0.0.18/html_split/_0023caveats_002d9.html
                                 create mode 100644 0.0.18/html_split/_0023compilation_002dmodel.html
                                 create mode 100644 0.0.18/html_split/_0023compile_002dtime_002dcomputation.html
                                 create mode 100644 0.0.18/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html
                                 create mode 100644 0.0.18/html_split/_0023contributing_002dto_002dthis_002ddocument.html
                                 create mode 100644 0.0.18/html_split/_0023contributors.html
                                 create mode 100644 0.0.18/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html
                                 create mode 100644 0.0.18/html_split/_0023error_002dhandling.html
                                 create mode 100644 0.0.18/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html
                                 create mode 100644 0.0.18/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html
                                 create mode 100644 0.0.18/html_split/_0023foundational_002ddeclaring_002dvariables.html
                                 create mode 100644 0.0.18/html_split/_0023foundational_002ddefining_002dvariables_002dand_002dodr.html
                                 create mode 100644 0.0.18/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html
                                 create mode 100644 0.0.18/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html
                                 create mode 100644 0.0.18/html_split/_0023foundational_002dusing_002dudls.html
                                 create mode 100644 0.0.18/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html
                                 create mode 100644 0.0.18/html_split/_0023functions.html
                                 create mode 100644 0.0.18/html_split/_0023functions_002ddefault_002dargument.html
                                 create mode 100644 0.0.18/html_split/_0023functions_002duser_002ddefined_002dliterals.html
                                 create mode 100644 0.0.18/html_split/_0023generic_002dprogramming_002dtemplates.html
                                 create mode 100644 0.0.18/html_split/_0023glossary.html
                                 create mode 100644 0.0.18/html_split/_0023how_002dto_002dcontribute.html
                                 create mode 100644 0.0.18/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html
                                 create mode 100644 0.0.18/html_split/_0023license.html
                                 create mode 100644 0.0.18/html_split/_0023main_002dadvanced_002drequirements.html
                                 create mode 100644 0.0.18/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html
                                 create mode 100644 0.0.18/html_split/_0023main_002ddeclarations_002dfor_002dprograms.html
                                 create mode 100644 0.0.18/html_split/_0023main_002ddefining_002dfor_002dprograms.html
                                 create mode 100644 0.0.18/html_split/_0023main_002dimplementing.html
                                 create mode 100644 0.0.18/html_split/_0023main_002dimplementing_002dudls.html
                                 create mode 100644 0.0.18/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html
                                 create mode 100644 0.0.18/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html
                                 create mode 100644 0.0.18/html_split/_0023module_002dname_002drequires_002dexpressions.html
                                 create mode 100644 0.0.18/html_split/_0023motivation.html
                                 create mode 100644 0.0.18/html_split/_0023motivation_002d1.html
                                 create mode 100644 0.0.18/html_split/_0023motivation_002d2.html
                                 create mode 100644 0.0.18/html_split/_0023motivation_002d3.html
                                 create mode 100644 0.0.18/html_split/_0023motivation_002d4.html
                                 create mode 100644 0.0.18/html_split/_0023motivation_002d5.html
                                 create mode 100644 0.0.18/html_split/_0023motivation_002d6.html
                                 create mode 100644 0.0.18/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html
                                 create mode 100644 0.0.18/html_split/_0023organization_002dof_002dthis_002ddocument.html
                                 create mode 100644 0.0.18/html_split/_0023overview.html
                                 create mode 100644 0.0.18/html_split/_0023overview_002d1.html
                                 create mode 100644 0.0.18/html_split/_0023overview_002d2.html
                                 create mode 100644 0.0.18/html_split/_0023overview_002d3.html
                                 create mode 100644 0.0.18/html_split/_0023overview_002d4.html
                                 create mode 100644 0.0.18/html_split/_0023overview_002d5.html
                                 create mode 100644 0.0.18/html_split/_0023overview_002d6.html
                                 create mode 100644 0.0.18/html_split/_0023points_002dto_002dcover.html
                                 create mode 100644 0.0.18/html_split/_0023points_002dto_002dcover_002d1.html
                                 create mode 100644 0.0.18/html_split/_0023points_002dto_002dcover_002d10.html
                                 create mode 100644 0.0.18/html_split/_0023points_002dto_002dcover_002d11.html
                                 create mode 100644 0.0.18/html_split/_0023points_002dto_002dcover_002d12.html
                                 create mode 100644 0.0.18/html_split/_0023points_002dto_002dcover_002d2.html
                                 create mode 100644 0.0.18/html_split/_0023points_002dto_002dcover_002d3.html
                                 create mode 100644 0.0.18/html_split/_0023points_002dto_002dcover_002d4.html
                                 create mode 100644 0.0.18/html_split/_0023points_002dto_002dcover_002d5.html
                                 create mode 100644 0.0.18/html_split/_0023points_002dto_002dcover_002d6.html
                                 create mode 100644 0.0.18/html_split/_0023points_002dto_002dcover_002d7.html
                                 create mode 100644 0.0.18/html_split/_0023points_002dto_002dcover_002d8.html
                                 create mode 100644 0.0.18/html_split/_0023points_002dto_002dcover_002d9.html
                                 create mode 100644 0.0.18/html_split/_0023preprocessor.html
                                 create mode 100644 0.0.18/html_split/_0023references.html
                                 create mode 100644 0.0.18/html_split/_0023references_002don_002dlearning_002doutcomes.html
                                 create mode 100644 0.0.18/html_split/_0023software_002ddesign.html
                                 create mode 100644 0.0.18/html_split/_0023standard_002dlibrary.html
                                 create mode 100644 0.0.18/html_split/_0023student_002doutcomes.html
                                 create mode 100644 0.0.18/html_split/_0023student_002doutcomes_002d1.html
                                 create mode 100644 0.0.18/html_split/_0023student_002doutcomes_002d10.html
                                 create mode 100644 0.0.18/html_split/_0023student_002doutcomes_002d11.html
                                 create mode 100644 0.0.18/html_split/_0023student_002doutcomes_002d12.html
                                 create mode 100644 0.0.18/html_split/_0023student_002doutcomes_002d13.html
                                 create mode 100644 0.0.18/html_split/_0023student_002doutcomes_002d2.html
                                 create mode 100644 0.0.18/html_split/_0023student_002doutcomes_002d3.html
                                 create mode 100644 0.0.18/html_split/_0023student_002doutcomes_002d4.html
                                 create mode 100644 0.0.18/html_split/_0023student_002doutcomes_002d5.html
                                 create mode 100644 0.0.18/html_split/_0023student_002doutcomes_002d6.html
                                 create mode 100644 0.0.18/html_split/_0023student_002doutcomes_002d7.html
                                 create mode 100644 0.0.18/html_split/_0023student_002doutcomes_002d8.html
                                 create mode 100644 0.0.18/html_split/_0023student_002doutcomes_002d9.html
                                 create mode 100644 0.0.18/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html
                                 create mode 100644 0.0.18/html_split/_0023testing_002dand_002ddebugging.html
                                 create mode 100644 0.0.18/html_split/_0023tooling.html
                                 create mode 100644 0.0.18/html_split/_0023topic_002dintroduction.html
                                 create mode 100644 0.0.18/html_split/_0023topic_002dintroduction_002d1.html
                                 create mode 100644 0.0.18/html_split/_0023topic_002dintroduction_002d2.html
                                 create mode 100644 0.0.18/html_split/_0023topic_002dintroduction_002d3.html
                                 create mode 100644 0.0.18/html_split/_0023topic_002dintroduction_002d4.html
                                 create mode 100644 0.0.18/html_split/_0023topic_002dintroduction_002d5.html
                                 create mode 100644 0.0.18/html_split/_0023topic_002dintroduction_002d6.html
                                 create mode 100644 0.0.18/html_split/_0023use_002dof_002dthis_002ddocument.html
                                 create mode 100644 0.0.18/html_split/_0023user_002ddefined_002dtypes_002dclasses.html
                                 create mode 100644 0.0.18/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html
                                 create mode 100644 0.0.18/html_split/index.html
                                 create mode 100644 0.0.18/html_split/unknown_node.html
                                
                                diff --git a/0.0.18/guidelines.epub b/0.0.18/guidelines.epub
                                new file mode 100644
                                index 0000000000000000000000000000000000000000..6a77fe1f68f5635653da79c4c723655d73efdb87
                                GIT binary patch
                                literal 31393
                                zcmZshQ;;a#lD6BnZQHhO+qP}(wr$(qZQHhOyZ>+I%(*!8&qYQ>R776ns?0Z^m6Zz8
                                zz#u39Ko9@`E_NoW_J&n7C;$Ke|7HKY0LKKuLVP_aVj6ni@=hJ-Bynu$C-2ut5AHhxa*)3LU39i
                                z#g(N_hMz$HXMFB%Zwv1K#FhV#(f((Awsik>Jf?J(M)vmB&U7Z0&JH$)p0xH3|8-o>
                                z{~dNr1Ka=sg21ca@Ud8u)HY6lonPQgDP?#^F%HPwQZIT9T`fKR?YSc?G!F%OtkGRP
                                zK7z!_nT8!0{i(A5(7fA*qvYgM*N94%h7EW=b~)b(023%v`yjimk8@8mN#;6p$BuXf
                                zsO_}-f|WBL=JRE9%*SsRz<)+C4=4!_4GaKa2Mqv#@J|Gy3aUc?{dG+3Tuau(k*h*FJW&sG7)?dS
                                z78jH1L^9q&cM=&O=p+@%FqS($)TQMiGq6)ADvW6+y?}A?hRc_j6hASlWEFW-5Un)h
                                zK+UtbOh5Lhl}{TVG&M^XPDRC)Q=*T?_-!MuI6ej&)Ef1D}tW#i|5Ydn0kUkg;&whV~;~{
                                z!IP`ckX;Vw_E
                                zWij&Yd+q$SN9SrPh5@(F3h5LRitr0hrusU4-H+U~pj$7)Z9)Yi7=J#XV1|{Gm9m7R
                                zT@$3Dsd|D_q8&$A;+kb@Y6q;r)A9=;N9r#8{_j;_&lqgOzgdycNg4ATsOl~2Y0Ea=B@WhTlhVk+g?=ElM
                                zM<&1w-P#FT1gWxk!8rxhPYjq>`*e$lrp?Jq3i#?OjitfZupGO|Y1HjrNtcFwFO9H!
                                zau#6y27Zx|eb7OkU^_4Iq2a*$_BHNI0C+H=bKwHYjQg7a?`&v1_yBU_K=t7Q=tqOl
                                zf%k?r?wkO+a3D+jHx00&LE*1>xZF`|me#MtK(vz^mC;
                                zQ&2{(MbpA(T$$J{O&9;
                                z9|tphJe#-OpMV9Ap#2SRz&}$EqZFf<9cRNnTy#n8;Y69viH}iw;}4FI{4wGUaozI}
                                z+OfP&G_%hQtl2X_)L8L>>^N)8?if!B{_a!hH19^lmEEs$a-4F#dz>A`rZen#m{-0e
                                zgK-CeyOTCjYq8`rpS0_b>0(JCWyO#~oj#v0UHaRK
                                z!)rcIJfrY!9_u23QS>b1oKgo-dftYxUeCRk*mifx#ntw6q)_Qbd85
                                zaa_WPGsaKa6OfaP2U>G!NhV_|L4FJKR
                                z+Au5CBl#a**@JbXf@wgn#C4kFn1xLrysEr4;~SP5;;vVjvWc25YKwVMYn3)zgEl%(
                                zH3Yc9t!1o|?XZ6u32^UPcU2m^!yCL+jr=
                                zR2jM=w;R@@_^)jHe8=+-9n6HoOeaZd{(@M
                                zMvE0wP%sC)M!{_*(CDCdkAk{jXY$ZW-b2Ii`6opT;`{G4qwxE9=rH92@dBW~;wms%@8N5lL_cv0kWP9dLE|eucl@K
                                z#z$V|4c*ZxZKsg9Px_NMH*h<406%x?Bd9Uph?l@+590PjNeIJyXFMcA?z2L)KamK5
                                z%}BIDGA`k&_#l-boJ
                                zhr#hCAJ4ycdJ2Z%|5gmj8IRWsCdBZF(S)&0qCECY4qSd~->fhh*U4t#XL_XkM8-*M
                                z-kZN`_-32&wWPqP+>HM;CJ{H%8oZMxiIpXp{>rYd0=d6ql#2E`0i*CBC2X7cspeXHRHN5cpS2goEd
                                ztIPnL_vlqii_@sF$6)p{7^b|{Y(jdOI`pMC`N5qyXiL%cyV(|@W`|-r@DZmdk|tkH
                                zfI0IHtta)3>XtNhya;yoUC$1_!Q0245B&BQd;kxr(F@LreJWVM64?&>Dyni#zE7Qa
                                zPXO=!$gr$?zBt|$utgHYie#%3K!NCl!VwdbMEUq{3#LYvO1T&m8C`Qophokb0y4h-
                                zA?c+LD?ulcAs8pDFtgVoOXE=A5MVQPLGA<=zto+>ra7OA#S*AYODPWpnaaHvNkdSpF3sj)K8=ceXOhkTeTyBxLxhRBY&+WG4>{N@*;R~ujc($~-K-qcR`tM`Tb(Zn(H)m+Cr5D;
                                z=Y~v?3Gy~FTrJ&)U9#w^t-oAUa)P^oGen2%F1ZTRm|@$nyb$xjxz3z7t2SZTf-TTb
                                zyP+J?gZNJ6Q<;RbCEl<}`HHaKDa=xHmw%uZfT-}2=4h2@iS4minIA1j$YU(*9a<$B
                                zfu-=lovl0^x9BW8V(CJ*>a5C9l^Pk~ZYaH6RM3jK)6-mhwxrAeyA3VXKTt`Ya4X4I
                                z9YBYO>UOx}W|8cqKMvFDS0lu213IMigsWS8y8z~o^|1BmtwIr#z%#z_B^5r%P=B$d
                                zDs|mS`)WlLI(5y$9@(5UvmAgNtboMVAE}6L{ggTx;4f(P-ta6r!uUeA{>ukjf(rec
                                z(xRJ}n&^3_Z}HhCMDf{Hg{|C*3U$a)^ODjPvTNzu*r8>Y9v?zC37zreBvMall5f~9
                                z!#QBnV=P^o8a7SP33^|whUY_yjF_!3?sGk*Btmrr}(Go(w{5a6fjItx-Zb-{7BFslkGApw$N*cGI?V~ETXst?UOY6SvudLFjF+UeAtG|s|pitht=
                                zjuxYSp%gTVjrQ!S1ddePNZW?@BdO6Jq$Dmnb@FD(1aNBjJy9bY4wW0a^KkXjcpYr4
                                z?qZ~-!=j5@O;e-VP6r1+hGvIFH}AM6Gj*q0S64NBes=i&$Nd-hKM97_N41?75&+`_Bf(_6nxSD?rtVFE
                                zlsFd;0v(Xr&FuS17eGQm2?9gK-avwM310sLA4Oo+%R|cOMWUmSs^{{todic@IYyLO
                                zOV6c`#@?@an)Y6`4zK>27RAr6TNEQ>^j7^N>|jkr$AwMVWLej?ZTEN6Fzw#8&fm{(
                                z$6IODB{Hg%WHQZLeSt#z+!~ymyo@*XPpnnSp2ZJTfu<0N*glxE;E^bK8g+c2*RwpO
                                z+?c4jtkOV(NmsB?s#M}Y3#J?~ni{$^l`)fl-eSZM3n@?yhB$Q4AnX&oZjUGPC2CrE
                                zRH#oZWa2C)3+;H)Rj5#f&<8#Y$56&w
                                zE0APA@d-+qQ{>ZY;D_Pw2Tu%y`bJMhyr75>m~PN`I?-cN2XSHCcKonsqF+?`n9&!H
                                zD2r+u$Ygq`{%&PPGRu%-fN^IS8_DEOA#Kc&S>y=$?>z0aS7%x0ti!GPkfhK2{O%uE
                                z!bWEfFpI(Q%FaS{{k7W*eZz9|Zlen`X*AwJe@Z_QtBEpGX)7@cl`qCT+mGdNfjGZW
                                zUg4}CpAjRJ5siq-Kk1odMp#e#*gBOoD)w@6AG$e#{Ea0;ETJnv9R)-IS7XQ$sBa=c
                                zA&{63NR_iCkU$ay7`&1mk%oeKVS
                                zsK~SgWSvyTa{I)B?g%KpD}wX4q6#2_^L45UF3KP|&v!m6QRjy4;IiAe$=l0v0Wu5Q
                                z`I3EVqP?qD5#ODR<(-b2&8p=^kVaL7{9c_l7h$p&VI`e92u0)U3d%IeQaZy6X-ThYEu_h}gxX4$JGT8Vki0xkD@r%(
                                zPMO9nbYRdRh#G7|W^@Ai-$z*OK8GYnG$ld|w$L87P#<#aB@Rp6HTp1$KozvUV3t0h
                                zZvy!JMjdN=+Wmq=K#=XJom93x(0FabP`ajl@u9`&Ynv;Ga~Y;v9J_%E#JWz>-4Oo=cVMYej$Ip8tCF=7b=kc8?aE(#tA`YYi+`pQre!Nvb=MiKE
                                zS8&Mx9Nb)jO6F4})O4PP@0M??l3I>>jhk
                                z>J;4;|I>5|_fLW#x)-S7^%6{b^tcD$vyZg5c0c8V3U-4S)q7yGue|SW8wz%TwZ~~s
                                zKsu@S#tY%Lj2)Xo#GZ0ek%&AZfqg^(Wuu_9L&JMxYsp~JYbR0zQ%X(06&zJ;87+=Z
                                zDk=z?%;i0~kB76^BhFLMNGm(jiI!oINCLq{rmMt!
                                z)B=&o&WrFIe&E~HAX+=TZS5n&)~f%O!FuHy`X#YS%aNbkKb>1Xx#;cl^s;u~fx
                                zm*g86)Ls;pS4X)}HASO%W4w^Bi4omG4$T))ITQIOluCWHbUm9&z+%tq2wNRv`x>~n
                                z(P3Kh;@DZkV~_h<*mfW8lTYn#36nQiJGVjZ4D1M#TlKcNV`GYA_?(&06ob*I?E3J%d1q(Z43tG)jMLuj;9Tg;vOG#_v!}q-2qwt!L
                                z6e~D|X(S&4>mM41lt0^4e~Kw=*z8uT=V(*Z0^za#WP+6xB+wl$)G
                                zI2d_`1JDMw5%i5o9)bZi$2)=mipinWx#{SbMQ@0+(7mLYfeNpi$%0iWv3K;Zcyrc3
                                zUr((6aP=OFY!{+ai^=u19S_~5Kl>epbSh|L80NRSw4b6~TJn0k-|ZnHbmP`jwgHz~
                                zlI0fy*8=TQD=YbHDuewXj5qV%EaX4-Z1fem-5(XlVds{Bn
                                zUf{1!`TsFa5s3W~)TUyGsAA8%bEZOM%xYP&^Z>D7z8+9Ie;84K|7EZ)^AN&$Fy_Xch`-v$0j9J8R0~zS!D~d0=uZc)xh%-2akiodePo!
                                zm?z6W$1^o6d$L#8c`VrskI;I(d+N8oXw_(jxBkeEpUdZ?u2Ug>TaT=!->JX8o_VZR
                                z$TFY6Nq*D=kR)-p{gQ_vvnO(SN&2!Hwg`v-nzbnd#Olc9_4FCN-Rs%+7uCAlcy6$5{p6MG+x8RT3v}
                                zc>#9k5*KTQ8(nPS_LssPZa~Fv_n(J7j4B$CC;H3dhFGE`-DfDjmy1gbWy1wl7^N33
                                zEtt9Z&x-rOMT3u_8{aCYz>~&1S_<=GbrvF%o~q~PDWmb;!x#D2R?2AHs0Unsf00NBv$;=%gihDG63
                                zQ0^9i#=+Rgp&=nt$@nu4!Fu<+;^OPhL7xU$zhb`!b!YE0)~k7NQ`yPV;}AeB!xE;y
                                zsoy&O^gWH6!>W%rn}gdQtB1TUOP6nXdI-|87MkKm7nN9}4LJNME4P*BHf&XJe+Po_;G_!Gz<_OP!dac>hu`;ZJ~}IAB!Yl(S%GkMZDc+2r9z6K9+1_8
                                z${LhIL>+VtU}uaOy>3o==_R7Gn4Wa3`*k^Ni;9hAyAQ&w#_owocOHTh&XQV{xfn0su(09==}tz0G#WeAW{{!fnc!0t)
                                zS}s?zr;`Upo_Uo4h2q-?1W2|E*J5=XRLCdo+tDro;>kv)+#eb}e{9vV;RVm6!vOc<
                                zS0HqQkz2IOI2xH^6kGd6{DI21{}GcrhhNx7s$fN>*@`QIrYipt
                                z(Ub_rY5G@(yS07Q9F;62h5Jno`n$VtPXLqHN5RPZ{(c3A7nEE~1+Pf8xWkVBMSis)
                                zMb@EnSJIIJG9*p$o2lSXZ)@MIWklpL%LXwM3K9^CK`U}Wa!6c_SyWP=334!ej`65d
                                z4tQ7(qbw5FGA`ZF2j6R5rZ{{fepv9ldPw59T114R-ZI_pkb`3AHNP~wbc1_vCr050
                                z$p^P))!Bqk=uLNP+vYDEXK?-{@6z6@!#L?~r8l{33gT-Ha7;+`VD%cO)FRb1$I&F`
                                z1hL0%zc;9TeWJY=sWx5OVQtI`{stRta=8)8`VBLzzmrc%Jm|@alD>BwEn+r@dzb?P
                                z?TS`isVH$~*;b4|af()qWz3eB$Yb(!JQ5uqF6}Pl$O|R74-|}Z^qvE^BU&~|EexQNL63kC>F}oj{#v0Bhg77~
                                ztCVwM^_5Gg*GYa3<&>t?Xmz#tqj!dB95IY1tYZP#CnfEENGc`&%)1`GOGvoY+RCe2
                                ztoNX;H9f#vjD6xo)U5>*v__pqq$j|Nn}9Tf0lIUK_jBoQP(7w#y{)iQ4tVj{BAibw
                                zNFGqF-DgHxp4N;4sFBx
                                zNs<+*;gv0#DYG58Qd-NwYmh0#ASC@yVw5w7e1XMhbb+Z-;rZk$)SH>nw0h1owWx<`tvHWfI6N$xPTB?GeOObRKjp?+a|Ka@
                                zD80wQ2PKZ71nu$c@&)#uc#9>D^wlmgGJx@gG^z5`?sa^CmnWanDNdQ?=YEm?3664tI
                                z7tqHiAFAJOmY-+Y{rx;(Wi421-oeL~-!vCO=8lD`S1)b8h0V5=Wa#PXhr?_W`zc0i
                                z^YAq*JGDhN%aX>O4Y~6iRFYji!4#S?NK|56@CIql2ZIa(IB+o64`?(C1<8Y5AyrmD
                                zSWGr0l{c--aa86s^k#!q!Z7+}i+H*kRd*8|<)lMiSHRzJsW$@TgW&`i_r!7MFfkE!
                                zG*&0}pczFD+xcu*h1T3ci1x@LCYS*u@Ri_iS7M;jKjhTXg-;oDxz}}l@nkJ_O?pza
                                z)Egh&p@s5li1*G&GImJ)GC@uX(LnCa9`DSGJZX+_mhS
                                z6~bf}I$D>nQOSABr7l#gT8c6H-PG&VTrHeD*xvcXs65rhk)I%?YbN)q4=J!F-V?sQ=BsLjADb4lIO23QoJ7QJK$
                                zYZz=PgDaviWk#jsD1(QrrwlqVm?TUKOUfdb+l6>zP}ymr(cIk!`sPXwmn+UUIfFA2
                                z5lmDEepRJhZZ+pqu7>Xn1A47R>Y)vC>klEHXw;P~Imn^Mlqo<0cL@Ez_YdWX_rw9TUMj^(Z4O=NNOZbCp2#hu3Z&!_!QUql}`MPuEJA~(*V<9XRXYq8^12uu^rBocinSb
                                z11n%`+0bGHtN%omFzIT$L!YX|tjzP|uR}N|`zl1)UY&(*0L%^+`1!{D5PfEan|58~
                                z1`S-S;jd;6M&lmzUfJ8hR&?_=3xV}wVC*=2qO+i^r9SCEeDG#K0`^qQ`QDZ*j{rkD
                                z5Nl6tCw^JakRcC
                                z=#$>dBLCK9fB&y#3%CSAd?FA40JHzIteO5*)}d}W$D
                                z`Q&H=e_kM-iKTg^R4kyR7M=gwy{pjLB-dm?*D&Pi8&}Z%@wBDA;T$pY*VR#b8)ZoD
                                zbEJK{^X>6`^VK=TJtNmmD5S8A}aw#>4!^p*aTurh$Z$(fB-6~o`D%N58omYJh)`9NHH*4XbyhOrMkOM9WjI|cTJZTYL7BHM
                                z3YQy>>RloJg|0#PDqrXDnUW*J#Pg9NeD;rn2!BSdkFfVTdYN;E
                                z{C1Nit_hvwUje9InH))-5kX761%&qOAS}Ee&al1iDx4+JEwQJcsIkQ+)1IA~llSs0fRj=Z;#<+GY&ry`o&hU
                                zIJB`w8}m8*_6=3&hN5{!;)d!VA=%adYocf_aRVs)Retr%%w8~pAJM)uF~HWqk#a}4kC!xq+VpIAtO6hzDC@1}
                                zflHf}kwho`$Iqo-L9NEEEK_Tav4O)vizJ%z0leW;P^T>@?krTM`R?q?&pvTWquLsL6ES(c2oH6kRsMkgc^A{v
                                zb5kq<0syG~M_B%UR$%^@sJN;q+GjB!_|4X}GhSB!CaNxKNtKtfWKr2(7ni^|9s8}Xtiv3^uPGNzTfn~KU|KA4dB%vYta^ZGDQKPu9hfliayo<;OL92
                                z4wLvhJNN4Re)R-xuqVFkgCe|+9(v7>}o}HsNta+z$%rR
                                zmN%g98an7FJcC+kad0T|+(clK57!Xj^pA)5F^E_^ERyelJ{I_$qq$pK9x%RwIZO|1
                                zz;I8^sNyFMnNdB!A|o{)!KJPw-C?Fqf53b?b%f{|YO55X4jnLVXQE56z6ezr+oOC+
                                zR*du=XtBX|r3qzD#AQOD5;%xi@^MEcc?x32WTtE#+HdIyl1uKH*&DplolP$DE%TjC
                                z{tF!Cg!pV;EA}*hi78;)pd}*7MAG?$$t~{%5W^`CzWxwH2agak1D08DpZ;nQ+zRJ;
                                z1}7pJ#1-v|>WxG~CoU)$kmKr@jurwGEq+s^kvm6SFs_O#mt`>H=Fq9|)UpypBoJBKo!f#Z`L#
                                zHzWd~XNOMRonLL%XXttzPBq?CxROmlbNegp$X%hd?nYI&*{jN3}oeahW>ggJwZS8h|
                                z=x)H>v#k+z|Dm|Oy?0@GqU-fb>?LT?F{|^WM|9Q>wKg}{}(rJ<5pXEN!$Y2b&
                                zF{yT#rIu|`XkcoMWKd~Qu0NutlEk>9(8S~`0R!+
                                zE-s{a(86#Fum;D!zBAv=)U)pCuMd*DCGA26I~^1*LpqMN>oQYuDk`Mx~h~H|uCMO|y=L
                                zTc<~t_JqAosymm6O=Zn+pKgIiSZK55mEa|;^a*>hU57ky;j(M>koar~c
                                zc)<_fe`u6;!6!l(GjbMCZ3fQMD$i!`A90$RxASo(>9#N(Lz_85FUL?q+af?eS;
                                z*!ONGw3hj1WET0QmIq-944I7N>j^VZB%5-Q&QT0$LW|*{to}H*(wxqlnLItHzlq9|
                                zs+z1`gIHIMfe?LD&Ut8y;PqzoFOTB?Pu=`-QOA+^XNL6!^?&6T>%U=4Hg1y*q5HPZ
                                z02W0ezNLAS$l`DfF0vTVOA3BdIF8uLq(M3XN^<>@?ql~eEV+A!MD+C_g$3V!CkxZ*
                                z`^K=|YL*b|mMv=Y!mMD;au=&@ljf)Wv;E8S-p;$_=Vq|%)!qN+r|M$S;GTvbs+P_U
                                z%~$HMvKBsE*!8X9!BBm-$Mdn&4Y3JIx7|=S>``BI
                                zFH@HHq~MkCTefJbsyN2qCf?enz<1rXQGS;rZQ`Vnby66fcod{?L{26-p$yk%`}E10
                                zA9fk}Q;j((ft9I5SpN-VcJZ6nS`ys82_ZPC&SNE6VPc70VuAG=mA{I3`?V{FFSX{R
                                zOz)IZ#FluvMd+Qu)a6LJF@+E#5
                                zzp7)<-X37`M#Y6M#MCZT#nEI$qyU9La6!P0n7CE0yk-&jz6vs(d4syMyP_OYW0BdA
                                zs#D`2$N|8%=Iu2KY=5nnbBs)OtxYq62D7R8Nw2|U*Xd)c&D(bSGy!^%ayHl;LjF7{
                                z6+|s65?J#a$^`CIyw>UI>KDfsn)4G<0U8<9qxzUP_h)ie(%4Qx9JcjP%w5B$F$Nwd
                                zeurcRay?r>-RWo`Qf
                                z_@<^5YpE1)EsS85_rWjluU-(`V%rSQF>y03SF
                                zNSAnG;a>8Naub&kx
                                z?UB-qMMHTqjV3ib(znw$qzc*egTSHwW}m=&sF^u0Dgg8
                                zf#^iBo@Q**kI=#a^3R1S%)|KZG?2DqM??bA^ij~&TqL-<|FfVoLkjDP7u@I%EbR=L
                                z20=C&z=aE}w6G--bi*TMdL!rUO(s}6ZG>S!8O(Fg#yMlnNY5g>&>lX8I!%3C?Z>D3
                                z@W5SjKe_Cr*UfZO_RU5<>7!F?ppu|zCzyo>R1jLu+vZ#g&p3S?x$V7J>4rr+bG!J5
                                zRo{l{8EB8R2gN}Pz#Ju>JWtvg>l~6*h7D7}pDP;5L5E%@+xUT@0uc2P)G-JG|=2+0dbUvh*XIVdA!&c
                                zA?1X)LHqFR_mD9nSli{y(Kx&o@qL;GaA2
                                z8O#4Ay=?!I-fitmyG;(XpWU)OD+K~TB5KPr?!_g?_>%=JiA(}V@HJf;v}P9@XW>6o
                                zlAQNwz)!FzvtQZ1alW}deLVxY!csj)3u}(aqRbRHiX`x}&xf2SWgWg5Qfwf$Arq}Z
                                zF(Y1m1W~F)jX!F44bBKZI5us$tiR3fU7PQd<9yg_Dn?m94B43(H3kN@J(!~C=;$#~
                                zX|N@q^COq5bw$!x$ZvvK@#xzb2}I-Gc2`l)&v`^CSpnrh@>;VP)};oVQQ$h*_1c1l
                                z-eX`H_WoL*`nF?G}1*@d&=K4us1noG$*DY8jEmh%ZA-HHH!!#4zEED*P0yrv%Z|Zpx
                                zy;r8RucOxi>k}jU!P=_JidE39Yr}2Ip#~Qyv2w*nSmW_AT=*ogs+j?N2w{}h(+MU8
                                z)0DBV1T4XL@RI3QFw9fk=P!#H(1PvEx}9JXJX60=3UjSlQ6xJEtZxb1GAZUgF35|3
                                z?$5?ZF_?smxYf>ZyWorA#pmT6;u@qBna1a(`~;34E_N(c`;t~CM5urtpup(B7d5QF&=%wd)6*a55jZlsd@`_?+)+bi!{e8X0uC7%l#T9OKBQ9PVh=Q9etNnC%T~vB|{k{oSxah
                                zn87He+c73L!VHC3I29~K#y5>5NZA>1CGStQ5$59F*8g3m0I9A
                                z;<98Z`jXnZ!kY#gg+|ArKY@-N5ktlMJC+ikYZwh5kAXxVpZF;8p$*o&+{6OBx@vVx
                                z=mGcjI4ZLyc_~2X!r7@Kw}a=HAgjea9&gS_a-210^{P!Pna|kNEQQo&xA38zlos$b
                                z=r*@uC)V}so}KZw6MK?D8A?<;Rc!s46_*=49#p<&Q;WLGU9#n!;|WTQSncM>w|6oT
                                z>#-t^a=uEt1UbS6#ssvGylsVk591V@MI$3Fu$_oUL`M8V*D9kjET}SUqB8P`D#D=&
                                zhM=bs;7|xyzzt@c><6X6Knu@3V2hybJH6-vIh(sVzM)A2{RolkI%HgfHWb={dwI~0~GT}InTJi&BMh9|j3plDaaxG;R3^bCeNVR^$H
                                zGnA6NbZoVwFWM!>@LNh0e678KfZ7>&q@O9^-WU`ETof&>=K*8@huWWMB3XfT^c@n+
                                z6G~+=$3fjrMNffsH{G*Fge{K7A+EH^WEvh0zPb5
                                zrLcYVA9zqM)HHWY@Cusf6P8mqmR_r_j(ZDtOdc=Q{rPAl9jrk$H%q4UWy=Vo8xtGq
                                zJ90bh%gfo_xuAwb-gf6Wqs_ZHKJ7
                                zLM`Z#{lV~$wK4~u8(45VQx!&D_YN#5KMV{YSG@WnYNlma!lPf2kD|GXK*5PGOdQoW
                                zv~mjDo?+U#TfACDzpGX*swZ9D?M04;Z!ML3sT}NTG>&jx9L#%>AIv87HHwLl>}(aZ
                                zF7*uECG*{;7yl~4+TYm*EMXQw2Rm3_XGP(c_Pm%)DeEbULL)LGPg-Aizf3?%VJe}wFQYoJuxlwE@FT1Nih+u5aLOTgWK0h~DzM}*Q
                                zY06jS-5wc7Iok#VKrIPPFy?6hn_Khmg|X_YRWR1Kp6c2qzW9V6mj@vE3WQGqlWYH&
                                z2Wp;C*+x8qZHfA;`weuhk2IB7CW}*)N^*VWP(jUfc}Q)NUPGdzJiax|;`@a1)t+Nm
                                zi;0Vl_FJFg=Hhcpn{F+swNuTTzg>a`~pSIEKqJK}K
                                zjRlC-Vz@ICD_$v44Bd{v5-Os+FLg5)V8U-};)dmCin%X%31~$1VG@Gf8S*mqtdJuGu8_;d!{9~jSZ@-i{BMx^C{R+Bd7XMI9=A6jp;M>*n
                                z?f%~B@BCXBNPj=_{lx=`40px>V6A5F^rrWx>-w7wCknQ|Gv47Z-dtLJnSmuekaKy%aSp4qx`p-yP&mD`HF;5qj
                                zq<5ptm)x8j9JnG6n!^=J4t0GT|WpmIulma--l$mGyS
                                zdH2N($%HMixeL%cIvr2U1G_wcbiV|=4lFsM5=)Z$bwGWP^hNdX##99G?};LP*?l<<
                                z=+-!=?SLp7voOLYjwWr6N+U}0`Rhd9o#IDgsb@v9$NH%p4<1)5A${=S7E6#p
                                zYLUz8%mNPfHY9z>r)EHW`TOuEt{>-;B=^D}P~kZ5im^#U?lKtoGw^c#d0mPK^uy|S
                                z_+x-iPh{Q**)U~-$GW*jbEbV(A;IMKW&y>}hEI)-z1I(9aPYrU2zYVkWmc!xF-sM5
                                z+aK@&w7QUJgXd2}pH89E_dGZ_`OxdCbPvbEbELo?uv)2kkqto}1D9b6LHcP;4$Myr
                                z+1wwcG50cbM%G~iTEtSMZA!3o2iW>&5vvDjBGk+eHsrr82^t{n3_CPk`DX#Qm&{?1
                                zFahXRmylPxmmJSYobj<@j+Jl>pwG6pg8aVQN}hbgi|vR^DfE{2QQx>c(G1ZSDdh|R
                                z3ueu(GO#YS1)?s283}RWM%win4hcu$fjB2E(0E8@h^Eq%GkC}W2Ess&9x5GuF~;^H
                                z3aUdL-Plt4B4DKN8KyWV6L}8?znu%8Sc?#9S%^jVA(4b~?#kq-{~A`Zs`KRg9|2`W2OHv$^#NbQ|f*rzjg~Xtld>%&=l!wdDAYI
                                z($Ur|+W|HFDS9i}ci)PS({Mv<^SzqG|Ee|2Vi~8(P4|cdCLVPp>h!k
                                zR__RH?F>M(U&{#VJ+X6QpPCB*z06z(3d-
                                zyTRA`mWRs@wsiLYh&&>h69YRswn{g|Fs;^^2w;Z3t9acrco2965PB{1B%8!7Wg`<0
                                z7(WlZxZ_l~=ckTwwwU5S@r&oJfw`HX(a5)gC$m;NM(U9-+>?&yL8XX75-STxx&e~v
                                zTv!?T`SINWhvl0V_*C5xx4qnH9!r~dqO>Nc<+jTS`p|Wy%Z=Gw%7`XEWL3x&v5Pgp
                                zvgm8F1fa;*NG6v%=>qW8w)Ec?1ClTP#Eti=XpwOv_@+-JsgzOfSz>t_mPY8eg#Ff>
                                z3xk`BR9=tKv`g9=Kl-Uyig}!?sf+1dD&p52QB0xzuC=km_9Y!tufo+hynQeOU8sX0
                                zjI`Z4i?jNnF`H~&;Iqa^*fclTO~xK&yQ}cNz({=ON^nH#V3Mr@F1EwYb-*$H>dQ=zfQrHe?v3x?W^E+Z{K7;_k4)
                                zGCg)7Nxsb?QBjx_W3N$gh6PFu@|~~3l=Ze#lv|dKUcUx|3%`e)4t>-G)8`2&4U&WI5DY{P
                                z8b<>lO@@&q&f4Pm9%(-zAp`Me+)V;z
                                z6f0&@o*#AoNq-3B8SYm@YeyP8^leP7!e#Px$>^?u1)`!JlIw*=$Qrr96hDvW6e(^AZIi^`g77maE##;+;xfVGuJbLNcvTGA!uAVOSsz{fW8
                                z97JH`7XFKd3Qzy9Rp)F_D>y_OKI
                                z)B$P~d-w1n_&A@#rD3xX2Yr7fR4)}%=XSkJjuw!>5>DsucCgCz#S9veh&dxd+bVc5
                                z+bzfoNNLdwA_->^p9y7wiTB`W4KJXuj5P^D?WV-4dz`);ux-9b86dD&BVgXKbF%}V
                                zuNlR~icjPDwc^*!Lh-y;<<6w+v3-=(qy|7sWm7Z&M&V>rk-&(%HHi!5zw$Av2g)ZQ
                                z+_FpOVpPd9RePBLq^CZ<55(TaH1E>n-QXe`Xa8Se=NKN@w>{|Cwr$($*tTukwylnB
                                zb!@w1CmnZeyC-+~K?%$;ZIQ=Jd%t$I%FI_sRh_j(u9!N6AEhPFh#ATno^{%~Hr
                                z=%C|949Juj+UXE_8fkraj#Z=K!%&wXMW>Fi7>z6d}$_cu@F6l=hxK9Gl!<}v+R~A*KWK}1TMl8uNbZDBil%c+{d9bT*!~X
                                z`zB$S0R!9dkz(&K)qKeC+5O&*g(fg$qX3gUoB-TzIUEzD;`mR1!NM?DR**!$!`dSR
                                z);>nUh(B|QX4!XJ-WBOKsvzk=5Re0NTvbFk*o`f?*0n-sfC+f-HL%sij|N_lNtt?<
                                zM6rAt6rtCAD8|xU3s1kyh!7YMrV0Q>6A1DjM=@11B1XE&bc82q{8G4~g+i0|X
                                zsfb3hJI`87m3s{PxPaqXHs5uK;4#fjRce;-8<+?A5*^ObqtHXkV^;kE7K$-E=ozDN
                                zWne0aA-kRryLv7Co!vAg>;fq%OD;pVJHDtKI4Ubm*R-5(dblKm=7hltzL!L3mCz#Yrw?4uv)Jn7R=SdU^K+
                                z;G{-Kn7ltrG3B8|wq{%FgEjEgcc9Q8L)8IGG7bPU@{YzWl9GK4OyVB$y((}pp1@nH
                                zAYx?}%e6U{eUn!jD=khEL!1MFu)4}K4WPYT3K4o|3soS*>E6@@!1L}*s2=w1`9Nml
                                z>cgQYH8+JuK>04=hoIMbLuKh`Xvi6Yw!v1(VgjuO@4`GmO0PTxHrOek2yKoC=EN~!
                                zww1z9vH`F~L+sd*CEz11i<2Y*$zr{*gO$e;YL4*LI;%aS0C7L=P*MGNAkN!
                                zva?_-1Gr|@yh#Tak|d;Xk}7<&a__Jfp?Ii9y()*LS>v9n~FU77h$I
                                z?uiwQ(O%M+mqJMS6@6^97tEP%?bF_M+nyxCi{VCmzPH{`?(;U4`|FLbs(h=mT*GAg
                                zVYY6OAQQGuWnJC%y9@D8?_P^N@fFK?@fB0I!Y1y756+)UiMJFMa(2o6F;MG4^|fUt
                                z%FI_?xq1C&muOB=GvV58ByN|uyvU3Q0ESr(}uV@!G2jO^~=qa
                                z<+xC4Gwpy(h~CtC1!6JOP!Fa+8^nMV4Ak~VH1N&!*d0o%*-bdPp?MHGBlpFLZpG>r
                                zCa+VGzIp%&!|76hsePl!Q^?L-Nwm_YDF8!D&3c#_1f+0qHWP605E_zR*tng;#;4uc
                                zmviQo4XTzK^<)$xT6LCP13pTesMOgxYeT~mN(1u@948M9rP5X%~kP@RjS*#+Ivgi$xlvb13Cyh#Les@#6)Ao3*yqvx;oco6V7y`w$BD!TsyV@+H4q*OlMZX$cWPY34CXbumU2{A7;CT8IX8yLc&(i)|iW#_vuU{7zVG508K
                                z7=}WNNpek#l}mqwcwi{0GNVTSW)d~OORuB-0>jSq_FS*=!4
                                z;-+luMrfI!wx^eZQ$uMJYk$(py-<+XHSvP*Uw!5*y+&Sc-ukF0(r5b0z4|
                                z2bq&KlIGO)5|H6DskkUjG{tP}An{zt^V!e@L+BVR`oSLgg&44ssSl+MZbL!CHZe`+
                                zJbv?0AWLNkk8MD{>lN8RuMOkXkPkmGa58?DEgx^Ww!ROmA0K6=4
                                zm6pNJ43CC~$7TXOmB)GFKpC>PHxmc*tyLp^V
                                z0u)t{K
                                zqUJPzPWX!h9U)G^S{Um+eyGlCzjZ0Y@v?vEJhFh
                                zK*HZVc3R3z&30ZT0NAD{8V(44hQsn3Ay$LT?Ed2wL9|6JB2C*LNuMLtrXtEhTPl3d
                                z&v4JV5ZDDZL9!*bXxDo!Mo*C86xmpxb);j~L^0vRj
                                z7-V_uo8AT?pO7VkI)?4z)9+P}E|^x+mC!b#Kx$-@hfu}2`i3fJx3Cf$La~czG#O4G
                                z3stE~DjQgtnSP+&Yzzm+_e*NX19KN8A?gD|8ni6YSMz}3CAl%+?6e=XLzU=MlGctM
                                zrze!?sHn##0wO{MjY7b#leKxi3?Er8b)O(}v_&Zm=*l0CLV|}H4m!Q0jgB(k7PgXV
                                zx7|U42qM=dIly0?af+Eip{U>G-8b1f>4J1VcFhq8_xFRX!uKRP+u_-B6ZjmpLU2Q&
                                zvJ|KTv}9q$p#nx_I0?Kt{;EX$CIxNh#dV!z{Qix3i(=tue=s
                                zIvFl+!XN!m=5{IN%Nxkcass%dTKf}`eFzFYP*m<=GAL=NB2S7d_<#(u^+zGYy+?vH
                                zOn%MZA3Z6sLfV&4TCr6udya5hq|MuM`@M1o_#H}`pnWf^P$iA1H4S`A=uTj`UJ)*gl(4cO>98fuVUckmR
                                zKaQ_rCH@=s-m5a{(R}AfNG!@#G4k@kZxddgmme
                                zH{WHc)dsNU!3P@f7CZ2k9VSNz?%Vz$&-fJdTE6p56cLbdB(p}iJ$}gfM_Ugl6FdwP
                                zeDm7H^|wAJa9HlZ!7#H*mg}J7j+Riap_EQQDB1ygrg5_3_F3|6#oQ=sKk5%mEkT2g
                                zhVGxroU1uhBcOi`GBS}G)B`ZJ`yOq!sh{FG^Ni%1=@aZHKc>|4
                                zIX3{)h0tKPKr)9&6~BO%xp(RM#0K`{C1NWqbt-aiD~Gq$lOD>$z5_`ADRd`ko@?9_
                                z6zmfVy!FHe)fuIHa=-SZF4hf?9doC);HW?I{~6lLUr6rg8j(WVf@qv12qv8j!vOH`
                                zVDM~N=zz$_x~7Uu_vG!Uj9Wm~^gP;_6FoA7%oe9$Pv^biNDQ?Z7^h_;+y{7d-5*Yj
                                z;$Q{lLvm5Q_-g)P00%7#9G`x}
                                z;1@{ig$|BPw9lHLp=nSS1OT;7moEwm*+2VsU7;RT+<2b+DCRw5QSQL&n+>D?fZu)!JoKsz0Sr{
                                zkD7DwaviNJz^8)gEIhe@Q%67j5iWZ)IK!I{rSIy6b&vT(*MKkSyBdE-k^|bKOQ49N
                                z0)#(_y`&CyB&1vlBR>3r1Ne0on`{by^Dhr5Xjb5
                                zb1soJ#c0z+5Mj2&o6y7JcsE)bb#o#VRD<|qX+LFN34gR-BMV-M@nJr^zq}#gI2H4d
                                z1huRjX&tfke5P0X2M)27x^YyTrQoGvF%BIKGz8U-w6pDU?EEy;kZdAqh>J7jYj5sc
                                z5>W8STpN)erWRo;8paIJ@=G}i{8pu8GU}8aQeN?t+ZqoVgJg^xu$e(4dk&gbfNtp@
                                zw3sSV?;%`WbTh=Cpa@q0;p;%&MhF@?Izb@0LFh+XfNW?T120P}&Z)xQM5I4Ufh(&+
                                zL`|T>ib-6fwLDF6#|M5eX!jDeJK9o&W!XFLuxUR1A+g@^bRyZ
                                zY{wD}#4y1iAgL*z^1{41GV)t=Y%!4PQ)HNs*f|?q{rr9FRMGWoD_)qY;qtup$l|;<
                                zsojl?^&t2!w8zvqn{(H@3g!#^}8P2p~^S~=VSY~)0-zZdf!b|
                                zWGL;_fTT%o6@DHIh_X`@+TN)I#S3|w_tvNyt~TWQyQhBZ6sWD)y)l8JR;cZtUTX_2
                                zXBk=eDKiN~K(Rm$l#E#{D00le!eP{P*5rilO2iNc^6lyU@e|uGcZyg&2{PaS&#AaQ
                                z*(Lgl;_LpzOTc!Z*$}=iX~qaTKZ!{J&dLfljXUer6r#iF)cpgHbCDWX;A|kM>=jBXiWn5#v(?ba=#b^PCA5@n`uli6Mh25j%Rx+GwUTN9
                                zFixV20nGEI$rFW6;O$*9E(Xh0TPD%YJ;W
                                z6T8R>745Z5iC*oT~T%(k=q@RTX|2iPnZPg%>Ku3X!(76SY0->#5Wo
                                z13{IEK)!;6+_xTAIcW#G<#Kl@_
                                z21V58tH+Y5YZg5XdJIXybE)m35nA-EBJ$X<64??lf>#9$SOH7%t~=IT`IE|{5#+|)
                                z2(d##5B6pC3bAdw3ZC;1ml0WFq1|qto
                                zJVb3)PzoIL2D!v6Bz^y>^-v@T?%o9K&N3G1O+bp6rjWU+e|+zOY9s_6-RVthawu!9
                                z1PXKH^}^|%Y)f;)fv?W)Ry%JvqSSWE`_zAMp2^Co@tw7;K7x*Oc3IV~vjIJb}1M$U~5CAe{A$D-9JwZ
                                z7*lVhtkoQ{w@}qWJba_cgU0e-M9SlpDBS77U$Nyc?hr+Uonhde_T8;4fbw}gTw4#(
                                zT9yX2Vd*Wb&~a2Q6$wU~r%W#9Mcz8O5!GVpFLqSxFaB#YQ=;
                                zZSgl1q+_BKGVUGn#Hw2PBbE8xjm7C=y;&+pMLqs-8zW|BbkGH7!E1;h&0%=Ano3;e
                                z{`8csbLrtW;806E%r20$=D23Q(QS=b%PD-dv@&*CD$1NH5TBbF++8XJxSm?yBjrhb
                                zp>kxw
                                z=Y9266pG~S6cQJg^kZe}7Awr&(Bx2&uvwb0{Z4l97>2!_Yo0E`?D#(l1Bl`Z^vi&1
                                zPz;D)x_2Bcv1efNORdAiB1F$>3p!!q;TK-i3E-gB1|5X^KSnYbXa^f}HpmI!`$pRbzwrV+azCl2?XU)7wVv=8?h0pgf9U$u9
                                z1zw>&h#Y*PV-~;|wA(f6fT7)#0ITdhQc?G9yX&)vlN7tM(&}$EssV{g%_}uA-yD1Tt=@UEh5)j0l8ijumGmfwk3$EvBF|OI1I53S_JJsT>|-Q
                                zzAzc5Cvmnpy82`s>lW$tieP-5hAstFD*7zEG{i|?qE52
                                z8yD`fQFBbR&cTT(A>cXHxp`!)qClEu);!Yea^aaf0)FuNo2Ab5;YaALthw^$p=L#*sC19l6ZwtJ@S5@=&0#v*g3ZxK
                                z0o+rc?5Xcpeaq#~TtA7jVhD`h*yqrX7M-*6Oiy*^6S=CBImfd0cz^Ou%CeudBM)XX
                                zue3Dbakn!ixmoh+vVBJ!Qt*4{OGJGoUDKu|!IWW@LYQo#hU#ZYvfWY*%`@~lZ7Psd
                                zqCtwD)PS3=s^;YLkYXJn$F_`3gZAayQm1oJtRd-cqdPJd3b?X-|E+;?e!eUff<`_0
                                zvzg*ICuJJg7RSv(A5*awAl)LuR)OGAkv5ul)I+i1mR71oO*54=pY4@)5d;5|9@oB#
                                zZU?~-B+jI+~ayi=C
                                zoT=pL#NQGeWkZjeDc^m?WkVY8gaV83cgSVKSlopq-KO3K`Sw=8KLimi78e*G({D1=
                                z&#@MhtC2iv2TOCigGI3A6V{}vw4f6+^@!zbo63nA=TX==*zq7)hk%*F4>s`xR=30+
                                zn-|jFy8Eq`k-KR|)LS>HTccsggWOz+Z1)i6-}^bra17Vn|9BSN_D5Mmru*G}(NUNE
                                zj@5Dk0|2=EbW#7`^p1mmvfQCreAt8c#;7A!)1bK2>mYd_lWLlLbpZJ0_&=dlLt(vzf8
                                z`mkb6_c3R#<3p}1*Dmn-(saV&lNp&65QO4=${4haT9bd7$#~
                                zatpqvPP!HqYph+PCsEm>>$<_u_wk}uNM{{SD}|^BGJLq$Ij|v{LACu3=elHKma;~;CjqZnA62F2IpTPe)7OvBSwWf?DLT-9*4|x61#UQ0(C+gWc3|hXC
                                zNs&@2lk_!7d)GF_+5vt-%#NGFYFmS6(qS>VXH{#a8*~t^FiiMppIJSGpUhOspm-^e
                                z*IKb}{}2FA>G&1y>;33uXTfuq@sgGQnh{M?Xr=FNqVWj|LG5c!yOs56+=t@L%~
                                zhK~|AWamETu+1xCisE9%NrA1v{}^_5HeJ`5o{DZpx8c~9wDVy#{o;HvdLY;2OwM3v
                                zV|Og=%Q;M_lN#61ixsWLUMPVLY$<91`)zn!hK=MrQ!?6@15-Yi@|K7iqvBN+%@^5^
                                z`-)9$g0V2SFvnWJad^aX=nhj}A5S;ij!nanI4QnE0w~iIHqvEGo_h`nWD>M?<2Y!R-;TKx$hfCKZqo>$W=!!N3K3M3)YgsAFDu*w8wcuq)AReOBeqpb($f
                                zC*f-QZX!k@c{mzC`j!#sY|E(qJ{IB&myC8*&by}7-4{_~gPEJ^gad<8M02vXIgY6x
                                zt2hiMH5|<Qf*yX=nk^9a6&bMMd
                                zo&C-nk8ikAx?I{|4!4p+qoEPJ0#nzBqa*h8-W?~*#jbN7+hr=G%#lN4(e<4LpTyBM
                                zrH6J6QEP7B8IkS==@k;MaFjDZ?MmU18jZONf5!Ccr@K?|4st|n{`Z~}l3%CXu`g$?
                                z$Vz7n!s@;&UQfKV9?J!^FB@kQZ5DSnc7@oB>2|F2caod3>JI!b-9^9%@GhtyzFILIvoATmi+c@vum
                                z;xyo~HM}-eE@z{znX0INrdG}`6ul#OZx1{+c}m;3;lSXIf?S(TCM^2^s+}d*eI|T)
                                z`I2*2bktbvE_&?n{Qf*a`QX50&x4mOgr?pz#YYN@KVJE^^4O
                                zV;8CJ(HU*gqT#n;14~s=D60Xm0E+@Pp!4ZlucEjufL$#oqXIWu$DwtFPcg?&i8cn~
                                zhN#H$1r^4Eb-f)UK97`@Y3Xf+;mrMaRm6q`or5S3dcXxBL8)ZU;>foqX>ynL1DSuXz~
                                zFJV^Fmy-flh**l%C=>5!mF2BTep-;)pWJ`M>mbZtW3WW^!0N5u`BNHpTJnc!g%40%
                                zi3ul~=iul^F5n%W8*OEUl)-lGib)C}%VwzFnPszVHUXx#p81>y0%L((4p_1TuK6O<
                                za~$G+24X-?Tpw_zNweQ7tA*%v#$a4`CsVR3R&#`th$qBiUv;gr4$Hp6GRbMX%%w}7
                                z#of`4?f^QAC<^>Asn<4nli3XV77H&E%auk1A&Rf6?Hcy%)#S|8peR=@Y>~}eYVqM#
                                z-qV)>vNNUKiu74lZ2I5IiWwRHJwU2e*KI%5O+Jrm(i$k{h*6C=AQ7k%BGx13QALo3
                                z;NS4oCK6i55~a@QXrV;|yoL2%yq*(tG!zwa$j_xxc1^)#2m{ierzWyJ@Uu3D^sZIL3u)SyG+ONl=
                                zxth>m8iFy~BxhkWt}b&lI}1-a*C?J{lH>3Q?9u##COagO(^St;Am#8k&BX18A;m-Y
                                z-scXxJ&RcSq5hj9c;YQ9RAMhewz|}d(c~Y}b{77F0$D16SPkAkU9(sia^ye@
                                zt3`Hy;KL${%Bazk96Uk5_Swkl8K5)5m7KpNr%f?Spt?{W1Hhcm4a`_K_Y=C0J28+x
                                zN*5u|o3Do`dkEDt1rXHK42K9=(pL8RE2JD0XN201Xj2Jt#K_iOq
                                z%r|c~#Y^pbYc`f&m@QpQ2)7crl%8Grz!Q{R2nr)r1jHnluz)C21%sd0OJY{fZUh@|
                                z_VcR%m$!3qc_x-ZzWZKHd^!!oEbPyeW
                                z8@hze;PJ%6$dCj>Qkyie8gt`~=dvG>OjmfrlVg7?h6~6%GnGoYwHi?<*Ze4Uj=_ZC
                                z_(o%n;jiZek8ovA7|T-_7rq-jntT(5^ZGPhHps<@#^)V0X6gB|trox!f~$Dn*M}J1
                                zAb}|vI%#fU69Obmkd)IS`%uVwyES!$#pD~NVdN!VdYNLEPFLtgFzt43FgG0H(m;KL
                                zMAdZW1Tihpn|+TL=-qvn_6KTsWS)wzP!
                                zG(qLT$ME5P7@aJ6n6pL7dGeEh&TH0S}qxmX=W;f_#HxQoH{Z
                                z5;FZRpgBecoCoyI(41Qve|=pi=sE#wH^tszcI?{W*-aT@5I}LP@x8HzfzV``o<`ZP
                                zwu&CYCl-L~+`pwYX3Xa&-#zK+(c-R;9gKy!p0yDq*RO)KbE448J^-Ps;p)s
                                z-F0F~69{XZ{@rxA_7UPJW{3dq%5~_g5VGOs5Ms@lrbE~jQb3zFRO6(4k-EP5KznH4
                                zPCxO7^2&!29eDAE!tT%A^tTtg>+LVKGC0LxA=jT-R{g(aS;l|-cRETkai30`u1`@G
                                z?L7osbp;#9icn8%^}>0+n2}sy$8fVXGLp#qC2o>&p$^@4#^a_p&pZ!~7%(`D0{41D
                                zg*LMQb@rU=R>M}@R;1inz80%p_uJFk)8U~S#+><4mY#qzwia8_zSY#B2i@UgF|?Pi
                                z4I8%aaQRxS$B6W{e-R070+{W{00~OR_H9#g}5&&m70%Mc4B)28-6R*ioIPH4j
                                z5J4g|OwkWWT7#~-@iAT|uwI6e{*bWun)?p|;_x9)6)>9i%N)SXZC5SnDLNqE_7Oo85T@@^!
                                zn2wp49dZfsELM@CfDH|6-2jAobtcAd1f$<#tH(hFDs7&IDoWf=Kvp+ih?1rY#UX_r
                                zmua7@g4k?KII;QQS@(xW782eJ96Use4q^4NRoYd8_Z<&uI*pEvvuQQ7KV*
                                zKXV5WAjOKsg2n;pStT1^@qVunbw
                                zhGZnBS{%xIx;Pegy*zW+Xfq{nB&2(y#
                                zbAa%dkCT!)Mxo1ia#tB?CZc{urgTc7?%nY&!)D~>U9OAY8vkm?leZ^88$Ao}EqJ`u
                                zv8Td?&!R-)m@yFlPaI=akN9|+Q
                                zAzPgMix9q=3M6std=j|ifIDFrz3UP+Ji|4Kl&*OV7;;rrx_=ni^Y0Z~1ue73$A7_5
                                z2D#HzCl+4{sK-4I3B9&Y&RDAK(h3b@mV{CfTyWQUH{Fdcs27PYi+FseRI}hb_orGV
                                z>7FC&^8MNGks^sJRV|7#@co2UTKV7>&YCSZO#By#GL|LTmQ`Jumx8(zXF(jE6F}RL
                                z0X>r8!BHajdMX5%uq}H=#9|lIDvJ8%6b%eN`kYr|RoOstC2-0;QAcvX-Q1kQsX0!e
                                zE$Fe
                                zgXqTG)0k(r`f~91tHXBp)FoNhQ&v
                                zr#7-T>)P7c+H~SfCV&U?K#T@~-slJLtYFdvfCIXZ8QZ8V{OOVJh&YR~RlM(jWbDXu
                                zQ|oQ>*RheF^)~_(e*DHMC}T9pzAez}1sK-ka%V4bHeWmEDf%hMOW7qX!Eja{8z#O7n
                                z^dy$mYi3l-T}MAc6|{F3l$EISO-3~4bJV@Lh*WF;ZmIQaGby1S98r{BXsTdPVw%+S
                                zl?*(+eV}H)a#~&_`Y3y}WP}SHz*JZm8tu#~z{S!MU!%8gFh(>#uNlyY#66s83k>Ca
                                z^A@LHeOG+OfwOQ8iCjIAc!&B$5BsECVW0X;fWzz+%}&J%%OU4v#8Qi=^o{c8448JF
                                z^eyN`AMdXR51RDIBy*mk6n6=wpnl!ovMXzG5Hj)mkjn>&RM=z_YF37v1!g{t8FsrY4^D}@h?hKk-XFi7
                                zwBfEMFu8CTxz6ZkEULhqxhC{4hoZO>VpE^w$WL``Qwj&@#h_oITotS&GAjeAel<-{
                                zdQ~0C24J}|Y0Px<*w|Rx`pC3U-H?!DFdC_QOp~YojRJj5Se_f$fOCdOS_vP
                                zkkHPD)i6^&oL+FuY+kJIfRDqJdqy0*3Q=!(n@X5s!Gw=s_2z$)JKK>r_B#ev5oQ-u
                                zlV?Y(n&D1WHzf099!+x9r>3LBtC!B7xlw_S46Aoz2QQUYhER%4`u^ZNP4h819Ppp;
                                zaP#d~nW@R3w~buFdZCQBsX-@5uf~;r?76{Z(q}yR;qtPxIW+h_r|JU8DHC#{$*f&-Y)zH@Na^<}2bK-Pl*eS5eMiL>%K+#6Q}cuZXW@=YJ8w
                                zpMSf556piJk$?Rn{}iErMSNYE`HLvh`-=Eyo#rdz>$KTlgrwhe?7VN$v{?F(H{an`i*Yy(xfba8SAmj3{
                                GqyGgmX=9lH
                                
                                literal 0
                                HcmV?d00001
                                
                                diff --git a/0.0.18/html/images/cpp_logo.png b/0.0.18/html/images/cpp_logo.png
                                new file mode 100644
                                index 0000000000000000000000000000000000000000..780e8a32bdd384c1dbd0fc999b9ef9ed2e1bdad6
                                GIT binary patch
                                literal 23613
                                zcmaI7WmsH6vo(rKa0u=m!DVpw;KAM98QfiiyIT?*f;$Aa!DVoF7~F#8PTq6Q_uU`&
                                z+<6#grk}3r+TGQ?t5&TYt)e7@@s8vj3=9m0oUG(m7#LV<=sOJs3EDDuY=;Z|Aa;||
                                zc2je*bn`TEwSW;bcQUo0l5;SzviNFYV(#rSY9R;%15an8uI;9+sK9ULzPft%4PfivmS1VR_K0dyGIyg9(p*@&^-i~f2Ud)a_+W*lY
                                zX#q5IwQ+W{adM>kr_sdJ$=ywe25RYlU4n!2|557*{O@UkP8h3~i8CuZ3){a-`k#)9
                                zivRyz9UT5oZ=l;(i~noy|EFT0y0^0h>sJe)le?=Kbm1&%{|)8LFX3uo;^yS4?&M_u
                                zKeMP}?d0YJw03f)l28LseNZ$pvvK^_@bNzqii-SljzBjPM>7jKNg*1j4i+05bAEOJ
                                z8@D(QyA(SQCxD$@iicN9LQGPOO@d3BgH4*7SMq;kC7sON9V{H({zumQ|H?}Lud@G~
                                z!ND0ivZRHpjfaJ~w5yW?)qgIU-{ya}MdE+e_usPS|GO=c|Enx3)EL%(OZ)#?>i=ni
                                z`p>_w|HpBmKmL#FTR1}f-4*KC+tq{0FfiJ+a*|@|UMpvL$j15$GtEXezG@l1JWESM
                                z0Ot3kxIXM%bg9^~;^Mfn)QQ+W@37%0P|M%XQ8#9qX1ipV>m*xfR6cApRj#Mq
                                zPOSmMF`8UH-#kOG?=vk>!q}{cml4fNkNeJu4<72Qr|9(F+IlW#!=K>m
                                zc}4~#a3l*6O%Mi>{d3NA>+yyktr~t8RIPTIlaA!mJrgbmp?6_BqKRSmMc1b6C%^iW
                                z4R|}{mi?{KfAvHQL20D&i%&BzNECv{x5~FBIPQ7Idu>92wi|m{CcTn=ns@$6)R~`h
                                z3%+)GZ9@ImKGNpNsBXQTWAgaaUEb3yV3CJHGaZuDDo)t*%=S|CO=WAw$gJiq8&M2F
                                zH%d32=9zLCh@zP5-N-a+bVKq=g7B}MwFM6usi^Qbz(;SPqp@?LA_wTp2deo_K~?^No>i&@I;qSIwZ?@
                                zDh?uugX;bYv$yQH2sqXzeY|03-eu`|M#zPe^ItPsJhnUzvT%{R8gX6{W~7@aAjttVORUBPuiO-64cPf=TJ&Z7t9MM
                                zoDB!j5{v}l1Ht>*MRn|80%7>l&?{7ME@rcA1g$xG6SqHJa`%TQQPO-l^8`_R^<36|
                                z96)aAW{S+MFCA17(r%>rA9InUA{4#HjrT_nU!XeBVR%4O49|g4lYqh*>EeLedYt7*
                                za_D6B1!#-k8Q^PS!5*RV8%HDg*rs;BVD)tPM-ubdX4KV?c)i0Qzj%bcJ
                                z6Gh-Z2^m#S!9r&Xg%)Jq6H+1B@g<`Fm;R5bV54K8IMhaQ^p=`E{bi$MK67651c?GP
                                z#Kh*GP)kO%<(dg9-1q&6F}Hyr@ZpfIf6YJ35!lF2Iy*4TOUIp2khk3YYXpm?$p5Vd
                                zvT5PhO0UyTjM8Yd`yEefZ5jpgPZw83x+hmI9d<#NLn=Zd)A;LcTSn286x13j%+MI*Zh4PJ^hj*e_{GDW&rfUb
                                zB?~d4(N3bDFh}s*sb9AEvMQ%kGteVZ8k1TnI#z?eOd(L~vmXPwj0ze;P~6mkBc=1MNaU4++y1}$i!1QwF*w{
                                zs7oKCL?hY#gxAbe4*N$#-}hSQ)=a$)Qym(|h(_Y%#<-!Wf11VMAPec;=2j`JMNRoP
                                z=!do-rkpdAdS2*`n7%x+qtP>>4MDjLt4FWU*gZ9uH|Iq#sb!i0kC6CJKv!?~3(azY
                                z+mz@^(7V1%UKu0Kz*%r26`at)3(=>^7c=5_Vu{>zaO4zKG^-Uo&&uiB*kPfj_1)>s
                                zCwB7K!4&vtBZgGao}a^)F$nei$6eK6qhZfZvA
                                z54KO8M8gQZq9skS@d<$Xzol7vya
                                z&HR*|{|SzK`6ZVL%ax{%N|F?OYWJ*(b2PF`Q_oZ%If84>f+nusXZI{tCapjiEgC5j
                                znbIYFZ&bg}5s27}%`^vov1>j*8oqlus?`WG%ad_
                                z=|&A3!2s=@n*(+*Ce9i{E+;1iV-5}QD|VPrX0e@wWD9qkWUwKMJ4k@Cgcdp{VoQ_~
                                z4vJc*E7Wj8N|$1(`lj
                                zY^QpOowCazC?VKa`XzRlb_r4lJ{OnE<`NE~1{_uhVws})OY4hV_LDRi$ic$NXXIsb
                                z{#YsAG$`UII%Re<0_^}|%|f-2H}P~ik95$#+hA0Ko5NFVjRtiuS@EVX+A_p^lmjbF
                                zh}fKzY+jg{3hfrFIM5iT7xs-81yV3CV)vI=y}DH~J
                                za<#y}&@a=w*2W#uRxog#;rGx;ntZ-$712(Te4ZEEC@q!Nfad
                                zaNQbfNwCJ8j+}JNOmBlJZ0jQ@+1)S`&|`ebA@*}6h!^3N$X%ijnYD?&_&Bq=&
                                z_9Gq7m|1cU7W)WdOFMoUSHvQW+Ly6!Uk)V`Q%n$H2JV5~>@-zYL$41Ey`G<%R8SJ)
                                z!o-USJY+Y+$BGUlql%rc3iHf+s5&roMU|rf%2|{r?nxg!9}sb5Xn-i*qvMv|&U?AM
                                zWc*Sw!VicdL=%ijlT4?gN*WmixZ7+hx%~))akPZgQQ9)}uw{*c!qd$>sc;ilge(cU
                                zv=4Ocf))`Hgpe*V=JmLKe5MhZsW`Bpg-MvH;+I^#h3H0H+|w}@ND=KY1kZqgxmsDA
                                zN>z?;dEIbISt~m&-xswJLDO<)sKUn^)d;dFi)Vj?QBA
                                z#Gu1S&5@*?G7QCa*)EwSWJ0x(|HKRJ#Bbmv8rxbJ?NX;6f%xGF$CBk}OMi=K#gml|
                                z%X>dWvWiOnN_O5>&_vk>=+eQkNRQE_>w_;wsbU))(_HQ{1uPX%Vzzr
                                zJ4u4BJt=3x#G50LcH%y-@O$jfO+-iDGD<_`k&Jfv4cH{Sqj+d2whJd4orrlCmRk_sP>?awsCy6>MMQKZRuZl?YLagF85&XXvJ6ZzQ
                                zjL@I>a1KY%t=#^E=sH4@j~#Ij%6ZSRN29(mM3~M)XM1PA`tC!`g&0S4-i^06*D^fEaFlmempgkNnflT%ad@TMkyaDE3f?e8P0ppFlik~s
                                zzAvIlo(gLhv;fT^hQ6%^Z8TF;Q;+Ltk%GFeFy7V{X`w8cA!gUkgGGv-#l!7AsnJ&3
                                zeJ%z0#?jwIQP-BN`J3vIcj48}I*Pha-@WFxu_!MHV|x5VZ(+A)8JJ{DSti2+1RlpBb}*N0vNS3{W1o5U;Lxe
                                zBK~<)lQEU&sdfP6Px@t-buG)SFvMsMwm!lom8FQl+REa#+0y+^`7ee?;mh_M)EhQ3
                                zE#OE{@+b4N3h`gV$gO8|lMHV(=Y9`yU8uJTWsUsQ-?}V?d&4-nlyq{xUE~2`9hMdUM~f(1v)|J2CX0WRRj+oYMw8V^7;33SfCjYdm3idzc-U1Pf4
                                zBhkMH6d7^~3~RQM1JnV{Td$Dt5vC8JQj_^>cmi
                                zMNVVMKIluB%r4=cA`DCFJ7f@ka%@Xa<`EjLu?Yz)TUQN<|64%ygos>H#){3(
                                z=sxuR^i_08Jqd)|ZXF6|x#D3X-{nD9kSR37}sN}fJn44w7V8T*k
                                zL+8RG<1c|`OstXnN0iAbSXezmFm(r%Me=HWa&5Q2vdQbxjvj-J8{quJM8`kjW$TZT
                                zysinMGO=lGT(vtOYM67Ba**#}01fKrS98xhS3K@5B`g#%O{Vod@xTtiod~ea*?A(7m2vN)4?!cpXdW
                                z6-(nQuvHL=S3Ax|z-v90YJH~Yt4J4^uPS(s<#8iii
                                zW;^7xI3JvEt^kU}UQt3ut$>#d4g
                                z^^-{O(K4Dr^9l*qhS}Dn!8RXgEu>_8qN`MZL^pymfy2QVRI8@+P*n|TWwM5s$UB|laRY?aL0Qg&@W9Hw=J
                                zDch2V9R)1S5Inp&G}#xo@uvyn8JrrAt^p>m1HoQ8c&p8wcqvsQjEaYQhZh(n@I`L37d7axfoD1)okhfv-#317TnC#b
                                z8V^%(U}`ESHgbb$L7ZI4&iqiW0en^u>~0~($6#LisvR-5!l3cWQ|DrdbEFarEDXfP
                                zfcWcvTGts@vrq|(+WQ=vJTnJQ5b05i|A^|BZm2NO^qJfio}{!17BV!v96s`~R%2L^
                                zycMGinubSnF8_v6Sv~3BXH@8?H%d+gQrGLa5703aycW1GWG2~1Mhhm&P9GKV0&~Y<
                                zYej+-z3F8)HBgPLSWz1=e(?=+7U&@G>*KdqEXQ(Y{McD#oJzdHE)Myur7#z7;44%D
                                z+n`3a%?w)dUwc11iB@sa^y&A{p8)rH^|i1)&REe%QnJ!Y$E)oTK9|=0wKfhaadnqn
                                z;)a>Ecgr2&QT@E0HqqyzARQ=exAaHixE}OL&LkvwI_!U)n#fLL6alLxF6w!
                                z7U93#G^#0|^gQoKSliL(yr<@O(N@$Y6f9*Xs9q0FEZu}GBc&?G%Y9}VZlL@@3$%)U
                                z=jObkZ?7OpKJWofC}QBqLE;bf7<1);Eu$uiI2R}VhID@8Cvy|DaA~ZQAqP>uMSb4`~0*#BHD165|HV}B~?qEVc-ntP!Cn4oVZTfuSBp-)@-svcakI2mmZ|A{(YHkdJ%
                                zm8~$%707RpE3t8dU}oAfuw!*NvCw(A;Swd&aNtThEs1-09YN69DU4?~=TTfaUKzG*
                                z8c$+E5KJKve!x{ysiibLn?*s4)jNG@bE}`aFg?R#smnKy#6>?Des9RSXnr>EnY6j2
                                zy+$X`mgCAnlzsr`V^LhY2W5OVX(>5A9SWRt?@UTvS0~=_5Av1K+Y$_S>-}X0yq!D`
                                zw`V`?0=;jIJ6{ld{prR$@Moh!cpJQ?cei;{4nc>g*T=)I?^>w*(kb(}WzZhneL`t5
                                z-OrYh<{h*gL<@{sFmmc+vCk+`VgZFT(fg<}+nVzeJh6e>dTs
                                zuT`BJ@evh3j3ve^TDF_bIyHTQa6i9Pq`WH|CWJ|PU3q%d$GG}SxB;fSJLuCCAPfC7
                                zXh$sJQzI-_GB2g@Tqs&XJ`?n6`?o+pK5A!xL-en||Dj8N3x-`lnzt0=Zh>WHl93B*
                                zg2l(;N56W&vi&HrDdheWJ%Z|6(8YB2wi2*0%%cT%-7v^%)Q%q_hcQ{wptS@oJFLd)yr&q!;5~XGTSc{G;
                                z@r(B!zb#e!n6}YzjzS5nuk-bwc|iFZDoZT-2*U4=ItvcM^UZff?Sqy6dp|EBU9i=g
                                z9!80hS=~Pi!m@G>&@nGVOT}I>(%xizC4{F_!?O`{2KhH^q(kOH%v)$1K?Hz1DHzHIGqqoc-YCBJuHDw+nx8c|jC6
                                zZhOs~9t2+ubzQR~At2uaPJ<9MS)(IPWDilp=OJvOuKrFwc-N)7ov>bPI^Y*J8@6u5
                                zA>0w~P^MT_fFRIOjAqlZa(t)#E73#g-;MYxl7VKKdAk}uNpmesAb%qSYY~5LYc^*)
                                zmyUau20F~{w$O8EXzN*PIR}xMD1~=9CB$A#S|`%ugfF(9fY2kW|9}rC*1cXJeIu87
                                z&j8C*#)7dqt$DYH7=zctP*BM*_Zy;`fh(toj6^9`j~{?M(DyTP;Z&0|QUN?Ko11AN
                                z6t*4O0GdTo%1p-fvp2GZ&osm#{K-3Gs79oxWXc}EI>v<*u&g@!MNQR4n{A9z;G1rP
                                zU!R(hItx}qN^FF48wBykE#>|?9X!+?Zndyl7B*E8XDajwa;o+bL+wZN+}eqh`^wJi
                                zs9is4sHqmG<>-)O+9v
                                zX%3h3Wj2!7I1J?~hwX?lbb+~0987zH{ZpkaTl)cW&o)T5zJzr;fm^*=4%6Kz_Kt)&h9`k&PZx*B11<@O@5{sB+?i!r}_v?;RV*>dgi=!I%@D%c+FQ
                                zMs$=(kId26KxE{SmGYg_hD@_2yM1*~PnS`7xNwbt#m{s#a>Wl_bT^f-@e_x;jq4RzTSHHY60tS
                                zuu^8kczho26}TBtiPYo6f{_ErfWt&%VWuyyZA`6AUs
                                z%|zhqZuN?UD8XmibC1XxZ`)#WA+E@`E0Z+Mm+Rez1MBjzBxyM_!gGVXc*f1ieSI}!
                                z-4HG=++fVQ8-<(NF2*Rd`0T1XN9=nHD{H}P55AKXzsw|4@Zxz8lVNpOZiA2|H0oei
                                zl1d@u$>WqcrKUjjvLU>^gl_7K@m1`y3l$g34!s?y+ZRQ)9IfSS&-bTTu-&&nCTxbx
                                zF0`yCqAX_|L)DJVApwgy2Uf&_0KccnbyoasWGm1j2{@8-s&+M8K+{QTc~X~Z^hX~t
                                zt`$KrCgDX}lRy+JWqQ=8i)-pax0jDUhNe^10tJFA=~RGD=X2OF1N~%-qZ4-EqfyqP
                                z@=JEg&&c)DwXaK2tNAM-?xY^&*JsOL^O@nuJ@nKj9(qS(>F+yPDU9@reoVXMD3O*<
                                zjlxlAj)YQDxi$}TlG;MCCMQ8oK}^ybyN8|g1)ImizplX)lx+0*H^_G?5o>xlM{FUK
                                zn69?-Nx<)H7EUkug1@17LL(E#BrJggMX)TE_&D-mov(vlsK>}}XoyTW3%;GUTlU%t
                                zM{m?>tl$Nj77t`e754LV&dB9s5E9GE&#+!!>izI?lHr7+RoJAT?Yy|q@moMY+4bek
                                zMgzO=UZM$)!E<9SQ*$;Wqg4nykXa;k1pXJ)TdY2b)#)@eTnjeg;ew5io6M8R7VgtD
                                z6J{ecuK|t?i{Fk9G=PkIo)=Y)!;rrlVLT#C>a3>esaCO~GAOxIzK;qm_wxoz6FtH;
                                zLwc*EgFp)Tqyuu&IC?G0?v#b^d1+p+HVs3N2bZJse5>Z2BpzU^q~=(IR3R;E=l0FR
                                zuKdmSDqrP|rNy8_0N7Nzn4IA%cUX8$%xvtCy1TK-aQwD)Pu|SP{qZq7uk~Wkq3p9Q
                                z41=6^Gm0C+4ptc;(w_V-DQ{^!uDG5c^7Z$b*=1U2UQw}%I;%ElCP&2Oqv
                                z5C}x$@vh-`sr|=$=jHE$dIi17}_ea*1nJKbt2?h2GyTP3U5omt&F{DX;XF
                                zj`1=*_Gfc2pY>)@l>BJz#_KW6i&(hWgYBhiJMziZIX4+Fee|(3G7duESF(ib6^f_y
                                zX-FOVZX_V6G2s2O&3-`J6Y>i0bvc21i-;us!s&AyurATpc@%N@>uCY{q^9CyLsPRMJgzXHeqf|C;8WE5j+
                                zcVl?5s31%i%}QGVcQO%MW^ZntaDY0+Ad`8SbOm*__6Lu(72?GyvE6&y~@l=B#6175On;Q5-h2
                                zv>G~YF2T#)>zC{difR||VY%(`pwQHhZ4v$a^;6`Z=Q{b!vQf0Ug6Xgt0UciLD7QUe
                                z4ZA~>FKc}BhFo012RCeg@2;#Q$jPz-w$dQluKf*F@0872z1)IKa^#=+HJ
                                z&K2X+ctOwnJvnn#gLzW9{j~GF#8MZB&0Di(R>mGNh_#L%`-PO91}B+tAqbI;u=v68
                                z0gu|1KRDN&SL5<*9x1Q$9S*d$6=q>Rl5OcFZq?77PsThOO^BK4aT*4)8oieMlL5T*
                                zBe|hg`vwu}$y+GPE8@`;*wP@7kPXigwCY%Z%b19HYQ{7_uaIL0m!L7gC%FSELeCleRv%&c9Y3|C
                                zz8RHDnS|mn(T*9Oo=B~*?e9(Q`(2-@wb<7B!Akt2C`<)=-u^GeXHaBqX(QTU5PwNk
                                zbDX|9Xs)IdG|G#LL}R$CdBhono=o5>+2PO)XZrdGF#Q$iJ_8=Gdq<6I=BNa4JMR6S?O1b8@^H)Lc
                                z7s*%2`Z0lRk4(wjVIQU75&{ob1~XOtxu6NeeQSGr#H#e81WwP#%iV?y@QWh
                                z5$9+I`-oDM3{|~&)wGo~Pj6k(Ny%0Gq4yn-$-!(lPYD6}DXFd!j#w(~$o@3>+FlId
                                z$@mHxxhdkv53?xA`U0c4c(igq5Uu1r6oC(24H`1lGDy+PH&EN`8!m)#p#ede2TNYl
                                zm^WSn*ZtW$?G%tyOxg&Kp+3829p>8uODTW5|3cYSODULKcqL8|KJ+m~iBfW{B#E=^
                                zhVzVN`!w+|+T5{mm>d8KbEnoI(48p|lcf4J&Nx9U&8p#$>0kc@Nb%~bSniCHcZ$|(
                                zc5E)XS-i0)sY*U8pTz3T_A5XVo+`auh~p9
                                z0@qm!CL#)2w(UzUu}n6^RAc)S7ri(NQq@NeoKpRK%)h32H^g35L?LSEE&%riAKPw%
                                zkiA*PJJ8$3`%N;Ehj+~z@2(HzAiA3eX!N)@?VmJQG9(#v5S2NbecI068@k^#;G*t1
                                z2U*Oy92nJ-Ts{0S{EMD#CjdJo{B(T#n3PDA(D=+cPgZ|*P_;kjvRIOlpc0G3zB_cN
                                zsZm|{ne=IaEr29#@a#Cr0X;PX~H9{Rqno82j|R(Zq_9%&&)B>p62aIet7Tc
                                z&}`8hj6KC`x=X})chU*FX1!|XWeun!UT4RCI=zb^aa~Kr<|F#_5JN6U>z(rY8oH9c
                                z@ZqV`igY@jf>n5uWnrvAgH%Ppp$HlTL760ao?iugK%$d$BHvIjosneRj2a27e%gIY
                                zxS77gq-yy71cHnY)ca6&hufb0Ge(mgTM+ongWsf1S4CGdzWNV+*)dhZvU&Qy
                                zt*(n8zmX_T4+2!;JGP)gDr8YY&eXIz`56co6W&SX9;Gkn&Tdsu#gNNtwFu|77=Jx)`
                                z7TK@s%XgisKd_R4DwP<*lsY!2pb3dh_lw?cg)lC6k6#RaFg%zTCJ9
                                z1B)-tc)OmTAFWt~HShS1#T=bzYTI)J?Vofz-hL-aP(rzkqAFYA>9(x3dT4(S(g8iST;<-QG%sn(F^YNjJZ!|9qc}I=S5eN?w
                                z40YK)HennR;|9h}kPU%N02t3YnZbhA^wWN~DM?#z;9!(hZfgfoIltZA-RV_uq~h^v
                                zQc@b4k$hzgC*weZphJ8EKkwVjoD|#zeNy`4trfBXAN#hxjUCB}A5ZJw)2-UN2p8}d
                                zNYfyC?Qkn}FM0L{Z&CRLn4!7}qPl&jWA|G@N)0^77SK3hlBb5)_6s77r5+B(-z_b{svh)-Lg@|IEmGv6dpWh;%y+te>s;
                                zzT6JA7xX6_Z$8?^cir6Kcs4vkJeB9ODdWOC8|<8iH+jCb<`@7=mHiV?8oRk{X8*vy
                                zULt+N_f;sC`#q5yK~WzLtp@yB-F911)zC|*UaeQvZIq9O@dcTA``nja9m7m-lns~S
                                z9Vz}UC#b~Po%^YMJ9p0Uxxv-^weVCx6*$OF`{vGFEi|&G0;dp7>MdeD7a*>;mxp8%
                                zXJw@s*GlQO@Ixm45lSQA2h6(D@k?)DW%tX?V)U#XPw|Ba;WV1N^m2D@5sUar_Ke5L9X}w
                                z#fIgbuMhuiV<)c#8Rm8$A>Yjx6r6}ky1lm%>6^k7A+sjDx!+?g
                                z-)CqT+gW0sjDLon9-;A^2~XtuwSs$(ZfL0P3Hc(B#V)4N0%+hi?2qB`^sQ<7vHT^~
                                zi*$^{ce^ff!>)PN-Z_OA%*90$8rDYDBO7h1pBv!g5!Iy;Fx^jZS^3zgoS?i)HWa4}
                                zjpgw053Db^^BK7q7lPgYFe8IhNR&+gH!f-vJpAqLS64&TvQv|TF#a`zSrZ4BrvR(j
                                z8|&qi^SPT+K4FLEFS_|qjEZFv=cBr>@^5DzZ^sHXffGC95Kg{`9S{>JS2r~+r&a^j
                                zV}Yk4pSU31Dza`Vi|ORf-Sdov^pNaCyI~9t2Lb1(E?BB!j`ZbLtX7rRtpe?%izZ}*
                                z>KQ>JrW{a+sa>s^s;O?%r?013LoouW6cq4lG3?l#BcFi&!xT~z-I;?%CB0_cz$jW#
                                z8gkK)In&HjCFg8*fx%!qpj?kkfl-?>(k^>VGC_}&#R(@StRxGQgUDJY
                                zQ0T205G}UOLJzQFdjiuT#IXY^A+Qw^USDXI(ao2^XF{MCh8~~^CvAOGs#-U1Xh(SdZzpr2C-&TMnz5xao`Tp*&`C75wNK
                                zbUr~&nXgTyCH~5-Zs~g;R|2uYy=hUqTocgidkQ>ReU0$r5jIsKYtC?|NrJ|K2Xm!R
                                zLLf_HW7BTR#PJA)EquF`cXLs*6_l#jC5l$M-{t}3F&;d+b&>}LSTPE(>F^XgjaS=h
                                z?9Z6ET*$s(1H6c|$0ywUSG3)9L0(%Gnt36ZG$%(XB&{RkAOy=)Kpxq_Dm>r}XRv+l>8B}i8jME77qNR~}6KX{HqiL@S8A2UQ;G>%M<^40bUNogQxtirvnCijd5C`49x_W9KNeR)J
                                zrlGuqZ2s2|4o3@L&%cdS&@ygAs-$mkF-(WPBe;1yY?WZ>B_*Xq2G_7eb1G{unN2nS
                                zG}MS5vGFFbvHL{Cg+wmDs!-cQ*+KG+^uT#KXC7KfmMLwa%<>NRI)_e0v&(0s$0){V
                                z&PdU+iBB&x>zIx6<-(Nf{-SC;s7<{qtnY>htoNmIepPl4PxJi!_G7fHdMWy$zz3h)
                                z!9f(RfXo!%1QTE4$|n9UBh|#CkBUXmiXGLXm##I!za1)e${^X`%Ho7%cTe9LA#dRV8TEk1;L~;?3i9-522GT0{_YOC-IsOOjVrC
                                zg#Lr&<1PpLpLs8w_lAei%&;~?$1MH!lg(VtWBMC=o=(Oje(hd;cDYbi3Z8TPDh|0I
                                zEFuVw-$6UfLk>Erz62~A5GjPF=ko}l72Z$xZwaje~lEWibG}@m>K^G=VvRYSG(3P
                                zyP;3+{)XjPngF1U$oF9b`I00!t11ks^bdncc==<0)
                                zB1VP%nuS^cmw8ptfHOtdO@561Ut=!rg7>@<`-hfebqH5lor6k@0
                                z_vI_EzX_Y@qvNe^gGEbMOKGitOG|%C0S(87`q#YQWBGVymb5RF3Vp~;x6a7A;_D7L
                                z;CSzLYkVjpVB>2Kp6wgBAz@$&@P~y2Z&`o?5S?DmPpJd=*m-S6xvtBwq)7Sbmc89S
                                zt%hDyqBMo^_PJsVy84E~PUINYQK|kMGHgBDqc4nO=U6;&eu^E-NMHPp>>O-u>h2S~
                                z0`U7QbGS7sz=E2SL2yyOUA%j^J-EawY2Lp>q1zvRpbtwqWbMOeJe%B3yhW`QxixQe4doiPnUdp^1
                                zpgzr&AOs&y-~Fl0A#N)swC4=}flhV5hco)9rmSDWJ%$>z&^Qmptu>sVWaX9D-zJ7(
                                zsc(ZXHSF;8kTTA}BCbr974h-Xpd(C>tF~>t^v+HAPu0HHMJ;$YQ{t!OB+IOQU%3ou
                                z0N+R$q1qpI?_hD}?)KQmyPg7CIQzDMTN%#xD7O7FszjXlihc2GNAHjvqo+Rvnn?pk
                                zIbMIT6JAeqYjN9kM0W)EP~>+WayWdWNlN8KW)Zr=CTs9|=fUk>4CsN~LT8NpcLqtc
                                zO~NoQ)chDvfKq|Rg3v?f;20#2#KF&KHuec2xR+IOH_@}<^!aWNeU4|Ix604ZgcUREtnVA0TpKB71N8Vq&Y*}C
                                zD*6C1{Slz>ArT8{LFkwgWelG%1VeVY6~)cE^T+_BOPebEGcB}c
                                z7G0ay{eGB|lM-Xy|HDKj(u$8)xJfOo{*;(NwHadQpq@kP{CFFxH2qx;U|V7
                                zpJGqudmA-5MdIRe9bich{TkTj?oV##GPbW)S%!qbc`@EVA;D!PfH-Gv}T9<$tAgXhkgG&K~KliGlF)
                                zE+vP&)PwBnfE$}zv?!%<9KiFbiEa3zMo0fQ8fUcs|v-a?{1
                                zV}o<#a)YVs*LqX@=Rcf-Z|s&5ntU5;>QODD9UH1Dm4ccPX6?BZJcjfSWX(j=h*^V~
                                z&lbOiGe{z72`7Gg8)YZlC}{_oWq?w1xZdRlh+ugN6$FoU`cQ@M4VtNW&qFgDZQmJ(
                                zbulPvy^~}|VAoX=ensu8CA2a1p*OwL)}EGkSngUzWH+5I9;naza#9#MUD>P<}JPG*N4s7s@yF9`p6M2XLqA{~@R$76u3s0UtI-LnfTQ`=uAtYr1dHItkK`hAz{Ms4*sG2wLG{
                                z(oze%ZqPC1=2bLpy&sA!Uh#N&I%f9rP$S-IoO>lsU224m%O;CA3UMoRq9XV~|KssF
                                zZrF5@E?O!g2FeuWN^VNwcAFh`q-^gBxJ}ZAJ|&dRqBp|XtUGbJR4wbg%FfptJ;001
                                zK;N2ZUg*~9yc@3k&UvtQ1BT(pY>wr(bP1L-qrxAh2LWNrwspUEU5e^{U}WhCBsN&W
                                zcaz%pbvzi+!@sBbx|5fUnlyZ$Oj6iPvQ-bKOk>>iF^PgKv3D8Sb#K8ij1K@HkVCzS
                                zqE@z7(`Cr_-&fo-H;3g^yWFrN_7bVoNBV*-{d=)bSMYJTWz<&*#!pC8o_ux1XNX@NT<|90I`
                                z=$?|oJ_+!ied+xpHa{;p{}a*&QLae|#tSpK?8s;_1~Yp9zNMp|M9+w5I0S{PNuO5z
                                zpg6jLW0;&~A1yp4dZOM|$>p1bh|9|`&Ng^Z`N{}y{fORisbmV85^=EP=~yk*$lC9^
                                z2Qp<-TWp2=V*QlE&;A?|nF`%$Q|laL6ypZjX!4d*mrtnMW&uw&cE(
                                zXBrRFU;r2{uX-AH34@{lkSdC$h?OuN?v;Q%Xo2r_eAiNU9_oGsIfqTg)xax&-?w(%
                                zfPl>R{4--WyBl>hi>S`Rhr#Bir+TYFIv;H($ecweOAxZOKA~|%3i))XkMx^^hAkpc
                                zU4B8)uH`K^ewDfDs78n74=igxnhhPn-9iViiVWw}GlZh|l_LH1d|&+;P$W`$JdDp(
                                ztV6pFXVkH5y=QOzJs7vX6eeKa-5{Z-h>*WhV-i?4jE3zEARrt?1h%@M<@??-zdt;f
                                z!)SqZp?H0N(3|vTjIVZszH!R_v{nA$Y0ncH&}u3
                                z{ys`Km|`B0Cm3PLvc*hqQi-{M&#Yh52mV~k2I%XH^8b`@-_dYAZ5+TO(Ypvju+bB3
                                z_1+00YV=N!5Z%hEi|C?7@0}3cM(-uDx&*OS?{yKq^IpIA?|aVd%-uQn%z5Vfd_?j+
                                zJSn!P>e?R&OPp4gtH?gz^ZZB$pC6|8vt0?0t3VXDhzG2TC1oQXI>Hrh3=~Z*K4_jf
                                z&2h7FQWB`Jv&YqQ;RqJ3m7<6dX*dWt)q|T%!~XNZ9OPoT)%sHR3ULwz`_trDH;#i&
                                z`Kq$S=2TuZj^vY^by6IvMwi=K4l^5=?Z{jAbqyt5!t}QHEr0P-W+E=XQCeHCKL=Nl
                                z;$rJg&nmAB^~{I;UbRC93(kK&L^}PNz)UIE>2h)RzDfObaF>C(
                                zfM-pnXSA$}>Nt2mFC9C~XTl!tcHsMd=-}sD?FYfu>o{aRghNZpqs|*^V8VA2v{o6k
                                zB+_a_5NDX8Ua5sLck7XtJGvC)?@EvF;}SlGtbj{SXC#Rz8TyLlV|l+Aq1BkL8Ql6A
                                zbIrJmvAC`wl((?2@B01-ldkwDxf_(dz9S_FBym|^uGghGd%7R{@1V>$K=k_xc%QV&rgXziWxT;%LR$2a|`m}?1!)-%96{_Uy_2`&2xDPsNygl`|8d1oG2Pas@e*1#4Q2
                                z_2kj+Ez*OoN&l>&V4gCmrWyu#wTQLC1O9@NsKFl%1?~Ap6zR+?3dubFr>0?*UF9ce
                                z&wmY7jPs6&-IS`YN!$vwv2Ark9&<O=KH##5%x|NOD<{%+4ogS*13)I6_xgZo4KKfKr
                                z)78|}qFztY+m`y?9`AcC5?5uam3?TZdwM{3*LDU&tiJw#(3bAdLzrsZR+2DxXasV<-CzwrOyIU8?zB7HrRnHIEniB0pQ
                                z`6A-r56h5GH+jahmw$?G7L(a5^XIxeMy2GQ$lw}hUwE=r-W+r&*P?UQ&y=`WZveX4)K2jq!
                                zHv@K~aZ7a9v(Op6@upE8x2L+-2Q>hJq5@W5P;D?sjZfAZ{wl76yVkvDYjluE#`2!^
                                zXCn9!t$^Bv=I1q0Y^7xY7kn`{!SY^EWrgVqwNTLQwcYv6&G}XlB7zauvd4UWI`mm1
                                zf5FUy>?5-xtyqn#tAI&tmfy5F*;DWXKOjQ9K_+bmeD2a}T@*d4^z9#|XJ4w0
                                z{N4(mcj3<&!9FD*K``3>OI_{VaWOP6!2h~rDbz15#5f}nTIOpU_Mza3sLsM0u
                                z_gD5n`^3_7y867<($HYhXGycz6NL>Jy5`JhzPR)3u2Ig4eDttYE`eJ2rC&ba6jw6V
                                z%rgHYKE1mgc?&&u(YKUj8{kd%A*azalIj!aj-A)a0fd3^5tffR<51y6_d&uzRA@eV|zxdn5vd3M70sx01hah
                                z^|f{w{ajTSZB}cn`|t}7$sJufqO=x+KY64(Bi5H(X()|(g)!=xXwq=wzi)TB5-lbX
                                z5Y?!1WE@`ZVF?OjZPtz$<}&N;usqHNmw{-si@{gp@c9vGO%mdv^J@5SRDfH)pl<^-
                                zhu9S@pa=K`o?$Uqwo3*Ha|Sn^x{c_2p_)*C`
                                zxmy*WBl^&F$S^y%jUn&^g80zd|Loq9eaa
                                zd({gsUV1waN|_}@ls5}yLY5h)hFPhfSx&g0V!8Y>9bEzYd!?KXx%R%4N#n_j(Uqh7
                                zSN2h%Qf4*YRYk|_0*_UScRQ!F$3pc$dlj*r
                                zvWV67e3}W?~YOhm&2&LWiAmE-)7wPpE5!-Cwv)(qj)aswz(f{hBJKYX0{f
                                zgZA`yY4KST#48F-x2v>CFVN#;xR%|0p8_}@qI)p})_KWH-ypF|gq8Vb{ttn`r+0s`
                                z5Q`Bl+`rr_Pag-vH2;o;?Cis^_FL=J=+HF#iC+~WgxnBKwGeAfZS%i>g)^2k%;A5Q=`~$zMPqor;;BW{yc{DgYhv90pSp9r>
                                zG#P!tw4SQA&gb75oAruiDm^WFIC_F)3g5YV1AmN
                                zKIwFQOyay$lp<92UI{H4iKO)#p+w{x=GN6pjQ-~T+;m*EmV>LWeXwr=<5jD%1k
                                zJ;~hN%F*?Ewl7ztlN*JII>*aGowc7Eq8yFFe&
                                zNo!%wlQ?CBgHmyMPEwU
                                zAOoK_?Y7mr^7trRF`L=>0zQ+|BVJYf$aPgvLw!n;Dp)zN410gR%xUF#0lkwUVj48Q
                                z_tqLX$Icm?rSHsqmLV<9tbcL_+b1kH5PQ?hitp)c&%1Yhb=7yyY+hHICEy-Y9HoXi
                                zMwq0xLHAvTf0oTVGRiWzn_iIW$=`ZAf(y8=((;JCdM_Dps;r5S5n9z*?)sav$Tbbz
                                zk$?J_?|u7xG=ed0rN4e}2c(wTuwa$^v2UP{JJ~f#CbXO0*FnpH^H7Lt$$5V*x2A{y
                                z@`0HtDR%a8clJ=X(d^-dVB^J-uvVgWp2Yi?nqROhS&V;lfJMFn^Z31>1Z|G`fJq?e
                                zW7Jv_bkk>$5{6h9mh*y%udBWJX>EwM>}Nx*oo^NFF9OXJpG~-hmacxHsNa60Bbrq_
                                zJ^$RkDZ>yW*>sN)AYTNuZD&g*r7IEKZvRMLxuSyMaiomK)!;pvbmHo@s`|EcLgE&n
                                z4(4IOa8ahPc;ZThy6L&-j>8pzFrfpK=<>qeLzp{4rF3Q<44mkf`-&JWHQ}Qk>?G=Pp~G
                                z4xH=YoM`(|lbEvpb@ikfiEQirQUt#}q&mHvyNaedRp)6BRoI7xHidnXPRgk
                                zetv*sfo4bfJmH=2X|9Vj5d*#Z@NF?ZfpTeJoEU+{K@ya
                                za+@`grog<&^i;sxWaH920cYbX{|*u22ffLR0`VJ!Qcmo@3YG^M2mUCF>R=4;7npy+
                                zVf#(!p?!%3pfHq8Y+Bp84QC}ddU)KN#(a-9=sO;4#SGJv+
                                zxCGD!edn<40N7jFu$SLNkNP^ABx}gu6h~_FMT?%ZUBdW35Bl4KTXl8
                                zv#@uS9O&ntH=D;4@OUX(pL!xxC3FxU-M^oQuRh)D{4%;qhNLD6onoERCn@;6+}PJG
                                z7@UhKE|M$ZR7}D9nqE}}YIQrIFqD%SV8^@+`NnJ^8;^{iovi+Zt%9U3kQw3K$-ov0)|&V1reR?nt}L-nq#cQ2S2>f+lh}~iwf{n#owfJ
                                zez=BZMUZVWG;Te{`5pV!htrmEmxSGl%o^jv{>(?M5E>`}XSxhWTnv+}hiLh9&KxlT
                                zT8JQ1h#&SnqLv?RWUpA$Ol}FSBb6`eumMDbZsn5Q5e~0CbOYG%hWCovwED_AtPtJI1
                                zdd+cWI&}H1d6C@AXx^>dgi^dqTtuKRcoie=zA6pnAh!L%#iO`B#aQf)duQY~k@76R
                                z2|<{huecXduE4l*sof-ZjZ=l9PdX$LKMS;5aQjQ(TVERd!H_7jAAvPvhY&5L5A_#E9C?`nh8**e62Nv@BvkSux6{d?!9Mjj
                                z-teT$2YUU!k1;I?OU49kiYj?6-xMawA5dCHv}47^W5|*!_T*MFydh;^m{2a&-wniH
                                zhLmp_rr84;RltW&yN$-k`0(eCpW#3G3d=&9zy;Dg0-vM91WY;FEA5pO$olEbC%@7u
                                zK_3~m4av)rp5~e%Ls#4@!j<#$Sg1f|K2K2~8+H7^T>CD|W+4TEKV$qgLFo4-%tuHY
                                zKm0%jFH>Yd#wWFK&-{w-j@+nMnvQA^>vrHl-yh`lt7dEkqCeB0t_9(1n#Iu#gVz+n
                                zC55KuD}yJ3pic@{HKZi6MUxT?5JS@ZFKowkH<|+Gg=8bU-d>rqMQeok+LQ(Y}xPU@I3*-$ptBB
                                zC_DtW;730ugNm1yxqZWqy#|nCrhKJYe5C^9m7e;9P6wD(RtW;hB^@C3bAx9XL>Ts*
                                z_6gCY(U;Bpe%B>LPTpI;TTXcfTzDv;mBk9(%;jYKXyxi*!0lOfgbiOSn9Bn<3ys~o
                                zMEY^2%Jtfz@}#E&>aghYz}h>C&%_wco7r8Xq_Q|#_}wDoMO6`NmoxyCDX%Dv+Rt+n
                                z0i`UF5{|4~8lAVb3jr~%>fB_sB0R}@AAkd~S75Ncg_0^jcNF79DL}C&c=v7YDLn0O
                                zqbK~wP2g}DCCpJdUFA7>N`T+XkII#5pxTC*-g9~nt7x@W
                                zhiN3j!(}baB2EL$<*D@iHDFV$s2JR$%F;my~~(Jng{1ynr(91Ll#
                                z4V_}+{$}8TRySmW>e3{BhyhR!38|T{q)QBz7Jvt2haRv!iNaBq{}9HHeU)tDWN-hn
                                z(59Z9G`Y1&dEASb52tYdQY{(5AKzn+iJOoWLfAd#D2MB*ve0~+KE%;u>DhW|BBGk}
                                z3|JKDyGG&tsy<42?<1PD4=1AkIFw1;$ZQ$VFT%v;0$XDGwdRe5MamG6A*8EYDz*X$l_q!sfY8<*!+&Zecb4Wayum)R1i-j7
                                z8{c08ANz0si`D8>he!60unfj6g^Rcy`*_s&fw6!e#W$3%r!B3sE+bT$8ZTWaTf1xn
                                zY(1<;ofRyip%-k_U#izME+ymdcXS|z9dk%lzpJw_!Bhr{
                                zW!O%r)YpgH@4~v2yfVw47`h2<+?^#Q!4IwM3F^|r64Jnmnh)O(M?j10iGj1q3i9qaPU
                                z;NG&hVl@R7a2)dj?Vf;@x`<`E_qX50S0zh|6(L7oeJ_QEFOe6BhMh4`<2w>k
                                z%B!1E0aN73r)!x>Z-3Xhzuyu+4{%X(a74joIz6&#i>#^benV^tB+My81sGelt^r`y
                                zX`<@&{lFy*4YdeB
                                z`<(<|CFqV=eKySu@G+z6d~NsI>OqC@5k*YS-2BisAQ$EwEv5{
                                k<+^65`#d>g;2pU00k&`(N>hQ}@E-Jj{YqV-QqCgqe>C@%9smFU
                                
                                literal 0
                                HcmV?d00001
                                
                                diff --git a/0.0.18/html/index.html b/0.0.18/html/index.html
                                new file mode 100644
                                index 0000000..1cffdbf
                                --- /dev/null
                                +++ b/0.0.18/html/index.html
                                @@ -0,0 +1,1652 @@
                                +
                                +
                                +
                                +    
                                +        
                                +        
                                +        Guidelines for Teaching C++
                                +        
                                +        
                                +
                                +
                                +
                                +        
                                +        
                                +        
                                +        
                                +        
                                +        
                                +        
                                +        
                                +        
                                +        
                                +
                                +        
                                +                
                                +                
                                +        
                                +        Guidelines for Teaching C++
                                +        
                                +                        
                                +                                                
                                +
                                +    
                                +
                                +
                                +        
                                + +
                                + +
                                + +
                                + +
                                +

                                Guidelines for Teaching C++

                                + +

                                Version 0.0.18

                                + +

                                SG20 (ISO C++ Study Group on Education)

                                +
                                +
                                + +
                                +
                                +
                                + +
                                +
                                + +
                                +

                                1 Obtaining This Document: The Most Recent Version and Alternate Formats

                                +

                                The most recent version of this document is available as an online HTML document at: https://cplusplus.github.io/SG20/latest/.

                                +

                                The version of the document that you are currently reading is available in the following formats:

                                +
                                  +
                                1. online (HTML) format as a single large HTML document: https://cplusplus.github.io/SG20/0.0.18/html

                                2. +
                                3. EPUB format: https://cplusplus.github.io/SG20/0.0.18/guidelines.epub

                                4. +
                                5. online (HTML) format, split across multiple HTML documents: https://cplusplus.github.io/SG20/0.0.18/html_split/ [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

                                6. +
                                +

                                Older versions of this document are also available. In general version ver is available at https://cplusplus.github.io/SG20/ver/html. For example, version 0.1.0 (assuming that this version exists) would be available at https://cplusplus.github.io/SG20/0.1.0/html.

                                +

                                2 Context and Aim of This Guide

                                +

                                This document is intended to serve as a resource for instructors to assist in the preparation of courses on C++ in a variety of settings, including university, college, and industry environments. The main objectives of this document are as follows:

                                +
                                  +
                                • to provide guidelines for content to be covered by courses of various difficulty levels on C++ (e.g., topics and learning outcomes)
                                • +
                                • to note some common misunderstandings and problematic points that may be encountered when teaching particular topics
                                • +
                                • to suggest resources useful for teaching C++
                                • +
                                • to present examples of curriculum for specific courses
                                • +
                                +

                                This document does not itself provide a curriculum for a single specific course, but is rather a set of guidelines that can be used to prepare curricula for a wide variety of courses that differ in focus and level of sophistication. (This said, however, some links to other documents with examples of curricula for specific courses may be included herein.) This document only intends to target the teaching of the most recently ratified version of the C++ standard. (This said, however, since older versions of this document are also available, these older versions may be of some use to those who need guidance in older versions of the standard, at least versions that do not predate C++20.)

                                +

                                3 Use of This Document

                                +

                                [NOTE: This document follows the same license model as the C++ Core Guidelines. The LICENSE document is taken verbatim from the C++ Core Guidelines.] This document is made available under a MIT-style license. In simple terms, this license permits copying, use, modification, and creation of derivative works. A copy of the license is included in the section LICENSE.

                                +

                                4 Contributing to This Document

                                +

                                Contributions to this document are welcome. If you would like to help with this project as a contributor, please read the section How to Contribute.

                                +

                                5 Organization of This Document

                                +

                                The various concepts (i.e., ideas) to potentially be covered are partitioned into modules. A module is very broad in scope and consists of numerous topics.

                                +

                                For each module, topics related to the module are identified. Then, for each topic, learning outcomes are specified. In order to address a wide variety of courses on C++, each topic is addressed at three proficiency levels. These proficiency levels allow each topic to be covered at more than one level of detail. This allows target audiences with different background and learning objectives to be accommodated. The three proficiency levels are as follows:

                                +
                                  +
                                • foundational: This level gives the learner the idea that a facility exists, what benefits it offers, and the basic ways of using it.

                                • +
                                • main: This level shows mainstream uses and techniques. For abstraction and organizational mechanisms it also demonstrates how to build them. This level should also give the learner a basic (but not detailed) understanding of how a facility might be implemented so that the learner can have a first-order understanding of any costs involved.

                                • +
                                • advanced: This level gives information suitable for an expert. For most topics there is an expert level of knowledge that most programmers rarely need and techniques that require detailed understanding of language rules or library implementation.

                                • +
                                +

                                The remainder of this document is organized as follows. The various topics are listed grouped by module. In cases where a topic might be classified into more than one module, the topic is listed under the module of most direct relevance. This is done in order to avoid duplication of content. (In the case that a topic is equally relevant to multiple modules, the decision of which to select is made by a proverbial coin toss.) The order in which modules and topics are presented is not meant to imply any order of coverage in a course. The order in which items are listed is essentially arbitrary.

                                +

                                6 Summary of Modules and Topics

                                +

                                In the sections that follow, the various modules and topics are presented. There is one section per module. For each module, a table listing the various topics in that module is provided. The ID for a topic is linked to the detailed coverage of that topic that comes later in the document. If a topic has any learning outcomes at a given proficiency level, this is indicated by a checkmark (“✔️”). If a topic has no learning outcomes (simply because there are not any, not because the information is missing), this is indicated by an em dash (“—”). In the case that the information for a topic is completely missing, a question mark (“?”) symbol is used.

                                +

                                6.1 Compilation Model

                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                IDUnitFoundationalMainAdvanced
                                [?]Translation Units???
                                [?]Headers???
                                [?]Modules???
                                [?]Name Mangling???
                                [?]Phases of Translation???
                                [?]Separate Compilation???
                                [?]Linkage???
                                +

                                6.2 Preprocessor

                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                IDUnitFoundationalMainAdvanced
                                [?]Preprocessor Metaprogramming???
                                [?]Inclusion???
                                [?]Macros???
                                +

                                6.3 Basics Types, Objects, Values, Expressions, Statements, and Control-Flow Constructs

                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                IDUnitFoundationalMainAdvanced
                                [?]Constant Objects???
                                [?]Declarations???
                                [def]Definitions✔️✔️✔️
                                [?]Selection Constructs (e.g., if, ternary)???
                                [?]Looping Constructs (e.g., for, while, etc.)???
                                +

                                6.4 Functions

                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                IDUnitFoundationalMainAdvanced
                                [?]Calling Functions???
                                [?]Parameter Passing (e.g., Passing By Value and Reference)???
                                [func-args]Default Arguments✔️
                                [?]Returning Multiple Values???
                                [?]Overloading???
                                [udl]User-Defined Literals✔️✔️
                                +

                                6.5 User-Defined Types (Classes)

                                + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                IDUnitFoundationalMainAdvanced
                                [?]Special Member Functions???
                                [?]Types???
                                [?]Conversions???
                                [?]Constructors and Destructors???
                                [?]Move/Copy Constructors and Assignment Operators???
                                [?]Member Functions???
                                [?]Sum Types???
                                [?]User-Defined Literals???
                                [?]Special Member Functions???
                                [?]Guidelines for Special Member Functions (e.g., Rule of Five, Rule of Zero)???
                                [copy]Copy Semantics✔️✔️
                                [?]Moving and Copying???
                                [?]Lambdas???
                                +

                                6.6 Inheritance and Class Hierarchies

                                + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                IDUnitFoundationalMainAdvanced
                                [?]Virtual Functions???
                                [?]Run-Time Type Information???
                                +

                                6.7 Compile-Time Computation

                                + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                IDUnitFoundationalMainAdvanced
                                [?]Constant Expressions and Constant Evaluation???
                                [static-assert]static_assert✔️✔️
                                +

                                6.8 Generic Programming (Templates)

                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                IDUnitFoundationalMainAdvanced
                                [?]Concepts???
                                [?]SFINAE???
                                [?]Template Metaprogramming???
                                [?]Function Templates???
                                [?]Requires Clauses???
                                [req-expr]Requires Expressions✔️✔️
                                +

                                6.9 Error Handling

                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                IDUnitFoundationalMainAdvanced
                                [?]Classes of Errors???
                                [?]errno???
                                [?]Error Codes???
                                [?]Exception Handling???
                                +

                                6.10 Standard Library

                                + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                IDUnitFoundationalMainAdvanced
                                [?]Input/Output (I/O)???
                                [?]Containers, Iterators, and Algorithms???
                                +

                                6.11 External (i.e., Non Standard) Libraries

                                + + + + + + + + + + + + + + + + + + + +
                                IDUnitFoundationalMainAdvanced
                                [?]Graphical User Interfaces???
                                +

                                6.12 Building

                                + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                IDUnitFoundationalMainAdvanced
                                [?]Software Build Tools???
                                [?]Strategies for Handling Build Problems???
                                +

                                6.13 Testing and Debugging

                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                IDUnitFoundationalMainAdvanced
                                [?]Source-Level Debuggers???
                                [?]Code Sanitizers???
                                [?]Test Frameworks???
                                [?]Debugging Strategies???
                                +

                                6.14 Tooling

                                + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                IDUnitFoundationalMainAdvanced
                                [?]Compiler Toolchains???
                                [?]IDEs???
                                +

                                6.15 Software Design

                                + + + + + + + + + + + + + + + + + + + +
                                IDUnitFoundationalMainAdvanced
                                [?]Design by Contract???
                                +

                                7 Detailed Information for Modules and Topics

                                +

                                7.1 C++ object model: copy semantics

                                +

                                Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                                +

                                7.1.1 Overview

                                +

                                Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                                + ++++ + + + + + + + + + + + + + + + + + + + + +
                                LevelObjectives
                                Foundationalunderstanding how and when are copies made
                                Mainimplementing user-defined copy operations
                                Advancedspecial cases: copy elision
                                +

                                7.1.2 Motivation

                                +

                                Why is this important? Why do we want to learn/teach this topic?

                                +

                                Copy semantics allows the user to define how objects of a class get replicated and interact on a value level.

                                +

                                7.1.3 Topic introduction

                                +

                                Very brief introduction to the topic.

                                +

                                Explains when and how objects are copied.

                                +

                                7.1.4 Foundational: How and when are copies made

                                +

                                7.1.4.1 Background/Required Knowledge

                                +

                                A student is able to: * explain what a C++ type is? [C++ object model: types] * explain what an object is? [C++ object model: objects], [C++ object model: constant objects] * define and understand class invariants?

                                +

                                It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain special member functions [C++ object model: special member functions]

                                +

                                7.1.4.2 Student outcomes

                                +

                                A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                +

                                A student should be able to:

                                +
                                  +
                                1. explain what copy semantics accomplish
                                2. +
                                +
                                  +
                                • establishing “equivalent” object state in another object
                                • +
                                +
                                  +
                                1. explain difference between copying a reference and copying a value*
                                2. +
                                3. explain where copies are made
                                4. +
                                +

                                * In other languages these differences are sometimes referred to as shallow and deep copy.

                                +

                                7.1.4.3 Caveats

                                +

                                This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                +
                                  +
                                • Compiler-provided copy operations may result in ownership problems (e.g., char*). These ownership problems can generally be solved by using types whose copy operations have the appropriate semantics, e.g., std::string instead of char* to hold string values.
                                • +
                                +

                                7.1.4.4 Points to cover

                                +

                                This section lists important details for each point.

                                +
                                  +
                                • Principle of copying +
                                    +
                                  • Copying of types, which follow the rule of zero
                                  • +
                                  • Copying of types, with user defined copy operations
                                  • +
                                  • Copying an object does not change the original
                                  • +
                                • +
                                • Practical applications +
                                    +
                                  • std::unique_ptr (has no copy)
                                  • +
                                  • Strings (copies the value)
                                  • +
                                • +
                                +

                                7.1.5 Main: Implementing user-defined copy operations

                                +

                                7.1.5.1 Background/Required Knowledge

                                +

                                A student is able to: * identify special member functions [C++ object model: special member functions]

                                +

                                It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain the rule of zero [C++ object model: rule-of-zero] * explain the rule of five [C++ object model: rule-of-five]

                                +

                                7.1.5.2 Student outcomes

                                +

                                A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                +

                                A student should be able to: * explain when they have to implement the copy operations for their own type * Copy constructor * Copy assignment operator * implement copy operations for their own types * Optional: explain when copying with basic and strong exception guarantees is useful

                                +

                                7.1.5.3 Caveats

                                +

                                This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                +
                                  +
                                • Intricacies when implementing copy operations: +
                                    +
                                  • Examples of how not to write copy operations (e.g., C++03 std::auto_ptr)
                                  • +
                                • +
                                +

                                7.1.5.4 Points to cover

                                +

                                This section lists important details for each point.

                                +
                                  +
                                • Copy constructors and copy assignment operators +
                                    +
                                  • How compiler generates default copy operations
                                  • +
                                  • =default, =delete (No copy)
                                  • +
                                  • How-to write your own copy operations
                                  • +
                                  • Rule-of-five
                                  • +
                                  • Copy assignment operators can be ref-qualified to avoid assigning into temporary objects.
                                  • +
                                • +
                                +

                                7.1.6 Advanced

                                +

                                These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                                +

                                When can copies be elided and when does the standard guarantee copy elision. References: * Abseil tip of the Week #166 * cppreference - Copy elision

                                +

                                7.2 C++ object model: Definitions

                                +

                                Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                                +

                                7.2.1 Overview

                                +

                                Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                                + ++++ + + + + + + + + + + + + + + + + + + + + +
                                LevelObjective
                                FoundationalDefining variables and ODR
                                MainDefining for programs
                                AdvancedSpecial cases and peculiarities
                                +

                                7.2.2 Motivation

                                +

                                Why is this important? Why do we want to learn/teach this topic?

                                +
                                  +
                                • A definition is a declaration that supplies all that is needed for a complete entity
                                • +
                                • int baz = 42;
                                • +
                                • void bar() { /* implementation */ }
                                • +
                                • class Foo { /* class body */ };
                                • +
                                +

                                7.2.3 Topic introduction

                                +

                                Very brief introduction to the topic.

                                +

                                A definition extends a declaration, providing all that is needed for a complete entity, e.g., allocate memory for variables, provide the implementation for functions, complete definitions of data and function members of a class.

                                +

                                7.2.4 Foundational: Defining variables and ODR

                                +

                                7.2.4.1 Background/Required Knowledge

                                +

                                A student:

                                + +

                                7.2.4.2 Student outcomes

                                +

                                A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                +

                                A student should be able to:

                                +
                                  +
                                1. define a variable with a specific type int baz = 42;
                                2. +
                                3. define a function void bar() {}
                                4. +
                                5. define a class class Foo {};
                                6. +
                                7. explain the one definition rule
                                8. +
                                +

                                7.2.4.3 Caveats

                                +

                                This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                +

                                No caveats at present.

                                +

                                7.2.4.4 Points to cover

                                +

                                This section lists important details for each point.

                                +
                                  +
                                • One definition rule (ODR)
                                • +
                                +

                                7.2.5 Main: Defining for programs

                                +

                                7.2.5.1 Background/Required Knowledge

                                + +

                                7.2.5.2 Student outcomes

                                +

                                A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                +

                                A student should be able to:

                                +
                                  +
                                1. organize variables, functions, classes into multiple translation units, describing interface with declarations and providing the implementations with definitions without violating ODR.
                                2. +
                                3. distinguish between template declaration and definition
                                4. +
                                +

                                7.2.5.3 Caveats

                                +

                                This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                +
                                  +
                                • Putting a definition into a header file that is included more than once leads to ODR violations, possibly resulting in linker errors.
                                • +
                                +

                                7.2.5.4 Points to cover

                                +

                                This section lists important details for each point.

                                +

                                7.2.6 Advanced: Special cases and peculiarities

                                +

                                These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                                +
                                  +
                                • ABI Incompatibilities: Different definitions of the same type in multiple object files can lead to subtle program errors.
                                • +
                                +

                                7.3 C++ object model: Declarations

                                +

                                Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                                +

                                7.3.1 Overview

                                +

                                Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                                + ++++ + + + + + + + + + + + + + + + + + + + + +
                                LevelObjective
                                FoundationalDeclaring variables
                                MainDeclaring for programs
                                AdvancedSpecial cases and peculiarities
                                +

                                7.3.2 Motivation

                                +

                                Why is this important? Why do we want to learn/teach this topic?

                                +
                                  +
                                • Introduces a name and it’s type
                                • +
                                • int baz;
                                • +
                                • void bar();
                                • +
                                • class Foo;
                                • +
                                +

                                7.3.3 Topic introduction

                                +

                                Very brief introduction to the topic.

                                +

                                Introduce names and their associated type in a scope.

                                +

                                7.3.4 Foundational: Declaring variables

                                +

                                7.3.4.1 Background/Required Knowledge

                                +

                                A student:

                                +
                                  +
                                • is familiar with the basic C++ types: +
                                    +
                                  • bool (Boolean type)
                                  • +
                                  • int (Integer type)
                                  • +
                                  • double (Floating-point type)
                                  • +
                                • +
                                +

                                7.3.4.2 Student outcomes

                                +

                                A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                +

                                A student should be able to:

                                +
                                  +
                                1. declare a variable with a specific type ‘int baz;’
                                2. +
                                3. declare a function ‘void bar();’
                                4. +
                                5. declare a class ‘class Foo;’
                                6. +
                                7. forward declare a user-defined type or a function
                                8. +
                                9. explain the difference between a definition and a declaration
                                10. +
                                +

                                7.3.4.3 Caveats

                                +

                                This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                +

                                No caveats at present.

                                +

                                7.3.4.4 Points to cover

                                +

                                This section lists important details for each point.

                                +

                                7.3.5 Main: Declarations for programs

                                +

                                7.3.5.1 Background/Required Knowledge

                                +
                                  +
                                • All of the above.
                                • +
                                • Basic template syntax
                                • +
                                +

                                7.3.5.2 Student outcomes

                                +

                                A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                +

                                A student should be able to:

                                +
                                  +
                                1. create header and source files with a declaration in the former and definition of a variable/function in the latter
                                2. +
                                3. declare type aliases to introduce a type with an alternative name ‘using std::string;’
                                4. +
                                5. write a forward template declaration
                                6. +
                                +

                                7.3.5.3 Caveats

                                +

                                This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                +
                                  +
                                • Declaring aliases can introduce name clashes
                                • +
                                • Prefer using declaration’s over using directives in header files [link]
                                • +
                                • The order of declarations dictates the order of initialization
                                • +
                                +

                                7.3.5.4 Points to cover

                                +

                                This section lists important details for each point.

                                +

                                7.3.6 Advanced

                                +

                                These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                                +
                                  +
                                • asm declaration
                                • +
                                • using-enum-declaration
                                • +
                                • extern “C” declarations
                                • +
                                +

                                See concepts.

                                +

                                See user-defined-literals.

                                +

                                7.4 Meta-error handling: static_assert

                                +

                                Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                                +

                                7.4.1 Overview

                                +

                                Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                                + ++++ + + + + + + + + + + + + + + + + + + + + +
                                LevelObjectives
                                FoundationalCalling static_assert with a constant expression
                                MainUsing static_assert to detect contract violations and improve error messages
                                Advanced
                                +

                                7.4.2 Motivation

                                +

                                Why is this important? Why do we want to learn/teach this topic?

                                +

                                static_assert allows the developer to enforce that conditions which can be checked during compilation will force build errors when violated. Additionally, they are the best mechanism by which a developer can pass useful information to other developers regarding what violation occurred or what must be done, instead.

                                +

                                7.4.3 Topic introduction

                                +

                                Very brief introduction to the topic.

                                +

                                static_assert is a compile-time evaluated function that asserts the truth of a supplied predicate, issuing an optional user-supplied error message if the predicate is false.

                                +

                                7.4.4 Foundational: Calling static_assert with a constant expression

                                +

                                7.4.4.1 Background/Required Knowledge

                                +

                                A student:

                                +
                                  +
                                • Should be able to explain the difference between code evaluated at compile-time and run-time
                                • +
                                • Should be able to cite some examples of compile-time known information, such as sizeof(T)
                                • +
                                +

                                7.4.4.2 Student outcomes

                                +

                                A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                +

                                A student should be able to:

                                +
                                  +
                                1. Assert the expected size of a structure using static_assert
                                2. +
                                +

                                7.4.4.3 Caveats

                                +

                                This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                +

                                7.4.4.4 Points to cover

                                +

                                This section lists important details for each point.

                                +
                                  +
                                • X
                                • +
                                • In addition to what is wrong, a good error message will inform the user of how to correct it
                                • +
                                +

                                7.4.5 Main: Contracts and static_assert

                                +

                                7.4.5.1 Background/Required Knowledge

                                +
                                  +
                                • All of the above.
                                • +
                                • General understanding of compile-time requirements
                                • +
                                +

                                7.4.5.2 Student outcomes

                                +

                                A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                +

                                A student should be able to:

                                +
                                  +
                                1. Utilize static_assert to verify preconditions of a meta-function
                                2. +
                                3. Utilize static_assert to verify the results of meta-functions for known values
                                4. +
                                +

                                7.4.5.3 Caveats

                                +

                                This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                +

                                7.4.5.4 Points to cover

                                +

                                This section lists important details for each point.

                                +
                                  +
                                • When writing a meta-function, use static_assert to test the results
                                • +
                                • Write static_assert calls at the scope of the code they are guarding
                                • +
                                + +

                                7.4.6 Advanced

                                +

                                These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                                +

                                7.5 Functions: user-defined literals

                                +

                                Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                                +

                                7.5.1 Overview

                                +

                                Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                                + ++++ + + + + + + + + + + + + + + + + + + + + +
                                LevelObjectives
                                Foundationalusing and understanding UDLs
                                Mainimplementing your own UDLs
                                AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
                                +

                                7.5.2 Motivation

                                +

                                Why is this important? Why do we want to learn/teach this topic?

                                +
                                  +
                                • Allows clearer expression of intent in C++.
                                • +
                                • std::string: "Hello, world!"s
                                • +
                                • std::chrono: 3h + 10min + 5s
                                • +
                                +

                                7.5.3 Topic introduction

                                +

                                Very brief introduction to the topic.

                                +
                                  +
                                • Explain the existence of user defined literals. Example: 12min + 17s is terse, expressive and type safe.
                                • +
                                +

                                7.5.4 Foundational: Using UDLs

                                +

                                7.5.4.1 Background/Required Knowledge

                                +

                                A student: * knows how to form numeric literals, e.g., 1.5f means a float of value 1.5. * is familiar with the major C++ types: * bool (Boolean type) * int (Integer type) * double (Floating-point type) * std::string (Text type) * std::vector (Collection type) * knows that namespaces exist, and namespace std. * knows what using-declarations and using-directives are. [C++ object model: declarations]

                                +

                                7.5.4.2 Student outcomes

                                +

                                A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                +

                                A student should be able to:

                                +
                                  +
                                1. use using namespace std::string_literals[1].
                                2. +
                                3. recognise UDLs in code that they are reading.
                                4. +
                                5. figure out which UDL definitions for a used type exist.
                                6. +
                                7. identify parts of the standard library that make use of UDLs.
                                8. +
                                9. prevent the dangers of temporaries created with "blah"s as well as with std::string{"blah"}.
                                10. +
                                11. effectively selects the right set of namespaces in using-directives from the sub-namespaces std::literals.
                                12. +
                                +

                                [1]: explain that it’s okay to use a using-directive to “activate” UDLs.

                                +

                                7.5.4.3 Caveats

                                +

                                This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                +
                                  +
                                • A student gets confused by the similarities and differences between built-in suffixes and UDLs and between UDLs from different namespaces.
                                • +
                                • A student “activates” two suffixes with the same signature from different namespaces.
                                • +
                                +

                                7.5.4.4 Points to cover

                                +

                                This section lists important details for each point.

                                +

                                7.5.5 Main: implementing UDLs

                                +

                                7.5.5.1 Background/Required Knowledge

                                +
                                  +
                                • All of the above.
                                • +
                                +

                                7.5.5.2 Student outcomes

                                +

                                A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                +

                                A student should be able to:

                                +
                                  +
                                1. write a UDL operator of their own.
                                2. +
                                3. separate unrelated UDLs into distinct namespaces.
                                4. +
                                +

                                7.5.5.3 Caveats

                                +

                                This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                +

                                No caveats at present. #### Points to cover

                                +

                                This section lists important details for each point.

                                +

                                No caveats at present. ### Advanced {#udl-advanced}

                                +

                                These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                                +

                                7.6 Functions: default argument

                                +

                                Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                                +

                                7.6.1 Overview

                                +

                                Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                                +

                                Functions in C++ may be overloaded with different numbers and types of parameters. It may be of value to specify default arguments for some number of parameters, to allow a caller to avoid specifying arguments that rarely change, or to enable expanding the set of parameters while maintaining backward compatibility with existing callers.

                                + ++++ + + + + + + + + + + + + + + + + + + + + +
                                LevelObjective
                                FoundationalDefine and use functions with default arguments
                                Main
                                Advancedrefinement of default arguments through multiple declarations
                                +

                                7.6.2 Motivation

                                +

                                Why is this important? Why do we want to learn/teach this topic?

                                +

                                Default arguments allow the omission of arguments with obvious or common values. Also may be utilized to extend an existing function signature without forcing changes to existing calling code.

                                +

                                7.6.3 Topic introduction

                                +

                                Very brief introduction to the topic.

                                +

                                Explain how default arguments work and how to define them.

                                +

                                7.6.4 Foundational: Using and defining functions with default arguments

                                +

                                7.6.4.1 Background/Required Knowledge

                                +

                                A student is able to:

                                + +

                                7.6.4.2 Student outcomes

                                +

                                A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                +

                                A student should be able to:

                                +
                                  +
                                1. Call to a function with a default argument with or without that argument specified
                                2. +
                                3. Declare a function with a default argument, and omit the default in the definition’s signature
                                4. +
                                5. Explain when the lifetime of a default argument begins and ends
                                6. +
                                +

                                7.6.4.3 Caveats

                                +

                                This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                +
                                  +
                                • When no forward-declaration exists, the definition serves as the declaration
                                • +
                                • When multiple declarations exist, only one may specify the default for any particular parameter, but multiple declarations may specify the defaults for different parameters.
                                • +
                                • Additional default values may be specified for other parameters in repeat declarations
                                • +
                                • Calling an overloaded function with fewer arguments may be ambiguous with regard to an overload with default arguments
                                • +
                                +

                                7.6.4.4 Points to cover

                                +

                                This section lists important details for each point.

                                +
                                  +
                                • Default value may only be specified once for each parameter among all declarations
                                • +
                                • Default values must start from the rightmost parameter and continue leftward without gaps
                                • +
                                • Considerations of when to use default arguments vs overload set
                                • +
                                +

                                7.6.5 Main: implementing *

                                +

                                7.6.5.1 Background/Required knowledge

                                +
                                  +
                                • All of the above.
                                • +
                                +

                                7.6.5.2 Student outcomes

                                +

                                A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                +

                                A student should be able to:

                                +

                                7.6.5.3 Caveats

                                +

                                This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                +

                                7.6.5.4 Points to cover

                                +

                                This section lists important details for each point.

                                +

                                7.6.6 Advanced

                                +

                                These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                                +

                                Subsequent redeclarations of the same function may add default argument values, which are then usable by callers. Though a single parameter cannot be given a default argument twice in the same translation unit, it is legal, though ill-advised, to give the same function different default arguments in different translation units.

                                +

                                7.7 Module name: Requires Expressions

                                +

                                Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                                +

                                7.7.1 Overview

                                +

                                Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                                + ++++ + + + + + + + + + + + + + + + + + + + + +
                                LevelObjectives
                                FoundationalDefine and use requires-expressions to check satisfaction of expressions by given parameters
                                MainDefine and use requires-expressions to check properties of expressions
                                Advanced
                                +

                                7.7.2 Motivation

                                +

                                Why is this important? Why do we want to learn/teach this topic?

                                +

                                Requires-expressions allow a developer to perform compile-time evaluation on the validity of other expressions. These are fundamental to the ability to write concepts. [Compile-time programming: concepts]

                                +

                                7.8 Topic introduction

                                +

                                Very brief introduction to the topic.

                                +

                                Requires-expressions are compile-time predicates which evaluate to true when their specified set of expressions are all valid for a given set of inputs.

                                +

                                7.8.1 Foundational: Writing requires-expressions

                                +

                                7.8.1.1 Background/Required Knowledge

                                +

                                A student is able to:

                                + +

                                It is helpful if:

                                +
                                  +
                                • The student is aware that attempting to specialize the template with types or values which do not match otherwise unstated assumptions will cause errors within the template.
                                • +
                                +

                                7.8.1.2 Student outcomes

                                +

                                A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                +

                                A student should be able to:

                                +
                                  +
                                1. Write a simple-requirement to assert the validity of an expression
                                2. +
                                3. Write a type-requirement to check the existence of a type by its identifier
                                4. +
                                5. Write a compound-requirement to test the resulting type of an expression
                                6. +
                                7. Write a nested-requirement to test the constexpr value of an operation, as opposed to just the syntactic validity
                                8. +
                                9. Use a requires-expression within a concept, requires-clause, or if constexpr condition
                                10. +
                                +

                                7.8.1.3 Caveats

                                +

                                This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                +

                                To require that expressions, which evaluate to a boolean value like sizeof(t) == 4, evaluate to true a nested-requirement is needed (e.g., requires sizeof(t) == 4;). Omitting the requires results in a simple-requirement, which is satisfied based purely on syntactic validity, not on the result of the operation.

                                +

                                7.8.1.4 Points to cover

                                +

                                This section lists important details for each point.

                                +
                                  +
                                • All requires-expression requirements terminate with a semicolon.
                                • +
                                • simple-requirements are used to check that an expression is well-formed.
                                • +
                                • nested-requirements are introduced with requires and primarily used to check the result of an expression computable by the compiler, including concepts or other requires-expressions.
                                • +
                                • type-requirements are introduced with typename and used to verify the existence of a type with a particular identifier.
                                • +
                                • compound-requirements are enclosed in braces and can be used to check the resulting type of an expression.
                                • +
                                • Checks are performed by the compiler, not at run time.
                                • +
                                • If covering usage of requires-expression with requires-clause, [Compile-time programming: requires clause] demonstrate requires requires and show how to ever avoid writing it by using a concept. [Compile-time programming: concepts]
                                • +
                                +

                                7.8.2 Main: Advanced requirements

                                +

                                7.8.2.1 Background/Required Knowledge

                                +
                                  +
                                • All of the above.
                                • +
                                • Knowledge of noexcept
                                • +
                                +

                                A student is able to:

                                + +

                                7.8.2.2 Student outcomes

                                +

                                A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                +

                                A student should be able to:

                                +
                                  +
                                1. Write compound-requirements which test the noexceptness of an expression.
                                2. +
                                3. Use a concept as the target of a compound-requirement.
                                4. +
                                +

                                7.8.2.3 Caveats

                                +

                                This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                +

                                7.8.2.4 Points to cover

                                +

                                This section lists important details for each point.

                                +
                                  +
                                • Compound-requirements allow the optional ability to test whether an expression is marked as noexcept, by using a trailing noexcept keyword.
                                • +
                                + +
                                  +
                                • If the return-type-requirement of a compound-requirement is a concept, that concept is given the resulting type as the first parameter, followed by the specified parameters in the compound-requirement. { ++x } -> C<int> would substitute C<decltype((++x)), int> and check that concept C is satisfied for those parameters.
                                • +
                                +

                                7.8.3 Advanced

                                +

                                8 License

                                +

                                [NOTE: This license is copied verbatim from the C++ Core Guidelines.]

                                +
                                Copyright (c) Standard C++ Foundation and its contributors
                                +
                                +Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
                                +perpetual license to copy, use, modify, and create derivative works from this
                                +project for your personal or internal business use only. The above copyright
                                +notice and this permission notice shall be included in all copies or
                                +substantial portions of the project. This license does not grant permission
                                +to use the trade names, trademarks, service marks, or product names of the
                                +licensor, except as required for reasonable and customary use in describing
                                +the origin of the project.
                                +
                                +Standard C++ Foundation reserves the right to accept contributions to the
                                +project at its discretion.
                                +
                                +By contributing material to this project, you grant Standard C++ Foundation,
                                +and those who receive the material directly or indirectly from Standard C++
                                +Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
                                +transferrable license to reproduce, prepare derivative works of, publicly
                                +display, publicly perform, and distribute your contributed material and such
                                +derivative works, and to sublicense any or all of the foregoing rights to third
                                +parties for commercial or non-commercial use.  You also grant Standard C++
                                +Foundation, and those who receive the material directly or indirectly from
                                +Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
                                +irrevocable license under your patent claims that directly read on your
                                +contributed material to make, have made, use, offer to sell, sell and import
                                +or otherwise dispose of the material. You warrant that your material is your
                                +original work, or that you have the right to grant the above licenses.
                                +
                                +THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
                                +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
                                +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
                                +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
                                +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
                                +OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
                                +PROJECT.
                                +
                                +If you believe that anything in the project infringes your copyright, please
                                +contact us at admin@isocpp.org with your contact information and a detailed
                                +description of your intellectual property, including a specific URL where you
                                +believe your intellectual property is being infringed.
                                +
                                +

                                9 Contributors

                                +
                                Christopher Di Bella
                                +Florian Sattler
                                +Michael Adams
                                +rwdougla
                                +

                                10 How To Contribute

                                +

                                Before attempting to contribute any content for consideration for inclusion in this document, please read the information below and and the referenced documents as appropriate.

                                +

                                All contributions to this project must be made in accordance with the license in section License. This teaching-guidelines document only offers guidance on teaching C++ as it is specified in the current version of the C++ standard. So, content should be presented relative to the most-recently ratified version of the standard. A detailed explanation of how to present the material for a topic is given in:

                                +
                                  +
                                • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.
                                • +
                                +

                                Any potential contributors should ensure that they read this document. The following document may also be helpful in providing some general background on the modular approach to teaching followed herein:

                                + +

                                In order to prepare content, it is important to understand what learning outcomes are, and how to prepare good ones. Some information on learning outcomes can be found in the References section. The following document offers a concise introduction to learning outcomes:

                                + +

                                11 Glossary

                                +

                                Some possible terms to include in the glossary:

                                +
                                  +
                                • learning objective
                                • +
                                • learning outcome
                                • +
                                +

                                12 References

                                +

                                12.1 References on Learning Outcomes

                                + + +
                                  +
                                • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — Standing Document for SG20: Guidelines for Teaching C++ to Beginners. https://wg21.link/p1389.

                                • +
                                • Christopher Di Bella. P1725R0 — Modular Topic Design. https://wg21.link/p1725.

                                • +
                                • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.

                                • +
                                • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study Group: C++ Education. https://wg21.link/p1231.

                                • +
                                • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 — Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0.

                                • +
                                +
                                +
                                + +
                                + + diff --git a/0.0.18/html_split/Advanced-Special-cases-and-peculiarities.html b/0.0.18/html_split/Advanced-Special-cases-and-peculiarities.html new file mode 100644 index 0000000..10f0a59 --- /dev/null +++ b/0.0.18/html_split/Advanced-Special-cases-and-peculiarities.html @@ -0,0 +1,59 @@ + + + + + +Advanced Special cases and peculiarities (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                                +

                                7.2.6 Advanced: Special cases and peculiarities

                                +

                                These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

                                +
                                  +
                                • ABI Incompatibilities: Different definitions of the same type in +multiple object files can lead to subtle program errors. +
                                + + + + + + diff --git a/0.0.18/html_split/Advanced.html b/0.0.18/html_split/Advanced.html new file mode 100644 index 0000000..c507130 --- /dev/null +++ b/0.0.18/html_split/Advanced.html @@ -0,0 +1,60 @@ + + + + + +Advanced (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                                +

                                7.1.6 Advanced

                                +

                                These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

                                +

                                When can copies be elided and when does the standard guarantee copy +elision. References: * Abseil tip of +the Week #166 * +cppreference +- Copy elision +

                                + + + + + diff --git a/0.0.18/html_split/Background_002fRequired-Knowledge.html b/0.0.18/html_split/Background_002fRequired-Knowledge.html new file mode 100644 index 0000000..0a04141 --- /dev/null +++ b/0.0.18/html_split/Background_002fRequired-Knowledge.html @@ -0,0 +1,65 @@ + + + + + +Background/Required Knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                +

                                7.1.4.1 Background/Required Knowledge

                                +

                                A student is able to: * explain what a C++ type is? +[C++ object model: types] +* explain what an object is? +[C++ object +model: objects], +[C++ object model: +constant objects] * define and understand class invariants? +

                                +

                                It helps when a student is able to: * use move semantics +[C++ object model: move +semantics] * explain special member functions +[C++ object model: +special member functions] +

                                + + + + + diff --git a/0.0.18/html_split/Background_002fRequired-knowledge.html b/0.0.18/html_split/Background_002fRequired-knowledge.html new file mode 100644 index 0000000..d6a7198 --- /dev/null +++ b/0.0.18/html_split/Background_002fRequired-knowledge.html @@ -0,0 +1,54 @@ + + + + + +Background/Required knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                                +

                                7.6.5.1 Background/Required knowledge

                                +
                                  +
                                • All of the above. +
                                + + + + + + diff --git a/0.0.18/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html b/0.0.18/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html new file mode 100644 index 0000000..7b78e96 --- /dev/null +++ b/0.0.18/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html @@ -0,0 +1,61 @@ + + + + + +Basics Types Objects Values Expressions Statements and Control-Flow Constructs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                +

                                6.3 Basics Types, Objects, Values, Expressions, Statements, and

                                +

                                Control-Flow Constructs +

                                + + + + + + +
                                IDUnitFoundationalMainAdvanced
                                [‘?’]Constant Objects???
                                [‘?’]Declarations???
                                [‘def’]Definitions‘✔️’‘✔️’‘✔️’
                                [‘?’]Selection Constructs (e.g., if, ternary)???
                                [‘?’]Looping Constructs (e.g., for, while, etc.)???
                                + + + + + + diff --git a/0.0.18/html_split/Building.html b/0.0.18/html_split/Building.html new file mode 100644 index 0000000..a50a84a --- /dev/null +++ b/0.0.18/html_split/Building.html @@ -0,0 +1,57 @@ + + + + + +Building (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                +

                                6.12 Building

                                + + + + +
                                IDUnitFoundationalMainAdvanced
                                [‘?’]Software Build Tools???
                                [‘?’]Strategies for Handling Build Problems???
                                + + + + + + diff --git a/0.0.18/html_split/C_002b_002b-object-model-Declarations.html b/0.0.18/html_split/C_002b_002b-object-model-Declarations.html new file mode 100644 index 0000000..bba29b8 --- /dev/null +++ b/0.0.18/html_split/C_002b_002b-object-model-Declarations.html @@ -0,0 +1,68 @@ + + + + + +C++ object model Declarations (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                                +

                                7.3 C++ object model: Declarations

                                +

                                Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

                                + + + + + + + + + + + + + + diff --git a/0.0.18/html_split/C_002b_002b-object-model-Definitions.html b/0.0.18/html_split/C_002b_002b-object-model-Definitions.html new file mode 100644 index 0000000..f9c6074 --- /dev/null +++ b/0.0.18/html_split/C_002b_002b-object-model-Definitions.html @@ -0,0 +1,68 @@ + + + + + +C++ object model Definitions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                                +

                                7.2 C++ object model: Definitions

                                +

                                Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

                                + + + + + + + + + + + + + + diff --git a/0.0.18/html_split/C_002b_002b-object-model-copy-semantics.html b/0.0.18/html_split/C_002b_002b-object-model-copy-semantics.html new file mode 100644 index 0000000..56b717b --- /dev/null +++ b/0.0.18/html_split/C_002b_002b-object-model-copy-semantics.html @@ -0,0 +1,69 @@ + + + + + +C++ object model copy semantics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                +

                                7.1 C++ object model: copy semantics

                                +

                                Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

                                + + + + + + + + + + + + + + diff --git a/0.0.18/html_split/Caveats.html b/0.0.18/html_split/Caveats.html new file mode 100644 index 0000000..a3ad88c --- /dev/null +++ b/0.0.18/html_split/Caveats.html @@ -0,0 +1,62 @@ + + + + + +Caveats (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                +

                                7.1.4.3 Caveats

                                +

                                This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                                +
                                  +
                                • Compiler-provided copy operations may result in ownership problems +(e.g., char*). These ownership problems can generally be solved +by using types whose copy operations have the appropriate semantics, +e.g., std::string instead of char* to hold string values. +
                                + + + + + + diff --git a/0.0.18/html_split/Compilation-Model.html b/0.0.18/html_split/Compilation-Model.html new file mode 100644 index 0000000..41802d4 --- /dev/null +++ b/0.0.18/html_split/Compilation-Model.html @@ -0,0 +1,62 @@ + + + + + +Compilation Model (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                +

                                6.1 Compilation Model

                                + + + + + + + + + +
                                IDUnitFoundationalMainAdvanced
                                [‘?’]Translation Units???
                                [‘?’]Headers???
                                [‘?’]Modules???
                                [‘?’]Name Mangling???
                                [‘?’]Phases of Translation???
                                [‘?’]Separate Compilation???
                                [‘?’]Linkage???
                                + + + + + + diff --git a/0.0.18/html_split/Compile_002dTime-Computation.html b/0.0.18/html_split/Compile_002dTime-Computation.html new file mode 100644 index 0000000..4e9e67d --- /dev/null +++ b/0.0.18/html_split/Compile_002dTime-Computation.html @@ -0,0 +1,57 @@ + + + + + +Compile-Time Computation (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                +

                                6.7 Compile-Time Computation

                                + + + + +
                                IDUnitFoundationalMainAdvanced
                                [‘?’]Constant Expressions and Constant Evaluation???
                                [‘static-assert’]static_assert‘✔️’‘✔️’
                                + + + + + + diff --git a/0.0.18/html_split/Context-and-Aim-of-This-Guide.html b/0.0.18/html_split/Context-and-Aim-of-This-Guide.html new file mode 100644 index 0000000..57fb059 --- /dev/null +++ b/0.0.18/html_split/Context-and-Aim-of-This-Guide.html @@ -0,0 +1,76 @@ + + + + + +Context and Aim of This Guide (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                +

                                2 Context and Aim of This Guide

                                +

                                This document is intended to serve as a resource for instructors to +assist in the preparation of courses on C++ in a variety of settings, +including university, college, and industry environments. The main +objectives of this document are as follows: +

                                +
                                  +
                                • to provide guidelines for content to be covered by courses of various +difficulty levels on C++ (e.g., topics and learning outcomes) +
                                • to note some common misunderstandings and problematic points that may be +encountered when teaching particular topics +
                                • to suggest resources useful for teaching C++ +
                                • to present examples of curriculum for specific courses +
                                + +

                                This document does not itself provide a curriculum for a single specific +course, but is rather a set of guidelines that can be used to prepare +curricula for a wide variety of courses that differ in focus and level +of sophistication. (This said, however, some links to other documents +with examples of curricula for specific courses may be included herein.) +This document only intends to target the teaching of the most recently +ratified version of the C++ standard. (This said, however, since older +versions of this document are also available, these older versions may +be of some use to those who need guidance in older versions of the +standard, at least versions that do not predate C++20.) +

                                + + + + + diff --git a/0.0.18/html_split/Contributing-to-This-Document.html b/0.0.18/html_split/Contributing-to-This-Document.html new file mode 100644 index 0000000..2faa772 --- /dev/null +++ b/0.0.18/html_split/Contributing-to-This-Document.html @@ -0,0 +1,55 @@ + + + + + +Contributing to This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                +

                                4 Contributing to This Document

                                +

                                Contributions to this document are welcome. If you would like to help +with this project as a contributor, please read the section +‘How to Contribute’. +

                                + + + + + diff --git a/0.0.18/html_split/Contributors.html b/0.0.18/html_split/Contributors.html new file mode 100644 index 0000000..5531c92 --- /dev/null +++ b/0.0.18/html_split/Contributors.html @@ -0,0 +1,57 @@ + + + + + +Contributors (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                                +

                                +Next: , Previous: , Up: Top   [Contents]

                                +
                                +
                                +

                                9 Contributors

                                + +
                                Christopher Di Bella
                                +Florian Sattler
                                +Michael Adams
                                +rwdougla
                                +
                                + + + + + diff --git a/0.0.18/html_split/Detailed-Information-for-Modules-and-Topics.html b/0.0.18/html_split/Detailed-Information-for-Modules-and-Topics.html new file mode 100644 index 0000000..1cf649a --- /dev/null +++ b/0.0.18/html_split/Detailed-Information-for-Modules-and-Topics.html @@ -0,0 +1,71 @@ + + + + + +Detailed Information for Modules and Topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                                +

                                +Next: , Previous: , Up: Top   [Contents]

                                +
                                +
                                +

                                7 Detailed Information for Modules and Topics

                                + + + + + + + + + + + + + + + + + diff --git a/0.0.18/html_split/Error-Handling.html b/0.0.18/html_split/Error-Handling.html new file mode 100644 index 0000000..1260ebe --- /dev/null +++ b/0.0.18/html_split/Error-Handling.html @@ -0,0 +1,59 @@ + + + + + +Error Handling (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                +

                                6.9 Error Handling

                                + + + + + + +
                                IDUnitFoundationalMainAdvanced
                                [‘?’]Classes of Errors???
                                [‘?’]errno???
                                [‘?’]Error Codes???
                                [‘?’]Exception Handling???
                                + + + + + + diff --git a/0.0.18/html_split/External-ie-Non-Standard-Libraries.html b/0.0.18/html_split/External-ie-Non-Standard-Libraries.html new file mode 100644 index 0000000..0b3c0fa --- /dev/null +++ b/0.0.18/html_split/External-ie-Non-Standard-Libraries.html @@ -0,0 +1,56 @@ + + + + + +External ie Non Standard Libraries (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                +

                                6.11 External (i.e., Non Standard) Libraries

                                + + + +
                                IDUnitFoundationalMainAdvanced
                                [‘?’]Graphical User Interfaces???
                                + + + + + + diff --git a/0.0.18/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html b/0.0.18/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html new file mode 100644 index 0000000..0919c62 --- /dev/null +++ b/0.0.18/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html @@ -0,0 +1,62 @@ + + + + + +Foundational Calling static_assert with a constant expression (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                                +

                                7.4.4 Foundational: Calling static_assert with a constant

                                +

                                expression +

                                + + + + + + + + + + + + diff --git a/0.0.18/html_split/Foundational-Declaring-variables.html b/0.0.18/html_split/Foundational-Declaring-variables.html new file mode 100644 index 0000000..a7c99a5 --- /dev/null +++ b/0.0.18/html_split/Foundational-Declaring-variables.html @@ -0,0 +1,61 @@ + + + + + +Foundational Declaring variables (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                                +

                                7.3.4 Foundational: Declaring variables

                                + + + + + + + + + + + + + diff --git a/0.0.18/html_split/Foundational-Defining-variables-and-ODR.html b/0.0.18/html_split/Foundational-Defining-variables-and-ODR.html new file mode 100644 index 0000000..95b361d --- /dev/null +++ b/0.0.18/html_split/Foundational-Defining-variables-and-ODR.html @@ -0,0 +1,61 @@ + + + + + +Foundational Defining variables and ODR (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                                +

                                7.2.4 Foundational: Defining variables and ODR

                                + + + + + + + + + + + + + diff --git a/0.0.18/html_split/Foundational-How-and-when-are-copies-made.html b/0.0.18/html_split/Foundational-How-and-when-are-copies-made.html new file mode 100644 index 0000000..a3e9be7 --- /dev/null +++ b/0.0.18/html_split/Foundational-How-and-when-are-copies-made.html @@ -0,0 +1,63 @@ + + + + + +Foundational How and when are copies made (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                +

                                7.1.4 Foundational: How and when are copies made

                                + + + + + + + + + + + + + diff --git a/0.0.18/html_split/Foundational-Using-UDLs.html b/0.0.18/html_split/Foundational-Using-UDLs.html new file mode 100644 index 0000000..17a22a2 --- /dev/null +++ b/0.0.18/html_split/Foundational-Using-UDLs.html @@ -0,0 +1,61 @@ + + + + + +Foundational Using UDLs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                                +

                                7.5.4 Foundational: Using UDLs

                                + + + + + + + + + + + + + diff --git a/0.0.18/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html b/0.0.18/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html new file mode 100644 index 0000000..67194e2 --- /dev/null +++ b/0.0.18/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html @@ -0,0 +1,62 @@ + + + + + +Foundational Using and defining functions with default arguments (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                                +

                                7.6.4 Foundational: Using and defining functions with default

                                +

                                arguments +

                                + + + + + + + + + + + + diff --git a/0.0.18/html_split/Foundational-Writing-requires_002dexpressions.html b/0.0.18/html_split/Foundational-Writing-requires_002dexpressions.html new file mode 100644 index 0000000..5808e0d --- /dev/null +++ b/0.0.18/html_split/Foundational-Writing-requires_002dexpressions.html @@ -0,0 +1,60 @@ + + + + + +Foundational Writing requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +
                                +

                                7.8.1 Foundational: Writing requires-expressions

                                + + + + + + + + + + + + + diff --git a/0.0.18/html_split/Functions-default-argument.html b/0.0.18/html_split/Functions-default-argument.html new file mode 100644 index 0000000..d16ab75 --- /dev/null +++ b/0.0.18/html_split/Functions-default-argument.html @@ -0,0 +1,67 @@ + + + + + +Functions default argument (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                                +

                                7.6 Functions: default argument

                                +

                                Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

                                + + + + + + + + + + + + + + diff --git a/0.0.18/html_split/Functions-user_002ddefined-literals.html b/0.0.18/html_split/Functions-user_002ddefined-literals.html new file mode 100644 index 0000000..ad41e1f --- /dev/null +++ b/0.0.18/html_split/Functions-user_002ddefined-literals.html @@ -0,0 +1,65 @@ + + + + + +Functions user-defined literals (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                                +

                                7.5 Functions: user-defined literals

                                +

                                Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

                                + + + + + + + + + + + + + diff --git a/0.0.18/html_split/Functions.html b/0.0.18/html_split/Functions.html new file mode 100644 index 0000000..8e3d484 --- /dev/null +++ b/0.0.18/html_split/Functions.html @@ -0,0 +1,61 @@ + + + + + +Functions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                +

                                6.4 Functions

                                + + + + + + + + +
                                IDUnitFoundationalMainAdvanced
                                [‘?’]Calling Functions???
                                [‘?’]Parameter Passing (e.g., Passing By Value and Reference)???
                                [‘func-args’]Default Arguments‘✔️’
                                [‘?’]Returning Multiple Values???
                                [‘?’]Overloading???
                                [‘udl’]User-Defined Literals‘✔️’‘✔️’
                                + + + + + + diff --git a/0.0.18/html_split/Generic-Programming-Templates.html b/0.0.18/html_split/Generic-Programming-Templates.html new file mode 100644 index 0000000..3ed32f5 --- /dev/null +++ b/0.0.18/html_split/Generic-Programming-Templates.html @@ -0,0 +1,61 @@ + + + + + +Generic Programming Templates (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                +

                                6.8 Generic Programming (Templates)

                                + + + + + + + + +
                                IDUnitFoundationalMainAdvanced
                                [‘?’]Concepts???
                                [‘?’]SFINAE???
                                [‘?’]Template Metaprogramming???
                                [‘?’]Function Templates???
                                [‘?’]Requires Clauses???
                                [‘req-expr’]Requires Expressions‘✔️’‘✔️’
                                + + + + + + diff --git a/0.0.18/html_split/Glossary.html b/0.0.18/html_split/Glossary.html new file mode 100644 index 0000000..99ff357 --- /dev/null +++ b/0.0.18/html_split/Glossary.html @@ -0,0 +1,58 @@ + + + + + +Glossary (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                                +

                                +Next: , Previous: , Up: Top   [Contents]

                                +
                                +
                                +

                                11 Glossary

                                +

                                Some possible terms to include in the glossary: +

                                +
                                  +
                                • learning objective +
                                • learning outcome +
                                + + + + + + diff --git a/0.0.18/html_split/How-To-Contribute.html b/0.0.18/html_split/How-To-Contribute.html new file mode 100644 index 0000000..91b73c9 --- /dev/null +++ b/0.0.18/html_split/How-To-Contribute.html @@ -0,0 +1,89 @@ + + + + + +How To Contribute (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                                +

                                +Next: , Previous: , Up: Top   [Contents]

                                +
                                +
                                +

                                10 How To Contribute

                                +

                                Before attempting to contribute any content for consideration for +inclusion in this document, please read the information below and and +the referenced documents as appropriate. +

                                +

                                All contributions to this project must be made in accordance with the +license in section License. This teaching-guidelines +document only offers guidance on teaching C++ as it is specified in the +current version of the C++ standard. So, content should be presented +relative to the most-recently ratified version of the standard. A +detailed explanation of how to present the material for a topic is given +in: +

                                +
                                  +
                                • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to +structure a teaching topic. https://wg21.link/p2193. +
                                + +

                                Any potential contributors should ensure that they read this document. +The following document may also be helpful in providing some general +background on the modular approach to teaching followed herein: +

                                + + +

                                In order to prepare content, it is important to understand what learning +outcomes are, and how to prepare good ones. Some information on learning +outcomes can be found in the References section. The +following document offers a concise introduction to learning outcomes: +

                                + + + + + + + diff --git a/0.0.18/html_split/Inheritance-and-Class-Hierarchies.html b/0.0.18/html_split/Inheritance-and-Class-Hierarchies.html new file mode 100644 index 0000000..1454f01 --- /dev/null +++ b/0.0.18/html_split/Inheritance-and-Class-Hierarchies.html @@ -0,0 +1,57 @@ + + + + + +Inheritance and Class Hierarchies (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                +

                                6.6 Inheritance and Class Hierarchies

                                + + + + +
                                IDUnitFoundationalMainAdvanced
                                [‘?’]Virtual Functions???
                                [‘?’]Run-Time Type Information???
                                + + + + + + diff --git a/0.0.18/html_split/License.html b/0.0.18/html_split/License.html new file mode 100644 index 0000000..5835f48 --- /dev/null +++ b/0.0.18/html_split/License.html @@ -0,0 +1,99 @@ + + + + + +License (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                                +

                                8 License

                                +

                                [NOTE: This license is copied verbatim from the C++ Core +Guidelines.] +

                                +
                                Copyright (c) Standard C++ Foundation and its contributors
                                +
                                +Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
                                +perpetual license to copy, use, modify, and create derivative works from this
                                +project for your personal or internal business use only. The above copyright
                                +notice and this permission notice shall be included in all copies or
                                +substantial portions of the project. This license does not grant permission
                                +to use the trade names, trademarks, service marks, or product names of the
                                +licensor, except as required for reasonable and customary use in describing
                                +the origin of the project.
                                +
                                +Standard C++ Foundation reserves the right to accept contributions to the
                                +project at its discretion.
                                +
                                +By contributing material to this project, you grant Standard C++ Foundation,
                                +and those who receive the material directly or indirectly from Standard C++
                                +Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
                                +transferrable license to reproduce, prepare derivative works of, publicly
                                +display, publicly perform, and distribute your contributed material and such
                                +derivative works, and to sublicense any or all of the foregoing rights to third
                                +parties for commercial or non-commercial use.  You also grant Standard C++
                                +Foundation, and those who receive the material directly or indirectly from
                                +Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
                                +irrevocable license under your patent claims that directly read on your
                                +contributed material to make, have made, use, offer to sell, sell and import
                                +or otherwise dispose of the material. You warrant that your material is your
                                +original work, or that you have the right to grant the above licenses.
                                +
                                +THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
                                +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
                                +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
                                +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
                                +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
                                +OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
                                +PROJECT.
                                +
                                +If you believe that anything in the project infringes your copyright, please
                                +contact us at admin@isocpp.org with your contact information and a detailed
                                +description of your intellectual property, including a specific URL where you
                                +believe your intellectual property is being infringed.
                                +
                                +
                                + + + + + + diff --git a/0.0.18/html_split/Main-Advanced-requirements.html b/0.0.18/html_split/Main-Advanced-requirements.html new file mode 100644 index 0000000..16433ad --- /dev/null +++ b/0.0.18/html_split/Main-Advanced-requirements.html @@ -0,0 +1,60 @@ + + + + + +Main Advanced requirements (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +
                                +

                                7.8.2 Main: Advanced requirements

                                + + + + + + + + + + + + + diff --git a/0.0.18/html_split/Main-Contracts-and-static_005fassert.html b/0.0.18/html_split/Main-Contracts-and-static_005fassert.html new file mode 100644 index 0000000..b0d6e8d --- /dev/null +++ b/0.0.18/html_split/Main-Contracts-and-static_005fassert.html @@ -0,0 +1,61 @@ + + + + + +Main Contracts and static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                                +

                                7.4.5 Main: Contracts and static_assert

                                + + + + + + + + + + + + + diff --git a/0.0.18/html_split/Main-Declarations-for-programs.html b/0.0.18/html_split/Main-Declarations-for-programs.html new file mode 100644 index 0000000..9b7d307 --- /dev/null +++ b/0.0.18/html_split/Main-Declarations-for-programs.html @@ -0,0 +1,61 @@ + + + + + +Main Declarations for programs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                                +

                                7.3.5 Main: Declarations for programs

                                + + + + + + + + + + + + + diff --git a/0.0.18/html_split/Main-Defining-for-programs.html b/0.0.18/html_split/Main-Defining-for-programs.html new file mode 100644 index 0000000..87edef4 --- /dev/null +++ b/0.0.18/html_split/Main-Defining-for-programs.html @@ -0,0 +1,61 @@ + + + + + +Main Defining for programs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                                +

                                7.2.5 Main: Defining for programs

                                + + + + + + + + + + + + + diff --git a/0.0.18/html_split/Main-Implementing-user_002ddefined-copy-operations.html b/0.0.18/html_split/Main-Implementing-user_002ddefined-copy-operations.html new file mode 100644 index 0000000..3f51dae --- /dev/null +++ b/0.0.18/html_split/Main-Implementing-user_002ddefined-copy-operations.html @@ -0,0 +1,62 @@ + + + + + +Main Implementing user-defined copy operations (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                                +

                                7.1.5 Main: Implementing user-defined copy operations

                                + + + + + + + + + + + + + diff --git a/0.0.18/html_split/Main-implementing-UDLs.html b/0.0.18/html_split/Main-implementing-UDLs.html new file mode 100644 index 0000000..cfcca9a --- /dev/null +++ b/0.0.18/html_split/Main-implementing-UDLs.html @@ -0,0 +1,59 @@ + + + + + +Main implementing UDLs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                                +

                                7.5.5 Main: implementing UDLs

                                + + + + + + + + + + + + diff --git a/0.0.18/html_split/Main-implementing-_002a.html b/0.0.18/html_split/Main-implementing-_002a.html new file mode 100644 index 0000000..d0b510b --- /dev/null +++ b/0.0.18/html_split/Main-implementing-_002a.html @@ -0,0 +1,62 @@ + + + + + +Main implementing * (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                                +

                                7.6.5 Main: implementing *

                                + + + + + + + + + + + + + diff --git a/0.0.18/html_split/Meta_002derror-handling-static_005fassert.html b/0.0.18/html_split/Meta_002derror-handling-static_005fassert.html new file mode 100644 index 0000000..011ef71 --- /dev/null +++ b/0.0.18/html_split/Meta_002derror-handling-static_005fassert.html @@ -0,0 +1,67 @@ + + + + + +Meta-error handling static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                                +

                                7.4 Meta-error handling: static_assert

                                +

                                Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

                                + + + + + + + + + + + + + + diff --git a/0.0.18/html_split/Module-name-Requires-Expressions.html b/0.0.18/html_split/Module-name-Requires-Expressions.html new file mode 100644 index 0000000..bb32c76 --- /dev/null +++ b/0.0.18/html_split/Module-name-Requires-Expressions.html @@ -0,0 +1,59 @@ + + + + + +Module name Requires Expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                                +

                                7.7 Module name: Requires Expressions

                                +

                                Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

                                + + + + + + + + + + diff --git a/0.0.18/html_split/Motivation.html b/0.0.18/html_split/Motivation.html new file mode 100644 index 0000000..e169339 --- /dev/null +++ b/0.0.18/html_split/Motivation.html @@ -0,0 +1,57 @@ + + + + + +Motivation (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                +

                                7.1.2 Motivation

                                +

                                Why is this important? Why do we want to learn/teach this +topic? +

                                +

                                Copy semantics allows the user to define how objects of a class get +replicated and interact on a value level. +

                                + + + + + diff --git a/0.0.18/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html b/0.0.18/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html new file mode 100644 index 0000000..a28209d --- /dev/null +++ b/0.0.18/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html @@ -0,0 +1,78 @@ + + + + + +Obtaining This Document The Most Recent Version and Alternate Formats (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                                +

                                +Next: , Previous: , Up: Top   [Contents]

                                +
                                +
                                +

                                1 Obtaining This Document: The Most Recent Version and Alternate

                                +

                                Formats +The most recent version of this document is available as an online HTML +document at: https://cplusplus.github.io/SG20/latest/. +

                                +

                                The version of the document that you are currently reading is available +in the following formats: +

                                +
                                  +
                                1. online (HTML) format as a single large HTML document: +https://cplusplus.github.io/SG20/0.0.18/html + +
                                2. EPUB format: +https://cplusplus.github.io/SG20/0.0.18/guidelines.epub + +
                                3. online (HTML) format, split across multiple HTML documents: +https://cplusplus.github.io/SG20/0.0.18/html_split/ [Note: +The support for this format needs more work (in order to beautify and +fix linking issues).] + +
                                + +

                                Older versions of this document are also available. In general version +ver is available at +https://cplusplus.github.io/SG20/ver/html. For example, version +0.1.0 (assuming that this version exists) would be available at +https://cplusplus.github.io/SG20/0.1.0/html. +

                                + + + + + diff --git a/0.0.18/html_split/Organization-of-This-Document.html b/0.0.18/html_split/Organization-of-This-Document.html new file mode 100644 index 0000000..37c73db --- /dev/null +++ b/0.0.18/html_split/Organization-of-This-Document.html @@ -0,0 +1,95 @@ + + + + + +Organization of This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                +

                                5 Organization of This Document

                                +

                                The various concepts (i.e., ideas) to potentially be covered are +partitioned into modules. A module is very broad in scope and consists +of numerous topics. +

                                +

                                For each module, topics related to the module are identified. Then, for +each topic, learning outcomes are specified. In order to address a wide +variety of courses on C++, each topic is addressed at three proficiency +levels. These proficiency levels allow each topic to be covered at more +than one level of detail. This allows target audiences with different +background and learning objectives to be accommodated. The three +proficiency levels are as follows: +

                                +
                                  +
                                • foundational: This level gives the learner the idea that a facility +exists, what benefits it offers, and the basic ways of using it. + +
                                • main: This level shows mainstream uses and techniques. For abstraction +and organizational mechanisms it also demonstrates how to build them. +This level should also give the learner a basic (but not detailed) +understanding of how a facility might be implemented so that the learner +can have a first-order understanding of any costs involved. + +
                                • advanced: This level gives information suitable for an expert. For most +topics there is an expert level of knowledge that most programmers +rarely need and techniques that require detailed understanding of +language rules or library implementation. + +
                                + +

                                The remainder of this document is organized as follows. The various +topics are listed grouped by module. In cases where a topic might be +classified into more than one module, the topic is listed under the +module of most direct relevance. This is done in order to avoid +duplication of content. (In the case that a topic is equally relevant to +multiple modules, the decision of which to select is made by a +proverbial coin toss.) The order in which modules and topics are +presented is not meant to imply any order of coverage in a course. The +order in which items are listed is essentially arbitrary. +

                                +
                                + + + + + + diff --git a/0.0.18/html_split/Overview.html b/0.0.18/html_split/Overview.html new file mode 100644 index 0000000..2f320ad --- /dev/null +++ b/0.0.18/html_split/Overview.html @@ -0,0 +1,61 @@ + + + + + +Overview (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                +

                                7.1.1 Overview

                                +

                                Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

                                + + + + + +
                                LevelObjectives
                                Foundationalunderstanding how and when are copies made
                                Mainimplementing user-defined copy operations
                                Advancedspecial cases: copy elision
                                + + + + + + diff --git a/0.0.18/html_split/Points-to-cover.html b/0.0.18/html_split/Points-to-cover.html new file mode 100644 index 0000000..4444075 --- /dev/null +++ b/0.0.18/html_split/Points-to-cover.html @@ -0,0 +1,69 @@ + + + + + +Points to cover (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                +

                                7.1.4.4 Points to cover

                                +

                                This section lists important details for each point. +

                                +
                                  +
                                • Principle of copying +
                                    +
                                  • Copying of types, which follow the rule of zero +
                                  • Copying of types, with user defined copy operations +
                                  • Copying an object does not change the original +
                                  + +
                                • Practical applications +
                                    +
                                  • std::unique_ptr (has no copy) +
                                  • Strings (copies the value) +
                                  + +
                                + + + + + + diff --git a/0.0.18/html_split/Preprocessor.html b/0.0.18/html_split/Preprocessor.html new file mode 100644 index 0000000..b20bf65 --- /dev/null +++ b/0.0.18/html_split/Preprocessor.html @@ -0,0 +1,58 @@ + + + + + +Preprocessor (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                +

                                6.2 Preprocessor

                                + + + + + +
                                IDUnitFoundationalMainAdvanced
                                [‘?’]Preprocessor Metaprogramming???
                                [‘?’]Inclusion???
                                [‘?’]Macros???
                                + + + + + + diff --git a/0.0.18/html_split/References-on-Learning-Outcomes.html b/0.0.18/html_split/References-on-Learning-Outcomes.html new file mode 100644 index 0000000..edf4993 --- /dev/null +++ b/0.0.18/html_split/References-on-Learning-Outcomes.html @@ -0,0 +1,71 @@ + + + + + +References on Learning Outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                +

                                12.1 References on Learning Outcomes

                                + + + + + + + diff --git a/0.0.18/html_split/References.html b/0.0.18/html_split/References.html new file mode 100644 index 0000000..8484d34 --- /dev/null +++ b/0.0.18/html_split/References.html @@ -0,0 +1,59 @@ + + + + + +References (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                                +

                                +Previous: , Up: Top   [Contents]

                                +
                                +
                                +

                                12 References

                                + + + + + + + + + + + diff --git a/0.0.18/html_split/Software-Design.html b/0.0.18/html_split/Software-Design.html new file mode 100644 index 0000000..dbd34b6 --- /dev/null +++ b/0.0.18/html_split/Software-Design.html @@ -0,0 +1,56 @@ + + + + + +Software Design (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                +

                                6.15 Software Design

                                + + + +
                                IDUnitFoundationalMainAdvanced
                                [‘?’]Design by Contract???
                                + + + + + + diff --git a/0.0.18/html_split/Standard-Library.html b/0.0.18/html_split/Standard-Library.html new file mode 100644 index 0000000..0d173a4 --- /dev/null +++ b/0.0.18/html_split/Standard-Library.html @@ -0,0 +1,57 @@ + + + + + +Standard Library (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                +

                                6.10 Standard Library

                                + + + + +
                                IDUnitFoundationalMainAdvanced
                                [‘?’]Input/Output (I/O)???
                                [‘?’]Containers, Iterators, and Algorithms???
                                + + + + + + diff --git a/0.0.18/html_split/Student-outcomes.html b/0.0.18/html_split/Student-outcomes.html new file mode 100644 index 0000000..1d53b49 --- /dev/null +++ b/0.0.18/html_split/Student-outcomes.html @@ -0,0 +1,73 @@ + + + + + +Student outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                +

                                7.1.4.2 Student outcomes

                                +

                                A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                                +

                                A student should be able to: +

                                +
                                  +
                                1. explain what copy semantics accomplish +
                                + +
                                  +
                                • establishing “equivalent” object state in another object +
                                + +
                                  +
                                1. explain difference between copying a reference and copying a value* +
                                2. explain where copies are made +
                                + +

                                * In other languages these differences are sometimes referred to as +shallow and deep copy. +

                                + + + + + diff --git a/0.0.18/html_split/Summary-of-Modules-and-Topics.html b/0.0.18/html_split/Summary-of-Modules-and-Topics.html new file mode 100644 index 0000000..33358df --- /dev/null +++ b/0.0.18/html_split/Summary-of-Modules-and-Topics.html @@ -0,0 +1,100 @@ + + + + + +Summary of Modules and Topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                +

                                6 Summary of Modules and Topics

                                +

                                In the sections that follow, the various modules and topics are +presented. There is one section per module. For each module, a table +listing the various topics in that module is provided. The ID for a +topic is linked to the detailed coverage of that topic that comes later +in the document. If a topic has any learning outcomes at a given +proficiency level, this is indicated by a checkmark (“✔️”). If a topic +has no learning outcomes (simply because there are not any, not because +the information is missing), this is indicated by an em dash (“—”). +In the case that the information for a topic is completely missing, a +question mark (“?”) symbol is used. +

                                + + + + + + + + + + + + + + + + + + +
                                + + + + + + diff --git a/0.0.18/html_split/Testing-and-Debugging.html b/0.0.18/html_split/Testing-and-Debugging.html new file mode 100644 index 0000000..497707a --- /dev/null +++ b/0.0.18/html_split/Testing-and-Debugging.html @@ -0,0 +1,59 @@ + + + + + +Testing and Debugging (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                                +

                                +Next: , Previous: , Up: Summary of Modules and Topics   [Contents]

                                +
                                +
                                +

                                6.13 Testing and Debugging

                                + + + + + + +
                                IDUnitFoundationalMainAdvanced
                                [‘?’]Source-Level Debuggers???
                                [‘?’]Code Sanitizers???
                                [‘?’]Test Frameworks???
                                [‘?’]Debugging Strategies???
                                + + + + + + diff --git a/0.0.18/html_split/Tooling.html b/0.0.18/html_split/Tooling.html new file mode 100644 index 0000000..e479ed2 --- /dev/null +++ b/0.0.18/html_split/Tooling.html @@ -0,0 +1,57 @@ + + + + + +Tooling (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                +

                                6.14 Tooling

                                + + + + +
                                IDUnitFoundationalMainAdvanced
                                [‘?’]Compiler Toolchains???
                                [‘?’]IDEs???
                                + + + + + + diff --git a/0.0.18/html_split/Topic-introduction.html b/0.0.18/html_split/Topic-introduction.html new file mode 100644 index 0000000..c011ddf --- /dev/null +++ b/0.0.18/html_split/Topic-introduction.html @@ -0,0 +1,55 @@ + + + + + +Topic introduction (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                +

                                7.1.3 Topic introduction

                                +

                                Very brief introduction to the topic. +

                                +

                                Explains when and how objects are copied. +

                                + + + + + diff --git a/0.0.18/html_split/Use-of-This-Document.html b/0.0.18/html_split/Use-of-This-Document.html new file mode 100644 index 0000000..dedcdd3 --- /dev/null +++ b/0.0.18/html_split/Use-of-This-Document.html @@ -0,0 +1,58 @@ + + + + + +Use of This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                +

                                3 Use of This Document

                                +

                                [NOTE: This document follows the same license model as the C++ +Core Guidelines. The LICENSE document is taken verbatim from the C++ +Core Guidelines.] This document is made available under a MIT-style +license. In simple terms, this license permits copying, use, +modification, and creation of derivative works. A copy of the license is +included in the section LICENSE. +

                                + + + + + diff --git a/0.0.18/html_split/User_002dDefined-Types-Classes.html b/0.0.18/html_split/User_002dDefined-Types-Classes.html new file mode 100644 index 0000000..d7acd5e --- /dev/null +++ b/0.0.18/html_split/User_002dDefined-Types-Classes.html @@ -0,0 +1,69 @@ + + + + + +User-Defined Types Classes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                +

                                6.5 User-Defined Types (Classes)

                                + + + + + + + + + + + + + + + +
                                IDUnitFoundationalMainAdvanced
                                [‘?’]Special Member Functions???
                                [‘?’]Types???
                                [‘?’]Conversions???
                                [‘?’]Constructors and Destructors???
                                [‘?’]Move/Copy Constructors and Assignment Operators???
                                [‘?’]Member Functions???
                                [‘?’]Sum Types???
                                [‘?’]User-Defined Literals???
                                [‘?’]Special Member Functions???
                                [‘?’]Guidelines for Special Member Functions (e.g., Rule of Five, Rule +of Zero)???
                                [‘copy’]Copy Semantics‘✔️’‘✔️’
                                [‘?’]Moving and Copying???
                                [‘?’]Lambdas???
                                + + + + + + diff --git a/0.0.18/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html b/0.0.18/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html new file mode 100644 index 0000000..c5a1bfb --- /dev/null +++ b/0.0.18/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html @@ -0,0 +1,69 @@ + + + + + +Working Group Documents Related to C++ Teaching Guidelines (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                                +

                                12.2 Working Group Documents Related to C++ Teaching Guidelines

                                +
                                  +
                                • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — +Standing Document for SG20: Guidelines for Teaching C++ to Beginners. +https://wg21.link/p1389. + +
                                • Christopher Di Bella. P1725R0 — Modular Topic Design. +https://wg21.link/p1725. + +
                                • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to +structure a teaching topic. https://wg21.link/p2193. + +
                                • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study +Group: C++ Education. https://wg21.link/p1231. + +
                                • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 +— Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0. + +
                                + + + + + + diff --git a/0.0.18/html_split/_0023advanced.html b/0.0.18/html_split/_0023advanced.html new file mode 100644 index 0000000..d503bfc --- /dev/null +++ b/0.0.18/html_split/_0023advanced.html @@ -0,0 +1,40 @@ + + + + + + +#advanced (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #advanced.

                                + diff --git a/0.0.18/html_split/_0023advanced_002d1.html b/0.0.18/html_split/_0023advanced_002d1.html new file mode 100644 index 0000000..282a7b8 --- /dev/null +++ b/0.0.18/html_split/_0023advanced_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #advanced-1.

                                + diff --git a/0.0.18/html_split/_0023advanced_002d2.html b/0.0.18/html_split/_0023advanced_002d2.html new file mode 100644 index 0000000..039b3ff --- /dev/null +++ b/0.0.18/html_split/_0023advanced_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #advanced-2.

                                + diff --git a/0.0.18/html_split/_0023advanced_002d3.html b/0.0.18/html_split/_0023advanced_002d3.html new file mode 100644 index 0000000..ebf5529 --- /dev/null +++ b/0.0.18/html_split/_0023advanced_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #advanced-3.

                                + diff --git a/0.0.18/html_split/_0023advanced_002d4.html b/0.0.18/html_split/_0023advanced_002d4.html new file mode 100644 index 0000000..a320ab5 --- /dev/null +++ b/0.0.18/html_split/_0023advanced_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #advanced-4.

                                + diff --git a/0.0.18/html_split/_0023advanced_002dspecial_002dcases_002dand_002dpeculiarities.html b/0.0.18/html_split/_0023advanced_002dspecial_002dcases_002dand_002dpeculiarities.html new file mode 100644 index 0000000..db94ba0 --- /dev/null +++ b/0.0.18/html_split/_0023advanced_002dspecial_002dcases_002dand_002dpeculiarities.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-special-cases-and-peculiarities (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #advanced-special-cases-and-peculiarities.

                                + diff --git a/0.0.18/html_split/_0023backgroundrequired_002dknowledge.html b/0.0.18/html_split/_0023backgroundrequired_002dknowledge.html new file mode 100644 index 0000000..9959745 --- /dev/null +++ b/0.0.18/html_split/_0023backgroundrequired_002dknowledge.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #backgroundrequired-knowledge.

                                + diff --git a/0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d1.html b/0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d1.html new file mode 100644 index 0000000..f6f6bd0 --- /dev/null +++ b/0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #backgroundrequired-knowledge-1.

                                + diff --git a/0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d10.html b/0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d10.html new file mode 100644 index 0000000..eb0e440 --- /dev/null +++ b/0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d10.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-10 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #backgroundrequired-knowledge-10.

                                + diff --git a/0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d11.html b/0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d11.html new file mode 100644 index 0000000..6977882 --- /dev/null +++ b/0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d11.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-11 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #backgroundrequired-knowledge-11.

                                + diff --git a/0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d12.html b/0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d12.html new file mode 100644 index 0000000..7729c32 --- /dev/null +++ b/0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d12.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-12 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #backgroundrequired-knowledge-12.

                                + diff --git a/0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d13.html b/0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d13.html new file mode 100644 index 0000000..039c0d3 --- /dev/null +++ b/0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d13.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-13 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #backgroundrequired-knowledge-13.

                                + diff --git a/0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d2.html b/0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d2.html new file mode 100644 index 0000000..b0b297d --- /dev/null +++ b/0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #backgroundrequired-knowledge-2.

                                + diff --git a/0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d3.html b/0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d3.html new file mode 100644 index 0000000..ae34d91 --- /dev/null +++ b/0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #backgroundrequired-knowledge-3.

                                + diff --git a/0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d4.html b/0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d4.html new file mode 100644 index 0000000..7417f62 --- /dev/null +++ b/0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #backgroundrequired-knowledge-4.

                                + diff --git a/0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d5.html b/0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d5.html new file mode 100644 index 0000000..34298e9 --- /dev/null +++ b/0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #backgroundrequired-knowledge-5.

                                + diff --git a/0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d6.html b/0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d6.html new file mode 100644 index 0000000..a1cdee1 --- /dev/null +++ b/0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #backgroundrequired-knowledge-6.

                                + diff --git a/0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d7.html b/0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d7.html new file mode 100644 index 0000000..893a0ba --- /dev/null +++ b/0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #backgroundrequired-knowledge-7.

                                + diff --git a/0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d8.html b/0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d8.html new file mode 100644 index 0000000..6080498 --- /dev/null +++ b/0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #backgroundrequired-knowledge-8.

                                + diff --git a/0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d9.html b/0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d9.html new file mode 100644 index 0000000..3ea462d --- /dev/null +++ b/0.0.18/html_split/_0023backgroundrequired_002dknowledge_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #backgroundrequired-knowledge-9.

                                + diff --git a/0.0.18/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html b/0.0.18/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html new file mode 100644 index 0000000..925c568 --- /dev/null +++ b/0.0.18/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html @@ -0,0 +1,40 @@ + + + + + + +#basics-types-objects-values-expressions-statements-and-control-flow-constructs (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #basics-types-objects-values-expressions-statements-and-control-flow-constructs.

                                + diff --git a/0.0.18/html_split/_0023building.html b/0.0.18/html_split/_0023building.html new file mode 100644 index 0000000..8ffc9df --- /dev/null +++ b/0.0.18/html_split/_0023building.html @@ -0,0 +1,40 @@ + + + + + + +#building (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #building.

                                + diff --git a/0.0.18/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html b/0.0.18/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html new file mode 100644 index 0000000..a7e6bad --- /dev/null +++ b/0.0.18/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html @@ -0,0 +1,40 @@ + + + + + + +#c-object-model-copy-semantics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #c-object-model-copy-semantics.

                                + diff --git a/0.0.18/html_split/_0023c_002dobject_002dmodel_002ddeclarations.html b/0.0.18/html_split/_0023c_002dobject_002dmodel_002ddeclarations.html new file mode 100644 index 0000000..fe710a9 --- /dev/null +++ b/0.0.18/html_split/_0023c_002dobject_002dmodel_002ddeclarations.html @@ -0,0 +1,40 @@ + + + + + + +#c-object-model-declarations (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #c-object-model-declarations.

                                + diff --git a/0.0.18/html_split/_0023c_002dobject_002dmodel_002ddefinitions.html b/0.0.18/html_split/_0023c_002dobject_002dmodel_002ddefinitions.html new file mode 100644 index 0000000..b76a8b1 --- /dev/null +++ b/0.0.18/html_split/_0023c_002dobject_002dmodel_002ddefinitions.html @@ -0,0 +1,40 @@ + + + + + + +#c-object-model-definitions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #c-object-model-definitions.

                                + diff --git a/0.0.18/html_split/_0023caveats.html b/0.0.18/html_split/_0023caveats.html new file mode 100644 index 0000000..d4bac8b --- /dev/null +++ b/0.0.18/html_split/_0023caveats.html @@ -0,0 +1,40 @@ + + + + + + +#caveats (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #caveats.

                                + diff --git a/0.0.18/html_split/_0023caveats_002d1.html b/0.0.18/html_split/_0023caveats_002d1.html new file mode 100644 index 0000000..64faefd --- /dev/null +++ b/0.0.18/html_split/_0023caveats_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #caveats-1.

                                + diff --git a/0.0.18/html_split/_0023caveats_002d10.html b/0.0.18/html_split/_0023caveats_002d10.html new file mode 100644 index 0000000..da12422 --- /dev/null +++ b/0.0.18/html_split/_0023caveats_002d10.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-10 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #caveats-10.

                                + diff --git a/0.0.18/html_split/_0023caveats_002d11.html b/0.0.18/html_split/_0023caveats_002d11.html new file mode 100644 index 0000000..6e2bb58 --- /dev/null +++ b/0.0.18/html_split/_0023caveats_002d11.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-11 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #caveats-11.

                                + diff --git a/0.0.18/html_split/_0023caveats_002d12.html b/0.0.18/html_split/_0023caveats_002d12.html new file mode 100644 index 0000000..5badafb --- /dev/null +++ b/0.0.18/html_split/_0023caveats_002d12.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-12 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #caveats-12.

                                + diff --git a/0.0.18/html_split/_0023caveats_002d13.html b/0.0.18/html_split/_0023caveats_002d13.html new file mode 100644 index 0000000..e42da0c --- /dev/null +++ b/0.0.18/html_split/_0023caveats_002d13.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-13 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #caveats-13.

                                + diff --git a/0.0.18/html_split/_0023caveats_002d2.html b/0.0.18/html_split/_0023caveats_002d2.html new file mode 100644 index 0000000..6c66559 --- /dev/null +++ b/0.0.18/html_split/_0023caveats_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #caveats-2.

                                + diff --git a/0.0.18/html_split/_0023caveats_002d3.html b/0.0.18/html_split/_0023caveats_002d3.html new file mode 100644 index 0000000..479063f --- /dev/null +++ b/0.0.18/html_split/_0023caveats_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #caveats-3.

                                + diff --git a/0.0.18/html_split/_0023caveats_002d4.html b/0.0.18/html_split/_0023caveats_002d4.html new file mode 100644 index 0000000..9588a55 --- /dev/null +++ b/0.0.18/html_split/_0023caveats_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #caveats-4.

                                + diff --git a/0.0.18/html_split/_0023caveats_002d5.html b/0.0.18/html_split/_0023caveats_002d5.html new file mode 100644 index 0000000..11edee5 --- /dev/null +++ b/0.0.18/html_split/_0023caveats_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #caveats-5.

                                + diff --git a/0.0.18/html_split/_0023caveats_002d6.html b/0.0.18/html_split/_0023caveats_002d6.html new file mode 100644 index 0000000..6cea721 --- /dev/null +++ b/0.0.18/html_split/_0023caveats_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #caveats-6.

                                + diff --git a/0.0.18/html_split/_0023caveats_002d7.html b/0.0.18/html_split/_0023caveats_002d7.html new file mode 100644 index 0000000..2a8f1cd --- /dev/null +++ b/0.0.18/html_split/_0023caveats_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #caveats-7.

                                + diff --git a/0.0.18/html_split/_0023caveats_002d8.html b/0.0.18/html_split/_0023caveats_002d8.html new file mode 100644 index 0000000..e330642 --- /dev/null +++ b/0.0.18/html_split/_0023caveats_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #caveats-8.

                                + diff --git a/0.0.18/html_split/_0023caveats_002d9.html b/0.0.18/html_split/_0023caveats_002d9.html new file mode 100644 index 0000000..004e434 --- /dev/null +++ b/0.0.18/html_split/_0023caveats_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #caveats-9.

                                + diff --git a/0.0.18/html_split/_0023compilation_002dmodel.html b/0.0.18/html_split/_0023compilation_002dmodel.html new file mode 100644 index 0000000..1017867 --- /dev/null +++ b/0.0.18/html_split/_0023compilation_002dmodel.html @@ -0,0 +1,40 @@ + + + + + + +#compilation-model (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #compilation-model.

                                + diff --git a/0.0.18/html_split/_0023compile_002dtime_002dcomputation.html b/0.0.18/html_split/_0023compile_002dtime_002dcomputation.html new file mode 100644 index 0000000..59b0c57 --- /dev/null +++ b/0.0.18/html_split/_0023compile_002dtime_002dcomputation.html @@ -0,0 +1,40 @@ + + + + + + +#compile-time-computation (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #compile-time-computation.

                                + diff --git a/0.0.18/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html b/0.0.18/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html new file mode 100644 index 0000000..9294adf --- /dev/null +++ b/0.0.18/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html @@ -0,0 +1,40 @@ + + + + + + +#context-and-aim-of-this-guide (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #context-and-aim-of-this-guide.

                                + diff --git a/0.0.18/html_split/_0023contributing_002dto_002dthis_002ddocument.html b/0.0.18/html_split/_0023contributing_002dto_002dthis_002ddocument.html new file mode 100644 index 0000000..272d848 --- /dev/null +++ b/0.0.18/html_split/_0023contributing_002dto_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#contributing-to-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #contributing-to-this-document.

                                + diff --git a/0.0.18/html_split/_0023contributors.html b/0.0.18/html_split/_0023contributors.html new file mode 100644 index 0000000..a391f9d --- /dev/null +++ b/0.0.18/html_split/_0023contributors.html @@ -0,0 +1,40 @@ + + + + + + +#contributors (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #contributors.

                                + diff --git a/0.0.18/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html b/0.0.18/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html new file mode 100644 index 0000000..d32c27e --- /dev/null +++ b/0.0.18/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html @@ -0,0 +1,40 @@ + + + + + + +#detailed-information-for-modules-and-topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #detailed-information-for-modules-and-topics.

                                + diff --git a/0.0.18/html_split/_0023error_002dhandling.html b/0.0.18/html_split/_0023error_002dhandling.html new file mode 100644 index 0000000..80cfb94 --- /dev/null +++ b/0.0.18/html_split/_0023error_002dhandling.html @@ -0,0 +1,40 @@ + + + + + + +#error-handling (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #error-handling.

                                + diff --git a/0.0.18/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html b/0.0.18/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html new file mode 100644 index 0000000..fc9b3eb --- /dev/null +++ b/0.0.18/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html @@ -0,0 +1,40 @@ + + + + + + +#external-i.e.-non-standard-libraries (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #external-i.e.-non-standard-libraries.

                                + diff --git a/0.0.18/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html b/0.0.18/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html new file mode 100644 index 0000000..f915680 --- /dev/null +++ b/0.0.18/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-calling-static_assert-with-a-constant-expression (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #foundational-calling-static_assert-with-a-constant-expression.

                                + diff --git a/0.0.18/html_split/_0023foundational_002ddeclaring_002dvariables.html b/0.0.18/html_split/_0023foundational_002ddeclaring_002dvariables.html new file mode 100644 index 0000000..63bc7ed --- /dev/null +++ b/0.0.18/html_split/_0023foundational_002ddeclaring_002dvariables.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-declaring-variables (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #foundational-declaring-variables.

                                + diff --git a/0.0.18/html_split/_0023foundational_002ddefining_002dvariables_002dand_002dodr.html b/0.0.18/html_split/_0023foundational_002ddefining_002dvariables_002dand_002dodr.html new file mode 100644 index 0000000..2f9e1a7 --- /dev/null +++ b/0.0.18/html_split/_0023foundational_002ddefining_002dvariables_002dand_002dodr.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-defining-variables-and-odr (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #foundational-defining-variables-and-odr.

                                + diff --git a/0.0.18/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html b/0.0.18/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html new file mode 100644 index 0000000..88f62bc --- /dev/null +++ b/0.0.18/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-how-and-when-are-copies-made (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #foundational-how-and-when-are-copies-made.

                                + diff --git a/0.0.18/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html b/0.0.18/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html new file mode 100644 index 0000000..95ab098 --- /dev/null +++ b/0.0.18/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-using-and-defining-functions-with-default-arguments (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #foundational-using-and-defining-functions-with-default-arguments.

                                + diff --git a/0.0.18/html_split/_0023foundational_002dusing_002dudls.html b/0.0.18/html_split/_0023foundational_002dusing_002dudls.html new file mode 100644 index 0000000..2f7afdd --- /dev/null +++ b/0.0.18/html_split/_0023foundational_002dusing_002dudls.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-using-udls (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #foundational-using-udls.

                                + diff --git a/0.0.18/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html b/0.0.18/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html new file mode 100644 index 0000000..708f2d3 --- /dev/null +++ b/0.0.18/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-writing-requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #foundational-writing-requires-expressions.

                                + diff --git a/0.0.18/html_split/_0023functions.html b/0.0.18/html_split/_0023functions.html new file mode 100644 index 0000000..e304abe --- /dev/null +++ b/0.0.18/html_split/_0023functions.html @@ -0,0 +1,40 @@ + + + + + + +#functions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #functions.

                                + diff --git a/0.0.18/html_split/_0023functions_002ddefault_002dargument.html b/0.0.18/html_split/_0023functions_002ddefault_002dargument.html new file mode 100644 index 0000000..ccfbcbb --- /dev/null +++ b/0.0.18/html_split/_0023functions_002ddefault_002dargument.html @@ -0,0 +1,40 @@ + + + + + + +#functions-default-argument (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #functions-default-argument.

                                + diff --git a/0.0.18/html_split/_0023functions_002duser_002ddefined_002dliterals.html b/0.0.18/html_split/_0023functions_002duser_002ddefined_002dliterals.html new file mode 100644 index 0000000..b4f78b5 --- /dev/null +++ b/0.0.18/html_split/_0023functions_002duser_002ddefined_002dliterals.html @@ -0,0 +1,40 @@ + + + + + + +#functions-user-defined-literals (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #functions-user-defined-literals.

                                + diff --git a/0.0.18/html_split/_0023generic_002dprogramming_002dtemplates.html b/0.0.18/html_split/_0023generic_002dprogramming_002dtemplates.html new file mode 100644 index 0000000..3b91080 --- /dev/null +++ b/0.0.18/html_split/_0023generic_002dprogramming_002dtemplates.html @@ -0,0 +1,40 @@ + + + + + + +#generic-programming-templates (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #generic-programming-templates.

                                + diff --git a/0.0.18/html_split/_0023glossary.html b/0.0.18/html_split/_0023glossary.html new file mode 100644 index 0000000..9b46bf6 --- /dev/null +++ b/0.0.18/html_split/_0023glossary.html @@ -0,0 +1,40 @@ + + + + + + +#glossary (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #glossary.

                                + diff --git a/0.0.18/html_split/_0023how_002dto_002dcontribute.html b/0.0.18/html_split/_0023how_002dto_002dcontribute.html new file mode 100644 index 0000000..d9cff4a --- /dev/null +++ b/0.0.18/html_split/_0023how_002dto_002dcontribute.html @@ -0,0 +1,40 @@ + + + + + + +#how-to-contribute (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #how-to-contribute.

                                + diff --git a/0.0.18/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html b/0.0.18/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html new file mode 100644 index 0000000..def5140 --- /dev/null +++ b/0.0.18/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html @@ -0,0 +1,40 @@ + + + + + + +#inheritance-and-class-hierarchies (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #inheritance-and-class-hierarchies.

                                + diff --git a/0.0.18/html_split/_0023license.html b/0.0.18/html_split/_0023license.html new file mode 100644 index 0000000..6b44dd1 --- /dev/null +++ b/0.0.18/html_split/_0023license.html @@ -0,0 +1,40 @@ + + + + + + +#license (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #license.

                                + diff --git a/0.0.18/html_split/_0023main_002dadvanced_002drequirements.html b/0.0.18/html_split/_0023main_002dadvanced_002drequirements.html new file mode 100644 index 0000000..8214533 --- /dev/null +++ b/0.0.18/html_split/_0023main_002dadvanced_002drequirements.html @@ -0,0 +1,40 @@ + + + + + + +#main-advanced-requirements (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #main-advanced-requirements.

                                + diff --git a/0.0.18/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html b/0.0.18/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html new file mode 100644 index 0000000..22b0484 --- /dev/null +++ b/0.0.18/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html @@ -0,0 +1,40 @@ + + + + + + +#main-contracts-and-static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #main-contracts-and-static_assert.

                                + diff --git a/0.0.18/html_split/_0023main_002ddeclarations_002dfor_002dprograms.html b/0.0.18/html_split/_0023main_002ddeclarations_002dfor_002dprograms.html new file mode 100644 index 0000000..f64b111 --- /dev/null +++ b/0.0.18/html_split/_0023main_002ddeclarations_002dfor_002dprograms.html @@ -0,0 +1,40 @@ + + + + + + +#main-declarations-for-programs (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #main-declarations-for-programs.

                                + diff --git a/0.0.18/html_split/_0023main_002ddefining_002dfor_002dprograms.html b/0.0.18/html_split/_0023main_002ddefining_002dfor_002dprograms.html new file mode 100644 index 0000000..543487e --- /dev/null +++ b/0.0.18/html_split/_0023main_002ddefining_002dfor_002dprograms.html @@ -0,0 +1,40 @@ + + + + + + +#main-defining-for-programs (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #main-defining-for-programs.

                                + diff --git a/0.0.18/html_split/_0023main_002dimplementing.html b/0.0.18/html_split/_0023main_002dimplementing.html new file mode 100644 index 0000000..260008c --- /dev/null +++ b/0.0.18/html_split/_0023main_002dimplementing.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #main-implementing.

                                + diff --git a/0.0.18/html_split/_0023main_002dimplementing_002dudls.html b/0.0.18/html_split/_0023main_002dimplementing_002dudls.html new file mode 100644 index 0000000..a41d194 --- /dev/null +++ b/0.0.18/html_split/_0023main_002dimplementing_002dudls.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing-udls (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #main-implementing-udls.

                                + diff --git a/0.0.18/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html b/0.0.18/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html new file mode 100644 index 0000000..1e5a4d8 --- /dev/null +++ b/0.0.18/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing-user-defined-copy-operations (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #main-implementing-user-defined-copy-operations.

                                + diff --git a/0.0.18/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html b/0.0.18/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html new file mode 100644 index 0000000..4502ed8 --- /dev/null +++ b/0.0.18/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html @@ -0,0 +1,40 @@ + + + + + + +#meta-error-handling-static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #meta-error-handling-static_assert.

                                + diff --git a/0.0.18/html_split/_0023module_002dname_002drequires_002dexpressions.html b/0.0.18/html_split/_0023module_002dname_002drequires_002dexpressions.html new file mode 100644 index 0000000..56a9ebf --- /dev/null +++ b/0.0.18/html_split/_0023module_002dname_002drequires_002dexpressions.html @@ -0,0 +1,40 @@ + + + + + + +#module-name-requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #module-name-requires-expressions.

                                + diff --git a/0.0.18/html_split/_0023motivation.html b/0.0.18/html_split/_0023motivation.html new file mode 100644 index 0000000..0141374 --- /dev/null +++ b/0.0.18/html_split/_0023motivation.html @@ -0,0 +1,40 @@ + + + + + + +#motivation (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #motivation.

                                + diff --git a/0.0.18/html_split/_0023motivation_002d1.html b/0.0.18/html_split/_0023motivation_002d1.html new file mode 100644 index 0000000..7e4a69e --- /dev/null +++ b/0.0.18/html_split/_0023motivation_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #motivation-1.

                                + diff --git a/0.0.18/html_split/_0023motivation_002d2.html b/0.0.18/html_split/_0023motivation_002d2.html new file mode 100644 index 0000000..7901fd3 --- /dev/null +++ b/0.0.18/html_split/_0023motivation_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #motivation-2.

                                + diff --git a/0.0.18/html_split/_0023motivation_002d3.html b/0.0.18/html_split/_0023motivation_002d3.html new file mode 100644 index 0000000..ec720ad --- /dev/null +++ b/0.0.18/html_split/_0023motivation_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #motivation-3.

                                + diff --git a/0.0.18/html_split/_0023motivation_002d4.html b/0.0.18/html_split/_0023motivation_002d4.html new file mode 100644 index 0000000..f53583a --- /dev/null +++ b/0.0.18/html_split/_0023motivation_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #motivation-4.

                                + diff --git a/0.0.18/html_split/_0023motivation_002d5.html b/0.0.18/html_split/_0023motivation_002d5.html new file mode 100644 index 0000000..e177cbf --- /dev/null +++ b/0.0.18/html_split/_0023motivation_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #motivation-5.

                                + diff --git a/0.0.18/html_split/_0023motivation_002d6.html b/0.0.18/html_split/_0023motivation_002d6.html new file mode 100644 index 0000000..8437847 --- /dev/null +++ b/0.0.18/html_split/_0023motivation_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #motivation-6.

                                + diff --git a/0.0.18/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html b/0.0.18/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html new file mode 100644 index 0000000..57e8b6e --- /dev/null +++ b/0.0.18/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html @@ -0,0 +1,40 @@ + + + + + + +#obtaining-this-document-the-most-recent-version-and-alternate-formats (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #obtaining-this-document-the-most-recent-version-and-alternate-formats.

                                + diff --git a/0.0.18/html_split/_0023organization_002dof_002dthis_002ddocument.html b/0.0.18/html_split/_0023organization_002dof_002dthis_002ddocument.html new file mode 100644 index 0000000..e312b8e --- /dev/null +++ b/0.0.18/html_split/_0023organization_002dof_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#organization-of-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #organization-of-this-document.

                                + diff --git a/0.0.18/html_split/_0023overview.html b/0.0.18/html_split/_0023overview.html new file mode 100644 index 0000000..b2d4bdc --- /dev/null +++ b/0.0.18/html_split/_0023overview.html @@ -0,0 +1,40 @@ + + + + + + +#overview (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #overview.

                                + diff --git a/0.0.18/html_split/_0023overview_002d1.html b/0.0.18/html_split/_0023overview_002d1.html new file mode 100644 index 0000000..d551764 --- /dev/null +++ b/0.0.18/html_split/_0023overview_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#overview-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #overview-1.

                                + diff --git a/0.0.18/html_split/_0023overview_002d2.html b/0.0.18/html_split/_0023overview_002d2.html new file mode 100644 index 0000000..5a34b05 --- /dev/null +++ b/0.0.18/html_split/_0023overview_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#overview-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #overview-2.

                                + diff --git a/0.0.18/html_split/_0023overview_002d3.html b/0.0.18/html_split/_0023overview_002d3.html new file mode 100644 index 0000000..f230145 --- /dev/null +++ b/0.0.18/html_split/_0023overview_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#overview-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #overview-3.

                                + diff --git a/0.0.18/html_split/_0023overview_002d4.html b/0.0.18/html_split/_0023overview_002d4.html new file mode 100644 index 0000000..2436b9a --- /dev/null +++ b/0.0.18/html_split/_0023overview_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#overview-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #overview-4.

                                + diff --git a/0.0.18/html_split/_0023overview_002d5.html b/0.0.18/html_split/_0023overview_002d5.html new file mode 100644 index 0000000..173ebf3 --- /dev/null +++ b/0.0.18/html_split/_0023overview_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#overview-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #overview-5.

                                + diff --git a/0.0.18/html_split/_0023overview_002d6.html b/0.0.18/html_split/_0023overview_002d6.html new file mode 100644 index 0000000..9c8c247 --- /dev/null +++ b/0.0.18/html_split/_0023overview_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#overview-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #overview-6.

                                + diff --git a/0.0.18/html_split/_0023points_002dto_002dcover.html b/0.0.18/html_split/_0023points_002dto_002dcover.html new file mode 100644 index 0000000..424b02b --- /dev/null +++ b/0.0.18/html_split/_0023points_002dto_002dcover.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #points-to-cover.

                                + diff --git a/0.0.18/html_split/_0023points_002dto_002dcover_002d1.html b/0.0.18/html_split/_0023points_002dto_002dcover_002d1.html new file mode 100644 index 0000000..2a554bb --- /dev/null +++ b/0.0.18/html_split/_0023points_002dto_002dcover_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #points-to-cover-1.

                                + diff --git a/0.0.18/html_split/_0023points_002dto_002dcover_002d10.html b/0.0.18/html_split/_0023points_002dto_002dcover_002d10.html new file mode 100644 index 0000000..dc42850 --- /dev/null +++ b/0.0.18/html_split/_0023points_002dto_002dcover_002d10.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-10 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #points-to-cover-10.

                                + diff --git a/0.0.18/html_split/_0023points_002dto_002dcover_002d11.html b/0.0.18/html_split/_0023points_002dto_002dcover_002d11.html new file mode 100644 index 0000000..15ba774 --- /dev/null +++ b/0.0.18/html_split/_0023points_002dto_002dcover_002d11.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-11 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #points-to-cover-11.

                                + diff --git a/0.0.18/html_split/_0023points_002dto_002dcover_002d12.html b/0.0.18/html_split/_0023points_002dto_002dcover_002d12.html new file mode 100644 index 0000000..03897e9 --- /dev/null +++ b/0.0.18/html_split/_0023points_002dto_002dcover_002d12.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-12 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #points-to-cover-12.

                                + diff --git a/0.0.18/html_split/_0023points_002dto_002dcover_002d2.html b/0.0.18/html_split/_0023points_002dto_002dcover_002d2.html new file mode 100644 index 0000000..053a51a --- /dev/null +++ b/0.0.18/html_split/_0023points_002dto_002dcover_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #points-to-cover-2.

                                + diff --git a/0.0.18/html_split/_0023points_002dto_002dcover_002d3.html b/0.0.18/html_split/_0023points_002dto_002dcover_002d3.html new file mode 100644 index 0000000..b0dad48 --- /dev/null +++ b/0.0.18/html_split/_0023points_002dto_002dcover_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #points-to-cover-3.

                                + diff --git a/0.0.18/html_split/_0023points_002dto_002dcover_002d4.html b/0.0.18/html_split/_0023points_002dto_002dcover_002d4.html new file mode 100644 index 0000000..94de8fa --- /dev/null +++ b/0.0.18/html_split/_0023points_002dto_002dcover_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #points-to-cover-4.

                                + diff --git a/0.0.18/html_split/_0023points_002dto_002dcover_002d5.html b/0.0.18/html_split/_0023points_002dto_002dcover_002d5.html new file mode 100644 index 0000000..39d1eaf --- /dev/null +++ b/0.0.18/html_split/_0023points_002dto_002dcover_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #points-to-cover-5.

                                + diff --git a/0.0.18/html_split/_0023points_002dto_002dcover_002d6.html b/0.0.18/html_split/_0023points_002dto_002dcover_002d6.html new file mode 100644 index 0000000..92df88f --- /dev/null +++ b/0.0.18/html_split/_0023points_002dto_002dcover_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #points-to-cover-6.

                                + diff --git a/0.0.18/html_split/_0023points_002dto_002dcover_002d7.html b/0.0.18/html_split/_0023points_002dto_002dcover_002d7.html new file mode 100644 index 0000000..6e6c895 --- /dev/null +++ b/0.0.18/html_split/_0023points_002dto_002dcover_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #points-to-cover-7.

                                + diff --git a/0.0.18/html_split/_0023points_002dto_002dcover_002d8.html b/0.0.18/html_split/_0023points_002dto_002dcover_002d8.html new file mode 100644 index 0000000..b5574e1 --- /dev/null +++ b/0.0.18/html_split/_0023points_002dto_002dcover_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #points-to-cover-8.

                                + diff --git a/0.0.18/html_split/_0023points_002dto_002dcover_002d9.html b/0.0.18/html_split/_0023points_002dto_002dcover_002d9.html new file mode 100644 index 0000000..d30dd49 --- /dev/null +++ b/0.0.18/html_split/_0023points_002dto_002dcover_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #points-to-cover-9.

                                + diff --git a/0.0.18/html_split/_0023preprocessor.html b/0.0.18/html_split/_0023preprocessor.html new file mode 100644 index 0000000..a3bb5f6 --- /dev/null +++ b/0.0.18/html_split/_0023preprocessor.html @@ -0,0 +1,40 @@ + + + + + + +#preprocessor (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #preprocessor.

                                + diff --git a/0.0.18/html_split/_0023references.html b/0.0.18/html_split/_0023references.html new file mode 100644 index 0000000..69fbd6b --- /dev/null +++ b/0.0.18/html_split/_0023references.html @@ -0,0 +1,40 @@ + + + + + + +#references (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #references.

                                + diff --git a/0.0.18/html_split/_0023references_002don_002dlearning_002doutcomes.html b/0.0.18/html_split/_0023references_002don_002dlearning_002doutcomes.html new file mode 100644 index 0000000..d28fbbf --- /dev/null +++ b/0.0.18/html_split/_0023references_002don_002dlearning_002doutcomes.html @@ -0,0 +1,40 @@ + + + + + + +#references-on-learning-outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #references-on-learning-outcomes.

                                + diff --git a/0.0.18/html_split/_0023software_002ddesign.html b/0.0.18/html_split/_0023software_002ddesign.html new file mode 100644 index 0000000..16f5f54 --- /dev/null +++ b/0.0.18/html_split/_0023software_002ddesign.html @@ -0,0 +1,40 @@ + + + + + + +#software-design (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #software-design.

                                + diff --git a/0.0.18/html_split/_0023standard_002dlibrary.html b/0.0.18/html_split/_0023standard_002dlibrary.html new file mode 100644 index 0000000..71956d3 --- /dev/null +++ b/0.0.18/html_split/_0023standard_002dlibrary.html @@ -0,0 +1,40 @@ + + + + + + +#standard-library (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #standard-library.

                                + diff --git a/0.0.18/html_split/_0023student_002doutcomes.html b/0.0.18/html_split/_0023student_002doutcomes.html new file mode 100644 index 0000000..df0035d --- /dev/null +++ b/0.0.18/html_split/_0023student_002doutcomes.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #student-outcomes.

                                + diff --git a/0.0.18/html_split/_0023student_002doutcomes_002d1.html b/0.0.18/html_split/_0023student_002doutcomes_002d1.html new file mode 100644 index 0000000..e9344b7 --- /dev/null +++ b/0.0.18/html_split/_0023student_002doutcomes_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #student-outcomes-1.

                                + diff --git a/0.0.18/html_split/_0023student_002doutcomes_002d10.html b/0.0.18/html_split/_0023student_002doutcomes_002d10.html new file mode 100644 index 0000000..b6e9f31 --- /dev/null +++ b/0.0.18/html_split/_0023student_002doutcomes_002d10.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-10 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #student-outcomes-10.

                                + diff --git a/0.0.18/html_split/_0023student_002doutcomes_002d11.html b/0.0.18/html_split/_0023student_002doutcomes_002d11.html new file mode 100644 index 0000000..2e7468d --- /dev/null +++ b/0.0.18/html_split/_0023student_002doutcomes_002d11.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-11 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #student-outcomes-11.

                                + diff --git a/0.0.18/html_split/_0023student_002doutcomes_002d12.html b/0.0.18/html_split/_0023student_002doutcomes_002d12.html new file mode 100644 index 0000000..efd9dbf --- /dev/null +++ b/0.0.18/html_split/_0023student_002doutcomes_002d12.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-12 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #student-outcomes-12.

                                + diff --git a/0.0.18/html_split/_0023student_002doutcomes_002d13.html b/0.0.18/html_split/_0023student_002doutcomes_002d13.html new file mode 100644 index 0000000..328f484 --- /dev/null +++ b/0.0.18/html_split/_0023student_002doutcomes_002d13.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-13 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #student-outcomes-13.

                                + diff --git a/0.0.18/html_split/_0023student_002doutcomes_002d2.html b/0.0.18/html_split/_0023student_002doutcomes_002d2.html new file mode 100644 index 0000000..6fa7724 --- /dev/null +++ b/0.0.18/html_split/_0023student_002doutcomes_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #student-outcomes-2.

                                + diff --git a/0.0.18/html_split/_0023student_002doutcomes_002d3.html b/0.0.18/html_split/_0023student_002doutcomes_002d3.html new file mode 100644 index 0000000..195d9d2 --- /dev/null +++ b/0.0.18/html_split/_0023student_002doutcomes_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #student-outcomes-3.

                                + diff --git a/0.0.18/html_split/_0023student_002doutcomes_002d4.html b/0.0.18/html_split/_0023student_002doutcomes_002d4.html new file mode 100644 index 0000000..3e30430 --- /dev/null +++ b/0.0.18/html_split/_0023student_002doutcomes_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #student-outcomes-4.

                                + diff --git a/0.0.18/html_split/_0023student_002doutcomes_002d5.html b/0.0.18/html_split/_0023student_002doutcomes_002d5.html new file mode 100644 index 0000000..0a4a7da --- /dev/null +++ b/0.0.18/html_split/_0023student_002doutcomes_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #student-outcomes-5.

                                + diff --git a/0.0.18/html_split/_0023student_002doutcomes_002d6.html b/0.0.18/html_split/_0023student_002doutcomes_002d6.html new file mode 100644 index 0000000..c5c4ac0 --- /dev/null +++ b/0.0.18/html_split/_0023student_002doutcomes_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #student-outcomes-6.

                                + diff --git a/0.0.18/html_split/_0023student_002doutcomes_002d7.html b/0.0.18/html_split/_0023student_002doutcomes_002d7.html new file mode 100644 index 0000000..5233f94 --- /dev/null +++ b/0.0.18/html_split/_0023student_002doutcomes_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #student-outcomes-7.

                                + diff --git a/0.0.18/html_split/_0023student_002doutcomes_002d8.html b/0.0.18/html_split/_0023student_002doutcomes_002d8.html new file mode 100644 index 0000000..f19fd7f --- /dev/null +++ b/0.0.18/html_split/_0023student_002doutcomes_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #student-outcomes-8.

                                + diff --git a/0.0.18/html_split/_0023student_002doutcomes_002d9.html b/0.0.18/html_split/_0023student_002doutcomes_002d9.html new file mode 100644 index 0000000..735a21f --- /dev/null +++ b/0.0.18/html_split/_0023student_002doutcomes_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #student-outcomes-9.

                                + diff --git a/0.0.18/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html b/0.0.18/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html new file mode 100644 index 0000000..4801178 --- /dev/null +++ b/0.0.18/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html @@ -0,0 +1,40 @@ + + + + + + +#summary-of-modules-and-topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #summary-of-modules-and-topics.

                                + diff --git a/0.0.18/html_split/_0023testing_002dand_002ddebugging.html b/0.0.18/html_split/_0023testing_002dand_002ddebugging.html new file mode 100644 index 0000000..1ae096d --- /dev/null +++ b/0.0.18/html_split/_0023testing_002dand_002ddebugging.html @@ -0,0 +1,40 @@ + + + + + + +#testing-and-debugging (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #testing-and-debugging.

                                + diff --git a/0.0.18/html_split/_0023tooling.html b/0.0.18/html_split/_0023tooling.html new file mode 100644 index 0000000..634a8dc --- /dev/null +++ b/0.0.18/html_split/_0023tooling.html @@ -0,0 +1,40 @@ + + + + + + +#tooling (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #tooling.

                                + diff --git a/0.0.18/html_split/_0023topic_002dintroduction.html b/0.0.18/html_split/_0023topic_002dintroduction.html new file mode 100644 index 0000000..742d5d9 --- /dev/null +++ b/0.0.18/html_split/_0023topic_002dintroduction.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #topic-introduction.

                                + diff --git a/0.0.18/html_split/_0023topic_002dintroduction_002d1.html b/0.0.18/html_split/_0023topic_002dintroduction_002d1.html new file mode 100644 index 0000000..a110644 --- /dev/null +++ b/0.0.18/html_split/_0023topic_002dintroduction_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #topic-introduction-1.

                                + diff --git a/0.0.18/html_split/_0023topic_002dintroduction_002d2.html b/0.0.18/html_split/_0023topic_002dintroduction_002d2.html new file mode 100644 index 0000000..986bf37 --- /dev/null +++ b/0.0.18/html_split/_0023topic_002dintroduction_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #topic-introduction-2.

                                + diff --git a/0.0.18/html_split/_0023topic_002dintroduction_002d3.html b/0.0.18/html_split/_0023topic_002dintroduction_002d3.html new file mode 100644 index 0000000..3d14fd9 --- /dev/null +++ b/0.0.18/html_split/_0023topic_002dintroduction_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #topic-introduction-3.

                                + diff --git a/0.0.18/html_split/_0023topic_002dintroduction_002d4.html b/0.0.18/html_split/_0023topic_002dintroduction_002d4.html new file mode 100644 index 0000000..c73a236 --- /dev/null +++ b/0.0.18/html_split/_0023topic_002dintroduction_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #topic-introduction-4.

                                + diff --git a/0.0.18/html_split/_0023topic_002dintroduction_002d5.html b/0.0.18/html_split/_0023topic_002dintroduction_002d5.html new file mode 100644 index 0000000..e92b876 --- /dev/null +++ b/0.0.18/html_split/_0023topic_002dintroduction_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #topic-introduction-5.

                                + diff --git a/0.0.18/html_split/_0023topic_002dintroduction_002d6.html b/0.0.18/html_split/_0023topic_002dintroduction_002d6.html new file mode 100644 index 0000000..1869b1b --- /dev/null +++ b/0.0.18/html_split/_0023topic_002dintroduction_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #topic-introduction-6.

                                + diff --git a/0.0.18/html_split/_0023use_002dof_002dthis_002ddocument.html b/0.0.18/html_split/_0023use_002dof_002dthis_002ddocument.html new file mode 100644 index 0000000..68d835d --- /dev/null +++ b/0.0.18/html_split/_0023use_002dof_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#use-of-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #use-of-this-document.

                                + diff --git a/0.0.18/html_split/_0023user_002ddefined_002dtypes_002dclasses.html b/0.0.18/html_split/_0023user_002ddefined_002dtypes_002dclasses.html new file mode 100644 index 0000000..04771a9 --- /dev/null +++ b/0.0.18/html_split/_0023user_002ddefined_002dtypes_002dclasses.html @@ -0,0 +1,40 @@ + + + + + + +#user-defined-types-classes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #user-defined-types-classes.

                                + diff --git a/0.0.18/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html b/0.0.18/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html new file mode 100644 index 0000000..f4b9435 --- /dev/null +++ b/0.0.18/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html @@ -0,0 +1,40 @@ + + + + + + +#working-group-documents-related-to-c-teaching-guidelines (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                The node you are looking for is at #working-group-documents-related-to-c-teaching-guidelines.

                                + diff --git a/0.0.18/html_split/index.html b/0.0.18/html_split/index.html new file mode 100644 index 0000000..d84b450 --- /dev/null +++ b/0.0.18/html_split/index.html @@ -0,0 +1,276 @@ + + + + + +Top (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +

                                Table of Contents

                                + +
                                + + +
                                + + + +
                                +

                                Guidelines for Teaching C++

                                + + + + + + + + + + + + + + + + +
                                + + + + + + diff --git a/0.0.18/html_split/unknown_node.html b/0.0.18/html_split/unknown_node.html new file mode 100644 index 0000000..43b144e --- /dev/null +++ b/0.0.18/html_split/unknown_node.html @@ -0,0 +1,1130 @@ + + + + + +Guidelines for Teaching C++ + + + + + + + + + + + + + + + + +
                                +

                                +   [Contents]

                                +
                                +
                                +

                                7.1.5.1 Background/Required Knowledge

                                +

                                A student is able to: * identify special member functions +[C++ object model: +special member functions] +

                                +

                                It helps when a student is able to: * use move semantics +[C++ object model: move +semantics] * explain the rule of zero +[C++ object model: rule-of-zero] +* explain the rule of five [C++ +object model: rule-of-five] +

                                +
                                +

                                +   [Contents]

                                +
                                +

                                7.1.5.2 Student outcomes

                                +

                                A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                                +

                                A student should be able to: * explain when they have to implement the +copy operations for their own type * Copy constructor * Copy assignment +operator * implement copy operations for their own types * +Optional: explain when copying with basic and strong exception +guarantees is useful +

                                +
                                +

                                +   [Contents]

                                +
                                +

                                7.1.5.3 Caveats

                                +

                                This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                                +
                                  +
                                • Intricacies when implementing copy operations: +
                                    +
                                  • Examples of how not to write copy operations (e.g., C++03 +std::auto_ptr) +
                                  + +
                                + +
                                +

                                +   [Contents]

                                +
                                +

                                7.1.5.4 Points to cover

                                +

                                This section lists important details for each point. +

                                +
                                  +
                                • Copy constructors and copy assignment operators +
                                    +
                                  • How compiler generates default copy operations +
                                  • =default, =delete (No copy) +
                                  • How-to write your own copy operations +
                                  • Rule-of-five +
                                  • Copy assignment operators can be ref-qualified to avoid assigning into +temporary objects. +
                                  + +
                                + +
                                +

                                +   [Contents]

                                +
                                +

                                7.2.1 Overview

                                +

                                Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

                                + + + + + +
                                LevelObjective
                                FoundationalDefining variables and ODR
                                MainDefining for programs
                                AdvancedSpecial cases and peculiarities
                                + +
                                +

                                +   [Contents]

                                +
                                +

                                7.2.2 Motivation

                                +

                                Why is this important? Why do we want to learn/teach this +topic? +

                                +
                                  +
                                • A definition is a declaration that supplies all that is needed for a +complete entity +
                                • int baz = 42; +
                                • void bar() { /* implementation */ } +
                                • class Foo { /* class body */ }; +
                                + +
                                +

                                +   [Contents]

                                +
                                +

                                7.2.3 Topic introduction

                                +

                                Very brief introduction to the topic. +

                                +

                                A definition extends a declaration, providing all that is needed for a +complete entity, e.g., allocate memory for variables, provide the +implementation for functions, complete definitions of data and function +members of a class. +

                                +
                                +

                                +   [Contents]

                                +
                                +

                                7.2.4.1 Background/Required Knowledge

                                +

                                A student: +

                                + + +
                                +

                                +   [Contents]

                                +
                                +

                                7.2.4.2 Student outcomes

                                +

                                A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                                +

                                A student should be able to: +

                                +
                                  +
                                1. define a variable with a specific type int baz = 42; +
                                2. define a function void bar() {} +
                                3. define a class class Foo {}; +
                                4. explain the one definition rule +
                                + +
                                +

                                +   [Contents]

                                +
                                +

                                7.2.4.3 Caveats

                                +

                                This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                                +

                                No caveats at present. +

                                +
                                +

                                +   [Contents]

                                +
                                +

                                7.2.4.4 Points to cover

                                +

                                This section lists important details for each point. +

                                +
                                  +
                                • One definition rule (ODR) +
                                + +
                                +

                                +   [Contents]

                                +
                                +

                                7.2.5.1 Background/Required Knowledge

                                + + +
                                +

                                +   [Contents]

                                +
                                +

                                7.2.5.2 Student outcomes

                                +

                                A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                                +

                                A student should be able to: +

                                +
                                  +
                                1. organize variables, functions, classes into multiple translation units, +describing interface with declarations and providing the implementations +with definitions without violating ODR. +
                                2. distinguish between template declaration and definition +
                                + +
                                +

                                +   [Contents]

                                +
                                +

                                7.2.5.3 Caveats

                                +

                                This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                                +
                                  +
                                • Putting a definition into a header file that is included more than once +leads to ODR violations, possibly resulting in linker errors. +
                                + +
                                +

                                +   [Contents]

                                +
                                +

                                7.2.5.4 Points to cover

                                +

                                This section lists important details for each point. +

                                +
                                +

                                +   [Contents]

                                +
                                +

                                7.3.1 Overview

                                +

                                Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

                                + + + + + +
                                LevelObjective
                                FoundationalDeclaring variables
                                MainDeclaring for programs
                                AdvancedSpecial cases and peculiarities
                                + +
                                +

                                +   [Contents]

                                +
                                +

                                7.3.2 Motivation

                                +

                                Why is this important? Why do we want to learn/teach this +topic? +

                                +
                                  +
                                • Introduces a name and it’s type +
                                • int baz; +
                                • void bar(); +
                                • class Foo; +
                                + +
                                +

                                +   [Contents]

                                +
                                +

                                7.3.3 Topic introduction

                                +

                                Very brief introduction to the topic. +

                                +

                                Introduce names and their associated type in a scope. +

                                +
                                +

                                +   [Contents]

                                +
                                +

                                7.3.4.1 Background/Required Knowledge

                                +

                                A student: +

                                +
                                  +
                                • is familiar with the basic C++ types: +
                                    +
                                  • bool (Boolean type) +
                                  • int (Integer type) +
                                  • double (Floating-point type) +
                                  + +
                                + +
                                +

                                +   [Contents]

                                +
                                +

                                7.3.4.2 Student outcomes

                                +

                                A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                                +

                                A student should be able to: +

                                +
                                  +
                                1. declare a variable with a specific type ‘int baz;’ +
                                2. declare a function ‘void bar();’ +
                                3. declare a class ‘class Foo;’ +
                                4. forward declare a user-defined type or a function +
                                5. explain the difference between a definition and a declaration +
                                + +
                                +

                                +   [Contents]

                                +
                                +

                                7.3.4.3 Caveats

                                +

                                This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                                +

                                No caveats at present. +

                                +
                                +

                                +   [Contents]

                                +
                                +

                                7.3.4.4 Points to cover

                                +

                                This section lists important details for each point. +

                                +
                                +

                                +   [Contents]

                                +
                                +

                                7.3.5.1 Background/Required Knowledge

                                +
                                  +
                                • All of the above. +
                                • Basic template syntax +
                                + +
                                +

                                +   [Contents]

                                +
                                +

                                7.3.5.2 Student outcomes

                                +

                                A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                                +

                                A student should be able to: +

                                +
                                  +
                                1. create header and source files with a declaration in the former and +definition of a variable/function in the latter +
                                2. declare type aliases to introduce a type with an alternative name ‘using +std::string;’ +
                                3. write a forward template declaration +
                                + +
                                +

                                +   [Contents]

                                +
                                +

                                7.3.5.3 Caveats

                                +

                                This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                                +
                                  +
                                • Declaring aliases can introduce name clashes +
                                • Prefer using declaration’s over using directives in header files [link] +
                                • The order of declarations dictates the order of initialization +
                                + +
                                +

                                +   [Contents]

                                +
                                +

                                7.3.5.4 Points to cover

                                +

                                This section lists important details for each point. +

                                +
                                +

                                +   [Contents]

                                +
                                +

                                7.3.6 Advanced

                                +

                                These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

                                +
                                  +
                                • asm declaration +
                                • using-enum-declaration +
                                • extern “C” declarations +
                                + +

                                See concepts. +

                                +

                                See user-defined-literals. +

                                +
                                +

                                +   [Contents]

                                +
                                +

                                7.4.1 Overview

                                +

                                Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

                                + + + + + +
                                LevelObjectives
                                FoundationalCalling static_assert with a constant expression
                                MainUsing static_assert to detect contract violations and +improve error messages
                                Advanced
                                + +
                                +

                                +   [Contents]

                                +
                                +

                                7.4.2 Motivation

                                +

                                Why is this important? Why do we want to learn/teach this +topic? +

                                +

                                static_assert allows the developer to enforce that conditions +which can be checked during compilation will force build errors when +violated. Additionally, they are the best mechanism by which a developer +can pass useful information to other developers regarding what violation +occurred or what must be done, instead. +

                                +
                                +

                                +   [Contents]

                                +
                                +

                                7.4.3 Topic introduction

                                +

                                Very brief introduction to the topic. +

                                +

                                static_assert is a compile-time evaluated function that asserts +the truth of a supplied predicate, issuing an optional user-supplied +error message if the predicate is false. +

                                +
                                +

                                +   [Contents]

                                +
                                +

                                7.4.4.1 Background/Required Knowledge

                                +

                                A student: +

                                +
                                  +
                                • Should be able to explain the difference between code evaluated at +compile-time and run-time +
                                • Should be able to cite some examples of compile-time known information, +such as sizeof(T) +
                                + +
                                +

                                +   [Contents]

                                +
                                +

                                7.4.4.2 Student outcomes

                                +

                                A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                                +

                                A student should be able to: +

                                +
                                  +
                                1. Assert the expected size of a structure using static_assert +
                                + +
                                +

                                +   [Contents]

                                +
                                +

                                7.4.4.3 Caveats

                                +

                                This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                                +
                                +

                                +   [Contents]

                                +
                                +

                                7.4.4.4 Points to cover

                                +

                                This section lists important details for each point. +

                                +
                                  +
                                • X +
                                • In addition to what is wrong, a good error message will inform the user +of how to correct it +
                                + +
                                +

                                +   [Contents]

                                +
                                +

                                7.4.5.1 Background/Required Knowledge

                                +
                                  +
                                • All of the above. +
                                • General understanding of compile-time requirements +
                                + +
                                +

                                +   [Contents]

                                +
                                +

                                7.4.5.2 Student outcomes

                                +

                                A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                                +

                                A student should be able to: +

                                +
                                  +
                                1. Utilize static_assert to verify preconditions of a meta-function +
                                2. Utilize static_assert to verify the results of meta-functions for +known values +
                                + +
                                +

                                +   [Contents]

                                +
                                +

                                7.4.5.3 Caveats

                                +

                                This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                                +
                                +

                                +   [Contents]

                                +
                                +

                                7.4.5.4 Points to cover

                                +

                                This section lists important details for each point. +

                                +
                                  +
                                • When writing a meta-function, use static_assert to test the +results +
                                • Write static_assert calls at the scope of the code they are +guarding +
                                + +
                                template<typename T>
                                +struct container {
                                +    std::map<int, T> vals;
                                +
                                +    // Test location #1
                                +    static_assert(
                                +        std::is_default_constructible_v<T>,
                                +        "container type T must be default constructible");i
                                +
                                +    void add(int key, T const& t) {
                                +        // Test location #2
                                +        static_assert(
                                +            std::is_default_constructible_v<T>,
                                +            "container type T must be default constructible");
                                +        // std::map::operator[] requires default constructible type for 
                                +        // the value. This will cause a build failure deep in the 
                                +        // implementation of std::map, when T is not default constructible
                                +        vals[key] = t;
                                +    }
                                +};
                                +
                                +struct NoDefCtor {
                                +    NoDefCtor() = delete;
                                +    NoDefCtor(double d) {}
                                +};
                                +
                                +container<NoDefCtor> c; // If Test #1 was omitted, this would succeed
                                +// This is ill-formed. Test #2 would catch this and provide a better 
                                +// error message for the user
                                +c.add(42, NoDefCtor(1.0)); 
                                +
                                +
                                +

                                +   [Contents]

                                +
                                +

                                7.4.6 Advanced

                                +

                                These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

                                +
                                +

                                +   [Contents]

                                +
                                +

                                7.5.1 Overview

                                +

                                Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

                                + + + + + +
                                LevelObjectives
                                Foundationalusing and understanding UDLs
                                Mainimplementing your own UDLs
                                AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
                                + +
                                +

                                +   [Contents]

                                +
                                +

                                7.5.2 Motivation

                                +

                                Why is this important? Why do we want to learn/teach this +topic? +

                                +
                                  +
                                • Allows clearer expression of intent in C++. +
                                • std::string: "Hello, world!"s +
                                • std::chrono: 3h + 10min + 5s +
                                + +
                                +

                                +   [Contents]

                                +
                                +

                                7.5.3 Topic introduction

                                +

                                Very brief introduction to the topic. +

                                +
                                  +
                                • Explain the existence of user defined literals. Example: +12min + 17s is terse, expressive and type safe. +
                                + +
                                +

                                +   [Contents]

                                +
                                +

                                7.5.4.1 Background/Required Knowledge

                                +

                                A student: * knows how to form numeric literals, e.g., 1.5f means +a float of value 1.5. * is familiar with the major C++ +types: * bool (Boolean type) * int (Integer type) * +double (Floating-point type) * std::string (Text type) * +std::vector (Collection type) * knows that namespaces exist, and +namespace std. * knows what using-declarations and +using-directives are. +[C++ object +model: declarations] +

                                +
                                +

                                +   [Contents]

                                +
                                +

                                7.5.4.2 Student outcomes

                                +

                                A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                                +

                                A student should be able to: +

                                +
                                  +
                                1. use using namespace std::string_literals[1]. +
                                2. recognise UDLs in code that they are reading. +
                                3. figure out which UDL definitions for a used type exist. +
                                4. identify parts of the standard library that make use of UDLs. +
                                5. prevent the dangers of temporaries created with "blah"s as well +as with std::string{"blah"}. +
                                6. effectively selects the right set of namespaces in using-directives from +the sub-namespaces std::literals. +
                                + +

                                [1]: explain that it’s okay to use a using-directive to “activate” +UDLs. +

                                +
                                +

                                +   [Contents]

                                +
                                +

                                7.5.4.3 Caveats

                                +

                                This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                                +
                                  +
                                • A student gets confused by the similarities and differences between +built-in suffixes and UDLs and between UDLs from different namespaces. +
                                • A student “activates” two suffixes with the same signature from +different namespaces. +
                                + +
                                +

                                +   [Contents]

                                +
                                +

                                7.5.4.4 Points to cover

                                +

                                This section lists important details for each point. +

                                +
                                +

                                +   [Contents]

                                +
                                +

                                7.5.5.1 Background/Required Knowledge

                                +
                                  +
                                • All of the above. +
                                + +
                                +

                                +   [Contents]

                                +
                                +

                                7.5.5.2 Student outcomes

                                +

                                A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                                +

                                A student should be able to: +

                                +
                                  +
                                1. write a UDL operator of their own. +
                                2. separate unrelated UDLs into distinct namespaces. +
                                + +
                                +

                                +   [Contents]

                                +
                                +

                                7.5.5.3 Caveats

                                +

                                This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                                +

                                No caveats at present. #### Points to cover +

                                +

                                This section lists important details for each point. +

                                +

                                No caveats at present. ### Advanced {#udl-advanced} +

                                +

                                These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

                                +
                                +

                                +   [Contents]

                                +
                                +

                                7.6.1 Overview

                                +

                                Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

                                +

                                Functions in C++ may be overloaded with different numbers and types of +parameters. It may be of value to specify default arguments for some +number of parameters, to allow a caller to avoid specifying arguments +that rarely change, or to enable expanding the set of parameters while +maintaining backward compatibility with existing callers. +

                                + + + + + +
                                LevelObjective
                                FoundationalDefine and use functions with default arguments
                                Main
                                Advancedrefinement of default arguments through multiple declarations
                                + +
                                +

                                +   [Contents]

                                +
                                +

                                7.6.2 Motivation

                                +

                                Why is this important? Why do we want to learn/teach this +topic? +

                                +

                                Default arguments allow the omission of arguments with obvious or common +values. Also may be utilized to extend an existing function signature +without forcing changes to existing calling code. +

                                +
                                +

                                +   [Contents]

                                +
                                +

                                7.6.3 Topic introduction

                                +

                                Very brief introduction to the topic. +

                                +

                                Explain how default arguments work and how to define them. +

                                +
                                +

                                +   [Contents]

                                +
                                +

                                7.6.4.1 Background/Required Knowledge

                                +

                                A student is able to: +

                                + + +
                                +

                                +   [Contents]

                                +
                                +

                                7.6.4.2 Student outcomes

                                +

                                A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                                +

                                A student should be able to: +

                                +
                                  +
                                1. Call to a function with a default argument with or without that argument +specified +
                                2. Declare a function with a default argument, and omit the default in the +definition’s signature +
                                3. Explain when the lifetime of a default argument begins and ends +
                                + +
                                +

                                +   [Contents]

                                +
                                +

                                7.6.4.3 Caveats

                                +

                                This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                                +
                                  +
                                • When no forward-declaration exists, the definition serves as the +declaration +
                                • When multiple declarations exist, only one may specify the default for +any particular parameter, but multiple declarations may specify the +defaults for different parameters. +
                                • Additional default values may be specified for other parameters in +repeat declarations +
                                • Calling an overloaded function with fewer arguments may be ambiguous +with regard to an overload with default arguments +
                                + +
                                +

                                +   [Contents]

                                +
                                +

                                7.6.4.4 Points to cover

                                +

                                This section lists important details for each point. +

                                +
                                  +
                                • Default value may only be specified once for each parameter among all +declarations +
                                • Default values must start from the rightmost parameter and continue +leftward without gaps +
                                • Considerations of when to use default arguments vs overload set +
                                + +
                                +

                                +   [Contents]

                                +
                                +

                                7.6.5.2 Student outcomes

                                +

                                A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                                +

                                A student should be able to: +

                                +
                                +

                                +   [Contents]

                                +
                                +

                                7.6.5.3 Caveats

                                +

                                This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                                +
                                +

                                +   [Contents]

                                +
                                +

                                7.6.5.4 Points to cover

                                +

                                This section lists important details for each point. +

                                +
                                +

                                +   [Contents]

                                +
                                +

                                7.6.6 Advanced

                                +

                                These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

                                +

                                Subsequent redeclarations of the same function may add default argument +values, which are then usable by callers. Though a single parameter +cannot be given a default argument twice in the same translation unit, +it is legal, though ill-advised, to give the same function different +default arguments in different translation units. +

                                +
                                +

                                +   [Contents]

                                +
                                +

                                7.7.1 Overview

                                +

                                Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

                                + + + + + +
                                LevelObjectives
                                FoundationalDefine and use requires-expressions to check satisfaction of +expressions by given parameters
                                MainDefine and use requires-expressions to check properties of +expressions
                                Advanced
                                + +
                                +

                                +   [Contents]

                                +
                                +

                                7.7.2 Motivation

                                +

                                Why is this important? Why do we want to learn/teach this +topic? +

                                +

                                Requires-expressions allow a developer to perform compile-time +evaluation on the validity of other expressions. These are fundamental +to the ability to write concepts. +[Compile-time programming: +concepts] +

                                +
                                +

                                +   [Contents]

                                +
                                +

                                7.8 Topic introduction

                                +

                                Very brief introduction to the topic. +

                                +

                                Requires-expressions are compile-time predicates which evaluate to true +when their specified set of expressions are all valid for a given set of +inputs. +

                                + + + + + + +
                                +

                                +   [Contents]

                                +
                                +

                                7.8.1.1 Background/Required Knowledge

                                +

                                A student is able to: +

                                + + +

                                It is helpful if: +

                                +
                                  +
                                • The student is aware that attempting to specialize the template with +types or values which do not match otherwise unstated assumptions will +cause errors within the template. +
                                + +
                                +

                                +   [Contents]

                                +
                                +

                                7.8.1.2 Student outcomes

                                +

                                A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                                +

                                A student should be able to: +

                                +
                                  +
                                1. Write a simple-requirement to assert the validity of an expression +
                                2. Write a type-requirement to check the existence of a type by its +identifier +
                                3. Write a compound-requirement to test the resulting type of an expression +
                                4. Write a nested-requirement to test the constexpr value of an operation, +as opposed to just the syntactic validity +
                                5. Use a requires-expression within a concept, requires-clause, or +if constexpr condition +
                                + +
                                +

                                +   [Contents]

                                +
                                +

                                7.8.1.3 Caveats

                                +

                                This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                                +

                                To require that expressions, which evaluate to a boolean value like +sizeof(t) == 4, evaluate to true a nested-requirement is +needed (e.g., requires sizeof(t) == 4;). Omitting the +requires results in a simple-requirement, which is satisfied +based purely on syntactic validity, not on the result of the operation. +

                                +
                                +

                                +   [Contents]

                                +
                                +

                                7.8.1.4 Points to cover

                                +

                                This section lists important details for each point. +

                                +
                                  +
                                • All requires-expression requirements terminate with a semicolon. +
                                • simple-requirements are used to check that an expression is well-formed. +
                                • nested-requirements are introduced with requires and primarily +used to check the result of an expression computable by the compiler, +including concepts or other requires-expressions. +
                                • type-requirements are introduced with typename and used to verify +the existence of a type with a particular identifier. +
                                • compound-requirements are enclosed in braces and can be used to check +the resulting type of an expression. +
                                • Checks are performed by the compiler, not at run time. +
                                • If covering usage of requires-expression with requires-clause, +[Compile-time +programming: requires clause] demonstrate requires requires and +show how to ever avoid writing it by using a concept. +[Compile-time programming: +concepts] +
                                + +
                                +

                                +   [Contents]

                                +
                                +

                                7.8.2.1 Background/Required Knowledge

                                +
                                  +
                                • All of the above. +
                                • Knowledge of noexcept +
                                + +

                                A student is able to: +

                                + + +
                                +

                                +   [Contents]

                                +
                                +

                                7.8.2.2 Student outcomes

                                +

                                A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                                +

                                A student should be able to: +

                                +
                                  +
                                1. Write compound-requirements which test the noexceptness of an +expression. +
                                2. Use a concept as the target of a compound-requirement. +
                                + +
                                +

                                +   [Contents]

                                +
                                +

                                7.8.2.3 Caveats

                                +

                                This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                                +
                                +

                                +   [Contents]

                                +
                                +

                                7.8.2.4 Points to cover

                                +

                                This section lists important details for each point. +

                                +
                                  +
                                • Compound-requirements allow the optional ability to test whether an +expression is marked as noexcept, by using a trailing +noexcept keyword. +
                                + +
                                struct S
                                +{
                                +    void foo() noexcept {}
                                +    void bar() {}
                                +};
                                +
                                +static_assert(requires(S s) { { s.foo() } noexcept; } ); // Succeeds. s.foo() is noexcept
                                +static_assert(requires(S s) { { s.bar() } noexcept; } ); // Fails. s.bar() is not noexcept
                                +
                                +
                                  +
                                • If the return-type-requirement of a compound-requirement is a concept, +that concept is given the resulting type as the first parameter, +followed by the specified parameters in the compound-requirement. +{ ++x } -> C<int> would substitute +C<decltype((++x)), int> and check that concept C is satisfied for +those parameters. +
                                + +
                                +

                                +   [Contents]

                                +
                                +

                                7.8.3 Advanced

                                + + + + + + diff --git a/latest/index.html b/latest/index.html index c1fd816..1cffdbf 100644 --- a/latest/index.html +++ b/latest/index.html @@ -106,7 +106,7 @@

                                Guidelines for Teaching C++

                                -

                                Version 0.0.17

                                +

                                Version 0.0.18

                                SG20 (ISO C++ Study Group on Education)

                                @@ -141,45 +141,61 @@

                                Version 0.0.17

                              • 6.15 Software Design
                            • 7 Detailed Information for Modules and Topics
                                -
                              • 7.1 Meta-error handling: static_assert
                                  +
                                • 7.1 C++ object model: copy semantics
                                • -
                                • 7.2 Module name: Requires Expressions
                                    +
                                  • 7.2 C++ object model: Definitions
                                  • -
                                  • 7.3 Topic introduction
                                      -
                                    • 7.3.1 Foundational: Writing requires-expressions
                                    • -
                                    • 7.3.2 Main: Advanced requirements
                                    • -
                                    • 7.3.3 Advanced
                                    • +
                                    • 7.3 C++ object model: Declarations
                                    • -
                                    • 7.4 C++ object model: copy semantics
                                        -
                                      • 7.4.1 Overview
                                      • -
                                      • 7.4.2 Motivation
                                      • -
                                      • 7.4.3 Topic introduction
                                      • -
                                      • 7.4.4 Foundational: How and when are copies made
                                      • -
                                      • 7.4.5 Main: Implementing user-defined copy operations
                                      • -
                                      • 7.4.6 Advanced
                                      • +
                                      • 7.4 Meta-error handling: static_assert
                                      • -
                                      • 7.5 Functions: default argument +

                                        7.1.5 Main: Implementing user-defined copy operations

                                        +

                                        7.1.5.1 Background/Required Knowledge

                                        +

                                        A student is able to: * identify special member functions [C++ object model: special member functions]

                                        +

                                        It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain the rule of zero [C++ object model: rule-of-zero] * explain the rule of five [C++ object model: rule-of-five]

                                        7.1.5.2 Student outcomes

                                        A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                        -

                                        A student should be able to:

                                        -
                                          -
                                        1. Utilize static_assert to verify preconditions of a meta-function
                                        2. -
                                        3. Utilize static_assert to verify the results of meta-functions for known values
                                        4. -
                                        +

                                        A student should be able to: * explain when they have to implement the copy operations for their own type * Copy constructor * Copy assignment operator * implement copy operations for their own types * Optional: explain when copying with basic and strong exception guarantees is useful

                                        7.1.5.3 Caveats

                                        This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                        +
                                          +
                                        • Intricacies when implementing copy operations: +
                                            +
                                          • Examples of how not to write copy operations (e.g., C++03 std::auto_ptr)
                                          • +
                                        • +

                                        7.1.5.4 Points to cover

                                        This section lists important details for each point.

                                          -
                                        • When writing a meta-function, use static_assert to test the results
                                        • -
                                        • Write static_assert calls at the scope of the code they are guarding
                                        • +
                                        • Copy constructors and copy assignment operators +
                                            +
                                          • How compiler generates default copy operations
                                          • +
                                          • =default, =delete (No copy)
                                          • +
                                          • How-to write your own copy operations
                                          • +
                                          • Rule-of-five
                                          • +
                                          • Copy assignment operators can be ref-qualified to avoid assigning into temporary objects.
                                          • +
                                        - -

                                        7.1.6 Advanced

                                        +

                                        7.1.6 Advanced

                                        These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                                        -

                                        7.2 Module name: Requires Expressions

                                        +

                                        When can copies be elided and when does the standard guarantee copy elision. References: * Abseil tip of the Week #166 * cppreference - Copy elision

                                        +

                                        7.2 C++ object model: Definitions

                                        Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                                        7.2.1 Overview

                                        Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                                        --++ - + - + - + - +
                                        LevelObjectivesObjective
                                        FoundationalDefine and use requires-expressions to check satisfaction of expressions by given parametersDefining variables and ODR
                                        MainDefine and use requires-expressions to check properties of expressionsDefining for programs
                                        AdvancedSpecial cases and peculiarities

                                        7.2.2 Motivation

                                        Why is this important? Why do we want to learn/teach this topic?

                                        -

                                        Requires-expressions allow a developer to perform compile-time evaluation on the validity of other expressions. These are fundamental to the ability to write concepts. [Compile-time programming: concepts]

                                        -

                                        7.3 Topic introduction

                                        -

                                        Very brief introduction to the topic.

                                        -

                                        Requires-expressions are compile-time predicates which evaluate to true when their specified set of expressions are all valid for a given set of inputs.

                                        -

                                        7.3.1 Foundational: Writing requires-expressions

                                        -

                                        7.3.1.1 Background/Required Knowledge

                                        -

                                        A student is able to:

                                          -
                                        • Write and use a function template [Compile-time programming: function templates]
                                        • -
                                        • Differentiate between expressions and statements
                                        • +
                                        • A definition is a declaration that supplies all that is needed for a complete entity
                                        • +
                                        • int baz = 42;
                                        • +
                                        • void bar() { /* implementation */ }
                                        • +
                                        • class Foo { /* class body */ };
                                        -

                                        It is helpful if:

                                        +

                                        7.2.3 Topic introduction

                                        +

                                        Very brief introduction to the topic.

                                        +

                                        A definition extends a declaration, providing all that is needed for a complete entity, e.g., allocate memory for variables, provide the implementation for functions, complete definitions of data and function members of a class.

                                        +

                                        7.2.4 Foundational: Defining variables and ODR

                                        +

                                        7.2.4.1 Background/Required Knowledge

                                        +

                                        A student:

                                          -
                                        • The student is aware that attempting to specialize the template with types or values which do not match otherwise unstated assumptions will cause errors within the template.
                                        • +
                                        • is familiar with declarations [C++ object model: declarations]
                                        -

                                        7.3.1.2 Student outcomes

                                        +

                                        7.2.4.2 Student outcomes

                                        A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                        A student should be able to:

                                          -
                                        1. Write a simple-requirement to assert the validity of an expression
                                        2. -
                                        3. Write a type-requirement to check the existence of a type by its identifier
                                        4. -
                                        5. Write a compound-requirement to test the resulting type of an expression
                                        6. -
                                        7. Write a nested-requirement to test the constexpr value of an operation, as opposed to just the syntactic validity
                                        8. -
                                        9. Use a requires-expression within a concept, requires-clause, or if constexpr condition
                                        10. +
                                        11. define a variable with a specific type int baz = 42;
                                        12. +
                                        13. define a function void bar() {}
                                        14. +
                                        15. define a class class Foo {};
                                        16. +
                                        17. explain the one definition rule
                                        -

                                        7.3.1.3 Caveats

                                        +

                                        7.2.4.3 Caveats

                                        This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                        -

                                        To require that expressions, which evaluate to a boolean value like sizeof(t) == 4, evaluate to true a nested-requirement is needed (e.g., requires sizeof(t) == 4;). Omitting the requires results in a simple-requirement, which is satisfied based purely on syntactic validity, not on the result of the operation.

                                        -

                                        7.3.1.4 Points to cover

                                        +

                                        No caveats at present.

                                        +

                                        7.2.4.4 Points to cover

                                        This section lists important details for each point.

                                          -
                                        • All requires-expression requirements terminate with a semicolon.
                                        • -
                                        • simple-requirements are used to check that an expression is well-formed.
                                        • -
                                        • nested-requirements are introduced with requires and primarily used to check the result of an expression computable by the compiler, including concepts or other requires-expressions.
                                        • -
                                        • type-requirements are introduced with typename and used to verify the existence of a type with a particular identifier.
                                        • -
                                        • compound-requirements are enclosed in braces and can be used to check the resulting type of an expression.
                                        • -
                                        • Checks are performed by the compiler, not at run time.
                                        • -
                                        • If covering usage of requires-expression with requires-clause, [Compile-time programming: requires clause] demonstrate requires requires and show how to ever avoid writing it by using a concept. [Compile-time programming: concepts]
                                        • +
                                        • One definition rule (ODR)
                                        -

                                        7.3.2 Main: Advanced requirements

                                        -

                                        7.3.2.1 Background/Required Knowledge

                                        +

                                        7.2.5 Main: Defining for programs

                                        +

                                        7.2.5.1 Background/Required Knowledge

                                        -

                                        A student is able to:

                                        +

                                        7.2.5.2 Student outcomes

                                        +

                                        A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                        +

                                        A student should be able to:

                                        +
                                          +
                                        1. organize variables, functions, classes into multiple translation units, describing interface with declarations and providing the implementations with definitions without violating ODR.
                                        2. +
                                        3. distinguish between template declaration and definition
                                        4. +
                                        +

                                        7.2.5.3 Caveats

                                        +

                                        This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                        +
                                          +
                                        • Putting a definition into a header file that is included more than once leads to ODR violations, possibly resulting in linker errors.
                                        • +
                                        +

                                        7.2.5.4 Points to cover

                                        +

                                        This section lists important details for each point.

                                        +

                                        7.2.6 Advanced: Special cases and peculiarities

                                        +

                                        These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                                        -

                                        7.3.2.2 Student outcomes

                                        +

                                        7.3 C++ object model: Declarations

                                        +

                                        Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                                        +

                                        7.3.1 Overview

                                        +

                                        Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                                        + ++++ + + + + + + + + + + + + + + + + + + + + +
                                        LevelObjective
                                        FoundationalDeclaring variables
                                        MainDeclaring for programs
                                        AdvancedSpecial cases and peculiarities
                                        +

                                        7.3.2 Motivation

                                        +

                                        Why is this important? Why do we want to learn/teach this topic?

                                        +
                                          +
                                        • Introduces a name and it’s type
                                        • +
                                        • int baz;
                                        • +
                                        • void bar();
                                        • +
                                        • class Foo;
                                        • +
                                        +

                                        7.3.3 Topic introduction

                                        +

                                        Very brief introduction to the topic.

                                        +

                                        Introduce names and their associated type in a scope.

                                        +

                                        7.3.4 Foundational: Declaring variables

                                        +

                                        7.3.4.1 Background/Required Knowledge

                                        +

                                        A student:

                                        +
                                          +
                                        • is familiar with the basic C++ types: +
                                            +
                                          • bool (Boolean type)
                                          • +
                                          • int (Integer type)
                                          • +
                                          • double (Floating-point type)
                                          • +
                                        • +
                                        +

                                        7.3.4.2 Student outcomes

                                        A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                        A student should be able to:

                                          -
                                        1. Write compound-requirements which test the noexceptness of an expression.
                                        2. -
                                        3. Use a concept as the target of a compound-requirement.
                                        4. +
                                        5. declare a variable with a specific type ‘int baz;’
                                        6. +
                                        7. declare a function ‘void bar();’
                                        8. +
                                        9. declare a class ‘class Foo;’
                                        10. +
                                        11. forward declare a user-defined type or a function
                                        12. +
                                        13. explain the difference between a definition and a declaration
                                        -

                                        7.3.2.3 Caveats

                                        +

                                        7.3.4.3 Caveats

                                        This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                        -

                                        7.3.2.4 Points to cover

                                        +

                                        No caveats at present.

                                        +

                                        7.3.4.4 Points to cover

                                        This section lists important details for each point.

                                        +

                                        7.3.5 Main: Declarations for programs

                                        +

                                        7.3.5.1 Background/Required Knowledge

                                          -
                                        • Compound-requirements allow the optional ability to test whether an expression is marked as noexcept, by using a trailing noexcept keyword.
                                        • +
                                        • All of the above.
                                        • +
                                        • Basic template syntax
                                        - +

                                        7.3.5.2 Student outcomes

                                        +

                                        A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                        +

                                        A student should be able to:

                                        +
                                          +
                                        1. create header and source files with a declaration in the former and definition of a variable/function in the latter
                                        2. +
                                        3. declare type aliases to introduce a type with an alternative name ‘using std::string;’
                                        4. +
                                        5. write a forward template declaration
                                        6. +
                                        +

                                        7.3.5.3 Caveats

                                        +

                                        This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                          -
                                        • If the return-type-requirement of a compound-requirement is a concept, that concept is given the resulting type as the first parameter, followed by the specified parameters in the compound-requirement. { ++x } -> C<int> would substitute C<decltype((++x)), int> and check that concept C is satisfied for those parameters.
                                        • +
                                        • Declaring aliases can introduce name clashes
                                        • +
                                        • Prefer using declaration’s over using directives in header files [link]
                                        • +
                                        • The order of declarations dictates the order of initialization
                                        • +
                                        +

                                        7.3.5.4 Points to cover

                                        +

                                        This section lists important details for each point.

                                        +

                                        7.3.6 Advanced

                                        +

                                        These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                                        +
                                          +
                                        • asm declaration
                                        • +
                                        • using-enum-declaration
                                        • +
                                        • extern “C” declarations
                                        -

                                        7.3.3 Advanced

                                        -

                                        7.4 C++ object model: copy semantics

                                        +

                                        See concepts.

                                        +

                                        See user-defined-literals.

                                        +

                                        7.4 Meta-error handling: static_assert

                                        Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                                        -

                                        7.4.1 Overview

                                        +

                                        7.4.1 Overview

                                        Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                                        - +
                                        --++ @@ -1096,96 +1194,184 @@

                                        7.4.1 Overview

                                        - + - + - +
                                        Foundationalunderstanding how and when are copies madeCalling static_assert with a constant expression
                                        Mainimplementing user-defined copy operationsUsing static_assert to detect contract violations and improve error messages
                                        Advancedspecial cases: copy elision
                                        -

                                        7.4.2 Motivation

                                        +

                                        7.4.2 Motivation

                                        Why is this important? Why do we want to learn/teach this topic?

                                        -

                                        Copy semantics allows the user to define how objects of a class get replicated and interact on a value level.

                                        -

                                        7.4.3 Topic introduction

                                        +

                                        static_assert allows the developer to enforce that conditions which can be checked during compilation will force build errors when violated. Additionally, they are the best mechanism by which a developer can pass useful information to other developers regarding what violation occurred or what must be done, instead.

                                        +

                                        7.4.3 Topic introduction

                                        Very brief introduction to the topic.

                                        -

                                        Explains when and how objects are copied.

                                        -

                                        7.4.4 Foundational: How and when are copies made

                                        -

                                        7.4.4.1 Background/Required Knowledge

                                        -

                                        A student is able to: * explain what a C++ type is? [C++ object model: types] * explain what an object is? [C++ object model: objects], [C++ object model: constant objects] * define and understand class invariants?

                                        -

                                        It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain special member functions [C++ object model: special member functions]

                                        -

                                        7.4.4.2 Student outcomes

                                        +

                                        static_assert is a compile-time evaluated function that asserts the truth of a supplied predicate, issuing an optional user-supplied error message if the predicate is false.

                                        +

                                        7.4.4 Foundational: Calling static_assert with a constant expression

                                        +

                                        7.4.4.1 Background/Required Knowledge

                                        +

                                        A student:

                                        +
                                          +
                                        • Should be able to explain the difference between code evaluated at compile-time and run-time
                                        • +
                                        • Should be able to cite some examples of compile-time known information, such as sizeof(T)
                                        • +
                                        +

                                        7.4.4.2 Student outcomes

                                        A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                        A student should be able to:

                                          -
                                        1. explain what copy semantics accomplish
                                        2. +
                                        3. Assert the expected size of a structure using static_assert
                                        +

                                        7.4.4.3 Caveats

                                        +

                                        This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                        +

                                        7.4.4.4 Points to cover

                                        +

                                        This section lists important details for each point.

                                          -
                                        • establishing “equivalent” object state in another object
                                        • +
                                        • X
                                        • +
                                        • In addition to what is wrong, a good error message will inform the user of how to correct it
                                        -
                                          -
                                        1. explain difference between copying a reference and copying a value*
                                        2. -
                                        3. explain where copies are made
                                        4. -
                                        -

                                        * In other languages these differences are sometimes referred to as shallow and deep copy.

                                        -

                                        7.4.4.3 Caveats

                                        -

                                        This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                        +

                                        7.4.5 Main: Contracts and static_assert

                                        +

                                        7.4.5.1 Background/Required Knowledge

                                          -
                                        • Compiler-provided copy operations may result in ownership problems (e.g., char*). These ownership problems can generally be solved by using types whose copy operations have the appropriate semantics, e.g., std::string instead of char* to hold string values.
                                        • +
                                        • All of the above.
                                        • +
                                        • General understanding of compile-time requirements
                                        -

                                        7.4.4.4 Points to cover

                                        +

                                        7.4.5.2 Student outcomes

                                        +

                                        A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                        +

                                        A student should be able to:

                                        +
                                          +
                                        1. Utilize static_assert to verify preconditions of a meta-function
                                        2. +
                                        3. Utilize static_assert to verify the results of meta-functions for known values
                                        4. +
                                        +

                                        7.4.5.3 Caveats

                                        +

                                        This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                        +

                                        7.4.5.4 Points to cover

                                        This section lists important details for each point.

                                          -
                                        • Principle of copying +
                                        • When writing a meta-function, use static_assert to test the results
                                        • +
                                        • Write static_assert calls at the scope of the code they are guarding
                                        • +
                                        + +

                                        7.4.6 Advanced

                                        +

                                        These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                                        +

                                        7.5 Functions: user-defined literals

                                        +

                                        Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                                        +

                                        7.5.1 Overview

                                        +

                                        Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                                        + ++++ + + + + + + + + + + + + + + + + + + + + +
                                        LevelObjectives
                                        Foundationalusing and understanding UDLs
                                        Mainimplementing your own UDLs
                                        AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
                                        +

                                        7.5.2 Motivation

                                        +

                                        Why is this important? Why do we want to learn/teach this topic?

                                          -
                                        • Copying of types, which follow the rule of zero
                                        • -
                                        • Copying of types, with user defined copy operations
                                        • -
                                        • Copying an object does not change the original
                                        • -
                                      • -
                                      • Practical applications +
                                      • Allows clearer expression of intent in C++.
                                      • +
                                      • std::string: "Hello, world!"s
                                      • +
                                      • std::chrono: 3h + 10min + 5s
                                      • +
                                      +

                                      7.5.3 Topic introduction

                                      +

                                      Very brief introduction to the topic.

                                        -
                                      • std::unique_ptr (has no copy)
                                      • -
                                      • Strings (copies the value)
                                      • -
                                    • +
                                    • Explain the existence of user defined literals. Example: 12min + 17s is terse, expressive and type safe.
                                    -

                                    7.4.5 Main: Implementing user-defined copy operations

                                    -

                                    7.4.5.1 Background/Required Knowledge

                                    -

                                    A student is able to: * identify special member functions [C++ object model: special member functions]

                                    -

                                    It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain the rule of zero [C++ object model: rule-of-zero] * explain the rule of five [C++ object model: rule-of-five]

                                    -

                                    7.4.5.2 Student outcomes

                                    +

                                    7.5.4 Foundational: Using UDLs

                                    +

                                    7.5.4.1 Background/Required Knowledge

                                    +

                                    A student: * knows how to form numeric literals, e.g., 1.5f means a float of value 1.5. * is familiar with the major C++ types: * bool (Boolean type) * int (Integer type) * double (Floating-point type) * std::string (Text type) * std::vector (Collection type) * knows that namespaces exist, and namespace std. * knows what using-declarations and using-directives are. [C++ object model: declarations]

                                    +

                                    7.5.4.2 Student outcomes

                                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                    -

                                    A student should be able to: * explain when they have to implement the copy operations for their own type * Copy constructor * Copy assignment operator * implement copy operations for their own types * Optional: explain when copying with basic and strong exception guarantees is useful

                                    -

                                    7.4.5.3 Caveats

                                    +

                                    A student should be able to:

                                    +
                                      +
                                    1. use using namespace std::string_literals[1].
                                    2. +
                                    3. recognise UDLs in code that they are reading.
                                    4. +
                                    5. figure out which UDL definitions for a used type exist.
                                    6. +
                                    7. identify parts of the standard library that make use of UDLs.
                                    8. +
                                    9. prevent the dangers of temporaries created with "blah"s as well as with std::string{"blah"}.
                                    10. +
                                    11. effectively selects the right set of namespaces in using-directives from the sub-namespaces std::literals.
                                    12. +
                                    +

                                    [1]: explain that it’s okay to use a using-directive to “activate” UDLs.

                                    +

                                    7.5.4.3 Caveats

                                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                      -
                                    • Intricacies when implementing copy operations: -
                                        -
                                      • Examples of how not to write copy operations (e.g., C++03 std::auto_ptr)
                                      • -
                                    • +
                                    • A student gets confused by the similarities and differences between built-in suffixes and UDLs and between UDLs from different namespaces.
                                    • +
                                    • A student “activates” two suffixes with the same signature from different namespaces.
                                    -

                                    7.4.5.4 Points to cover

                                    +

                                    7.5.4.4 Points to cover

                                    This section lists important details for each point.

                                    +

                                    7.5.5 Main: implementing UDLs

                                    +

                                    7.5.5.1 Background/Required Knowledge

                                      -
                                    • Copy constructors and copy assignment operators -
                                        -
                                      • How compiler generates default copy operations
                                      • -
                                      • =default, =delete (No copy)
                                      • -
                                      • How-to write your own copy operations
                                      • -
                                      • Rule-of-five
                                      • -
                                      • Copy assignment operators can be ref-qualified to avoid assigning into temporary objects.
                                      • -
                                    • +
                                    • All of the above.
                                    -

                                    7.4.6 Advanced

                                    +

                                    7.5.5.2 Student outcomes

                                    +

                                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                    +

                                    A student should be able to:

                                    +
                                      +
                                    1. write a UDL operator of their own.
                                    2. +
                                    3. separate unrelated UDLs into distinct namespaces.
                                    4. +
                                    +

                                    7.5.5.3 Caveats

                                    +

                                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                    +

                                    No caveats at present. #### Points to cover

                                    +

                                    This section lists important details for each point.

                                    +

                                    No caveats at present. ### Advanced {#udl-advanced}

                                    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                                    -

                                    When can copies be elided and when does the standard guarantee copy elision. References: * Abseil tip of the Week #166 * cppreference - Copy elision

                                    -

                                    See user-defined-literals.

                                    -

                                    7.5 Functions: default argument

                                    +

                                    7.6 Functions: default argument

                                    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                                    -

                                    7.5.1 Overview

                                    +

                                    7.6.1 Overview

                                    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                                    Functions in C++ may be overloaded with different numbers and types of parameters. It may be of value to specify default arguments for some number of parameters, to allow a caller to avoid specifying arguments that rarely change, or to enable expanding the set of parameters while maintaining backward compatibility with existing callers.

                                    @@ -1214,22 +1400,22 @@

                                    7.5.1 Overview

                                    -

                                    7.5.2 Motivation

                                    +

                                    7.6.2 Motivation

                                    Why is this important? Why do we want to learn/teach this topic?

                                    Default arguments allow the omission of arguments with obvious or common values. Also may be utilized to extend an existing function signature without forcing changes to existing calling code.

                                    -

                                    7.5.3 Topic introduction

                                    +

                                    7.6.3 Topic introduction

                                    Very brief introduction to the topic.

                                    Explain how default arguments work and how to define them.

                                    -

                                    7.5.4 Foundational: Using and defining functions with default arguments

                                    -

                                    7.5.4.1 Background/Required Knowledge

                                    +

                                    7.6.4 Foundational: Using and defining functions with default arguments

                                    +

                                    7.6.4.1 Background/Required Knowledge

                                    A student is able to:

                                    -

                                    7.5.4.2 Student outcomes

                                    +

                                    7.6.4.2 Student outcomes

                                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                    A student should be able to:

                                      @@ -1237,7 +1423,7 @@

                                      7.5.4.2 S
                                    1. Declare a function with a default argument, and omit the default in the definition’s signature
                                    2. Explain when the lifetime of a default argument begins and ends
                                    -

                                    7.5.4.3 Caveats

                                    +

                                    7.6.4.3 Caveats

                                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                    • When no forward-declaration exists, the definition serves as the declaration
                                    • @@ -1245,36 +1431,36 @@

                                      7.5.4.3 CaveatsAdditional default values may be specified for other parameters in repeat declarations
                                    • Calling an overloaded function with fewer arguments may be ambiguous with regard to an overload with default arguments
                                    -

                                    7.5.4.4 Points to cover

                                    +

                                    7.6.4.4 Points to cover

                                    This section lists important details for each point.

                                    • Default value may only be specified once for each parameter among all declarations
                                    • Default values must start from the rightmost parameter and continue leftward without gaps
                                    • Considerations of when to use default arguments vs overload set
                                    -

                                    7.5.5 Main: implementing *

                                    -

                                    7.5.5.1 Background/Required knowledge

                                    +

                                    7.6.5 Main: implementing *

                                    +

                                    7.6.5.1 Background/Required knowledge

                                    • All of the above.
                                    -

                                    7.5.5.2 Student outcomes

                                    +

                                    7.6.5.2 Student outcomes

                                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                    A student should be able to:

                                    -

                                    7.5.5.3 Caveats

                                    +

                                    7.6.5.3 Caveats

                                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                    -

                                    7.5.5.4 Points to cover

                                    +

                                    7.6.5.4 Points to cover

                                    This section lists important details for each point.

                                    -

                                    7.5.6 Advanced

                                    +

                                    7.6.6 Advanced

                                    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                                    Subsequent redeclarations of the same function may add default argument values, which are then usable by callers. Though a single parameter cannot be given a default argument twice in the same translation unit, it is legal, though ill-advised, to give the same function different default arguments in different translation units.

                                    -

                                    7.6 Functions: user-defined literals

                                    +

                                    7.7 Module name: Requires Expressions

                                    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                                    -

                                    7.6.1 Overview

                                    +

                                    7.7.1 Overview

                                    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                                    --++ @@ -1285,72 +1471,95 @@

                                    7.6.1 Overview

                                    - + - + - +
                                    Foundationalusing and understanding UDLsDefine and use requires-expressions to check satisfaction of expressions by given parameters
                                    Mainimplementing your own UDLsDefine and use requires-expressions to check properties of expressions
                                    AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
                                    -

                                    7.6.2 Motivation

                                    +

                                    7.7.2 Motivation

                                    Why is this important? Why do we want to learn/teach this topic?

                                    +

                                    Requires-expressions allow a developer to perform compile-time evaluation on the validity of other expressions. These are fundamental to the ability to write concepts. [Compile-time programming: concepts]

                                    +

                                    7.8 Topic introduction

                                    +

                                    Very brief introduction to the topic.

                                    +

                                    Requires-expressions are compile-time predicates which evaluate to true when their specified set of expressions are all valid for a given set of inputs.

                                    +

                                    7.8.1 Foundational: Writing requires-expressions

                                    +

                                    7.8.1.1 Background/Required Knowledge

                                    +

                                    A student is able to:

                                      -
                                    • Allows clearer expression of intent in C++.
                                    • -
                                    • std::string: "Hello, world!"s
                                    • -
                                    • std::chrono: 3h + 10min + 5s
                                    • +
                                    • Write and use a function template [Compile-time programming: function templates]
                                    • +
                                    • Differentiate between expressions and statements
                                    -

                                    7.6.3 Topic introduction

                                    -

                                    Very brief introduction to the topic.

                                    +

                                    It is helpful if:

                                      -
                                    • Explain the existence of user defined literals. Example: 12min + 17s is terse, expressive and type safe.
                                    • +
                                    • The student is aware that attempting to specialize the template with types or values which do not match otherwise unstated assumptions will cause errors within the template.
                                    -

                                    7.6.4 Foundational: Using UDLs

                                    -

                                    7.6.4.1 Background/Required Knowledge

                                    -

                                    A student: * knows how to form numeric literals, e.g., 1.5f means a float of value 1.5. * is familiar with the major C++ types: * bool (Boolean type) * int (Integer type) * double (Floating-point type) * std::string (Text type) * std::vector (Collection type) * knows that namespaces exist, and namespace std. * knows what using-declarations and using-directives are. [C++ object model: declarations]

                                    -

                                    7.6.4.2 Student outcomes

                                    +

                                    7.8.1.2 Student outcomes

                                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                    A student should be able to:

                                      -
                                    1. use using namespace std::string_literals[1].
                                    2. -
                                    3. recognise UDLs in code that they are reading.
                                    4. -
                                    5. figure out which UDL definitions for a used type exist.
                                    6. -
                                    7. identify parts of the standard library that make use of UDLs.
                                    8. -
                                    9. prevent the dangers of temporaries created with "blah"s as well as with std::string{"blah"}.
                                    10. -
                                    11. effectively selects the right set of namespaces in using-directives from the sub-namespaces std::literals.
                                    12. +
                                    13. Write a simple-requirement to assert the validity of an expression
                                    14. +
                                    15. Write a type-requirement to check the existence of a type by its identifier
                                    16. +
                                    17. Write a compound-requirement to test the resulting type of an expression
                                    18. +
                                    19. Write a nested-requirement to test the constexpr value of an operation, as opposed to just the syntactic validity
                                    20. +
                                    21. Use a requires-expression within a concept, requires-clause, or if constexpr condition
                                    -

                                    [1]: explain that it’s okay to use a using-directive to “activate” UDLs.

                                    -

                                    7.6.4.3 Caveats

                                    +

                                    7.8.1.3 Caveats

                                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                    +

                                    To require that expressions, which evaluate to a boolean value like sizeof(t) == 4, evaluate to true a nested-requirement is needed (e.g., requires sizeof(t) == 4;). Omitting the requires results in a simple-requirement, which is satisfied based purely on syntactic validity, not on the result of the operation.

                                    +

                                    7.8.1.4 Points to cover

                                    +

                                    This section lists important details for each point.

                                      -
                                    • A student gets confused by the similarities and differences between built-in suffixes and UDLs and between UDLs from different namespaces.
                                    • -
                                    • A student “activates” two suffixes with the same signature from different namespaces.
                                    • +
                                    • All requires-expression requirements terminate with a semicolon.
                                    • +
                                    • simple-requirements are used to check that an expression is well-formed.
                                    • +
                                    • nested-requirements are introduced with requires and primarily used to check the result of an expression computable by the compiler, including concepts or other requires-expressions.
                                    • +
                                    • type-requirements are introduced with typename and used to verify the existence of a type with a particular identifier.
                                    • +
                                    • compound-requirements are enclosed in braces and can be used to check the resulting type of an expression.
                                    • +
                                    • Checks are performed by the compiler, not at run time.
                                    • +
                                    • If covering usage of requires-expression with requires-clause, [Compile-time programming: requires clause] demonstrate requires requires and show how to ever avoid writing it by using a concept. [Compile-time programming: concepts]
                                    -

                                    7.6.4.4 Points to cover

                                    -

                                    This section lists important details for each point.

                                    -

                                    7.6.5 Main: implementing UDLs

                                    -

                                    7.6.5.1 Background/Required Knowledge

                                    +

                                    7.8.2 Main: Advanced requirements

                                    +

                                    7.8.2.1 Background/Required Knowledge

                                    • All of the above.
                                    • +
                                    • Knowledge of noexcept
                                    -

                                    7.6.5.2 Student outcomes

                                    +

                                    A student is able to:

                                    + +

                                    7.8.2.2 Student outcomes

                                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                    A student should be able to:

                                      -
                                    1. write a UDL operator of their own.
                                    2. -
                                    3. separate unrelated UDLs into distinct namespaces.
                                    4. +
                                    5. Write compound-requirements which test the noexceptness of an expression.
                                    6. +
                                    7. Use a concept as the target of a compound-requirement.
                                    -

                                    7.6.5.3 Caveats

                                    +

                                    7.8.2.3 Caveats

                                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                    -

                                    No caveats at present. #### Points to cover

                                    +

                                    7.8.2.4 Points to cover

                                    This section lists important details for each point.

                                    -

                                    No caveats at present. ### Advanced {#udl-advanced}

                                    -

                                    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                                    -

                                    See concepts.

                                    +
                                      +
                                    • Compound-requirements allow the optional ability to test whether an expression is marked as noexcept, by using a trailing noexcept keyword.
                                    • +
                                    + +
                                      +
                                    • If the return-type-requirement of a compound-requirement is a concept, that concept is given the resulting type as the first parameter, followed by the specified parameters in the compound-requirement. { ++x } -> C<int> would substitute C<decltype((++x)), int> and check that concept C is satisfied for those parameters.
                                    • +
                                    +

                                    7.8.3 Advanced

                                    8 License

                                    [NOTE: This license is copied verbatim from the C++ Core Guidelines.]

                                    Copyright (c) Standard C++ Foundation and its contributors
                                    
                                    From 0348017674d591826a47e61db5a43c158ff19daf Mon Sep 17 00:00:00 2001
                                    From: vulder 
                                    Date: Sun, 6 Nov 2022 14:50:04 +0000
                                    Subject: [PATCH 19/21] deploy: fd6fabbf9e46a3594f697efda937f1d75d8877d3
                                    
                                    ---
                                     0.0.19/guidelines.epub                        |  Bin 0 -> 34631 bytes
                                     0.0.19/html/images/cpp_logo.png               |  Bin 0 -> 23613 bytes
                                     0.0.19/html/index.html                        | 1941 +++++++++++++++++
                                     ...on_002dsafe-containers-and-edge-cases.html |   59 +
                                     ...anced-Special-cases-and-peculiarities.html |   59 +
                                     0.0.19/html_split/Advanced.html               |   60 +
                                     .../Background_002fRequired-Knowledge.html    |   64 +
                                     .../Background_002fRequired-knowledge.html    |   54 +
                                     ...ments-and-Control_002dFlow-Constructs.html |   61 +
                                     0.0.19/html_split/Building.html               |   57 +
                                     ...C_002b_002b-object-model-Declarations.html |   68 +
                                     .../C_002b_002b-object-model-Definitions.html |   68 +
                                     ...002b_002b-object-model-copy-semantics.html |   69 +
                                     0.0.19/html_split/Caveats.html                |   62 +
                                     0.0.19/html_split/Compilation-Model.html      |   62 +
                                     .../Compile_002dTime-Computation.html         |   57 +
                                     .../Context-and-Aim-of-This-Guide.html        |   76 +
                                     .../Contributing-to-This-Document.html        |   55 +
                                     0.0.19/html_split/Contributors.html           |   57 +
                                     ...ed-Information-for-Modules-and-Topics.html |   75 +
                                     0.0.19/html_split/Error-Handling.html         |   59 +
                                     .../Error-handling-Categories-of-errors.html  |   68 +
                                     .../Error-handling-Error-codes.html           |   79 +
                                     .../External-ie-Non-Standard-Libraries.html   |   56 +
                                     ...005fassert-with-a-constant-expression.html |   62 +
                                     .../Foundational-Categories-of-errors.html    |   61 +
                                     .../Foundational-Declaring-variables.html     |   61 +
                                     ...undational-Defining-variables-and-ODR.html |   61 +
                                     ...ng-error-codes-with-stderror_005fcode.html |   62 +
                                     ...dational-How-and-when-are-copies-made.html |   63 +
                                     ...ational-Standards-exception-hierarchy.html |   61 +
                                     .../html_split/Foundational-Using-UDLs.html   |   61 +
                                     ...ning-functions-with-default-arguments.html |   62 +
                                     ...onal-Writing-requires_002dexpressions.html |   60 +
                                     .../Functions-default-argument.html           |   67 +
                                     .../Functions-user_002ddefined-literals.html  |   65 +
                                     0.0.19/html_split/Functions.html              |   61 +
                                     .../Generic-Programming-Templates.html        |   61 +
                                     0.0.19/html_split/Glossary.html               |   58 +
                                     0.0.19/html_split/How-To-Contribute.html      |   89 +
                                     .../Inheritance-and-Class-Hierarchies.html    |   57 +
                                     0.0.19/html_split/License.html                |   99 +
                                     .../Main-Advanced-requirements.html           |   60 +
                                     .../Main-Contracts-and-static_005fassert.html |   61 +
                                     .../Main-Declarations-for-programs.html       |   61 +
                                     .../Main-Defining-for-programs.html           |   61 +
                                     ...signing-APIs-around-stderror_005fcode.html |   61 +
                                     .../html_split/Main-Exception-guarantees.html |   61 +
                                     ...ndling-different-categories-of-errors.html |   61 +
                                     ...ting-user_002ddefined-copy-operations.html |   62 +
                                     0.0.19/html_split/Main-implementing-UDLs.html |   59 +
                                     .../html_split/Main-implementing-_002a.html   |   62 +
                                     ..._002derror-handling-static_005fassert.html |   67 +
                                     .../Module-name-Requires-Expressions.html     |   59 +
                                     0.0.19/html_split/Motivation.html             |   57 +
                                     ...-Recent-Version-and-Alternate-Formats.html |   78 +
                                     .../Organization-of-This-Document.html        |   95 +
                                     0.0.19/html_split/Overview.html               |   61 +
                                     0.0.19/html_split/Points-to-cover.html        |   69 +
                                     0.0.19/html_split/Preprocessor.html           |   58 +
                                     .../References-on-Learning-Outcomes.html      |   71 +
                                     0.0.19/html_split/References.html             |   59 +
                                     0.0.19/html_split/Software-Design.html        |   56 +
                                     0.0.19/html_split/Standard-Library.html       |   57 +
                                     0.0.19/html_split/Student-outcomes.html       |   73 +
                                     .../Summary-of-Modules-and-Topics.html        |  100 +
                                     0.0.19/html_split/Testing-and-Debugging.html  |   59 +
                                     0.0.19/html_split/Tooling.html                |   57 +
                                     0.0.19/html_split/Topic-introduction.html     |   55 +
                                     0.0.19/html_split/Use-of-This-Document.html   |   58 +
                                     .../User_002dDefined-Types-Classes.html       |   69 +
                                     ...ed-to-C_002b_002b-Teaching-Guidelines.html |   69 +
                                     0.0.19/html_split/_0023advanced.html          |   40 +
                                     0.0.19/html_split/_0023advanced_002d1.html    |   40 +
                                     0.0.19/html_split/_0023advanced_002d2.html    |   40 +
                                     0.0.19/html_split/_0023advanced_002d3.html    |   40 +
                                     0.0.19/html_split/_0023advanced_002d4.html    |   40 +
                                     0.0.19/html_split/_0023advanced_002d5.html    |   40 +
                                     0.0.19/html_split/_0023advanced_002d6.html    |   40 +
                                     ...containers_002dand_002dedge_002dcases.html |   40 +
                                     ...l_002dcases_002dand_002dpeculiarities.html |   40 +
                                     ..._0023backgroundrequired_002dknowledge.html |   40 +
                                     ...ackgroundrequired_002dknowledge_002d1.html |   40 +
                                     ...ckgroundrequired_002dknowledge_002d10.html |   40 +
                                     ...ckgroundrequired_002dknowledge_002d11.html |   40 +
                                     ...ckgroundrequired_002dknowledge_002d12.html |   40 +
                                     ...ckgroundrequired_002dknowledge_002d13.html |   40 +
                                     ...ckgroundrequired_002dknowledge_002d14.html |   40 +
                                     ...ckgroundrequired_002dknowledge_002d15.html |   40 +
                                     ...ckgroundrequired_002dknowledge_002d16.html |   40 +
                                     ...ckgroundrequired_002dknowledge_002d17.html |   40 +
                                     ...ckgroundrequired_002dknowledge_002d18.html |   40 +
                                     ...ckgroundrequired_002dknowledge_002d19.html |   40 +
                                     ...ackgroundrequired_002dknowledge_002d2.html |   40 +
                                     ...ackgroundrequired_002dknowledge_002d3.html |   40 +
                                     ...ackgroundrequired_002dknowledge_002d4.html |   40 +
                                     ...ackgroundrequired_002dknowledge_002d5.html |   40 +
                                     ...ackgroundrequired_002dknowledge_002d6.html |   40 +
                                     ...ackgroundrequired_002dknowledge_002d7.html |   40 +
                                     ...ackgroundrequired_002dknowledge_002d8.html |   40 +
                                     ...ackgroundrequired_002dknowledge_002d9.html |   40 +
                                     ...d_002dcontrol_002dflow_002dconstructs.html |   40 +
                                     0.0.19/html_split/_0023building.html          |   40 +
                                     ...ject_002dmodel_002dcopy_002dsemantics.html |   40 +
                                     ...002dobject_002dmodel_002ddeclarations.html |   40 +
                                     ..._002dobject_002dmodel_002ddefinitions.html |   40 +
                                     0.0.19/html_split/_0023caveats.html           |   40 +
                                     0.0.19/html_split/_0023caveats_002d1.html     |   40 +
                                     0.0.19/html_split/_0023caveats_002d10.html    |   40 +
                                     0.0.19/html_split/_0023caveats_002d11.html    |   40 +
                                     0.0.19/html_split/_0023caveats_002d12.html    |   40 +
                                     0.0.19/html_split/_0023caveats_002d13.html    |   40 +
                                     0.0.19/html_split/_0023caveats_002d14.html    |   40 +
                                     0.0.19/html_split/_0023caveats_002d15.html    |   40 +
                                     0.0.19/html_split/_0023caveats_002d16.html    |   40 +
                                     0.0.19/html_split/_0023caveats_002d17.html    |   40 +
                                     0.0.19/html_split/_0023caveats_002d18.html    |   40 +
                                     0.0.19/html_split/_0023caveats_002d19.html    |   40 +
                                     0.0.19/html_split/_0023caveats_002d2.html     |   40 +
                                     0.0.19/html_split/_0023caveats_002d3.html     |   40 +
                                     0.0.19/html_split/_0023caveats_002d4.html     |   40 +
                                     0.0.19/html_split/_0023caveats_002d5.html     |   40 +
                                     0.0.19/html_split/_0023caveats_002d6.html     |   40 +
                                     0.0.19/html_split/_0023caveats_002d7.html     |   40 +
                                     0.0.19/html_split/_0023caveats_002d8.html     |   40 +
                                     0.0.19/html_split/_0023caveats_002d9.html     |   40 +
                                     .../_0023compilation_002dmodel.html           |   40 +
                                     ..._0023compile_002dtime_002dcomputation.html |   40 +
                                     ...and_002daim_002dof_002dthis_002dguide.html |   40 +
                                     ...ributing_002dto_002dthis_002ddocument.html |   40 +
                                     0.0.19/html_split/_0023contributors.html      |   40 +
                                     ...02dfor_002dmodules_002dand_002dtopics.html |   40 +
                                     .../html_split/_0023error_002dhandling.html   |   40 +
                                     ...ling_002dcategories_002dof_002derrors.html |   40 +
                                     ...rror_002dhandling_002derror_002dcodes.html |   40 +
                                     ...2e_002dnon_002dstandard_002dlibraries.html |   40 +
                                     ...ith_002da_002dconstant_002dexpression.html |   40 +
                                     ...onal_002dcategories_002dof_002derrors.html |   40 +
                                     ...ndational_002ddeclaring_002dvariables.html |   40 +
                                     ...efining_002dvariables_002dand_002dodr.html |   40 +
                                     ...dcodes_002dwith_002dstderror_005fcode.html |   40 +
                                     ..._002dwhen_002dare_002dcopies_002dmade.html |   40 +
                                     ...standards_002dexception_002dhierarchy.html |   40 +
                                     ...ns_002dwith_002ddefault_002darguments.html |   40 +
                                     .../_0023foundational_002dusing_002dudls.html |   40 +
                                     ...dwriting_002drequires_002dexpressions.html |   40 +
                                     0.0.19/html_split/_0023functions.html         |   40 +
                                     ...023functions_002ddefault_002dargument.html |   40 +
                                     ...ons_002duser_002ddefined_002dliterals.html |   40 +
                                     ...generic_002dprogramming_002dtemplates.html |   40 +
                                     0.0.19/html_split/_0023glossary.html          |   40 +
                                     .../_0023how_002dto_002dcontribute.html       |   40 +
                                     ...nce_002dand_002dclass_002dhierarchies.html |   40 +
                                     0.0.19/html_split/_0023license.html           |   40 +
                                     ...023main_002dadvanced_002drequirements.html |   40 +
                                     ...ntracts_002dand_002dstatic_005fassert.html |   40 +
                                     ...002ddeclarations_002dfor_002dprograms.html |   40 +
                                     ...ain_002ddefining_002dfor_002dprograms.html |   40 +
                                     ...apis_002daround_002dstderror_005fcode.html |   40 +
                                     ...0023main_002dexception_002dguarantees.html |   40 +
                                     ...rent_002dcategories_002dof_002derrors.html |   40 +
                                     .../_0023main_002dimplementing.html           |   40 +
                                     .../_0023main_002dimplementing_002dudls.html  |   40 +
                                     ...r_002ddefined_002dcopy_002doperations.html |   40 +
                                     ...or_002dhandling_002dstatic_005fassert.html |   40 +
                                     ...002dname_002drequires_002dexpressions.html |   40 +
                                     0.0.19/html_split/_0023motivation.html        |   40 +
                                     0.0.19/html_split/_0023motivation_002d1.html  |   40 +
                                     0.0.19/html_split/_0023motivation_002d2.html  |   40 +
                                     0.0.19/html_split/_0023motivation_002d3.html  |   40 +
                                     0.0.19/html_split/_0023motivation_002d4.html  |   40 +
                                     0.0.19/html_split/_0023motivation_002d5.html  |   40 +
                                     0.0.19/html_split/_0023motivation_002d6.html  |   40 +
                                     0.0.19/html_split/_0023motivation_002d7.html  |   40 +
                                     0.0.19/html_split/_0023motivation_002d8.html  |   40 +
                                     0.0.19/html_split/_0023motivation_002d9.html  |   40 +
                                     ...ion_002dand_002dalternate_002dformats.html |   40 +
                                     ...nization_002dof_002dthis_002ddocument.html |   40 +
                                     0.0.19/html_split/_0023overview.html          |   40 +
                                     0.0.19/html_split/_0023overview_002d1.html    |   40 +
                                     0.0.19/html_split/_0023overview_002d2.html    |   40 +
                                     0.0.19/html_split/_0023overview_002d3.html    |   40 +
                                     0.0.19/html_split/_0023overview_002d4.html    |   40 +
                                     0.0.19/html_split/_0023overview_002d5.html    |   40 +
                                     0.0.19/html_split/_0023overview_002d6.html    |   40 +
                                     0.0.19/html_split/_0023overview_002d7.html    |   40 +
                                     0.0.19/html_split/_0023overview_002d8.html    |   40 +
                                     0.0.19/html_split/_0023overview_002d9.html    |   40 +
                                     .../_0023points_002dto_002dcover.html         |   40 +
                                     .../_0023points_002dto_002dcover_002d1.html   |   40 +
                                     .../_0023points_002dto_002dcover_002d10.html  |   40 +
                                     .../_0023points_002dto_002dcover_002d11.html  |   40 +
                                     .../_0023points_002dto_002dcover_002d12.html  |   40 +
                                     .../_0023points_002dto_002dcover_002d13.html  |   40 +
                                     .../_0023points_002dto_002dcover_002d14.html  |   40 +
                                     .../_0023points_002dto_002dcover_002d15.html  |   40 +
                                     .../_0023points_002dto_002dcover_002d16.html  |   40 +
                                     .../_0023points_002dto_002dcover_002d17.html  |   40 +
                                     .../_0023points_002dto_002dcover_002d18.html  |   40 +
                                     .../_0023points_002dto_002dcover_002d2.html   |   40 +
                                     .../_0023points_002dto_002dcover_002d3.html   |   40 +
                                     .../_0023points_002dto_002dcover_002d4.html   |   40 +
                                     .../_0023points_002dto_002dcover_002d5.html   |   40 +
                                     .../_0023points_002dto_002dcover_002d6.html   |   40 +
                                     .../_0023points_002dto_002dcover_002d7.html   |   40 +
                                     .../_0023points_002dto_002dcover_002d8.html   |   40 +
                                     .../_0023points_002dto_002dcover_002d9.html   |   40 +
                                     0.0.19/html_split/_0023preprocessor.html      |   40 +
                                     0.0.19/html_split/_0023references.html        |   40 +
                                     ...nces_002don_002dlearning_002doutcomes.html |   40 +
                                     .../html_split/_0023software_002ddesign.html  |   40 +
                                     .../html_split/_0023standard_002dlibrary.html |   40 +
                                     .../html_split/_0023student_002doutcomes.html |   40 +
                                     .../_0023student_002doutcomes_002d1.html      |   40 +
                                     .../_0023student_002doutcomes_002d10.html     |   40 +
                                     .../_0023student_002doutcomes_002d11.html     |   40 +
                                     .../_0023student_002doutcomes_002d12.html     |   40 +
                                     .../_0023student_002doutcomes_002d13.html     |   40 +
                                     .../_0023student_002doutcomes_002d14.html     |   40 +
                                     .../_0023student_002doutcomes_002d15.html     |   40 +
                                     .../_0023student_002doutcomes_002d16.html     |   40 +
                                     .../_0023student_002doutcomes_002d17.html     |   40 +
                                     .../_0023student_002doutcomes_002d18.html     |   40 +
                                     .../_0023student_002doutcomes_002d19.html     |   40 +
                                     .../_0023student_002doutcomes_002d2.html      |   40 +
                                     .../_0023student_002doutcomes_002d3.html      |   40 +
                                     .../_0023student_002doutcomes_002d4.html      |   40 +
                                     .../_0023student_002doutcomes_002d5.html      |   40 +
                                     .../_0023student_002doutcomes_002d6.html      |   40 +
                                     .../_0023student_002doutcomes_002d7.html      |   40 +
                                     .../_0023student_002doutcomes_002d8.html      |   40 +
                                     .../_0023student_002doutcomes_002d9.html      |   40 +
                                     ...002dof_002dmodules_002dand_002dtopics.html |   40 +
                                     .../_0023testing_002dand_002ddebugging.html   |   40 +
                                     0.0.19/html_split/_0023tooling.html           |   40 +
                                     .../_0023topic_002dintroduction.html          |   40 +
                                     .../_0023topic_002dintroduction_002d1.html    |   40 +
                                     .../_0023topic_002dintroduction_002d2.html    |   40 +
                                     .../_0023topic_002dintroduction_002d3.html    |   40 +
                                     .../_0023topic_002dintroduction_002d4.html    |   40 +
                                     .../_0023topic_002dintroduction_002d5.html    |   40 +
                                     .../_0023topic_002dintroduction_002d6.html    |   40 +
                                     .../_0023topic_002dintroduction_002d7.html    |   40 +
                                     .../_0023topic_002dintroduction_002d8.html    |   40 +
                                     .../_0023topic_002dintroduction_002d9.html    |   40 +
                                     ..._0023use_002dof_002dthis_002ddocument.html |   40 +
                                     ...ser_002ddefined_002dtypes_002dclasses.html |   40 +
                                     ...dto_002dc_002dteaching_002dguidelines.html |   40 +
                                     0.0.19/html_split/index.html                  |  336 +++
                                     0.0.19/html_split/unknown_node.html           | 1588 ++++++++++++++
                                     latest/index.html                             |  341 ++-
                                     251 files changed, 15652 insertions(+), 26 deletions(-)
                                     create mode 100644 0.0.19/guidelines.epub
                                     create mode 100644 0.0.19/html/images/cpp_logo.png
                                     create mode 100644 0.0.19/html/index.html
                                     create mode 100644 0.0.19/html_split/Advanced-Exception_002dsafe-containers-and-edge-cases.html
                                     create mode 100644 0.0.19/html_split/Advanced-Special-cases-and-peculiarities.html
                                     create mode 100644 0.0.19/html_split/Advanced.html
                                     create mode 100644 0.0.19/html_split/Background_002fRequired-Knowledge.html
                                     create mode 100644 0.0.19/html_split/Background_002fRequired-knowledge.html
                                     create mode 100644 0.0.19/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html
                                     create mode 100644 0.0.19/html_split/Building.html
                                     create mode 100644 0.0.19/html_split/C_002b_002b-object-model-Declarations.html
                                     create mode 100644 0.0.19/html_split/C_002b_002b-object-model-Definitions.html
                                     create mode 100644 0.0.19/html_split/C_002b_002b-object-model-copy-semantics.html
                                     create mode 100644 0.0.19/html_split/Caveats.html
                                     create mode 100644 0.0.19/html_split/Compilation-Model.html
                                     create mode 100644 0.0.19/html_split/Compile_002dTime-Computation.html
                                     create mode 100644 0.0.19/html_split/Context-and-Aim-of-This-Guide.html
                                     create mode 100644 0.0.19/html_split/Contributing-to-This-Document.html
                                     create mode 100644 0.0.19/html_split/Contributors.html
                                     create mode 100644 0.0.19/html_split/Detailed-Information-for-Modules-and-Topics.html
                                     create mode 100644 0.0.19/html_split/Error-Handling.html
                                     create mode 100644 0.0.19/html_split/Error-handling-Categories-of-errors.html
                                     create mode 100644 0.0.19/html_split/Error-handling-Error-codes.html
                                     create mode 100644 0.0.19/html_split/External-ie-Non-Standard-Libraries.html
                                     create mode 100644 0.0.19/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html
                                     create mode 100644 0.0.19/html_split/Foundational-Categories-of-errors.html
                                     create mode 100644 0.0.19/html_split/Foundational-Declaring-variables.html
                                     create mode 100644 0.0.19/html_split/Foundational-Defining-variables-and-ODR.html
                                     create mode 100644 0.0.19/html_split/Foundational-Handling-error-codes-with-stderror_005fcode.html
                                     create mode 100644 0.0.19/html_split/Foundational-How-and-when-are-copies-made.html
                                     create mode 100644 0.0.19/html_split/Foundational-Standards-exception-hierarchy.html
                                     create mode 100644 0.0.19/html_split/Foundational-Using-UDLs.html
                                     create mode 100644 0.0.19/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html
                                     create mode 100644 0.0.19/html_split/Foundational-Writing-requires_002dexpressions.html
                                     create mode 100644 0.0.19/html_split/Functions-default-argument.html
                                     create mode 100644 0.0.19/html_split/Functions-user_002ddefined-literals.html
                                     create mode 100644 0.0.19/html_split/Functions.html
                                     create mode 100644 0.0.19/html_split/Generic-Programming-Templates.html
                                     create mode 100644 0.0.19/html_split/Glossary.html
                                     create mode 100644 0.0.19/html_split/How-To-Contribute.html
                                     create mode 100644 0.0.19/html_split/Inheritance-and-Class-Hierarchies.html
                                     create mode 100644 0.0.19/html_split/License.html
                                     create mode 100644 0.0.19/html_split/Main-Advanced-requirements.html
                                     create mode 100644 0.0.19/html_split/Main-Contracts-and-static_005fassert.html
                                     create mode 100644 0.0.19/html_split/Main-Declarations-for-programs.html
                                     create mode 100644 0.0.19/html_split/Main-Defining-for-programs.html
                                     create mode 100644 0.0.19/html_split/Main-Designing-APIs-around-stderror_005fcode.html
                                     create mode 100644 0.0.19/html_split/Main-Exception-guarantees.html
                                     create mode 100644 0.0.19/html_split/Main-Handling-different-categories-of-errors.html
                                     create mode 100644 0.0.19/html_split/Main-Implementing-user_002ddefined-copy-operations.html
                                     create mode 100644 0.0.19/html_split/Main-implementing-UDLs.html
                                     create mode 100644 0.0.19/html_split/Main-implementing-_002a.html
                                     create mode 100644 0.0.19/html_split/Meta_002derror-handling-static_005fassert.html
                                     create mode 100644 0.0.19/html_split/Module-name-Requires-Expressions.html
                                     create mode 100644 0.0.19/html_split/Motivation.html
                                     create mode 100644 0.0.19/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html
                                     create mode 100644 0.0.19/html_split/Organization-of-This-Document.html
                                     create mode 100644 0.0.19/html_split/Overview.html
                                     create mode 100644 0.0.19/html_split/Points-to-cover.html
                                     create mode 100644 0.0.19/html_split/Preprocessor.html
                                     create mode 100644 0.0.19/html_split/References-on-Learning-Outcomes.html
                                     create mode 100644 0.0.19/html_split/References.html
                                     create mode 100644 0.0.19/html_split/Software-Design.html
                                     create mode 100644 0.0.19/html_split/Standard-Library.html
                                     create mode 100644 0.0.19/html_split/Student-outcomes.html
                                     create mode 100644 0.0.19/html_split/Summary-of-Modules-and-Topics.html
                                     create mode 100644 0.0.19/html_split/Testing-and-Debugging.html
                                     create mode 100644 0.0.19/html_split/Tooling.html
                                     create mode 100644 0.0.19/html_split/Topic-introduction.html
                                     create mode 100644 0.0.19/html_split/Use-of-This-Document.html
                                     create mode 100644 0.0.19/html_split/User_002dDefined-Types-Classes.html
                                     create mode 100644 0.0.19/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html
                                     create mode 100644 0.0.19/html_split/_0023advanced.html
                                     create mode 100644 0.0.19/html_split/_0023advanced_002d1.html
                                     create mode 100644 0.0.19/html_split/_0023advanced_002d2.html
                                     create mode 100644 0.0.19/html_split/_0023advanced_002d3.html
                                     create mode 100644 0.0.19/html_split/_0023advanced_002d4.html
                                     create mode 100644 0.0.19/html_split/_0023advanced_002d5.html
                                     create mode 100644 0.0.19/html_split/_0023advanced_002d6.html
                                     create mode 100644 0.0.19/html_split/_0023advanced_002dexception_002dsafe_002dcontainers_002dand_002dedge_002dcases.html
                                     create mode 100644 0.0.19/html_split/_0023advanced_002dspecial_002dcases_002dand_002dpeculiarities.html
                                     create mode 100644 0.0.19/html_split/_0023backgroundrequired_002dknowledge.html
                                     create mode 100644 0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d1.html
                                     create mode 100644 0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d10.html
                                     create mode 100644 0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d11.html
                                     create mode 100644 0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d12.html
                                     create mode 100644 0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d13.html
                                     create mode 100644 0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d14.html
                                     create mode 100644 0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d15.html
                                     create mode 100644 0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d16.html
                                     create mode 100644 0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d17.html
                                     create mode 100644 0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d18.html
                                     create mode 100644 0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d19.html
                                     create mode 100644 0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d2.html
                                     create mode 100644 0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d3.html
                                     create mode 100644 0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d4.html
                                     create mode 100644 0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d5.html
                                     create mode 100644 0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d6.html
                                     create mode 100644 0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d7.html
                                     create mode 100644 0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d8.html
                                     create mode 100644 0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d9.html
                                     create mode 100644 0.0.19/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html
                                     create mode 100644 0.0.19/html_split/_0023building.html
                                     create mode 100644 0.0.19/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html
                                     create mode 100644 0.0.19/html_split/_0023c_002dobject_002dmodel_002ddeclarations.html
                                     create mode 100644 0.0.19/html_split/_0023c_002dobject_002dmodel_002ddefinitions.html
                                     create mode 100644 0.0.19/html_split/_0023caveats.html
                                     create mode 100644 0.0.19/html_split/_0023caveats_002d1.html
                                     create mode 100644 0.0.19/html_split/_0023caveats_002d10.html
                                     create mode 100644 0.0.19/html_split/_0023caveats_002d11.html
                                     create mode 100644 0.0.19/html_split/_0023caveats_002d12.html
                                     create mode 100644 0.0.19/html_split/_0023caveats_002d13.html
                                     create mode 100644 0.0.19/html_split/_0023caveats_002d14.html
                                     create mode 100644 0.0.19/html_split/_0023caveats_002d15.html
                                     create mode 100644 0.0.19/html_split/_0023caveats_002d16.html
                                     create mode 100644 0.0.19/html_split/_0023caveats_002d17.html
                                     create mode 100644 0.0.19/html_split/_0023caveats_002d18.html
                                     create mode 100644 0.0.19/html_split/_0023caveats_002d19.html
                                     create mode 100644 0.0.19/html_split/_0023caveats_002d2.html
                                     create mode 100644 0.0.19/html_split/_0023caveats_002d3.html
                                     create mode 100644 0.0.19/html_split/_0023caveats_002d4.html
                                     create mode 100644 0.0.19/html_split/_0023caveats_002d5.html
                                     create mode 100644 0.0.19/html_split/_0023caveats_002d6.html
                                     create mode 100644 0.0.19/html_split/_0023caveats_002d7.html
                                     create mode 100644 0.0.19/html_split/_0023caveats_002d8.html
                                     create mode 100644 0.0.19/html_split/_0023caveats_002d9.html
                                     create mode 100644 0.0.19/html_split/_0023compilation_002dmodel.html
                                     create mode 100644 0.0.19/html_split/_0023compile_002dtime_002dcomputation.html
                                     create mode 100644 0.0.19/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html
                                     create mode 100644 0.0.19/html_split/_0023contributing_002dto_002dthis_002ddocument.html
                                     create mode 100644 0.0.19/html_split/_0023contributors.html
                                     create mode 100644 0.0.19/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html
                                     create mode 100644 0.0.19/html_split/_0023error_002dhandling.html
                                     create mode 100644 0.0.19/html_split/_0023error_002dhandling_002dcategories_002dof_002derrors.html
                                     create mode 100644 0.0.19/html_split/_0023error_002dhandling_002derror_002dcodes.html
                                     create mode 100644 0.0.19/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html
                                     create mode 100644 0.0.19/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html
                                     create mode 100644 0.0.19/html_split/_0023foundational_002dcategories_002dof_002derrors.html
                                     create mode 100644 0.0.19/html_split/_0023foundational_002ddeclaring_002dvariables.html
                                     create mode 100644 0.0.19/html_split/_0023foundational_002ddefining_002dvariables_002dand_002dodr.html
                                     create mode 100644 0.0.19/html_split/_0023foundational_002dhandling_002derror_002dcodes_002dwith_002dstderror_005fcode.html
                                     create mode 100644 0.0.19/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html
                                     create mode 100644 0.0.19/html_split/_0023foundational_002dstandards_002dexception_002dhierarchy.html
                                     create mode 100644 0.0.19/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html
                                     create mode 100644 0.0.19/html_split/_0023foundational_002dusing_002dudls.html
                                     create mode 100644 0.0.19/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html
                                     create mode 100644 0.0.19/html_split/_0023functions.html
                                     create mode 100644 0.0.19/html_split/_0023functions_002ddefault_002dargument.html
                                     create mode 100644 0.0.19/html_split/_0023functions_002duser_002ddefined_002dliterals.html
                                     create mode 100644 0.0.19/html_split/_0023generic_002dprogramming_002dtemplates.html
                                     create mode 100644 0.0.19/html_split/_0023glossary.html
                                     create mode 100644 0.0.19/html_split/_0023how_002dto_002dcontribute.html
                                     create mode 100644 0.0.19/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html
                                     create mode 100644 0.0.19/html_split/_0023license.html
                                     create mode 100644 0.0.19/html_split/_0023main_002dadvanced_002drequirements.html
                                     create mode 100644 0.0.19/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html
                                     create mode 100644 0.0.19/html_split/_0023main_002ddeclarations_002dfor_002dprograms.html
                                     create mode 100644 0.0.19/html_split/_0023main_002ddefining_002dfor_002dprograms.html
                                     create mode 100644 0.0.19/html_split/_0023main_002ddesigning_002dapis_002daround_002dstderror_005fcode.html
                                     create mode 100644 0.0.19/html_split/_0023main_002dexception_002dguarantees.html
                                     create mode 100644 0.0.19/html_split/_0023main_002dhandling_002ddifferent_002dcategories_002dof_002derrors.html
                                     create mode 100644 0.0.19/html_split/_0023main_002dimplementing.html
                                     create mode 100644 0.0.19/html_split/_0023main_002dimplementing_002dudls.html
                                     create mode 100644 0.0.19/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html
                                     create mode 100644 0.0.19/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html
                                     create mode 100644 0.0.19/html_split/_0023module_002dname_002drequires_002dexpressions.html
                                     create mode 100644 0.0.19/html_split/_0023motivation.html
                                     create mode 100644 0.0.19/html_split/_0023motivation_002d1.html
                                     create mode 100644 0.0.19/html_split/_0023motivation_002d2.html
                                     create mode 100644 0.0.19/html_split/_0023motivation_002d3.html
                                     create mode 100644 0.0.19/html_split/_0023motivation_002d4.html
                                     create mode 100644 0.0.19/html_split/_0023motivation_002d5.html
                                     create mode 100644 0.0.19/html_split/_0023motivation_002d6.html
                                     create mode 100644 0.0.19/html_split/_0023motivation_002d7.html
                                     create mode 100644 0.0.19/html_split/_0023motivation_002d8.html
                                     create mode 100644 0.0.19/html_split/_0023motivation_002d9.html
                                     create mode 100644 0.0.19/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html
                                     create mode 100644 0.0.19/html_split/_0023organization_002dof_002dthis_002ddocument.html
                                     create mode 100644 0.0.19/html_split/_0023overview.html
                                     create mode 100644 0.0.19/html_split/_0023overview_002d1.html
                                     create mode 100644 0.0.19/html_split/_0023overview_002d2.html
                                     create mode 100644 0.0.19/html_split/_0023overview_002d3.html
                                     create mode 100644 0.0.19/html_split/_0023overview_002d4.html
                                     create mode 100644 0.0.19/html_split/_0023overview_002d5.html
                                     create mode 100644 0.0.19/html_split/_0023overview_002d6.html
                                     create mode 100644 0.0.19/html_split/_0023overview_002d7.html
                                     create mode 100644 0.0.19/html_split/_0023overview_002d8.html
                                     create mode 100644 0.0.19/html_split/_0023overview_002d9.html
                                     create mode 100644 0.0.19/html_split/_0023points_002dto_002dcover.html
                                     create mode 100644 0.0.19/html_split/_0023points_002dto_002dcover_002d1.html
                                     create mode 100644 0.0.19/html_split/_0023points_002dto_002dcover_002d10.html
                                     create mode 100644 0.0.19/html_split/_0023points_002dto_002dcover_002d11.html
                                     create mode 100644 0.0.19/html_split/_0023points_002dto_002dcover_002d12.html
                                     create mode 100644 0.0.19/html_split/_0023points_002dto_002dcover_002d13.html
                                     create mode 100644 0.0.19/html_split/_0023points_002dto_002dcover_002d14.html
                                     create mode 100644 0.0.19/html_split/_0023points_002dto_002dcover_002d15.html
                                     create mode 100644 0.0.19/html_split/_0023points_002dto_002dcover_002d16.html
                                     create mode 100644 0.0.19/html_split/_0023points_002dto_002dcover_002d17.html
                                     create mode 100644 0.0.19/html_split/_0023points_002dto_002dcover_002d18.html
                                     create mode 100644 0.0.19/html_split/_0023points_002dto_002dcover_002d2.html
                                     create mode 100644 0.0.19/html_split/_0023points_002dto_002dcover_002d3.html
                                     create mode 100644 0.0.19/html_split/_0023points_002dto_002dcover_002d4.html
                                     create mode 100644 0.0.19/html_split/_0023points_002dto_002dcover_002d5.html
                                     create mode 100644 0.0.19/html_split/_0023points_002dto_002dcover_002d6.html
                                     create mode 100644 0.0.19/html_split/_0023points_002dto_002dcover_002d7.html
                                     create mode 100644 0.0.19/html_split/_0023points_002dto_002dcover_002d8.html
                                     create mode 100644 0.0.19/html_split/_0023points_002dto_002dcover_002d9.html
                                     create mode 100644 0.0.19/html_split/_0023preprocessor.html
                                     create mode 100644 0.0.19/html_split/_0023references.html
                                     create mode 100644 0.0.19/html_split/_0023references_002don_002dlearning_002doutcomes.html
                                     create mode 100644 0.0.19/html_split/_0023software_002ddesign.html
                                     create mode 100644 0.0.19/html_split/_0023standard_002dlibrary.html
                                     create mode 100644 0.0.19/html_split/_0023student_002doutcomes.html
                                     create mode 100644 0.0.19/html_split/_0023student_002doutcomes_002d1.html
                                     create mode 100644 0.0.19/html_split/_0023student_002doutcomes_002d10.html
                                     create mode 100644 0.0.19/html_split/_0023student_002doutcomes_002d11.html
                                     create mode 100644 0.0.19/html_split/_0023student_002doutcomes_002d12.html
                                     create mode 100644 0.0.19/html_split/_0023student_002doutcomes_002d13.html
                                     create mode 100644 0.0.19/html_split/_0023student_002doutcomes_002d14.html
                                     create mode 100644 0.0.19/html_split/_0023student_002doutcomes_002d15.html
                                     create mode 100644 0.0.19/html_split/_0023student_002doutcomes_002d16.html
                                     create mode 100644 0.0.19/html_split/_0023student_002doutcomes_002d17.html
                                     create mode 100644 0.0.19/html_split/_0023student_002doutcomes_002d18.html
                                     create mode 100644 0.0.19/html_split/_0023student_002doutcomes_002d19.html
                                     create mode 100644 0.0.19/html_split/_0023student_002doutcomes_002d2.html
                                     create mode 100644 0.0.19/html_split/_0023student_002doutcomes_002d3.html
                                     create mode 100644 0.0.19/html_split/_0023student_002doutcomes_002d4.html
                                     create mode 100644 0.0.19/html_split/_0023student_002doutcomes_002d5.html
                                     create mode 100644 0.0.19/html_split/_0023student_002doutcomes_002d6.html
                                     create mode 100644 0.0.19/html_split/_0023student_002doutcomes_002d7.html
                                     create mode 100644 0.0.19/html_split/_0023student_002doutcomes_002d8.html
                                     create mode 100644 0.0.19/html_split/_0023student_002doutcomes_002d9.html
                                     create mode 100644 0.0.19/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html
                                     create mode 100644 0.0.19/html_split/_0023testing_002dand_002ddebugging.html
                                     create mode 100644 0.0.19/html_split/_0023tooling.html
                                     create mode 100644 0.0.19/html_split/_0023topic_002dintroduction.html
                                     create mode 100644 0.0.19/html_split/_0023topic_002dintroduction_002d1.html
                                     create mode 100644 0.0.19/html_split/_0023topic_002dintroduction_002d2.html
                                     create mode 100644 0.0.19/html_split/_0023topic_002dintroduction_002d3.html
                                     create mode 100644 0.0.19/html_split/_0023topic_002dintroduction_002d4.html
                                     create mode 100644 0.0.19/html_split/_0023topic_002dintroduction_002d5.html
                                     create mode 100644 0.0.19/html_split/_0023topic_002dintroduction_002d6.html
                                     create mode 100644 0.0.19/html_split/_0023topic_002dintroduction_002d7.html
                                     create mode 100644 0.0.19/html_split/_0023topic_002dintroduction_002d8.html
                                     create mode 100644 0.0.19/html_split/_0023topic_002dintroduction_002d9.html
                                     create mode 100644 0.0.19/html_split/_0023use_002dof_002dthis_002ddocument.html
                                     create mode 100644 0.0.19/html_split/_0023user_002ddefined_002dtypes_002dclasses.html
                                     create mode 100644 0.0.19/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html
                                     create mode 100644 0.0.19/html_split/index.html
                                     create mode 100644 0.0.19/html_split/unknown_node.html
                                    
                                    diff --git a/0.0.19/guidelines.epub b/0.0.19/guidelines.epub
                                    new file mode 100644
                                    index 0000000000000000000000000000000000000000..4abe763f895b976c59f3fc389beba5d7048d675d
                                    GIT binary patch
                                    literal 34631
                                    zcmZs>bBw3Kv*Mne`
                                    zs}yBG!O(y}pn!mcTuoK&46A6-fPjGhkNlegvazrMID6Ow4DIc$EsPDFE$nO=0QN3M
                                    zG@cgrivRygsQ+4tRHJxT{cpv`Kf(AXa$>)Q=%nPu8I0|0oeeE)0gm+UHrBea{V)TJ
                                    zNTN5sVyjh4r*gt7LUT=!AHYmomW*rga@6lHrF>|2oQ!tcOJQ!e`ynEZve>R!bWo&|
                                    zIYnKe&z`l<_U39WfQb=g1ivj|l?6tG;#JZ#vax5Y#G{%8`O7Jh}Ky_4rYoN%!z?$`4jIonJ&y
                                    zTvms1WvP>4$FTpYpPTFJg4;j6^8X3lf9hvL|9`dzKyP7WXJ_R^Z(`wOZ*Ay7XJ`L^
                                    zw#(_i)Q)LD7$8IveDNJV5>Jxe!u7ZH4VWpV3hOAw1)E#?^Q(rwmVx2s%mE&jm-1Jv
                                    z(QQ2elH~EJhAjlciHhIQyz9Dy)Z}CL$nPu-Ysh?@a{gl=W^m^AK@J;lr`~4L%r%yd
                                    zZHWqSn`yTNODBG;r;Fy8_n&T{|J0yDc9sts6bQ%`76=IGp9W%zs>1(uIsjW|dOLg5
                                    zlGI7Z4MMcg7ay2V+x2lts5k7GBU)yg(kl8y+s<(VL3Y%wNJXPRK8TVLhn&*c^U@%`
                                    zy-s`fnz~m_XnfMT6~u8&PoU8zGq45sHqk$uUyrG;mR|r>=I_4NMiu#Ll;dO7Xt$AM
                                    zWFiFxgDBqToh&wY9-}SjnpRyZr(_x3P9mAlUi1xdpYq^
                                    zBR=d5yUWC5zk2Bm;Harlwq!Oc+B_j%d^^d*(ayxyr;0Z`aQEp~uv!MIEaM=y0!hDq
                                    zHl0-tw*)u^a|#xxI`X;7f;f7>4S}dBoj-hk5j}gcs6e+%%|m%@O8AgCsdZDjJ2YbH
                                    zHfy@QofOwgDf6z;Ob~p|Jvx_>i+7PMHBYmZ);oMWppuY}l8Uu6Df-4>Z|-S0#F)!4
                                    zEI{^=vNhzdAyO!Qi5}yhqD6BIQK8qr(=CHrOUXwY*f0h@R}lJ{3?Q{+EMg4bt%IE&
                                    zUZ@bK8+98yD@@K-mJWg(o#isW4^P9&xmfCLcknuLRsyfyiL{B3jH3Vaf{5Iql`I`2
                                    z8S56K6h+<`kQrw)O_R{6R8`$(E}M$cRw`T_!`K$jR8j_2hIL036!W5H3TUgz#Wd)U
                                    zH8RubU}bdB9(u>kBV@-lP_^G=W}roS94iJUwdSj$a<6#}SPMD;w}c^c2{nwGp?$u8
                                    zw&tEApL7PS9lA9a{zT?M{~
                                    zX-P7k)T@Borh5Sj)>(7h;KcB`sS~u&TSzJ;i_9u+TugD7(gC!o
                                    zG%S3j2MS8=!~J4|_B^Z0gS9QBqXH3}doZ0KwMTHc=?8||eS9gS6h&m64kYErNv9|R
                                    zE@YDWB-G1+@13oS9^ZXI{F6O$XyNtOoz)S}$$xjAlLx07Yhx;OaCCGOl>l<>K`OB}
                                    z^haYcg6Gf;VQ+13caQ-pr1W=yq{R
                                    z|5c{@meyEGywxy{)<{-X7%nR|{3daJpm`h!{w3{f5nj7ZnhkM#93^zH&RuLaiPyA7
                                    zLL8DH;uh6!H;z|p&UqHKY%ue(A}`*fPgo0m=oIzi7Hf5$G29|FRVwlrEs3q$(fRxP
                                    z>#V-Lh_dMG)FPU|_O6r~oW7S_Xi9N65B?n1n3eKJciTSb7i+a&d}T+w&ueG+VkFsw
                                    zvLpNM3j&tJi!rF({-MQmq5Vg1C|h|R2zwkT`}|hm9^oxDQv@3s(O-(`7zpvFPaJ=OgKSIUvQAxa%5l#5;{gq
                                    z)l^LX{ysJcV@;!YAHIWwIrM7+2X^|-*&?X2+3Yc!{S%^70)=#sM(FTL_IC8F
                                    zYT7K+h>6CiU_-Gr_^hDU9wFFk`k>Ik2xw#so4|T&lzgGVw6PaMfynRAR`|PR8UZLz
                                    zVi?cp-csiz@?cZVM9aPpRq*TIXtg2ydvKZX(|H`MAMo6HKZ*mpaRLtM4+Qji>{N;Y
                                    z82(XS5a%<-7~jWxzbOS#u+bRAKp?@^c{zTOtu*rdj8VgUh@2$?K`ImBn3y8b0
                                    z4z!>^%OnS@M+XG94S};fJDe9~82~qYR|7wN#h_T;>HP(p
                                    zW{CC<-v+06Jmh$UbpFGZq)$WbnfR<66K!v29Xnsf3+2NH{BU+G3|;$gLW@y&8b)9m
                                    za34s2zbuXT+=24gU>|3>Za|MJm%;U?O9dvn!9LHD`;=d^Q6gK}eOj}Af#~2xz-zS7
                                    z*dRct9x~q09X}AOJ$ABz-EGV}P$X;Zg<9TMH3`|;YX88C>_PzJ(w6V~Yv+%I)SkG~
                                    zP|Xiqg2_WPGxlEk)or3BLmifhZLW4c;-IZtGo*i8KIm%~WF|k@;~m@B7h@cVT;;xA
                                    z;MRELAQ&zeh;cXx2JdAHMHbi%zmIIZ
                                    zfaKW4Xe@$(@pixCySP6;58GvoHnP-GkYDueU%mve9=?aORiW|eBdWFzjOxy1+(KcBP
                                    zr0L~ffTp*UdUd^@Mcx=sX|R|t4G2}vHQWq$9gNfGFExxiH1DpduUbrWL|DN$JOTa^USn&}X+5vF5B0;fsZ=th
                                    z1+Z49&e^H7AvT-{{|FOAT7-3?09uuOhZgMSU8=h1UeWu46njeGaGKL4^wl3uS(5K&
                                    zF%KbsGLxC%Vf0hYl8++HJL!&CFY(#7lw+x>j16C^&(2wkO-U{}R-9e5luP@!=O3ML
                                    z?|*w_P@OUvSOvdnalYbJ7Eh-+%GK?P5xZmsG?eg$ZJB%D1rVUBVQ=SAhhQY?PW6xg
                                    zB(1+Dz7r#DbKJoG*tpNRPw$7WOb&d%Px4WmSAK%qgta&?PvExpPxNBmm+~{FEuBSX!!IyU*1o6RbKFvD-ezWGZE3
                                    zY!AEmipm{cuk7*-gLTOU>Xe`kYT5nd%H#*e)
                                    zH*{7|gnuPX@I1blTZpjq1ima`v0mki{wE8{sk#;*ObF2|%*bmQYeA``M0O|`Qmb1%a|+#&5kzv}!RvlQX@yVN0!y>hO~^TmsAPI3T_6kn&-d;h%YFI3
                                    zTPsfP%Atnq?^C1d5>AB#fAq{4U3UrJ4_2l6OZfF=KR#N^dTYm$8j)3QSA52|MKc1E
                                    zh0+5PE>xbAEo6%?`_MXP+LHPH8A%hIN^itj$@MZ$0JCTw)D{{K;>xmoZ_bz84@FJZ
                                    zSSDl>O4nrQ0`({rMD%*9o%2#_L~#b=XibY1JRQlPj27+=u%fw^?@G~kWa{MlqtddC
                                    zA;mxwJW_of-zAr+bIL89mA8QRyp;u0Q#WBz?FgY9owu2{W>olM&X~;%=99Tg*~C0m
                                    z8;9{y(_hsSqBcC^#}QNYoU~1Z==oeSq)`>g1PUp0iI%ht7beSU8{@q%gN|aVFv<6$
                                    zwGzm5X)KidwZUtYO6p6VzmS|T+3~DG9KZz*rJk#^#YU*9C1d!1n9*1Bxwdj+notD>
                                    zILqqd1}t7E3Jt&!hyoFkZiurewC5u0FpO+p9`P;4K+F&W^gnRPHCvmC^e`=aW|k|d
                                    z#j#8JGK3BKd*_AK$E>W#qMbIU;8(!$b^tu+yaj!SAGxhi$nD!Wk&8yverYU;qPoYQ
                                    z&w?EJu&`Cw(Z!WQXYM%tbztN>7*Fbn-)SoE+2n7fT=P_*$Dfz5d3id+ZhWi~gEn!|
                                    zi-O+`)tef36ImpA%p`O)ClcDoL8_{0C(-Dtuy&*jwUI&h@^AA&1mBSVNsP?nvox9i
                                    zh>@Qg2ngYSh|$*2mEPUl*~U6Yd*dH7qWH|J8?d#gW=tzKUZ;)aN?V^O1L9N~m{mSl
                                    z!4u+x;Tf>wn=hrV{wRQw3Q3XghJG3;5qBZ_^OxZeGX6XI2nrG*>v1_*GxNvuE)%IMpp*CDQ
                                    zmn~YHC~YrN+h#V{^zybRL2jgUwz;{oUz2V$lhrU|>vR*F;5S60_=$*3G(M>1)&N1A
                                    zEeQ;>8lBXzMP=k`5^D`9>_-pV-=vNR?W=Q`@xrbRk7h&C9x};{QzM)7m;VWPPMGAd
                                    zJI>k1@NmlH3yC&S&}PhO7_B}iLqS*anbRiqYSh2jTt(3S6`MO9QR(+LMj#tF%t3D
                                    zgIrtZ?eCkmOOoa@y{V-5S0cH^3DL2ZhU4?PxB3=k9z1F=7
                                    z$oT{bBx?KNZb~T@1x9_nG}2o_|NIwbawC`^czfbZA>64WdsRZ^<4LA_ld6o{eO@i*
                                    z`OZ_}zXQ6z4r}kFFm{u4Quxj6$H(Y6$@EiH?!ESs{Z;O39i{ov5w~r{TnE{xy&);*wDD;
                                    zzToHD6Rh!-#&Q}E|ArSI*(>wxZ)?&rf9%Vb-vC(2FcA)GVUFqnwQ7s0A2ls|qcnII
                                    z&g(Vdm#uQ>t#Z+{VQIBj&|kB}lVdU7YR1OFypcZg2an6^6=#h3G?}~1
                                    zTF(g>6j+V;j2XK`tr;4t%{c_PaBeQ*?ddk4n^feVGTpx`^G_}0#b9EWbPn8NMG2`K
                                    zIdvNbnz24>GC|x6-A9OEkrEm+JDIUoHeN@AV~oGXlTK;hhF3)Kszft^m?!VU0ImNN
                                    z-~TAB_-;ZjkXi{9NuFO{fJfz1PFRC3ly{&+2lo5l18khF&=)^&
                                    zn#FT0=7R~L%Av;K^#^tZu=uo>@33z)Cl8*As8xjTGut#je%<4YnS>mlpv2Ol)KtEG
                                    zAH&2*!k&C&hXvHU)Kqr#c`bEz7*tF=CI+cnXVm@0c;TzMr@Ows4a#4(OCW7^ztC*C
                                    z!QU~e@qHPm-cah#@1UBZwH(bMwGN%5^f^Eg25RDrkLx>dP%@Nxxjj3y6oy??wZLjt
                                    z)>cc3OtOs9E3%Ds0q^h;9@wB^*zP8Zm}n+VTpo^=WFZA0%c3QeV-GhAr}W7l2Q=Yf
                                    zYsOsFdM{zB$J}dj#U@4zlp~CGt&sLEBjV(6M4BJzfWro(E|CgdcLkJt(8a|2kcczJ
                                    zbaoP8ZYyJ`yCb;(lKQ6fpTI(PU%{4B;MTT6`&p5ppjw6Wq(rAx>h+37@cp9a6xN{TCD)X7P7G%Ji#EUV&T{6LaHkebI}?(v<{p6dMXjgn6|
                                    zB^?+Q=qp~cQ?{zi_nkbKOV=FKFH9}Vk&pb#!$f;vGV_Q7rZ4jhM$E}ogF{0PnY??+6
                                    zM-De!ab}0UlimnqWeSUpe!Ee;hjV~6p&AR)PTks`z{cFdYMo$siwXmcRi7-NrDH}I
                                    z19ZC@AU;-RNbvfJ`&RJA~t2`BC$Lw*TENsFl-rn^f1QDOWAw5q(!5qj|DFfmq;z9IHvzAGdm
                                    zY;?)7uT%#iJ)y(f&RGfbyNQwaru+s;nz0_HM=g*an_3SVLQQu^1qAYhUfLk#0)oum
                                    z-ysr3gY1padb9F7AmTHPH5u3>f}rtWEmZOC7}YnHW#G}MrU6UML%=#z2AYX86{3Yz
                                    z_N!WQnZZ8)Y&e_^85hK5Ii{bglc~8hkQb_9+ePB+=wfXTjQS8uHdk1-fU&u)I;hwR1!aazWvyW5g-(*hcsXb~)ffQPAi84yB?iQxXuK2M=iZ?jzZMjBKRlE|YpFcM%A`6J?`L9d{MM!mH#QA#M@}Qaqylfst
                                    zvqLRoo<7b1ZW6B;-Htu3HfDfh(qajsha(N|Er;%F{z20xs|Y6xu|e6mQx#nHgrixqw2}@g=ornzf$n{8US;)
                                    zUbX_d8hAK+NMU({(GB!@IbxYg2(ccw;H+`fb0GLBHL;X=lc;qddjz}jj3&oy4R*EX
                                    z??<)X*AnLGOYcOrHu|M+7P#ycjewXRkfPTGaJ1TN3MqDO0L`kTVb%!
                                    zBHlPtk?$}v6?KSOMGK1d_czzpM&R#1l?(CR$+hX+=|GAZlq&-o^`^tx)oD%VL)3@T
                                    zB;C|}p8V6R+zB{!hq*dWB-}?UB)-{B3@xf1JZ<%nlD()pC49r6LuNbBtxK+V*YUm-
                                    zwdk#|v8eYqhao+LQ*s1A!4Bi=NHlW!daFPEo6lw0cxD>9@L=98M#8zxw|Kj9H82c&
                                    zTsQJugL0*ET8uVmZ&DGIhx}10hi3>mXSR`L(K&OJTZ;#SsOCBI6<3ZoN<|Ok4WaVh
                                    zzK)e#HVs!0o$$z7t}Y4t0L
                                    zx^_?f8B3_L*GOquGJHFe6G5iKXOu2L@bLO>R|Fvx_e!1%qn66%srRIDpyP5x?~2+!
                                    ztJBp$Og`?u(ez-dQRT1n3Ws-u26rA+uXXZN1L+uH=mlAoDp8$YzRD7}v9X7`w1>4I
                                    zRAEPVQsCwF^HkB4oORT^Irr}RWt`ye=LG*ru|8Ebm{4@pMOTvOukyb^n~0aqYp<)-q?n!O4k!qBW-oWpuMUb@r9)Q&ufA;l%2
                                    zq;~9RA141Sfipbz!+)tUpj8RtcOBKBm-QL~yr=vM3(^Ww<`}naG5Rbc)k3=lf^?x8
                                    z1gLdQ7@On#@Z0Y7duPRrWFROW8wj4RwVZptbZ{}uJ*s+OS%XTjn7xhx{ERV^=k@U)
                                    z2Fd6w=0_c?eqBzRqGF@jp8ZhEu{&b2?famF)1+1v?td>F*0@xeN`o@zCBl_HRMq&N
                                    zPKnf<({XH+N%2NSHSU=d6jIQ&u(iwd&x9ApjMP%P@OczBPGzMNNyiz+SE%kwbdwEp
                                    zL?|C_kaHfJt<|)%AqAd*G62MWYu5RtUQ@$8)cDQ&rs>52v8Q}6zXz^j@!dChBY5l$
                                    zqg~foDIqK3UZTOzOI_A6@r%wNg%oXQ#_-_Jd!G14<7E&;LQ=?eX0O^
                                    zip)Ag<$~El-sm{T*E!;U+QSS)2owc45RlZr+7ZtG*n^X^hc&>7;lDrT0DvHbi{(*ZA-{}IN4q4L2Rpe+e@OKFk!8!eCnB>BBf_(9f$%kEZqW|YXk>~}Z0#q>
                                    zJ39Z8lUUvHse;-Zw)ru`dra;eL17=6q9wIvE1oEZs=|ACQz8Txpi76Rwf(OdI(cvk
                                    z&#OG_S5M!rAQp+YqLJ6#-3l%rIEDCc{36xj4qJg|g}((Ua`v4&QVx{R!D&ig%moK}
                                    zn|r1$Bccyk*2tMK(7-T^T9FG8YWs!Imap{KM1fFZM
                                    z#bN95!$N1(Ly||;qN0@b7U{MJoRmW^`K8&V>pX+oF^bnH-gq^ColN+JUv)RPth*4n
                                    zg7Po;mUdt4$H{goy(r{TkY92@V}h#(t5>fQ?z0%
                                    zVm3WRACjlzQRwmU==O-Wew>ghch+zo7IU`hSyq9|u)sV|$bU-;m+-*0)SccxoXnPE
                                    zWOsvE$4kQ;tE+1Nh_&yf)^Ysv3zYEbV?5kF#{zg=GH=Fe-ZPxQ~R@w
                                    zJX1k>!@xO3@7nV?U}Tfl!T~EA^a=`-4Sxs{tQHD$N=G`rNINA~Upj|)9_Qy!O=((=
                                    zR#!_rcx3?MNZ>r+9SR^msOa{BQ>g@I-t-8ZgTpLWS6*CWy#{Tp7=T`5>=MtTZp@is
                                    zHR?1XJ%CnR1!WiwemV7eJ(d0h)?*3P+lV;kKo*ZJB6!Dw<$=`Neq^NOY0W62JLyyr
                                    zPGeEvt(CTkl;LnafxTR55R+%C_fDX)TAWL8X*{I%AY{OUNm*dc0lzi#q`1sI$CV
                                    z;&=X9?0BHI*z%rvccH^G9YA0N*=feubran~8G5+F>@j@*^H;!@e9mZ!KEJ&q-pqF8
                                    z%oL*fR}kyV^aDvvfupu%vvj+yq4C!aETwl)@5l5Y;-iiD
                                    zJ2f>MDAu`sm;QBd*>hj>vT;8N7WEG)=n0`>q@xbyCu|6>MjDzUumu-rP|X(RJnzWTSU<22WR>c;Ll_C;
                                    zm@*44um+^Zt)`uWOgWm=7^Mz>4WpF_pt0-toPj4H^(18R5PZLTJi`+(Im1=`=KbI<
                                    z)SH>nw0z10nAgL!R-8pI92^u)C+&do-LERmpYUL>x`3%cmEPeJfRn^ff%kfJ`+#~)
                                    za+`-&GqYN4}^JW4J2Xhi;oO3ku_Tf7pj%t|Cn(?6IJ0tK&u&L
                                    zf#0fRf2wcz>psgbl`{9_>(hUO{%3scc86*${+DY{|Mgv<|4)4VuY7B4&dA90->J4n
                                    z%`fVJ9qG$YV0cM!HKZv;hw91`kHF@pmhQ1rqD!5!1Z_BX$Otel>6l&r*ySefnkaXj
                                    zzf}@|B$J8N^Ku-f(!Jh_&3@Y5Xqqt9qzPh9txeOUM@n$LU8+w}Hxaep^tWwi>+Aa)
                                    zp0!}P`IvxE{ot1rs&E=C6PyUUcY2&hRRbW)gmt3fB8?)o@>*^F`N;Y?r9MZ2
                                    zlX{}F8;DX14y96@JI*lS(NK(05H~K`+99EOK0m3y6O7sl1iSI7xWcA|1A*F{)-Fwm
                                    zS|ob6RtaBkqtb4ivy5zj=K}OI5Z$KFt_VSpX%`1?4hsuuTkG${E-aJyK|B8?tMIBz
                                    zF!3&X_yh}ZIDs-EL8v&mtPcgvRDn}Eg1jq-p8|Qa9rKQK4b9ryKm1YPSfCm&-}jw>
                                    zEPL*$n707j2Gq$~Rns<5baUaxBH*{Io1`rJSm9e9@zA+(Q4W%yDQ}#AhbH0wCUc=~
                                    z(Nc*v=)%GLjhBhro9%;7f=#mn>Cl{GHt&z3
                                    z63#R~ys*NvyD&D&*iBv`Auua@4L+`lvoSE@o*mMpZ-
                                    z24K{U!765+Ur-sg+|17%jm$~|kLnUIG&o&2J70RdO6;GKf@-AR`=KW5d?`GYel~h#
                                    z9N6I?UPWhASbYHVOvR~a)=}P)(u$XxBLB31xh^ZpA*Bq-ZtS}{uGp!Rf64u`rWI1E
                                    zZ#ogF|HqFDHIwm;5TWx?p6tl)i8`3JN!S^Zm}2)XoQjpXZ|0d0Pk5O}BFj@EnM@%=
                                    z#d1P)CuMmZ!JE5;o`9jzle#^fw??|tb73zrq&@SpNOYG9Xn1L%X4cs=QnJZ9b-Het
                                    zb2^uFi9`V-iV7`I@FwAp$Ispd^eqcejh8Bk$_rN8+(Ug1_#5ez0`zB~c%oXd(^2)y
                                    z+%tE%d|t(69@T?B)3eIt{Q=Nas98&ssqXh(6Fld0#ZA{tXW#D;_N>Se!j++6HSzs%5F;F$d*JZktz>+^0)1yqh5h|hPaE8ps15?a+EeI`u7~$97MQa7$t-r-
                                    zrWo1nhq~JOYVP~>6J&d8r7~3r6{NVg9=li8dHAtKjIcL8$LbPaOCx^N>A!*h)2$H_
                                    zhzN+mfPhT@pKi_k-)%1_PSH}NSBL)_7>WZ{KrW9R_E)(+28xo{l#O;
                                    zr|H>00{mZ3qYO(W+xwc|$jZ7pzjUPs8*9rfDobyu30$A9zP^0EXqkp_n-2{)^+YpG
                                    z&7Cf{rl%2G2#knSHQBOg3RP#N60U!TXRi#WYefq^T_mXR)kWd)AW*+4#y`_Hh+O9D
                                    z96V8RW|(+9P=?J$*oz8exD){E^L(
                                    z(isu@*ENCEo*jsd|IHP;+f!v!SG{Z*&OrB`>V+QdXd(6HLj{?3S7gPhaqudpl?rc#
                                    zs2Fc7byDOcZv33`?0UH+W4v#$Y$!D%CE3xU=jV$=moz_-I+2NINh-iQXOg)@clMEG
                                    z=TxGalVCbE_9Yu|)j4)!G@2dRhO79iUH6wN8^y>w+jHv#@UEBY?0ZdXFIPNeZ}#Mv
                                    zQ=RfYA+f|tV61Et{bRK(G(Z~gzR(5;WImEl4yaTU!<@R$y|Q5+yD}v!&XF%B3cJ^6
                                    zbTUJm~icTefog3bPhuEX+NkF?i>%)++m&l`#REK8jTA~PQ+#L~h~NM6cl
                                    z+0G!1Il_cI9;-aMA1yRZEv*pKJeF|#_3Bjyd5Eyp1B=V0=Z&Ruaj%xs`ljhjG$w9a|
                                    z(u4|4ClB3
                                    zG=VDLdKMN>IHC7wpP3j?E6_;!L%fFz+Cgmwc6>HLune@dR-mc`|-hDivk-5&2s}{UrE5Z#Q(p`E_
                                    ze6RPehi?GtqE&C-gt3QyOz;y-Ge4@0AQn8l)44BEjHMHFq_jK8w$G+c3LF+mH5L5%
                                    z!lqzOTF~5BsR8+J9LrDMaZ97x8vGM6d4G`Z>q4sh{#Q`Z)N@rT0RaN4{ufyOZ&qOW
                                    z@1WxHTgfhq5y^M9uAS+s0yt51QA@hKlr@Xm=Bl^^aj_Y46t_RJfo>yMeE$1mMo_C|
                                    z-M#ow~;)d8`{Wq?@=-**dKPRU@IzOMif$JQJ
                                    z&wJp>m7BzsJsg^uuDWT?ClRe1&b}TV8T=5ktp3cbSI6MW$))EFH)c(773}md)ngMz
                                    zAn_chShty)VZO*My@kw#J_uARyTt2-!js*t$o4h7)C1V1($fkC4BbQf{Y0lQD=qf+
                                    zMIIYS%nD%|f?R&_P~QgOiw8vt9k54&KXbIVtIGq%mv9H^0S%aLsToxQB*8PP``F}U
                                    zW+Qksm1Ns2H0k$Pk0%aL-9v4aqBJ1`#_i1X30CJJzsGi|9+Qraa?FaSQ7D=
                                    zk*EdtW0t(#&`BQyS+H2BT8H*pIs)aBduMhBFLh^=%Y4dwW|O->qa2Z+%xc9S=P$4X
                                    zZ5p&hrI<-OAF+58Jb_}k6d>2`W9Si)f@dHy>+RBC%!67HJWdfrr2@I5UC_NyNa-bn
                                    zBt^z?*QECGkGk6iyT=BrmzbRQ!f>$B4z_T_f1@LqkP~fhS=|@=x^k3&M=QxKy9lx1Egov4P{&S1&gi{TfXNH
                                    zBD9Z=`=wUF`;BxB#lwulO4r#j%D&*{D0du>;IoDlO`P(8UOXEdPD|cx{gV=!!5OJiNS)>Xe5Kn
                                    zh;c`V0i;OqMyE~O-AGRs212cIFT78le;l12I5k!cWk-{Llj7@#OoF^2*|_xpZD&lfw=qEviBo2r;zhk2
                                    zLuQkPuIYaB6_TS8f8Na(^8Ot4gLoBehhUgob30^n0!N1d2^8v-4ufxi(k9J=KK$*GKT7lX{7eR+WilnB4WG8#DG00IO*dQMBq`;I9>}VP&eeF8@+Nd;>!LnaPv=`s=7X>8i=WfwlB8-fibzb4R)lSn>qt{G|Bju<_%)=gH?pc
                                    zVqi~c#0`-+5=)Z?nFJWAwF~<9osZDuo^4XGm;Dr00=w-jEXS{F!+OhEBJ3OXsEu>e
                                    zf>nzh?6wWs@Ai-OPmeoWua@uY!Lk=Ozwhs=^F@O@S^=0^dRq)1>4VBz#4r(;*M@sT
                                    z^_^aihf-gpEHNgnJ5IJ)S~(uqwdb&`tUODBkq}XUWt+Nm4WxXrvjUOhI&J9^aA;*7
                                    zKNq%p(`v(k;CNWb!Zw*}J>GbWUS4#PRBBt^Ky3C~7K-KXUKO{Vi1VPoi$G~Ey3s?t
                                    zrA2_0Sdu^rU&)r(K$#jpN5W@jC$gCUbOjk=qi
                                    z$kcK3Mwv#_FwF5dyXF4o3jK<|96KkH7u@QZR-rdNFxDJVpY+dD7I$Qjm57@*7^iYG6Z5rlbjI7E7LuOWX*TmjQpv_oRomdRATJ^
                                    z0y5k9jVmol9-o9@+*GHrlB`hi#BT9``t`~mCH%eGm4oM6Gcx8kDrpi6e3jn}vct=4
                                    zip;}l21+q{+*5)>MV6SM2ASGo0n3uRI*z+*oT~`EIeiKxz8OENW3XQC5DG@ch0i23
                                    z&Q-@r7mrMAX1W2KDIPX3hPXT$QvoQ&0zOy_9oTh-pj#M~Pp-nE~8S<}kPVn_y~D
                                    ze1_Jlq_awb)FF5jVk$IT{%`+kPZ{UjU`|qO#W!yG1cl*@3Sex0QejtIGiOpkjPZ1v
                                    zX170@TF1%6W3xzVVslci@p
                                    z7X<#E6W-uh56|T1$bul2!x0o?-`P?I4uIl0HOVPOvQW9LbwcE#mIp+8L6AQWdztYoEL<&=EcFFWgipRqB2!dBq#tl0U=ggH7A)i8I#u3Sc+v%58B&T_~++mRm9y1=4MMxkX4n-5?QcGTMK9ZbCvVMFbqRt#!>>SfqFGHdwdsdz;ez<(
                                    z!WHIWesvni*m5AFfN6Rw>S`_$UfxA4=**D8yWj^k`hm(gL8n2HkNR`tfhsR-iUwZu
                                    zN&~Lty}ZbUN~eu54XA>6_uIH;te6;B)6Lv0MzHByQ$K<1lJ%n5YXO;|
                                    z#Z%|OI0ZhbU=&}#*JyyB;V}T3IyA1<
                                    zGo67o>ZSocel2mxHR-#eOcfH=!5R%PGg&|$_h6q`D)*azci?ii|5xZ`|L@SdrF~<&
                                    z*^c~^TV~(_wF|T|Ay3~E)ucyqmuCXZ!@fTaY@>vxW8pd+ih`b~<%NSA&(Y5Ca`%q!
                                    zliMw*U%*n_>}O4}{iH>INmwry!IHf<^~ou+aFz2Q+lXvV^1Bz$x|JOS!lN1`0kJIz
                                    zu_x&E#Gve<{Hv_zU~5}n{#nzKCBo)?IG&YbL&(ym0bR_@%&ex#jIJbX{y6FvL!r|-
                                    z>Z`oAV)9o)}0(Tsym6-uolu9l9>Q#O-C|Z!%q5{{f0S~4y
                                    zLZ)^JC`Q$$aI6n(E(LWhkG3J1v-~9Of#=kcKVC&~vH|9^5ua-KYBR}BL?;eUYTsqM
                                    z;4#LG4H`~jREHlY)$JQCI)<>yEoQ4m0TJ(FxBHvbGWgC3U6KQpv0nNtC>k}c1D(5V
                                    zTe=s)LfG3kAlE;YIBb^HBwestk&1N`Bg;Eek<@4@GKIG3(}`G?=*>MUBD*u#r(!>j
                                    zVLVlBNGDV$lIXs^(tUhJ)M%0J+54d3U@11cRNk!kYm9a5s;`HI${(J723Up-t~E$)
                                    z5;fC&-L2_}d)K>-#O{x)KAEvN#?HNUd5(jXP*MW?P%$1VG{PAjYNb%R$7Ha1#vJ!#
                                    zzA72VsR4>OAxBP-wd*>o#nUfrBxj8VxCiEoMM6Ju@CNlTU1JZEmvUX_POc`Z`pBq$
                                    zh&Jo|;@@T$*RX4fDWL!s-tOpVD?$OrQ}6g@4F+&;A~=<|U?Lhp^xuC11FDw$E%|w_2vk!5?
                                    zH3$BIxDWaZ6qXTjGF6>Y
                                    zW+H16jaDNvF~G+!aekR3>1d)jZShTckK8%bGGFT=$x%lOr7HB28O#tGLvvK5-Avx3
                                    z*!zYWUAHgD>KXX-6H?j|^@B`k#Ym?9{0?;Jp+Kz{xy-;a^C62sD3RB?DsM;P=#qHo
                                    zzgq$yT^tT9YS9cErI#iv{)Kq}N*X$(a(Kv_=&KHF^Ta#b=X2rwg2b!x^GWo}b)8!g
                                    zN;j4vZLv*4=WubQ%4FyPGx1!`q~${sQ7WH_qgfh-!*=0KJ4@aFaZrA4%|fF4!L3;K
                                    z^Kb5PM@2Gm#nj{Cj2l4@*dnll(L;#1_XYXU$N_DoMuqQbFyixPRp
                                    zR;GC5c+<<3_Q*0tdmR%)c96`KMDi*e6!D02q>
                                    zagb>a-pfyf?%m!mdKu3KKY1>+X>@jZI&tzNyjR(b75dV7t?^r+2PR9*s>yVNukVkt
                                    zMTn{(PjT#*aXvv9eZ9?dPxLa4krtit7ZH%4{2&2(cs?Y~y9W}55V62|1w9mJZw$#p
                                    zb?0tI<@ADrRMNc^wmL#>L$L(aIa$8s8X>DyEi)tkHL_D&ngoiNI%XIZdD#R8nE0(8+)cc>-Kgu~
                                    z8%yXzy)7BCq(kA5vyNpf#&My#;#J4>g~$#PFgUl4tpH$S$R<#_oX2{?Nh7L
                                    z2rc!dfBW1;&cFTyKFU#{N>(lgPp7DT{GoGk`P#TU^l>sv1!)#LVG8otu@}
                                    z3!k@#!CDFV_CEKDBA;jIS>P@lPFv3kPQX@5Je+(n@`l8T2;;q==&sO>zowQNI^?X(
                                    zD$5TkIhs>|M{aBb5m6eg@P|~o{3LFsV_LeVU)f3XSVhI+BpjB?%^qMqgzM^2?cOVU
                                    zTl{rfs8ZCNvh=b8O^&0@!sGR1s`q3V?6P=u^E^9{UGO%9jhy6c6Evgq5ZGB%21Y?{N+hnU})*bh56pGbaX%+>~^7&82-I^sjO8&il(L4v#%_AHmf?
                                    z0kQK&?~0=bdu62KK_m|QX>EuvQ|*b*n;P5*uBNo4<4Dw#U4zXV26&J5bV*?+(FEeL
                                    z7T7;?abb*!$Qp?Cd8alIo56Bv^)EKdOV2Qnw4RB^KICQ{3y*V
                                    zOZ+{A2N!ErYS2oDB{yNumYc&}H-I&S^;Ga*nZs$o#&N5nOt%%HSOy1FDwS7TIMOOE
                                    z6$4>laWJL!)mpZ;&#*PcUXILzP%k8j-2goH+_ig^?{>@YGoC~b2Pm%cZr5VMV1{WeXhQC
                                    z=PDc8@`!#92b0-
                                    z9$?prv-j~o*Sn?U8F6@X(4QF#1ULI?3P;4&=U;LjuXlHrRr80Tkp2CjcjuNA3OqUc
                                    zXrtEK$6GyLrPkh^*pYHGQxva%Ae|FmkZ7;i3jV;^x1o4g+s#8X#kp|&yr{+f@3wJ{
                                    zaMJGh?kIz7QPvJN&~Qvi*UZ;Fuw!X((03MmCYz=1s5tY$6Ygzo?>ZXd#Wgtkixlc$Z866$+jq;a{o&|NKlk(Lttx5p=W7s_i2(!oljA$i
                                    zzt-W~*-Q`ZY~J48!GWp0T|lyN&HnLpzG#ofx@j;b)57eCr5v;9n&bf@Xlo6h(InT(BDDQg8gqEdFvJr2O!hy)xJj>G|{_n1;w>j$-%&+
                                    zDG@97cu0E~UA~hS?EAX_1~U|2!be7OgZoaf*~vwUSfH+K8EX)HF#m|(x}<
                                    zeWeqxh&JxeRrU)R;clUH(d%~BSV;Com?=yO1$<5hPTn(#SS-N#yq;dDg-QC^Y8+UhicXxMpXx!c1ZQ>3MH15zyBZs~Bx@Yaf{VF2=
                                    z%&76qimHqnS(!QB7dILoPim_z`tA32Fbwa@q-f^iIMcaQY7Iawz}vMR%;Ghys|)B-
                                    zEhN79a`PB}=~ZPS)1umEo{6ZHUZA&}O-^SQn9EZXhOI{v)Q>Z3un=9RefL_|X`1B6IG*
                                    z%oMkdbz?+x#)U{4%0>I+ZQL&~@bX-saC2r6y-wbclOd|3hSW+>{%S|3OB$VQn%
                                    z?v0YLVxCy!dftSIp$=qjZxCACuNu<%Y8)5-5wt5B0vi_(6002BX*k8AI}O2G*Stln2f!
                                    z5x@z!3S{#U=*xv&SXa#l_rsfrI(6MFyJ+h@ab1P;DCz4TxXKFoh$lTV@DC%pBYAXRX|41Kg_;{D(>Tl>ScyD~YEF
                                    zKMIgaq*I~*lrmCh;-z}Br7PGz==yh#UQ|Lw^jB&UUI_KIwA80-?w?s0irV>++9Y*`
                                    zh!Vm?oR?y-N77;Ufc+$BEs;sqcKzGoMj;As?O^dKg@|}w-Gp>WV-LzYv08s-Q5j;b
                                    zba!xqY>vl5MJ9;v*ZIn!Ke7f^UY=U9h8fx>AwIe0bCoD?f=(J8C2u^N5x#gaAZt>0DbACl&9
                                    zyaQ*iB1m%dAaR$$3*gZrjG7sNM}Cnd(bfA6pg
                                    z1d3Laq@l^Xjc`ksmOW_e4P-{b+>8A(b}&XTE_xR$HuEK~e`?37Xi&BAU~RDZy)uKm
                                    zVB{A=wxG`-fn+|V-GQ<^F*Hs$)p``r3)V>P?&3qCXoSHT!y5%()JWJLuGe-
                                    z4&GB?_=~!P%1dDpBXR7(NeQGhHXW-OJvi+t0BzRRo+biaH`Ns_u_BTsdzMQBoBV4n
                                    z=(4>*d6&PBP1L?BN$y~i8zE_GSSLn_oJ37uhcZhR4i0_hR8ba4T%OJ_{eVXX%o#{V
                                    z@4!$E-V}8AWo$Z*k>{CHlj8buTOb<%+~Ry|V8p42DViq1=7F5EuT39-kwhDD3&TJ@
                                    zZek==hr=Wmk_OU;%Hg|Lx1MWHo{Z5yuOOF;#7e6!2LEE@UscL!!4u(uT+kxBjXGdK
                                    z;uYqbx{Hi&(kmfQ7htlERu&C^A0&tr*oo5`AHe0=q)#s?R|Bn>ZV_r@ehpf+gaBM`
                                    zuY@YtDKUT=+l3id5~jck#4a1Yc}>!g`1hTtafr!3HJ0#uR&fY@bNXpcbq_L$KXTtP
                                    z10>$;cd$g7>=0v-Owa}bUx5@{P~C9K;+cI!R|ELSWQV6K#U9xx8RCJ<&B1x|KreJM
                                    zuQi|xH2y(J#Kd#fvN?e?70WvibrbgL=YaYap6H66%}uE-DVNK*j)FfyXNtMPue8~^
                                    z?|e<=JJmHBWwVE!fz>bLO>xz!F^4T0tN@l^&T3pJt!iwj4eQ!w*HHj}*|sJl25HVo
                                    zNn%@s3ZMHQ*7j&ea9;%Gt15DOaUGam`8U<$OmyCdE)RJJ2aPQlVfGaow-Mn)UUafwI*26QWHe8chh3
                                    zSs|=xVeNrT0?F%(-v$}fzNbwA_MH%k_F!!&&VGoy*7q3~0ewICtQYYm8IjVL01d4-
                                    z5osy9nNBQ?B??SWgaAx1tV%f>66jj#3B@Lk9>b)gX5qtqE^MV4us|jmAeBDbJKNVe
                                    zy+-?@TnEMOzEK=zJi+o&`4j_-jez1?i}Ef5#rwH42IqyYuQ3c+bgL|^bGm9p@k!I5
                                    zC|Jykr0&AbNvF+SxqBQxaylOWsJwC`xzsYN-I$+#x)kw^TM70U{VP4#6^6iPoBn7d
                                    z=7Cv0el|eKKr^q)>*s^5pu@~1rMsKoIHk3z`t30WyT3$q5Wxg>fDg4`s#DCN6M1_y
                                    zeBaXK5VJEWevU2`*#sG{RD2ztlICYFdYbCIz6x^V
                                    zDET)1ukuxVe$@)&ZnzT+6#9)Vlq*K&iVE4N*|1-OiMcr0FIb0kOK&;`r>k=`B`1+}!gml*i8rfH5}zzE8(QKl6MLU=jkx
                                    zVth0r!U=D}_Tar1$ZwpEnbTaZ{ktPhh4co3gAjNVF)Y}&4+tk1ZZ~~*g=y-DYzcfT
                                    zH9?%KyxEzfQWSJsY|&Y)otxZJMpsw^H9PBIJw6<^57K81k{qjrSMi
                                    z>{{lD{zI#8(C@Uoa(^8aWf4Ez_QDTg;Z{yt2`J~CH%l~O-Gz#KR5fifNfzt&xUUY$
                                    zv3q_&iXG@)LA`$tCjhVr9EE42OK&lMF*3QP>?EyBediV(`=z82V=>Y@484>Se_F_)
                                    z76Jxa{zhok0F
                                    zS8NdxGQp=;vAQq_NCfK{au*J*9X|Q!n>!L<{=-Fs;*H%g;m8kN?<+Orui4A-W2H#?
                                    zP*ocvt+D_83MitTCS=a-Dt3w&1?QX=!St2HZ3M!n7e@BtBfxuZ|B&x^kl(?g8iiiS
                                    zS})*SbA^di!(TX%#V$FmgV61P|CV*3C{PYeEDEs*a?LtA)#oS7!Diy1PJZ_R=W<#b
                                    zY22e-@4J~iU7gT98}&%z&A~{6Nst%QXJ9cT9!Q1Iv_a!>E!lvUOaB0)>gQ2mGiM3I{V
                                    z#h43DlwptJW9DB`g#+b65mCELWTl+TlorBnC>A7GT}_P|opkAbnK6N~B0BxDU#4bBoP
                                    zJRw=mV0GmD546ZkRZQepl5gHT5qCw(SE`h2n_^oN>B6?;-d~JBK9Z!9IE@P@)Kxfo
                                    zG@$_EzNDtx9$R_o?SoSv3c*OXmrJQc*Pt|*V3F}gx`>^l;!Q8p>X)kezr_f*ERX3ZpIZI>{ezZZ`rt3HmA
                                    zXHpo-ZU|+ZmvrI>B*Y*^r*MH#r5)Qh5%8>dS?JNO8+^+F0_KxsUb7~6W!W+)vO5v4
                                    zeF4+sVzR$+Wajk{718CKZ;Z+@!evl8dVKupzG)3g12V`zQvCK8Ruhg_ePJSD)bzk%
                                    za;yr|GX2;E{&}?@3@+>G8kdMn|G8s-{#VW;aZsadXNq2lTi`W)5l7MY<5dXSnTGx+${x%u|erDK_6Jr~PfbwmG)v
                                    zL=ox>Quv|4gN7}+o^bf%n!NwHF2cXX8~UB+y)NNLYn2htdN_70F0Xz!(Y4R5ww!!j
                                    z;vreIwY5i|`VA1Mz8gYIEh84jmQs;TlfLxP{@V*8T+KA)f+r&|hO9b&Xo>cd(_m0t
                                    z6PTZ^Gh!;p?yS*ZZ2UzAX#(B>zimlWni4uhUd&Jk#K;;E4K#}|g}aL&nW^qePjdfn
                                    z5{4EMAV0j;NCN2c{tt15JmiJIfXq?#7-)dx=-l~(p&<^k6QE@m*+^P)U;JXByrV!_
                                    zR>hIuhHuJ8+T;4Dp5MFz=!kptuTfDRonX5~lM@ft=7ORj!b}X^5;X?0I_k9@15eHF
                                    zb4RRm;Tw03T$AtU1i@({r;&Eh%iF~3&rEzf6t7E}iYZ?VZ;xwAmEUo>RD%ZjrwhVQ
                                    zll-}UUep-u)M%-)7F%dVdTvxvw$iy3I<9ONT_1CxvU|1Mc4bk9Zb#UdqT_P%=dbC;
                                    z3U!TUFwAZ;0VfjK_|3tDW}Q!~pl3qq3_M3b821ta(T_XX--j9=rJXg2uAC8gFBGm<
                                    za=gdU;}^Lv!THJ_lwj?hH#u4e@xEs9ZJ>c7CVw_M5Mc
                                    zMJFXFp4W!~Enej?S9`EQI(NmI@ukmzw7Oq*^YzDlIkH
                                    zc#N7qq7vKFPS2342C+}eB~mDk)?nX(CuK@K7Ahgo=b#weLq<&3qSrL4ZRUV%Wv6UY
                                    zBo_O&u#@}Wz||bp_op&xZ}7kXFzfk;wR6%dW7O+yjc-N-S6i1+^Go?-d|eN4zzxkD
                                    zApPUz_mWk3B863Ok|%aW)RS0Sodz*q7V4VN$<2kXqJFWq`(G%s=LUgU;zHcSRGC@^G`RHrAM?&26hORFsgyd{dwKj{ICqR;(yJ-rKztd?YWP7Bca?U)1xR@Bf`aAC>iIF8hE?(MR
                                    z-%6PY^*8}LXd!7WoXDUXW6MEJlV|(IhY^e@bE5Tto$%!Uyd#>Y*15kS1vqlS?UbjA
                                    z1U!Y=it!_Qs)H^Ng$ISY%FP7)b}t+jHH2VHOqo#K)566gU9HA7tdw@hQP_WUpoDiB
                                    ztl`u~IOWtv!@i};+$*xp@|qsk+#uC<$^A>dcLnL^6M#ut>oFLG5RrG{_#{lHq`WQ=
                                    zIg(MV^<8sw{{pun;G`AsM%J#76ZbF^5on^qFl2TupJY|CGTfvZW3_qk>&aeMZJrP*a
                                    z0i!Pzp{e5Pn3;hMm+c`x%<
                                    zRJM}0n=LM1LfL*2@fKk5Vu)pEETq>qx*LLycyS@1F@@(2Ne`pSf!J^|_2A3I_<@F1
                                    zco#@2tG!g_?t>UYrRbW=`Gcl`kMd;W(XyoC+ir;?C~ckij!1!4r0SnLUfu0=B4SZT
                                    zVIXC+i;7dgn5Irzc&(Z^1xEUX#It`n+??{**~XdUJjkQwM99zGgo=$pG9@yIoq#%Y
                                    zNw|`H2y#UUbWstgIZgO>|9U*#B3Knho=&^SS$&*Pow&QCeFtSM$Oh(^3cUIYZe_{R
                                    zGDOaW2bk80SW1ApcV%b9XnJ8LvOI)Uvr7f48qQ=&(d0bA)8SCZ)v0qy%`VcJacl9m
                                    zeAUHRde0Ze8SrWDJoSBs&k4wuy(%obI|tf^tA$>r#mluv6^yxgI2vhIc+gfUSFBA;
                                    z+Q$o6#-qG~GV-a<8}{J_3=mCef}T>*d7BAJ=gO}*xf|r#ib>~ZhD$DMSeH6?=C2vYwxrEd
                                    z0I56$Oh&>@-$9NXu5VDi%NR)nF{m09cz8=bhzv#|S7!AD9w@k|m4_kSjw2f`Y)()GM
                                    z*fxBS_be#DWFLDC`D7K(B7<4UfoNbD@To|FWruD+rX$^9Sjle980l(F;k)}%F-yT#
                                    z&b-5?2wh0b;gfIPc3h}ChqovKqrHbQZEr{!ATJNUba;H%7eJdyh;fHtk`k`Qmr1~p
                                    z$cS=A9Z;%Qr%@H7fXF!LPUAm#*?t
                                    z+CowhR>r7Z5~YB0RF&FCgJm8aQ!9AjGH<#(8B@_@cEVcXh+Y8vgtn0qeEdEqObuDd
                                    zn2)bQTg2AW*!;YC;^3D43+|g&TUFxkn%K$Ju4RW5X*g-gGTcFGxc#G
                                    zeaWsCitMb0=WAjrSDJ#9OH^6&Qm!I+*H$9Ta@%}9g}qpnSNRZX+(aQ#!g2TRy{?@7
                                    zc++6SJia@bS5bO#Gn~K7UYuAC
                                    zSfY68PVkZ5JLTaLu{v71ODSr(QFRZ{rmr<}xX6|CF&kc|NO(WGg;+|S#Ke#J4vGSZ
                                    z?8IDuKxk9{6npX+FPUGKVGhl8-HuO7OF!9eO!#1pErx8jhm7E!Q?v+}K+s+HT
                                    zyPrRS|88&W#57ROO>%~rpfszTl3_`qOdg;
                                    zvuM!Mi#Bl^1;vFse%{|yy&OX4Jfci~xQ8o3w}hQt#HN1})pC%V=9rii+|YH)Dxs82
                                    z(S_t~`D|ODYk-PkJ-5ac0D5Yf`pRb+H1&{q^K*M|4_@6jrn2hW4%sgvPZjYHLu?RJuN*Dv
                                    zB$vELCtQR)3{WkpN6dm8L7eu|Ov$o#@!rE?+Z&h^;&^?b*&M8qgTQpwFmJ_k`Tya&mCsj)$pz>P;aX&xBMkj+Bq?6>eJoe5{&q?Sk!FBPfxdu(Z
                                    z;`^zJXJL#;+|$)uml{Hnm9@bZCBme6h^kXEo_QQ%Ne5Z0KB}
                                    zxwddi&$9X9@1#w8-0gZ05jHH!4x(ND+AXLv>(HG32!26L+QCj!qituR!ee_ac2LLn
                                    z)a%{X`D$>%#~;e(bzvgBV=p`Bt>35cuqpKjhptHp<@*M6D16a0SDQc#2TP+u+-6cz
                                    z4aUXV>&dCIEU94X(7QLTMYVZhEndhehMuVx3GxiIIl#m)pOK;{T(u(b+WkZmB<=A>~x8aVoAa_xA+C=+^
                                    zi?{NXu{{=}^n3&h8b9OZEXeY3Ny-M*(HmuZpcm(ui#Z?Uw
                                    z(xX1ktb_oM=ChD7v~gq&NGLdX$-D2BOU0zg1HzhWWG?$Tp8_H1Y(`QFqQM=&>ZsHN-
                                    znpz}2Vtn+g0TH?JKtSt#POxExkxitK)1A)421GlZ8~d-9ITx0>#Y
                                    za`s`qB39ZW3I7~Hmr}O9#R^B(hT-K=7EMNtb0To^^mbReG~4M!9e~{0`%mns-bpvH
                                    zhyLbX2PFgDY93=!EG)aTL0fF^r}2%KuswRJ!dnG6-nl
                                    zS?#&Q^eGrZ!a!x;DDrc%+yu6!AMIsXU)a1w;v($N$2_CS$M8oexzDFboll+f-*Ro{
                                    z53GsTq>Jd#FQyEqJMks4eK2tIUgwhlK`(hh3j19Wf~I12eDlU)r2+p%J-!mNuC2qu
                                    z>*(28DmsXwkL)lFyGToE2G_bbgtKM!XjrpnqqXh|v31`z-<@@>>WM-lE0Tuma@*n)
                                    zmsne3vzO098uwtLJ2tHFfJH0xYjK}i`@PcNX2w2bGAWIHc(c}cA^rZ466#h9MpZg4ys@E#iRw5CzqVrFoe9d5mO$>0x-0VfX&`Why0{ihf
                                    zI0EHtg?Y$RP8ACsqdA61`Hyrnr7ldWMc#zyet9D`hNK43r1#Z;M3j|wFz0Zk1tAeA
                                    z4oak02jGHMx=|-}bBFG5%2)ePDqMKz##JO5IeVz9G^>`lHoY`m8?tyC!lsFZnh_#&
                                    z0w(!%awzSYT2Cl_=aZXejI^4|Mm8Nil{K~a1x+ijDn`fXGQOW%a5TN5N%9v3t&)jL
                                    ztOAUd7X
                                    zXTm?8K)9Ese!Qg$DXUccsRB7q98zk1uUc60H=xP^LdoN{Ybse7k8FC|$7coUCVtc2
                                    zKn6$C?ABkVV92D(;df2~nyM)py5e}Z0-^G%Npx@FP`3b=Jw09_rU_%AzsHiB90Z=k
                                    zk8Fnwl=~Ikbuk7TQJ^`F#QRu77yIv=2d$Fm$UAV5cVHzbe_tVW>{$gDRKV1|^4chg
                                    zY0&W_u26)U_psyB^kop$@O|@Ew|r>J11g5K)WBPJ0V@eeuxGd{KC|$xmrC1l!hXto
                                    zSa!b)&PaNLbS>Q;=c6V)KxnDjYvPO|ezst2;HeLfoo{r7_%acCQ5&n?=CVzmY{{Vf)6+Piy;8^ViSm
                                    zc}Q-Co_C)}e^o{-q0IL{?U;lVhniw$yB=O3tzgq;aa}}IyV^sLD`5-wqK3TS)Lf5<
                                    zvXxnpo7W)PsWZb`e|-BvyFE3f*SnGl@^dd+HrWeWt{qyjuL(1^vdD2yKwkD@Z2!A9
                                    z=?OO~6r153!Jz9$exWs8mI8zF2r
                                    zY~P*xC$I$&OQdu00a9*7ns4s~xYREr@gC@wb2RVz(m>Rlg$h`hrhn5gu8Q>l@GSgi
                                    zitJ^y4wsqg)iZ}1#^A`B3NLio4#sEC;!kiA&~nR*NK-jK=FS?J(CRDS)oeiL^A?jr
                                    z^*Gl+_O)ZDuC+EZs}WOn}yeQmgwP*m8DC!)uVP4VUF)Zk>s4XY4tyMO#A4v
                                    z|55>myP4`SQ?v>;k%+Dh3)x_UGh-%b&zljVU=rI={$R
                                    z&pfmb$}z=gMePy+{XxzXU4-4xN;B6ADJx6z!bGyzkv0PQhW2|4be?t**p;_zYBM2~
                                    z)%ymDZx48jl^H&YV$z-}r+HGjPicMBsd%)~lgt&Lb`UCBr
                                    z>d1-N?NB_*UtnZmz^tzIzWV*Y^?pAOW3`;XfqiI+2Gx!;-F-I5pip}86pBL^J8Ei+;Du80jGF8!0<9>jl{Lv#O0}`9
                                    z_6cK?L-$p>=e`aj!f{-ybcfq0Y|~U?f{&p4!<9if&b8L&v4e0+;=d5YrwAV>B6WIj
                                    z)|8P%D9vvj0e|0hzmrn26ZP&K1+Co5rbsLOl=3x6d($?>+5>$;%88r7YF|fS(qS=q
                                    zU{!0O8*&h-Fid#wm|HtSn95Yjpm-_#p|xt?@h$+7(zzAx>;33uXTfuy@seHeHzS&+
                                    z#>;p1ve>!Xjxj$cA?s{ge~xN>FY0`$4+d!Mrq0B&Yxy}LeM7-2bfv^z4y$xwBD#?{
                                    zMei{(6_h~*GOCdBKo?yt_r5ZVanOm&U;%K?edxQCY{mA7q8P9Um$MdZ$WT*o9$nMI
                                    z{-I5?U@meZr*Yba#K){dox!YbrLO}RIZoV^1Kfwd|V72}w^&5UiPRnowt{*$|bn+3eOUpnO8ajwuGvxP?zT@G}kigwo#+SkhF
                                    zJNdaCkC9GO&vM7wevU-`p-7&F1YI_qV6^Ie*t~(3C;3a!R
                                    zw+@wdo7{f{PWiy3oMqkI_~NHL+0uQk)JSR%G}>okNbIl#BR`L6A)3V5xtVZ~}O
                                    zm~4oe*(>0fA*#=@talUz4?FuHD|d@lYp0gzq>!+GCn_
                                    z(3FfTZ}h`14Z}-02;5KYm)5;-clC^XeEfQ-mU`cDhof`nMLD^evbBcld3y#|Abo_4
                                    ze8+*~Vjf+*4eWQz08T7Y<7t^YS_q5eFEmicG#dN?|GnT50CvDO
                                    zk!3Z*qO&9%iTiVKw)`J+blKkw&4xNNbxC05HzODWShJ`nR=_C%NCEGoJbk>54iWn8
                                    zjH{`CSfV=qVh&dJk&^l#Kti&m(nBPqRlH<1a8+9Q#_xljxY8TRG@&z|>gsZUEC8TX
                                    z#(2zYo7eGAWGhFmLJI{bUZn(;&E3N0*S4Q=>iV42O)ZO)uz`C2;_65#ahiYmDRRvJ9|dPP|0hf7
                                    zDD}rKFd%jxQG-k4ptKTvlTE71pWH^2pn-_3;kBu9IUjS)R7LxkS-rSa^p4=Y`|YvK
                                    zQ`XK64-S7E|)h@I-?z0bo_Q~Q0XcPWi=ocP%+>J3_gA9
                                    zHB`4n@avUiG|(37IP~uD8RqyIv8G_$5EVJTprTmtPB_x;ZMk4rxZWW}wxJ}!@Unz9
                                    zB0S*E7ysh7%Wr$Vf9w;nwEi^m1;Dt@BxV{HQ_|}92$Gi1HQ*|qphrvHrTCQHAw+x*$&k^
                                    zw``HiA;8quGY5DeG8W3`f+tJjnlCXu#~~eLAO+;c^@C=bwD_&DT8PbN48`?yF(tcV
                                    zwM00HdO|MsSJx`*upB6?keqeMUb*C3+#m1h4q~u~p?+5PdF_%no6TYDu<$amTx&!S
                                    zqWY@Zu4B(%Pt9EqiE-7!725z(OOAH(pT2aEy&3H`gB8K^gzfVrtDA#D1m*+e{qOFR@MlOQpu2Kc|NGB!4}88Qv~mm)4f>
                                    zYx9)QtfH=N!|a=(8ml7fb5MspyJuDqoQ~9npAHU++mQ0A+%oMqXfNF}8+6Ea_KS)}
                                    zL#%|!6f{!qKnpFV6%uNa5pc{jFw!W3BD>2KSZ5p1*w0m*`G_wv$KbrRmXhV{a*85S
                                    zk9yl!bvU_#;@G3;Zkvwbej)!FVH%c=@=vfcEC^Z@I)M4BwzHztM0bU
                                    zd*^K1?HU)Zu3D;qYn3L!)S~NiIrk7ADTu7vf&H6tk#t
                                    zy0BJbZ!LkUR>^|O5YrZeIlB)l8_;9XTuW#$4f#IbEN@{mp)PwoKaW5OXp+b&&2@ML
                                    z^=N6N$q9+%G}SW{NI5#BnY?>9r1;ab&%+6{Z!z!0rqkvqJaAi#K)hpxM(jn%R+oA?
                                    zmfR>~XW>62kgWoY)!;qtn$5zHD-TvwE&8hw9}Y=OR*jzI_Y)*szm1%p0R|&{>BVbu
                                    z+6=QKnhW&_5bOnDaL&4AfY5!yiGlP{rWj?xd?Q5JL%5zPfS{&kBt+PfwzAJ(A%%gF
                                    z$G+(Dif*-#N`mn%5>35f)YzdN21#OXp=G-{Ui!dWv#I>jZ259hq>aF(?EKmXf#Bz*
                                    zkO*=`KumHe%Qt1JV2F!)Da`8m&0yp00e%(G@(wO8&%`pQH{a{YPr2$ai-O;rI+7h@
                                    zQfhrRO{e}*6t)OJ?IX5hwDYP2^=0Q04c#JU2zU}?*}Bovz4@VAk!z05B5b(m;KTOx1ku3FL25KkahD*YF*j(vv(#(?()#H+U-2rt`dN4CJ(j?e=%Uu4Sojx0WWwn*rFO
                                    zf2tLD=Hv|34gvzA`JHOTS)=xE$F4(X~Me19!+
                                    z?-5R&;s>rp`)i&=)WS;qJDTI2I#{avWk0Epz6ruJsXc6kgv`DPXpWPC=7YR3wB*&s-`vy*xlY2_&9HZx
                                    zow#;-_E3fx1W=r4WHr?=5Spye(LqFa7edgS9Z%
                                    zvo?a_nibkbR7B#}?W0)P8NclU()+x-xQQ#}E;VvHHH$G;+BO`o&JuRmNvTrFXcE15
                                    znYyq=$&`*9)Ui(mDfG*uq*nQm33clFg?0&Hlz$pO_
                                    zx%tep>i;RrGX5iNtfM3w_bFG{{i%UU`v3`FUBUKkRk$~{dhwz_+(>}bwzv_B)}Xs?VjP>}vvldNt#&j~HkL2v
                                    zk&Fy^P`q5OGcq1Z8e=Qar10Io2cGi)ktbn2IDTDv(DjC&8sxAIrno^gDqpUfaxX`C
                                    zeuyk9%?%N`?l1C6hVM2v+0y9HB}MNRcdR^RxtLP;QYTX^>y3bUY=;WL4OmLg{euOz
                                    zjnpR8Qbe&UNn+045RFQf#cP8%R|U%_rV}P+hdhFOi#6mZP(#C7Hz46Yoymz?q3GAx
                                    z>IpD`N}H$Qic+`JZ)=+`L`kzn5>Uc_mnKCIwy7wo)
                                    z7`7v~@AF*z*7?^upS(SR+UZ$%?;zr>PCOMZeU>B>$Bl`|um@HZ0PEY^a<;2vnV2qh
                                    z6}5Qk6;)W^8?KGdRE#N6pDNf@AF%ma`DyXL0bKXpKmQ0zfhKmUmC)2-#MFsUch@5o
                                    zm)@%<+K^686~h?Sc8$Da!p|$J9Cv)~Ro&s_UxM`2R3M3C=aa-G2i^<&-nSuH!!uHo
                                    zNa>p2@Lj&DO80}2z2HHyO~^85Vqy!PGRU2#Il2VfChXro*Ol7OLsp+v7kJbo@!ZBN_-0P|t
                                    z{Vb(zCdLVDWBQG??V>*$Ej0{Gz#O7n{3M>;XJ%B(T}MAk6|{dJl%1#}C@U88+3Q|i
                                    zM60zATWkH=O-iYUMipfin=2TUn5Hy+r2^0H{!p`DJFP4cz5jf)WP}eL#8g-u9_z|3
                                    z#KqE*Sf{sdFh(-Js2S9V#66m84-Dme^_HMtdsBSIfwyoCiCjCCe1qPihkH`4uupv^
                                    zz+v`^W~X9>2<9XG@yGZx4Iq&
                                    zDI0$PwemZW3Y%usaR`~ZelYj?l
                                    zkfCxsd>3t9FA2kjO~kVCOxmM}MU`^yH5vWHFH(1v*vr44bMN04%%8$FSBTK-`~4#P})fYIkNS_ENy+
                                    zO&RFafok5A?9|!Zjl|?@MJ7XlUDneAiHv?RqK29B?(~9VX7gfw4|)=&+&k*vRfKlS
                                    z+g!>N3oddDr?)Uo?rcZiG~gImMVM1qO`a32YKA*g-H^4||h;qagn~
                                    z3bFdfP1WbQe?J@g{}c0RdkG{fsw_w=DJMp6WM}JaU}02{gvV7`UG(MJUjoh
                                    z(SEjn53JAO!vA8}&>7gzPft%4PfivmS1VR_K0dyGIyg9(p*@&^-i~f2Ud)a_+W*lY
                                    zX#q5IwQ+W{adM>kr_sdJ$=ywe25RYlU4n!2|557*{O@UkP8h3~i8CuZ3){a-`k#)9
                                    zivRyz9UT5oZ=l;(i~noy|EFT0y0^0h>sJe)le?=Kbm1&%{|)8LFX3uo;^yS4?&M_u
                                    zKeMP}?d0YJw03f)l28LseNZ$pvvK^_@bNzqii-SljzBjPM>7jKNg*1j4i+05bAEOJ
                                    z8@D(QyA(SQCxD$@iicN9LQGPOO@d3BgH4*7SMq;kC7sON9V{H({zumQ|H?}Lud@G~
                                    z!ND0ivZRHpjfaJ~w5yW?)qgIU-{ya}MdE+e_usPS|GO=c|Enx3)EL%(OZ)#?>i=ni
                                    z`p>_w|HpBmKmL#FTR1}f-4*KC+tq{0FfiJ+a*|@|UMpvL$j15$GtEXezG@l1JWESM
                                    z0Ot3kxIXM%bg9^~;^Mfn)QQ+W@37%0P|M%XQ8#9qX1ipV>m*xfR6cApRj#Mq
                                    zPOSmMF`8UH-#kOG?=vk>!q}{cml4fNkNeJu4<72Qr|9(F+IlW#!=K>m
                                    zc}4~#a3l*6O%Mi>{d3NA>+yyktr~t8RIPTIlaA!mJrgbmp?6_BqKRSmMc1b6C%^iW
                                    z4R|}{mi?{KfAvHQL20D&i%&BzNECv{x5~FBIPQ7Idu>92wi|m{CcTn=ns@$6)R~`h
                                    z3%+)GZ9@ImKGNpNsBXQTWAgaaUEb3yV3CJHGaZuDDo)t*%=S|CO=WAw$gJiq8&M2F
                                    zH%d32=9zLCh@zP5-N-a+bVKq=g7B}MwFM6usi^Qbz(;SPqp@?LA_wTp2deo_K~?^No>i&@I;qSIwZ?@
                                    zDh?uugX;bYv$yQH2sqXzeY|03-eu`|M#zPe^ItPsJhnUzvT%{R8gX6{W~7@aAjttVORUBPuiO-64cPf=TJ&Z7t9MM
                                    zoDB!j5{v}l1Ht>*MRn|80%7>l&?{7ME@rcA1g$xG6SqHJa`%TQQPO-l^8`_R^<36|
                                    z96)aAW{S+MFCA17(r%>rA9InUA{4#HjrT_nU!XeBVR%4O49|g4lYqh*>EeLedYt7*
                                    za_D6B1!#-k8Q^PS!5*RV8%HDg*rs;BVD)tPM-ubdX4KV?c)i0Qzj%bcJ
                                    z6Gh-Z2^m#S!9r&Xg%)Jq6H+1B@g<`Fm;R5bV54K8IMhaQ^p=`E{bi$MK67651c?GP
                                    z#Kh*GP)kO%<(dg9-1q&6F}Hyr@ZpfIf6YJ35!lF2Iy*4TOUIp2khk3YYXpm?$p5Vd
                                    zvT5PhO0UyTjM8Yd`yEefZ5jpgPZw83x+hmI9d<#NLn=Zd)A;LcTSn286x13j%+MI*Zh4PJ^hj*e_{GDW&rfUb
                                    zB?~d4(N3bDFh}s*sb9AEvMQ%kGteVZ8k1TnI#z?eOd(L~vmXPwj0ze;P~6mkBc=1MNaU4++y1}$i!1QwF*w{
                                    zs7oKCL?hY#gxAbe4*N$#-}hSQ)=a$)Qym(|h(_Y%#<-!Wf11VMAPec;=2j`JMNRoP
                                    z=!do-rkpdAdS2*`n7%x+qtP>>4MDjLt4FWU*gZ9uH|Iq#sb!i0kC6CJKv!?~3(azY
                                    z+mz@^(7V1%UKu0Kz*%r26`at)3(=>^7c=5_Vu{>zaO4zKG^-Uo&&uiB*kPfj_1)>s
                                    zCwB7K!4&vtBZgGao}a^)F$nei$6eK6qhZfZvA
                                    z54KO8M8gQZq9skS@d<$Xzol7vya
                                    z&HR*|{|SzK`6ZVL%ax{%N|F?OYWJ*(b2PF`Q_oZ%If84>f+nusXZI{tCapjiEgC5j
                                    znbIYFZ&bg}5s27}%`^vov1>j*8oqlus?`WG%ad_
                                    z=|&A3!2s=@n*(+*Ce9i{E+;1iV-5}QD|VPrX0e@wWD9qkWUwKMJ4k@Cgcdp{VoQ_~
                                    z4vJc*E7Wj8N|$1(`lj
                                    zY^QpOowCazC?VKa`XzRlb_r4lJ{OnE<`NE~1{_uhVws})OY4hV_LDRi$ic$NXXIsb
                                    z{#YsAG$`UII%Re<0_^}|%|f-2H}P~ik95$#+hA0Ko5NFVjRtiuS@EVX+A_p^lmjbF
                                    zh}fKzY+jg{3hfrFIM5iT7xs-81yV3CV)vI=y}DH~J
                                    za<#y}&@a=w*2W#uRxog#;rGx;ntZ-$712(Te4ZEEC@q!Nfad
                                    zaNQbfNwCJ8j+}JNOmBlJZ0jQ@+1)S`&|`ebA@*}6h!^3N$X%ijnYD?&_&Bq=&
                                    z_9Gq7m|1cU7W)WdOFMoUSHvQW+Ly6!Uk)V`Q%n$H2JV5~>@-zYL$41Ey`G<%R8SJ)
                                    z!o-USJY+Y+$BGUlql%rc3iHf+s5&roMU|rf%2|{r?nxg!9}sb5Xn-i*qvMv|&U?AM
                                    zWc*Sw!VicdL=%ijlT4?gN*WmixZ7+hx%~))akPZgQQ9)}uw{*c!qd$>sc;ilge(cU
                                    zv=4Ocf))`Hgpe*V=JmLKe5MhZsW`Bpg-MvH;+I^#h3H0H+|w}@ND=KY1kZqgxmsDA
                                    zN>z?;dEIbISt~m&-xswJLDO<)sKUn^)d;dFi)Vj?QBA
                                    z#Gu1S&5@*?G7QCa*)EwSWJ0x(|HKRJ#Bbmv8rxbJ?NX;6f%xGF$CBk}OMi=K#gml|
                                    z%X>dWvWiOnN_O5>&_vk>=+eQkNRQE_>w_;wsbU))(_HQ{1uPX%Vzzr
                                    zJ4u4BJt=3x#G50LcH%y-@O$jfO+-iDGD<_`k&Jfv4cH{Sqj+d2whJd4orrlCmRk_sP>?awsCy6>MMQKZRuZl?YLagF85&XXvJ6ZzQ
                                    zjL@I>a1KY%t=#^E=sH4@j~#Ij%6ZSRN29(mM3~M)XM1PA`tC!`g&0S4-i^06*D^fEaFlmempgkNnflT%ad@TMkyaDE3f?e8P0ppFlik~s
                                    zzAvIlo(gLhv;fT^hQ6%^Z8TF;Q;+Ltk%GFeFy7V{X`w8cA!gUkgGGv-#l!7AsnJ&3
                                    zeJ%z0#?jwIQP-BN`J3vIcj48}I*Pha-@WFxu_!MHV|x5VZ(+A)8JJ{DSti2+1RlpBb}*N0vNS3{W1o5U;Lxe
                                    zBK~<)lQEU&sdfP6Px@t-buG)SFvMsMwm!lom8FQl+REa#+0y+^`7ee?;mh_M)EhQ3
                                    zE#OE{@+b4N3h`gV$gO8|lMHV(=Y9`yU8uJTWsUsQ-?}V?d&4-nlyq{xUE~2`9hMdUM~f(1v)|J2CX0WRRj+oYMw8V^7;33SfCjYdm3idzc-U1Pf4
                                    zBhkMH6d7^~3~RQM1JnV{Td$Dt5vC8JQj_^>cmi
                                    zMNVVMKIluB%r4=cA`DCFJ7f@ka%@Xa<`EjLu?Yz)TUQN<|64%ygos>H#){3(
                                    z=sxuR^i_08Jqd)|ZXF6|x#D3X-{nD9kSR37}sN}fJn44w7V8T*k
                                    zL+8RG<1c|`OstXnN0iAbSXezmFm(r%Me=HWa&5Q2vdQbxjvj-J8{quJM8`kjW$TZT
                                    zysinMGO=lGT(vtOYM67Ba**#}01fKrS98xhS3K@5B`g#%O{Vod@xTtiod~ea*?A(7m2vN)4?!cpXdW
                                    z6-(nQuvHL=S3Ax|z-v90YJH~Yt4J4^uPS(s<#8iii
                                    zW;^7xI3JvEt^kU}UQt3ut$>#d4g
                                    z^^-{O(K4Dr^9l*qhS}Dn!8RXgEu>_8qN`MZL^pymfy2QVRI8@+P*n|TWwM5s$UB|laRY?aL0Qg&@W9Hw=J
                                    zDch2V9R)1S5Inp&G}#xo@uvyn8JrrAt^p>m1HoQ8c&p8wcqvsQjEaYQhZh(n@I`L37d7axfoD1)okhfv-#317TnC#b
                                    z8V^%(U}`ESHgbb$L7ZI4&iqiW0en^u>~0~($6#LisvR-5!l3cWQ|DrdbEFarEDXfP
                                    zfcWcvTGts@vrq|(+WQ=vJTnJQ5b05i|A^|BZm2NO^qJfio}{!17BV!v96s`~R%2L^
                                    zycMGinubSnF8_v6Sv~3BXH@8?H%d+gQrGLa5703aycW1GWG2~1Mhhm&P9GKV0&~Y<
                                    zYej+-z3F8)HBgPLSWz1=e(?=+7U&@G>*KdqEXQ(Y{McD#oJzdHE)Myur7#z7;44%D
                                    z+n`3a%?w)dUwc11iB@sa^y&A{p8)rH^|i1)&REe%QnJ!Y$E)oTK9|=0wKfhaadnqn
                                    z;)a>Ecgr2&QT@E0HqqyzARQ=exAaHixE}OL&LkvwI_!U)n#fLL6alLxF6w!
                                    z7U93#G^#0|^gQoKSliL(yr<@O(N@$Y6f9*Xs9q0FEZu}GBc&?G%Y9}VZlL@@3$%)U
                                    z=jObkZ?7OpKJWofC}QBqLE;bf7<1);Eu$uiI2R}VhID@8Cvy|DaA~ZQAqP>uMSb4`~0*#BHD165|HV}B~?qEVc-ntP!Cn4oVZTfuSBp-)@-svcakI2mmZ|A{(YHkdJ%
                                    zm8~$%707RpE3t8dU}oAfuw!*NvCw(A;Swd&aNtThEs1-09YN69DU4?~=TTfaUKzG*
                                    z8c$+E5KJKve!x{ysiibLn?*s4)jNG@bE}`aFg?R#smnKy#6>?Des9RSXnr>EnY6j2
                                    zy+$X`mgCAnlzsr`V^LhY2W5OVX(>5A9SWRt?@UTvS0~=_5Av1K+Y$_S>-}X0yq!D`
                                    zw`V`?0=;jIJ6{ld{prR$@Moh!cpJQ?cei;{4nc>g*T=)I?^>w*(kb(}WzZhneL`t5
                                    z-OrYh<{h*gL<@{sFmmc+vCk+`VgZFT(fg<}+nVzeJh6e>dTs
                                    zuT`BJ@evh3j3ve^TDF_bIyHTQa6i9Pq`WH|CWJ|PU3q%d$GG}SxB;fSJLuCCAPfC7
                                    zXh$sJQzI-_GB2g@Tqs&XJ`?n6`?o+pK5A!xL-en||Dj8N3x-`lnzt0=Zh>WHl93B*
                                    zg2l(;N56W&vi&HrDdheWJ%Z|6(8YB2wi2*0%%cT%-7v^%)Q%q_hcQ{wptS@oJFLd)yr&q!;5~XGTSc{G;
                                    z@r(B!zb#e!n6}YzjzS5nuk-bwc|iFZDoZT-2*U4=ItvcM^UZff?Sqy6dp|EBU9i=g
                                    z9!80hS=~Pi!m@G>&@nGVOT}I>(%xizC4{F_!?O`{2KhH^q(kOH%v)$1K?Hz1DHzHIGqqoc-YCBJuHDw+nx8c|jC6
                                    zZhOs~9t2+ubzQR~At2uaPJ<9MS)(IPWDilp=OJvOuKrFwc-N)7ov>bPI^Y*J8@6u5
                                    zA>0w~P^MT_fFRIOjAqlZa(t)#E73#g-;MYxl7VKKdAk}uNpmesAb%qSYY~5LYc^*)
                                    zmyUau20F~{w$O8EXzN*PIR}xMD1~=9CB$A#S|`%ugfF(9fY2kW|9}rC*1cXJeIu87
                                    z&j8C*#)7dqt$DYH7=zctP*BM*_Zy;`fh(toj6^9`j~{?M(DyTP;Z&0|QUN?Ko11AN
                                    z6t*4O0GdTo%1p-fvp2GZ&osm#{K-3Gs79oxWXc}EI>v<*u&g@!MNQR4n{A9z;G1rP
                                    zU!R(hItx}qN^FF48wBykE#>|?9X!+?Zndyl7B*E8XDajwa;o+bL+wZN+}eqh`^wJi
                                    zs9is4sHqmG<>-)O+9v
                                    zX%3h3Wj2!7I1J?~hwX?lbb+~0987zH{ZpkaTl)cW&o)T5zJzr;fm^*=4%6Kz_Kt)&h9`k&PZx*B11<@O@5{sB+?i!r}_v?;RV*>dgi=!I%@D%c+FQ
                                    zMs$=(kId26KxE{SmGYg_hD@_2yM1*~PnS`7xNwbt#m{s#a>Wl_bT^f-@e_x;jq4RzTSHHY60tS
                                    zuu^8kczho26}TBtiPYo6f{_ErfWt&%VWuyyZA`6AUs
                                    z%|zhqZuN?UD8XmibC1XxZ`)#WA+E@`E0Z+Mm+Rez1MBjzBxyM_!gGVXc*f1ieSI}!
                                    z-4HG=++fVQ8-<(NF2*Rd`0T1XN9=nHD{H}P55AKXzsw|4@Zxz8lVNpOZiA2|H0oei
                                    zl1d@u$>WqcrKUjjvLU>^gl_7K@m1`y3l$g34!s?y+ZRQ)9IfSS&-bTTu-&&nCTxbx
                                    zF0`yCqAX_|L)DJVApwgy2Uf&_0KccnbyoasWGm1j2{@8-s&+M8K+{QTc~X~Z^hX~t
                                    zt`$KrCgDX}lRy+JWqQ=8i)-pax0jDUhNe^10tJFA=~RGD=X2OF1N~%-qZ4-EqfyqP
                                    z@=JEg&&c)DwXaK2tNAM-?xY^&*JsOL^O@nuJ@nKj9(qS(>F+yPDU9@reoVXMD3O*<
                                    zjlxlAj)YQDxi$}TlG;MCCMQ8oK}^ybyN8|g1)ImizplX)lx+0*H^_G?5o>xlM{FUK
                                    zn69?-Nx<)H7EUkug1@17LL(E#BrJggMX)TE_&D-mov(vlsK>}}XoyTW3%;GUTlU%t
                                    zM{m?>tl$Nj77t`e754LV&dB9s5E9GE&#+!!>izI?lHr7+RoJAT?Yy|q@moMY+4bek
                                    zMgzO=UZM$)!E<9SQ*$;Wqg4nykXa;k1pXJ)TdY2b)#)@eTnjeg;ew5io6M8R7VgtD
                                    z6J{ecuK|t?i{Fk9G=PkIo)=Y)!;rrlVLT#C>a3>esaCO~GAOxIzK;qm_wxoz6FtH;
                                    zLwc*EgFp)Tqyuu&IC?G0?v#b^d1+p+HVs3N2bZJse5>Z2BpzU^q~=(IR3R;E=l0FR
                                    zuKdmSDqrP|rNy8_0N7Nzn4IA%cUX8$%xvtCy1TK-aQwD)Pu|SP{qZq7uk~Wkq3p9Q
                                    z41=6^Gm0C+4ptc;(w_V-DQ{^!uDG5c^7Z$b*=1U2UQw}%I;%ElCP&2Oqv
                                    z5C}x$@vh-`sr|=$=jHE$dIi17}_ea*1nJKbt2?h2GyTP3U5omt&F{DX;XF
                                    zj`1=*_Gfc2pY>)@l>BJz#_KW6i&(hWgYBhiJMziZIX4+Fee|(3G7duESF(ib6^f_y
                                    zX-FOVZX_V6G2s2O&3-`J6Y>i0bvc21i-;us!s&AyurATpc@%N@>uCY{q^9CyLsPRMJgzXHeqf|C;8WE5j+
                                    zcVl?5s31%i%}QGVcQO%MW^ZntaDY0+Ad`8SbOm*__6Lu(72?GyvE6&y~@l=B#6175On;Q5-h2
                                    zv>G~YF2T#)>zC{difR||VY%(`pwQHhZ4v$a^;6`Z=Q{b!vQf0Ug6Xgt0UciLD7QUe
                                    z4ZA~>FKc}BhFo012RCeg@2;#Q$jPz-w$dQluKf*F@0872z1)IKa^#=+HJ
                                    z&K2X+ctOwnJvnn#gLzW9{j~GF#8MZB&0Di(R>mGNh_#L%`-PO91}B+tAqbI;u=v68
                                    z0gu|1KRDN&SL5<*9x1Q$9S*d$6=q>Rl5OcFZq?77PsThOO^BK4aT*4)8oieMlL5T*
                                    zBe|hg`vwu}$y+GPE8@`;*wP@7kPXigwCY%Z%b19HYQ{7_uaIL0m!L7gC%FSELeCleRv%&c9Y3|C
                                    zz8RHDnS|mn(T*9Oo=B~*?e9(Q`(2-@wb<7B!Akt2C`<)=-u^GeXHaBqX(QTU5PwNk
                                    zbDX|9Xs)IdG|G#LL}R$CdBhono=o5>+2PO)XZrdGF#Q$iJ_8=Gdq<6I=BNa4JMR6S?O1b8@^H)Lc
                                    z7s*%2`Z0lRk4(wjVIQU75&{ob1~XOtxu6NeeQSGr#H#e81WwP#%iV?y@QWh
                                    z5$9+I`-oDM3{|~&)wGo~Pj6k(Ny%0Gq4yn-$-!(lPYD6}DXFd!j#w(~$o@3>+FlId
                                    z$@mHxxhdkv53?xA`U0c4c(igq5Uu1r6oC(24H`1lGDy+PH&EN`8!m)#p#ede2TNYl
                                    zm^WSn*ZtW$?G%tyOxg&Kp+3829p>8uODTW5|3cYSODULKcqL8|KJ+m~iBfW{B#E=^
                                    zhVzVN`!w+|+T5{mm>d8KbEnoI(48p|lcf4J&Nx9U&8p#$>0kc@Nb%~bSniCHcZ$|(
                                    zc5E)XS-i0)sY*U8pTz3T_A5XVo+`auh~p9
                                    z0@qm!CL#)2w(UzUu}n6^RAc)S7ri(NQq@NeoKpRK%)h32H^g35L?LSEE&%riAKPw%
                                    zkiA*PJJ8$3`%N;Ehj+~z@2(HzAiA3eX!N)@?VmJQG9(#v5S2NbecI068@k^#;G*t1
                                    z2U*Oy92nJ-Ts{0S{EMD#CjdJo{B(T#n3PDA(D=+cPgZ|*P_;kjvRIOlpc0G3zB_cN
                                    zsZm|{ne=IaEr29#@a#Cr0X;PX~H9{Rqno82j|R(Zq_9%&&)B>p62aIet7Tc
                                    z&}`8hj6KC`x=X})chU*FX1!|XWeun!UT4RCI=zb^aa~Kr<|F#_5JN6U>z(rY8oH9c
                                    z@ZqV`igY@jf>n5uWnrvAgH%Ppp$HlTL760ao?iugK%$d$BHvIjosneRj2a27e%gIY
                                    zxS77gq-yy71cHnY)ca6&hufb0Ge(mgTM+ongWsf1S4CGdzWNV+*)dhZvU&Qy
                                    zt*(n8zmX_T4+2!;JGP)gDr8YY&eXIz`56co6W&SX9;Gkn&Tdsu#gNNtwFu|77=Jx)`
                                    z7TK@s%XgisKd_R4DwP<*lsY!2pb3dh_lw?cg)lC6k6#RaFg%zTCJ9
                                    z1B)-tc)OmTAFWt~HShS1#T=bzYTI)J?Vofz-hL-aP(rzkqAFYA>9(x3dT4(S(g8iST;<-QG%sn(F^YNjJZ!|9qc}I=S5eN?w
                                    z40YK)HennR;|9h}kPU%N02t3YnZbhA^wWN~DM?#z;9!(hZfgfoIltZA-RV_uq~h^v
                                    zQc@b4k$hzgC*weZphJ8EKkwVjoD|#zeNy`4trfBXAN#hxjUCB}A5ZJw)2-UN2p8}d
                                    zNYfyC?Qkn}FM0L{Z&CRLn4!7}qPl&jWA|G@N)0^77SK3hlBb5)_6s77r5+B(-z_b{svh)-Lg@|IEmGv6dpWh;%y+te>s;
                                    zzT6JA7xX6_Z$8?^cir6Kcs4vkJeB9ODdWOC8|<8iH+jCb<`@7=mHiV?8oRk{X8*vy
                                    zULt+N_f;sC`#q5yK~WzLtp@yB-F911)zC|*UaeQvZIq9O@dcTA``nja9m7m-lns~S
                                    z9Vz}UC#b~Po%^YMJ9p0Uxxv-^weVCx6*$OF`{vGFEi|&G0;dp7>MdeD7a*>;mxp8%
                                    zXJw@s*GlQO@Ixm45lSQA2h6(D@k?)DW%tX?V)U#XPw|Ba;WV1N^m2D@5sUar_Ke5L9X}w
                                    z#fIgbuMhuiV<)c#8Rm8$A>Yjx6r6}ky1lm%>6^k7A+sjDx!+?g
                                    z-)CqT+gW0sjDLon9-;A^2~XtuwSs$(ZfL0P3Hc(B#V)4N0%+hi?2qB`^sQ<7vHT^~
                                    zi*$^{ce^ff!>)PN-Z_OA%*90$8rDYDBO7h1pBv!g5!Iy;Fx^jZS^3zgoS?i)HWa4}
                                    zjpgw053Db^^BK7q7lPgYFe8IhNR&+gH!f-vJpAqLS64&TvQv|TF#a`zSrZ4BrvR(j
                                    z8|&qi^SPT+K4FLEFS_|qjEZFv=cBr>@^5DzZ^sHXffGC95Kg{`9S{>JS2r~+r&a^j
                                    zV}Yk4pSU31Dza`Vi|ORf-Sdov^pNaCyI~9t2Lb1(E?BB!j`ZbLtX7rRtpe?%izZ}*
                                    z>KQ>JrW{a+sa>s^s;O?%r?013LoouW6cq4lG3?l#BcFi&!xT~z-I;?%CB0_cz$jW#
                                    z8gkK)In&HjCFg8*fx%!qpj?kkfl-?>(k^>VGC_}&#R(@StRxGQgUDJY
                                    zQ0T205G}UOLJzQFdjiuT#IXY^A+Qw^USDXI(ao2^XF{MCh8~~^CvAOGs#-U1Xh(SdZzpr2C-&TMnz5xao`Tp*&`C75wNK
                                    zbUr~&nXgTyCH~5-Zs~g;R|2uYy=hUqTocgidkQ>ReU0$r5jIsKYtC?|NrJ|K2Xm!R
                                    zLLf_HW7BTR#PJA)EquF`cXLs*6_l#jC5l$M-{t}3F&;d+b&>}LSTPE(>F^XgjaS=h
                                    z?9Z6ET*$s(1H6c|$0ywUSG3)9L0(%Gnt36ZG$%(XB&{RkAOy=)Kpxq_Dm>r}XRv+l>8B}i8jME77qNR~}6KX{HqiL@S8A2UQ;G>%M<^40bUNogQxtirvnCijd5C`49x_W9KNeR)J
                                    zrlGuqZ2s2|4o3@L&%cdS&@ygAs-$mkF-(WPBe;1yY?WZ>B_*Xq2G_7eb1G{unN2nS
                                    zG}MS5vGFFbvHL{Cg+wmDs!-cQ*+KG+^uT#KXC7KfmMLwa%<>NRI)_e0v&(0s$0){V
                                    z&PdU+iBB&x>zIx6<-(Nf{-SC;s7<{qtnY>htoNmIepPl4PxJi!_G7fHdMWy$zz3h)
                                    z!9f(RfXo!%1QTE4$|n9UBh|#CkBUXmiXGLXm##I!za1)e${^X`%Ho7%cTe9LA#dRV8TEk1;L~;?3i9-522GT0{_YOC-IsOOjVrC
                                    zg#Lr&<1PpLpLs8w_lAei%&;~?$1MH!lg(VtWBMC=o=(Oje(hd;cDYbi3Z8TPDh|0I
                                    zEFuVw-$6UfLk>Erz62~A5GjPF=ko}l72Z$xZwaje~lEWibG}@m>K^G=VvRYSG(3P
                                    zyP;3+{)XjPngF1U$oF9b`I00!t11ks^bdncc==<0)
                                    zB1VP%nuS^cmw8ptfHOtdO@561Ut=!rg7>@<`-hfebqH5lor6k@0
                                    z_vI_EzX_Y@qvNe^gGEbMOKGitOG|%C0S(87`q#YQWBGVymb5RF3Vp~;x6a7A;_D7L
                                    z;CSzLYkVjpVB>2Kp6wgBAz@$&@P~y2Z&`o?5S?DmPpJd=*m-S6xvtBwq)7Sbmc89S
                                    zt%hDyqBMo^_PJsVy84E~PUINYQK|kMGHgBDqc4nO=U6;&eu^E-NMHPp>>O-u>h2S~
                                    z0`U7QbGS7sz=E2SL2yyOUA%j^J-EawY2Lp>q1zvRpbtwqWbMOeJe%B3yhW`QxixQe4doiPnUdp^1
                                    zpgzr&AOs&y-~Fl0A#N)swC4=}flhV5hco)9rmSDWJ%$>z&^Qmptu>sVWaX9D-zJ7(
                                    zsc(ZXHSF;8kTTA}BCbr974h-Xpd(C>tF~>t^v+HAPu0HHMJ;$YQ{t!OB+IOQU%3ou
                                    z0N+R$q1qpI?_hD}?)KQmyPg7CIQzDMTN%#xD7O7FszjXlihc2GNAHjvqo+Rvnn?pk
                                    zIbMIT6JAeqYjN9kM0W)EP~>+WayWdWNlN8KW)Zr=CTs9|=fUk>4CsN~LT8NpcLqtc
                                    zO~NoQ)chDvfKq|Rg3v?f;20#2#KF&KHuec2xR+IOH_@}<^!aWNeU4|Ix604ZgcUREtnVA0TpKB71N8Vq&Y*}C
                                    zD*6C1{Slz>ArT8{LFkwgWelG%1VeVY6~)cE^T+_BOPebEGcB}c
                                    z7G0ay{eGB|lM-Xy|HDKj(u$8)xJfOo{*;(NwHadQpq@kP{CFFxH2qx;U|V7
                                    zpJGqudmA-5MdIRe9bich{TkTj?oV##GPbW)S%!qbc`@EVA;D!PfH-Gv}T9<$tAgXhkgG&K~KliGlF)
                                    zE+vP&)PwBnfE$}zv?!%<9KiFbiEa3zMo0fQ8fUcs|v-a?{1
                                    zV}o<#a)YVs*LqX@=Rcf-Z|s&5ntU5;>QODD9UH1Dm4ccPX6?BZJcjfSWX(j=h*^V~
                                    z&lbOiGe{z72`7Gg8)YZlC}{_oWq?w1xZdRlh+ugN6$FoU`cQ@M4VtNW&qFgDZQmJ(
                                    zbulPvy^~}|VAoX=ensu8CA2a1p*OwL)}EGkSngUzWH+5I9;naza#9#MUD>P<}JPG*N4s7s@yF9`p6M2XLqA{~@R$76u3s0UtI-LnfTQ`=uAtYr1dHItkK`hAz{Ms4*sG2wLG{
                                    z(oze%ZqPC1=2bLpy&sA!Uh#N&I%f9rP$S-IoO>lsU224m%O;CA3UMoRq9XV~|KssF
                                    zZrF5@E?O!g2FeuWN^VNwcAFh`q-^gBxJ}ZAJ|&dRqBp|XtUGbJR4wbg%FfptJ;001
                                    zK;N2ZUg*~9yc@3k&UvtQ1BT(pY>wr(bP1L-qrxAh2LWNrwspUEU5e^{U}WhCBsN&W
                                    zcaz%pbvzi+!@sBbx|5fUnlyZ$Oj6iPvQ-bKOk>>iF^PgKv3D8Sb#K8ij1K@HkVCzS
                                    zqE@z7(`Cr_-&fo-H;3g^yWFrN_7bVoNBV*-{d=)bSMYJTWz<&*#!pC8o_ux1XNX@NT<|90I`
                                    z=$?|oJ_+!ied+xpHa{;p{}a*&QLae|#tSpK?8s;_1~Yp9zNMp|M9+w5I0S{PNuO5z
                                    zpg6jLW0;&~A1yp4dZOM|$>p1bh|9|`&Ng^Z`N{}y{fORisbmV85^=EP=~yk*$lC9^
                                    z2Qp<-TWp2=V*QlE&;A?|nF`%$Q|laL6ypZjX!4d*mrtnMW&uw&cE(
                                    zXBrRFU;r2{uX-AH34@{lkSdC$h?OuN?v;Q%Xo2r_eAiNU9_oGsIfqTg)xax&-?w(%
                                    zfPl>R{4--WyBl>hi>S`Rhr#Bir+TYFIv;H($ecweOAxZOKA~|%3i))XkMx^^hAkpc
                                    zU4B8)uH`K^ewDfDs78n74=igxnhhPn-9iViiVWw}GlZh|l_LH1d|&+;P$W`$JdDp(
                                    ztV6pFXVkH5y=QOzJs7vX6eeKa-5{Z-h>*WhV-i?4jE3zEARrt?1h%@M<@??-zdt;f
                                    z!)SqZp?H0N(3|vTjIVZszH!R_v{nA$Y0ncH&}u3
                                    z{ys`Km|`B0Cm3PLvc*hqQi-{M&#Yh52mV~k2I%XH^8b`@-_dYAZ5+TO(Ypvju+bB3
                                    z_1+00YV=N!5Z%hEi|C?7@0}3cM(-uDx&*OS?{yKq^IpIA?|aVd%-uQn%z5Vfd_?j+
                                    zJSn!P>e?R&OPp4gtH?gz^ZZB$pC6|8vt0?0t3VXDhzG2TC1oQXI>Hrh3=~Z*K4_jf
                                    z&2h7FQWB`Jv&YqQ;RqJ3m7<6dX*dWt)q|T%!~XNZ9OPoT)%sHR3ULwz`_trDH;#i&
                                    z`Kq$S=2TuZj^vY^by6IvMwi=K4l^5=?Z{jAbqyt5!t}QHEr0P-W+E=XQCeHCKL=Nl
                                    z;$rJg&nmAB^~{I;UbRC93(kK&L^}PNz)UIE>2h)RzDfObaF>C(
                                    zfM-pnXSA$}>Nt2mFC9C~XTl!tcHsMd=-}sD?FYfu>o{aRghNZpqs|*^V8VA2v{o6k
                                    zB+_a_5NDX8Ua5sLck7XtJGvC)?@EvF;}SlGtbj{SXC#Rz8TyLlV|l+Aq1BkL8Ql6A
                                    zbIrJmvAC`wl((?2@B01-ldkwDxf_(dz9S_FBym|^uGghGd%7R{@1V>$K=k_xc%QV&rgXziWxT;%LR$2a|`m}?1!)-%96{_Uy_2`&2xDPsNygl`|8d1oG2Pas@e*1#4Q2
                                    z_2kj+Ez*OoN&l>&V4gCmrWyu#wTQLC1O9@NsKFl%1?~Ap6zR+?3dubFr>0?*UF9ce
                                    z&wmY7jPs6&-IS`YN!$vwv2Ark9&<O=KH##5%x|NOD<{%+4ogS*13)I6_xgZo4KKfKr
                                    z)78|}qFztY+m`y?9`AcC5?5uam3?TZdwM{3*LDU&tiJw#(3bAdLzrsZR+2DxXasV<-CzwrOyIU8?zB7HrRnHIEniB0pQ
                                    z`6A-r56h5GH+jahmw$?G7L(a5^XIxeMy2GQ$lw}hUwE=r-W+r&*P?UQ&y=`WZveX4)K2jq!
                                    zHv@K~aZ7a9v(Op6@upE8x2L+-2Q>hJq5@W5P;D?sjZfAZ{wl76yVkvDYjluE#`2!^
                                    zXCn9!t$^Bv=I1q0Y^7xY7kn`{!SY^EWrgVqwNTLQwcYv6&G}XlB7zauvd4UWI`mm1
                                    zf5FUy>?5-xtyqn#tAI&tmfy5F*;DWXKOjQ9K_+bmeD2a}T@*d4^z9#|XJ4w0
                                    z{N4(mcj3<&!9FD*K``3>OI_{VaWOP6!2h~rDbz15#5f}nTIOpU_Mza3sLsM0u
                                    z_gD5n`^3_7y867<($HYhXGycz6NL>Jy5`JhzPR)3u2Ig4eDttYE`eJ2rC&ba6jw6V
                                    z%rgHYKE1mgc?&&u(YKUj8{kd%A*azalIj!aj-A)a0fd3^5tffR<51y6_d&uzRA@eV|zxdn5vd3M70sx01hah
                                    z^|f{w{ajTSZB}cn`|t}7$sJufqO=x+KY64(Bi5H(X()|(g)!=xXwq=wzi)TB5-lbX
                                    z5Y?!1WE@`ZVF?OjZPtz$<}&N;usqHNmw{-si@{gp@c9vGO%mdv^J@5SRDfH)pl<^-
                                    zhu9S@pa=K`o?$Uqwo3*Ha|Sn^x{c_2p_)*C`
                                    zxmy*WBl^&F$S^y%jUn&^g80zd|Loq9eaa
                                    zd({gsUV1waN|_}@ls5}yLY5h)hFPhfSx&g0V!8Y>9bEzYd!?KXx%R%4N#n_j(Uqh7
                                    zSN2h%Qf4*YRYk|_0*_UScRQ!F$3pc$dlj*r
                                    zvWV67e3}W?~YOhm&2&LWiAmE-)7wPpE5!-Cwv)(qj)aswz(f{hBJKYX0{f
                                    zgZA`yY4KST#48F-x2v>CFVN#;xR%|0p8_}@qI)p})_KWH-ypF|gq8Vb{ttn`r+0s`
                                    z5Q`Bl+`rr_Pag-vH2;o;?Cis^_FL=J=+HF#iC+~WgxnBKwGeAfZS%i>g)^2k%;A5Q=`~$zMPqor;;BW{yc{DgYhv90pSp9r>
                                    zG#P!tw4SQA&gb75oAruiDm^WFIC_F)3g5YV1AmN
                                    zKIwFQOyay$lp<92UI{H4iKO)#p+w{x=GN6pjQ-~T+;m*EmV>LWeXwr=<5jD%1k
                                    zJ;~hN%F*?Ewl7ztlN*JII>*aGowc7Eq8yFFe&
                                    zNo!%wlQ?CBgHmyMPEwU
                                    zAOoK_?Y7mr^7trRF`L=>0zQ+|BVJYf$aPgvLw!n;Dp)zN410gR%xUF#0lkwUVj48Q
                                    z_tqLX$Icm?rSHsqmLV<9tbcL_+b1kH5PQ?hitp)c&%1Yhb=7yyY+hHICEy-Y9HoXi
                                    zMwq0xLHAvTf0oTVGRiWzn_iIW$=`ZAf(y8=((;JCdM_Dps;r5S5n9z*?)sav$Tbbz
                                    zk$?J_?|u7xG=ed0rN4e}2c(wTuwa$^v2UP{JJ~f#CbXO0*FnpH^H7Lt$$5V*x2A{y
                                    z@`0HtDR%a8clJ=X(d^-dVB^J-uvVgWp2Yi?nqROhS&V;lfJMFn^Z31>1Z|G`fJq?e
                                    zW7Jv_bkk>$5{6h9mh*y%udBWJX>EwM>}Nx*oo^NFF9OXJpG~-hmacxHsNa60Bbrq_
                                    zJ^$RkDZ>yW*>sN)AYTNuZD&g*r7IEKZvRMLxuSyMaiomK)!;pvbmHo@s`|EcLgE&n
                                    z4(4IOa8ahPc;ZThy6L&-j>8pzFrfpK=<>qeLzp{4rF3Q<44mkf`-&JWHQ}Qk>?G=Pp~G
                                    z4xH=YoM`(|lbEvpb@ikfiEQirQUt#}q&mHvyNaedRp)6BRoI7xHidnXPRgk
                                    zetv*sfo4bfJmH=2X|9Vj5d*#Z@NF?ZfpTeJoEU+{K@ya
                                    za+@`grog<&^i;sxWaH920cYbX{|*u22ffLR0`VJ!Qcmo@3YG^M2mUCF>R=4;7npy+
                                    zVf#(!p?!%3pfHq8Y+Bp84QC}ddU)KN#(a-9=sO;4#SGJv+
                                    zxCGD!edn<40N7jFu$SLNkNP^ABx}gu6h~_FMT?%ZUBdW35Bl4KTXl8
                                    zv#@uS9O&ntH=D;4@OUX(pL!xxC3FxU-M^oQuRh)D{4%;qhNLD6onoERCn@;6+}PJG
                                    z7@UhKE|M$ZR7}D9nqE}}YIQrIFqD%SV8^@+`NnJ^8;^{iovi+Zt%9U3kQw3K$-ov0)|&V1reR?nt}L-nq#cQ2S2>f+lh}~iwf{n#owfJ
                                    zez=BZMUZVWG;Te{`5pV!htrmEmxSGl%o^jv{>(?M5E>`}XSxhWTnv+}hiLh9&KxlT
                                    zT8JQ1h#&SnqLv?RWUpA$Ol}FSBb6`eumMDbZsn5Q5e~0CbOYG%hWCovwED_AtPtJI1
                                    zdd+cWI&}H1d6C@AXx^>dgi^dqTtuKRcoie=zA6pnAh!L%#iO`B#aQf)duQY~k@76R
                                    z2|<{huecXduE4l*sof-ZjZ=l9PdX$LKMS;5aQjQ(TVERd!H_7jAAvPvhY&5L5A_#E9C?`nh8**e62Nv@BvkSux6{d?!9Mjj
                                    z-teT$2YUU!k1;I?OU49kiYj?6-xMawA5dCHv}47^W5|*!_T*MFydh;^m{2a&-wniH
                                    zhLmp_rr84;RltW&yN$-k`0(eCpW#3G3d=&9zy;Dg0-vM91WY;FEA5pO$olEbC%@7u
                                    zK_3~m4av)rp5~e%Ls#4@!j<#$Sg1f|K2K2~8+H7^T>CD|W+4TEKV$qgLFo4-%tuHY
                                    zKm0%jFH>Yd#wWFK&-{w-j@+nMnvQA^>vrHl-yh`lt7dEkqCeB0t_9(1n#Iu#gVz+n
                                    zC55KuD}yJ3pic@{HKZi6MUxT?5JS@ZFKowkH<|+Gg=8bU-d>rqMQeok+LQ(Y}xPU@I3*-$ptBB
                                    zC_DtW;730ugNm1yxqZWqy#|nCrhKJYe5C^9m7e;9P6wD(RtW;hB^@C3bAx9XL>Ts*
                                    z_6gCY(U;Bpe%B>LPTpI;TTXcfTzDv;mBk9(%;jYKXyxi*!0lOfgbiOSn9Bn<3ys~o
                                    zMEY^2%Jtfz@}#E&>aghYz}h>C&%_wco7r8Xq_Q|#_}wDoMO6`NmoxyCDX%Dv+Rt+n
                                    z0i`UF5{|4~8lAVb3jr~%>fB_sB0R}@AAkd~S75Ncg_0^jcNF79DL}C&c=v7YDLn0O
                                    zqbK~wP2g}DCCpJdUFA7>N`T+XkII#5pxTC*-g9~nt7x@W
                                    zhiN3j!(}baB2EL$<*D@iHDFV$s2JR$%F;my~~(Jng{1ynr(91Ll#
                                    z4V_}+{$}8TRySmW>e3{BhyhR!38|T{q)QBz7Jvt2haRv!iNaBq{}9HHeU)tDWN-hn
                                    z(59Z9G`Y1&dEASb52tYdQY{(5AKzn+iJOoWLfAd#D2MB*ve0~+KE%;u>DhW|BBGk}
                                    z3|JKDyGG&tsy<42?<1PD4=1AkIFw1;$ZQ$VFT%v;0$XDGwdRe5MamG6A*8EYDz*X$l_q!sfY8<*!+&Zecb4Wayum)R1i-j7
                                    z8{c08ANz0si`D8>he!60unfj6g^Rcy`*_s&fw6!e#W$3%r!B3sE+bT$8ZTWaTf1xn
                                    zY(1<;ofRyip%-k_U#izME+ymdcXS|z9dk%lzpJw_!Bhr{
                                    zW!O%r)YpgH@4~v2yfVw47`h2<+?^#Q!4IwM3F^|r64Jnmnh)O(M?j10iGj1q3i9qaPU
                                    z;NG&hVl@R7a2)dj?Vf;@x`<`E_qX50S0zh|6(L7oeJ_QEFOe6BhMh4`<2w>k
                                    z%B!1E0aN73r)!x>Z-3Xhzuyu+4{%X(a74joIz6&#i>#^benV^tB+My81sGelt^r`y
                                    zX`<@&{lFy*4YdeB
                                    z`<(<|CFqV=eKySu@G+z6d~NsI>OqC@5k*YS-2BisAQ$EwEv5{
                                    k<+^65`#d>g;2pU00k&`(N>hQ}@E-Jj{YqV-QqCgqe>C@%9smFU
                                    
                                    literal 0
                                    HcmV?d00001
                                    
                                    diff --git a/0.0.19/html/index.html b/0.0.19/html/index.html
                                    new file mode 100644
                                    index 0000000..7529a94
                                    --- /dev/null
                                    +++ b/0.0.19/html/index.html
                                    @@ -0,0 +1,1941 @@
                                    +
                                    +
                                    +
                                    +    
                                    +        
                                    +        
                                    +        Guidelines for Teaching C++
                                    +        
                                    +        
                                    +
                                    +
                                    +
                                    +        
                                    +        
                                    +        
                                    +        
                                    +        
                                    +        
                                    +        
                                    +        
                                    +        
                                    +        
                                    +
                                    +        
                                    +                
                                    +                
                                    +        
                                    +        Guidelines for Teaching C++
                                    +        
                                    +                        
                                    +                                                
                                    +
                                    +    
                                    +
                                    +
                                    +        
                                    + +
                                    + +
                                    + +
                                    + +
                                    +

                                    Guidelines for Teaching C++

                                    + +

                                    Version 0.0.19

                                    + +

                                    SG20 (ISO C++ Study Group on Education)

                                    +
                                    +
                                    + +
                                    +
                                    +
                                    + +
                                    +
                                    + +
                                    +

                                    1 Obtaining This Document: The Most Recent Version and Alternate Formats

                                    +

                                    The most recent version of this document is available as an online HTML document at: https://cplusplus.github.io/SG20/latest/.

                                    +

                                    The version of the document that you are currently reading is available in the following formats:

                                    +
                                      +
                                    1. online (HTML) format as a single large HTML document: https://cplusplus.github.io/SG20/0.0.19/html

                                    2. +
                                    3. EPUB format: https://cplusplus.github.io/SG20/0.0.19/guidelines.epub

                                    4. +
                                    5. online (HTML) format, split across multiple HTML documents: https://cplusplus.github.io/SG20/0.0.19/html_split/ [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

                                    6. +
                                    +

                                    Older versions of this document are also available. In general version ver is available at https://cplusplus.github.io/SG20/ver/html. For example, version 0.1.0 (assuming that this version exists) would be available at https://cplusplus.github.io/SG20/0.1.0/html.

                                    +

                                    2 Context and Aim of This Guide

                                    +

                                    This document is intended to serve as a resource for instructors to assist in the preparation of courses on C++ in a variety of settings, including university, college, and industry environments. The main objectives of this document are as follows:

                                    +
                                      +
                                    • to provide guidelines for content to be covered by courses of various difficulty levels on C++ (e.g., topics and learning outcomes)
                                    • +
                                    • to note some common misunderstandings and problematic points that may be encountered when teaching particular topics
                                    • +
                                    • to suggest resources useful for teaching C++
                                    • +
                                    • to present examples of curriculum for specific courses
                                    • +
                                    +

                                    This document does not itself provide a curriculum for a single specific course, but is rather a set of guidelines that can be used to prepare curricula for a wide variety of courses that differ in focus and level of sophistication. (This said, however, some links to other documents with examples of curricula for specific courses may be included herein.) This document only intends to target the teaching of the most recently ratified version of the C++ standard. (This said, however, since older versions of this document are also available, these older versions may be of some use to those who need guidance in older versions of the standard, at least versions that do not predate C++20.)

                                    +

                                    3 Use of This Document

                                    +

                                    [NOTE: This document follows the same license model as the C++ Core Guidelines. The LICENSE document is taken verbatim from the C++ Core Guidelines.] This document is made available under a MIT-style license. In simple terms, this license permits copying, use, modification, and creation of derivative works. A copy of the license is included in the section LICENSE.

                                    +

                                    4 Contributing to This Document

                                    +

                                    Contributions to this document are welcome. If you would like to help with this project as a contributor, please read the section How to Contribute.

                                    +

                                    5 Organization of This Document

                                    +

                                    The various concepts (i.e., ideas) to potentially be covered are partitioned into modules. A module is very broad in scope and consists of numerous topics.

                                    +

                                    For each module, topics related to the module are identified. Then, for each topic, learning outcomes are specified. In order to address a wide variety of courses on C++, each topic is addressed at three proficiency levels. These proficiency levels allow each topic to be covered at more than one level of detail. This allows target audiences with different background and learning objectives to be accommodated. The three proficiency levels are as follows:

                                    +
                                      +
                                    • foundational: This level gives the learner the idea that a facility exists, what benefits it offers, and the basic ways of using it.

                                    • +
                                    • main: This level shows mainstream uses and techniques. For abstraction and organizational mechanisms it also demonstrates how to build them. This level should also give the learner a basic (but not detailed) understanding of how a facility might be implemented so that the learner can have a first-order understanding of any costs involved.

                                    • +
                                    • advanced: This level gives information suitable for an expert. For most topics there is an expert level of knowledge that most programmers rarely need and techniques that require detailed understanding of language rules or library implementation.

                                    • +
                                    +

                                    The remainder of this document is organized as follows. The various topics are listed grouped by module. In cases where a topic might be classified into more than one module, the topic is listed under the module of most direct relevance. This is done in order to avoid duplication of content. (In the case that a topic is equally relevant to multiple modules, the decision of which to select is made by a proverbial coin toss.) The order in which modules and topics are presented is not meant to imply any order of coverage in a course. The order in which items are listed is essentially arbitrary.

                                    +

                                    6 Summary of Modules and Topics

                                    +

                                    In the sections that follow, the various modules and topics are presented. There is one section per module. For each module, a table listing the various topics in that module is provided. The ID for a topic is linked to the detailed coverage of that topic that comes later in the document. If a topic has any learning outcomes at a given proficiency level, this is indicated by a checkmark (“✔️”). If a topic has no learning outcomes (simply because there are not any, not because the information is missing), this is indicated by an em dash (“—”). In the case that the information for a topic is completely missing, a question mark (“?”) symbol is used.

                                    +

                                    6.1 Compilation Model

                                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                    IDUnitFoundationalMainAdvanced
                                    [?]Translation Units???
                                    [?]Headers???
                                    [?]Modules???
                                    [?]Name Mangling???
                                    [?]Phases of Translation???
                                    [?]Separate Compilation???
                                    [?]Linkage???
                                    +

                                    6.2 Preprocessor

                                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                    IDUnitFoundationalMainAdvanced
                                    [?]Preprocessor Metaprogramming???
                                    [?]Inclusion???
                                    [?]Macros???
                                    +

                                    6.3 Basics Types, Objects, Values, Expressions, Statements, and Control-Flow Constructs

                                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                    IDUnitFoundationalMainAdvanced
                                    [?]Constant Objects???
                                    [?]Declarations???
                                    [def]Definitions✔️✔️✔️
                                    [?]Selection Constructs (e.g., if, ternary)???
                                    [?]Looping Constructs (e.g., for, while, etc.)???
                                    +

                                    6.4 Functions

                                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                    IDUnitFoundationalMainAdvanced
                                    [?]Calling Functions???
                                    [?]Parameter Passing (e.g., Passing By Value and Reference)???
                                    [func-args]Default Arguments✔️
                                    [?]Returning Multiple Values???
                                    [?]Overloading???
                                    [udl]User-Defined Literals✔️✔️
                                    +

                                    6.5 User-Defined Types (Classes)

                                    + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                    IDUnitFoundationalMainAdvanced
                                    [?]Special Member Functions???
                                    [?]Types???
                                    [?]Conversions???
                                    [?]Constructors and Destructors???
                                    [?]Move/Copy Constructors and Assignment Operators???
                                    [?]Member Functions???
                                    [?]Sum Types???
                                    [?]User-Defined Literals???
                                    [?]Special Member Functions???
                                    [?]Guidelines for Special Member Functions (e.g., Rule of Five, Rule of Zero)???
                                    [copy]Copy Semantics✔️✔️
                                    [?]Moving and Copying???
                                    [?]Lambdas???
                                    +

                                    6.6 Inheritance and Class Hierarchies

                                    + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                    IDUnitFoundationalMainAdvanced
                                    [?]Virtual Functions???
                                    [?]Run-Time Type Information???
                                    +

                                    6.7 Compile-Time Computation

                                    + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                    IDUnitFoundationalMainAdvanced
                                    [?]Constant Expressions and Constant Evaluation???
                                    [static-assert]static_assert✔️✔️
                                    +

                                    6.8 Generic Programming (Templates)

                                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                    IDUnitFoundationalMainAdvanced
                                    [?]Concepts???
                                    [?]SFINAE???
                                    [?]Template Metaprogramming???
                                    [?]Function Templates???
                                    [?]Requires Clauses???
                                    [req-expr]Requires Expressions✔️✔️
                                    +

                                    6.9 Error Handling

                                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                    IDUnitFoundationalMainAdvanced
                                    [coe]Categories of Errors✔️✔️
                                    [?]errno???
                                    [?]Error Codes???
                                    [eh]Exception Handling✔️✔️✔️
                                    +

                                    6.10 Standard Library

                                    + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                    IDUnitFoundationalMainAdvanced
                                    [?]Input/Output (I/O)???
                                    [?]Containers, Iterators, and Algorithms???
                                    +

                                    6.11 External (i.e., Non Standard) Libraries

                                    + + + + + + + + + + + + + + + + + + + +
                                    IDUnitFoundationalMainAdvanced
                                    [?]Graphical User Interfaces???
                                    +

                                    6.12 Building

                                    + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                    IDUnitFoundationalMainAdvanced
                                    [?]Software Build Tools???
                                    [?]Strategies for Handling Build Problems???
                                    +

                                    6.13 Testing and Debugging

                                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                    IDUnitFoundationalMainAdvanced
                                    [?]Source-Level Debuggers???
                                    [?]Code Sanitizers???
                                    [?]Test Frameworks???
                                    [?]Debugging Strategies???
                                    +

                                    6.14 Tooling

                                    + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                    IDUnitFoundationalMainAdvanced
                                    [?]Compiler Toolchains???
                                    [?]IDEs???
                                    +

                                    6.15 Software Design

                                    + + + + + + + + + + + + + + + + + + + +
                                    IDUnitFoundationalMainAdvanced
                                    [?]Design by Contract???
                                    +

                                    7 Detailed Information for Modules and Topics

                                    +

                                    7.1 C++ object model: copy semantics

                                    +

                                    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                                    +

                                    7.1.1 Overview

                                    +

                                    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                                    + ++++ + + + + + + + + + + + + + + + + + + + + +
                                    LevelObjectives
                                    Foundationalunderstanding how and when are copies made
                                    Mainimplementing user-defined copy operations
                                    Advancedspecial cases: copy elision
                                    +

                                    7.1.2 Motivation

                                    +

                                    Why is this important? Why do we want to learn/teach this topic?

                                    +

                                    Copy semantics allows the user to define how objects of a class get replicated and interact on a value level.

                                    +

                                    7.1.3 Topic introduction

                                    +

                                    Very brief introduction to the topic.

                                    +

                                    Explains when and how objects are copied.

                                    +

                                    7.1.4 Foundational: How and when are copies made

                                    +

                                    7.1.4.1 Background/Required Knowledge

                                    +

                                    A student is able to: * explain what a C++ type is? [C++ object model: types] * explain what an object is? [C++ object model: objects], [C++ object model: constant objects] * define and understand class invariants?

                                    +

                                    It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain special member functions [C++ object model: special member functions]

                                    +

                                    7.1.4.2 Student outcomes

                                    +

                                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                    +

                                    A student should be able to:

                                    +
                                      +
                                    1. explain what copy semantics accomplish
                                    2. +
                                    +
                                      +
                                    • establishing “equivalent” object state in another object
                                    • +
                                    +
                                      +
                                    1. explain difference between copying a reference and copying a value*
                                    2. +
                                    3. explain where copies are made
                                    4. +
                                    +

                                    * In other languages these differences are sometimes referred to as shallow and deep copy.

                                    +

                                    7.1.4.3 Caveats

                                    +

                                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                    +
                                      +
                                    • Compiler-provided copy operations may result in ownership problems (e.g., char*). These ownership problems can generally be solved by using types whose copy operations have the appropriate semantics, e.g., std::string instead of char* to hold string values.
                                    • +
                                    +

                                    7.1.4.4 Points to cover

                                    +

                                    This section lists important details for each point.

                                    +
                                      +
                                    • Principle of copying +
                                        +
                                      • Copying of types, which follow the rule of zero
                                      • +
                                      • Copying of types, with user defined copy operations
                                      • +
                                      • Copying an object does not change the original
                                      • +
                                    • +
                                    • Practical applications +
                                        +
                                      • std::unique_ptr (has no copy)
                                      • +
                                      • Strings (copies the value)
                                      • +
                                    • +
                                    +

                                    7.1.5 Main: Implementing user-defined copy operations

                                    +

                                    7.1.5.1 Background/Required Knowledge

                                    +

                                    A student is able to: * identify special member functions [C++ object model: special member functions]

                                    +

                                    It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain the rule of zero [C++ object model: rule-of-zero] * explain the rule of five [C++ object model: rule-of-five]

                                    +

                                    7.1.5.2 Student outcomes

                                    +

                                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                    +

                                    A student should be able to: * explain when they have to implement the copy operations for their own type * Copy constructor * Copy assignment operator * implement copy operations for their own types * Optional: explain when copying with basic and strong exception guarantees is useful

                                    +

                                    7.1.5.3 Caveats

                                    +

                                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                    +
                                      +
                                    • Intricacies when implementing copy operations: +
                                        +
                                      • Examples of how not to write copy operations (e.g., C++03 std::auto_ptr)
                                      • +
                                    • +
                                    +

                                    7.1.5.4 Points to cover

                                    +

                                    This section lists important details for each point.

                                    +
                                      +
                                    • Copy constructors and copy assignment operators +
                                        +
                                      • How compiler generates default copy operations
                                      • +
                                      • =default, =delete (No copy)
                                      • +
                                      • How-to write your own copy operations
                                      • +
                                      • Rule-of-five
                                      • +
                                      • Copy assignment operators can be ref-qualified to avoid assigning into temporary objects.
                                      • +
                                    • +
                                    +

                                    7.1.6 Advanced

                                    +

                                    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                                    +

                                    When can copies be elided and when does the standard guarantee copy elision. References: * Abseil tip of the Week #166 * cppreference - Copy elision

                                    +

                                    7.2 C++ object model: Definitions

                                    +

                                    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                                    +

                                    7.2.1 Overview

                                    +

                                    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                                    + ++++ + + + + + + + + + + + + + + + + + + + + +
                                    LevelObjective
                                    FoundationalDefining variables and ODR
                                    MainDefining for programs
                                    AdvancedSpecial cases and peculiarities
                                    +

                                    7.2.2 Motivation

                                    +

                                    Why is this important? Why do we want to learn/teach this topic?

                                    +
                                      +
                                    • A definition is a declaration that supplies all that is needed for a complete entity
                                    • +
                                    • int baz = 42;
                                    • +
                                    • void bar() { /* implementation */ }
                                    • +
                                    • class Foo { /* class body */ };
                                    • +
                                    +

                                    7.2.3 Topic introduction

                                    +

                                    Very brief introduction to the topic.

                                    +

                                    A definition extends a declaration, providing all that is needed for a complete entity, e.g., allocate memory for variables, provide the implementation for functions, complete definitions of data and function members of a class.

                                    +

                                    7.2.4 Foundational: Defining variables and ODR

                                    +

                                    7.2.4.1 Background/Required Knowledge

                                    +

                                    A student:

                                    + +

                                    7.2.4.2 Student outcomes

                                    +

                                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                    +

                                    A student should be able to:

                                    +
                                      +
                                    1. define a variable with a specific type int baz = 42;
                                    2. +
                                    3. define a function void bar() {}
                                    4. +
                                    5. define a class class Foo {};
                                    6. +
                                    7. explain the one definition rule
                                    8. +
                                    +

                                    7.2.4.3 Caveats

                                    +

                                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                    +

                                    No caveats at present.

                                    +

                                    7.2.4.4 Points to cover

                                    +

                                    This section lists important details for each point.

                                    +
                                      +
                                    • One definition rule (ODR)
                                    • +
                                    +

                                    7.2.5 Main: Defining for programs

                                    +

                                    7.2.5.1 Background/Required Knowledge

                                    + +

                                    7.2.5.2 Student outcomes

                                    +

                                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                    +

                                    A student should be able to:

                                    +
                                      +
                                    1. organize variables, functions, classes into multiple translation units, describing interface with declarations and providing the implementations with definitions without violating ODR.
                                    2. +
                                    3. distinguish between template declaration and definition
                                    4. +
                                    +

                                    7.2.5.3 Caveats

                                    +

                                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                    +
                                      +
                                    • Putting a definition into a header file that is included more than once leads to ODR violations, possibly resulting in linker errors.
                                    • +
                                    +

                                    7.2.5.4 Points to cover

                                    +

                                    This section lists important details for each point.

                                    +

                                    7.2.6 Advanced: Special cases and peculiarities

                                    +

                                    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                                    +
                                      +
                                    • ABI Incompatibilities: Different definitions of the same type in multiple object files can lead to subtle program errors.
                                    • +
                                    +

                                    7.3 C++ object model: Declarations

                                    +

                                    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                                    +

                                    7.3.1 Overview

                                    +

                                    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                                    + ++++ + + + + + + + + + + + + + + + + + + + + +
                                    LevelObjective
                                    FoundationalDeclaring variables
                                    MainDeclaring for programs
                                    AdvancedSpecial cases and peculiarities
                                    +

                                    7.3.2 Motivation

                                    +

                                    Why is this important? Why do we want to learn/teach this topic?

                                    +
                                      +
                                    • Introduces a name and it’s type
                                    • +
                                    • int baz;
                                    • +
                                    • void bar();
                                    • +
                                    • class Foo;
                                    • +
                                    +

                                    7.3.3 Topic introduction

                                    +

                                    Very brief introduction to the topic.

                                    +

                                    Introduce names and their associated type in a scope.

                                    +

                                    7.3.4 Foundational: Declaring variables

                                    +

                                    7.3.4.1 Background/Required Knowledge

                                    +

                                    A student:

                                    +
                                      +
                                    • is familiar with the basic C++ types: +
                                        +
                                      • bool (Boolean type)
                                      • +
                                      • int (Integer type)
                                      • +
                                      • double (Floating-point type)
                                      • +
                                    • +
                                    +

                                    7.3.4.2 Student outcomes

                                    +

                                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                    +

                                    A student should be able to:

                                    +
                                      +
                                    1. declare a variable with a specific type ‘int baz;’
                                    2. +
                                    3. declare a function ‘void bar();’
                                    4. +
                                    5. declare a class ‘class Foo;’
                                    6. +
                                    7. forward declare a user-defined type or a function
                                    8. +
                                    9. explain the difference between a definition and a declaration
                                    10. +
                                    +

                                    7.3.4.3 Caveats

                                    +

                                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                    +

                                    No caveats at present.

                                    +

                                    7.3.4.4 Points to cover

                                    +

                                    This section lists important details for each point.

                                    +

                                    7.3.5 Main: Declarations for programs

                                    +

                                    7.3.5.1 Background/Required Knowledge

                                    +
                                      +
                                    • All of the above.
                                    • +
                                    • Basic template syntax
                                    • +
                                    +

                                    7.3.5.2 Student outcomes

                                    +

                                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                    +

                                    A student should be able to:

                                    +
                                      +
                                    1. create header and source files with a declaration in the former and definition of a variable/function in the latter
                                    2. +
                                    3. declare type aliases to introduce a type with an alternative name ‘using std::string;’
                                    4. +
                                    5. write a forward template declaration
                                    6. +
                                    +

                                    7.3.5.3 Caveats

                                    +

                                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                    +
                                      +
                                    • Declaring aliases can introduce name clashes
                                    • +
                                    • Prefer using declaration’s over using directives in header files [link]
                                    • +
                                    • The order of declarations dictates the order of initialization
                                    • +
                                    +

                                    7.3.5.4 Points to cover

                                    +

                                    This section lists important details for each point.

                                    +

                                    7.3.6 Advanced

                                    +

                                    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                                    +
                                      +
                                    • asm declaration
                                    • +
                                    • using-enum-declaration
                                    • +
                                    • extern “C” declarations
                                    • +
                                    +

                                    See concepts.

                                    +

                                    See user-defined-literals.

                                    +

                                    7.4 Meta-error handling: static_assert

                                    +

                                    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                                    +

                                    7.4.1 Overview

                                    +

                                    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                                    + ++++ + + + + + + + + + + + + + + + + + + + + +
                                    LevelObjectives
                                    FoundationalCalling static_assert with a constant expression
                                    MainUsing static_assert to detect contract violations and improve error messages
                                    Advanced
                                    +

                                    7.4.2 Motivation

                                    +

                                    Why is this important? Why do we want to learn/teach this topic?

                                    +

                                    static_assert allows the developer to enforce that conditions which can be checked during compilation will force build errors when violated. Additionally, they are the best mechanism by which a developer can pass useful information to other developers regarding what violation occurred or what must be done, instead.

                                    +

                                    7.4.3 Topic introduction

                                    +

                                    Very brief introduction to the topic.

                                    +

                                    static_assert is a compile-time evaluated function that asserts the truth of a supplied predicate, issuing an optional user-supplied error message if the predicate is false.

                                    +

                                    7.4.4 Foundational: Calling static_assert with a constant expression

                                    +

                                    7.4.4.1 Background/Required Knowledge

                                    +

                                    A student:

                                    +
                                      +
                                    • Should be able to explain the difference between code evaluated at compile-time and run-time
                                    • +
                                    • Should be able to cite some examples of compile-time known information, such as sizeof(T)
                                    • +
                                    +

                                    7.4.4.2 Student outcomes

                                    +

                                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                    +

                                    A student should be able to:

                                    +
                                      +
                                    1. Assert the expected size of a structure using static_assert
                                    2. +
                                    +

                                    7.4.4.3 Caveats

                                    +

                                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                    +

                                    7.4.4.4 Points to cover

                                    +

                                    This section lists important details for each point.

                                    +
                                      +
                                    • X
                                    • +
                                    • In addition to what is wrong, a good error message will inform the user of how to correct it
                                    • +
                                    +

                                    7.4.5 Main: Contracts and static_assert

                                    +

                                    7.4.5.1 Background/Required Knowledge

                                    +
                                      +
                                    • All of the above.
                                    • +
                                    • General understanding of compile-time requirements
                                    • +
                                    +

                                    7.4.5.2 Student outcomes

                                    +

                                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                    +

                                    A student should be able to:

                                    +
                                      +
                                    1. Utilize static_assert to verify preconditions of a meta-function
                                    2. +
                                    3. Utilize static_assert to verify the results of meta-functions for known values
                                    4. +
                                    +

                                    7.4.5.3 Caveats

                                    +

                                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                    +

                                    7.4.5.4 Points to cover

                                    +

                                    This section lists important details for each point.

                                    +
                                      +
                                    • When writing a meta-function, use static_assert to test the results
                                    • +
                                    • Write static_assert calls at the scope of the code they are guarding
                                    • +
                                    + +

                                    7.4.6 Advanced

                                    +

                                    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                                    +

                                    7.5 Functions: user-defined literals

                                    +

                                    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                                    +

                                    7.5.1 Overview

                                    +

                                    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                                    + ++++ + + + + + + + + + + + + + + + + + + + + +
                                    LevelObjectives
                                    Foundationalusing and understanding UDLs
                                    Mainimplementing your own UDLs
                                    AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
                                    +

                                    7.5.2 Motivation

                                    +

                                    Why is this important? Why do we want to learn/teach this topic?

                                    +
                                      +
                                    • Allows clearer expression of intent in C++.
                                    • +
                                    • std::string: "Hello, world!"s
                                    • +
                                    • std::chrono: 3h + 10min + 5s
                                    • +
                                    +

                                    7.5.3 Topic introduction

                                    +

                                    Very brief introduction to the topic.

                                    +
                                      +
                                    • Explain the existence of user defined literals. Example: 12min + 17s is terse, expressive and type safe.
                                    • +
                                    +

                                    7.5.4 Foundational: Using UDLs

                                    +

                                    7.5.4.1 Background/Required Knowledge

                                    +

                                    A student: * knows how to form numeric literals, e.g., 1.5f means a float of value 1.5. * is familiar with the major C++ types: * bool (Boolean type) * int (Integer type) * double (Floating-point type) * std::string (Text type) * std::vector (Collection type) * knows that namespaces exist, and namespace std. * knows what using-declarations and using-directives are. [C++ object model: declarations]

                                    +

                                    7.5.4.2 Student outcomes

                                    +

                                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                    +

                                    A student should be able to:

                                    +
                                      +
                                    1. use using namespace std::string_literals[1].
                                    2. +
                                    3. recognise UDLs in code that they are reading.
                                    4. +
                                    5. figure out which UDL definitions for a used type exist.
                                    6. +
                                    7. identify parts of the standard library that make use of UDLs.
                                    8. +
                                    9. prevent the dangers of temporaries created with "blah"s as well as with std::string{"blah"}.
                                    10. +
                                    11. effectively selects the right set of namespaces in using-directives from the sub-namespaces std::literals.
                                    12. +
                                    +

                                    [1]: explain that it’s okay to use a using-directive to “activate” UDLs.

                                    +

                                    7.5.4.3 Caveats

                                    +

                                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                    +
                                      +
                                    • A student gets confused by the similarities and differences between built-in suffixes and UDLs and between UDLs from different namespaces.
                                    • +
                                    • A student “activates” two suffixes with the same signature from different namespaces.
                                    • +
                                    +

                                    7.5.4.4 Points to cover

                                    +

                                    This section lists important details for each point.

                                    +

                                    7.5.5 Main: implementing UDLs

                                    +

                                    7.5.5.1 Background/Required Knowledge

                                    +
                                      +
                                    • All of the above.
                                    • +
                                    +

                                    7.5.5.2 Student outcomes

                                    +

                                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                    +

                                    A student should be able to:

                                    +
                                      +
                                    1. write a UDL operator of their own.
                                    2. +
                                    3. separate unrelated UDLs into distinct namespaces.
                                    4. +
                                    +

                                    7.5.5.3 Caveats

                                    +

                                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                    +

                                    No caveats at present. #### Points to cover

                                    +

                                    This section lists important details for each point.

                                    +

                                    No caveats at present. ### Advanced {#udl-advanced}

                                    +

                                    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                                    +

                                    7.6 Functions: default argument

                                    +

                                    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                                    +

                                    7.6.1 Overview

                                    +

                                    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                                    +

                                    Functions in C++ may be overloaded with different numbers and types of parameters. It may be of value to specify default arguments for some number of parameters, to allow a caller to avoid specifying arguments that rarely change, or to enable expanding the set of parameters while maintaining backward compatibility with existing callers.

                                    + ++++ + + + + + + + + + + + + + + + + + + + + +
                                    LevelObjective
                                    FoundationalDefine and use functions with default arguments
                                    Main
                                    Advancedrefinement of default arguments through multiple declarations
                                    +

                                    7.6.2 Motivation

                                    +

                                    Why is this important? Why do we want to learn/teach this topic?

                                    +

                                    Default arguments allow the omission of arguments with obvious or common values. Also may be utilized to extend an existing function signature without forcing changes to existing calling code.

                                    +

                                    7.6.3 Topic introduction

                                    +

                                    Very brief introduction to the topic.

                                    +

                                    Explain how default arguments work and how to define them.

                                    +

                                    7.6.4 Foundational: Using and defining functions with default arguments

                                    +

                                    7.6.4.1 Background/Required Knowledge

                                    +

                                    A student is able to:

                                    + +

                                    7.6.4.2 Student outcomes

                                    +

                                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                    +

                                    A student should be able to:

                                    +
                                      +
                                    1. Call to a function with a default argument with or without that argument specified
                                    2. +
                                    3. Declare a function with a default argument, and omit the default in the definition’s signature
                                    4. +
                                    5. Explain when the lifetime of a default argument begins and ends
                                    6. +
                                    +

                                    7.6.4.3 Caveats

                                    +

                                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                    +
                                      +
                                    • When no forward-declaration exists, the definition serves as the declaration
                                    • +
                                    • When multiple declarations exist, only one may specify the default for any particular parameter, but multiple declarations may specify the defaults for different parameters.
                                    • +
                                    • Additional default values may be specified for other parameters in repeat declarations
                                    • +
                                    • Calling an overloaded function with fewer arguments may be ambiguous with regard to an overload with default arguments
                                    • +
                                    +

                                    7.6.4.4 Points to cover

                                    +

                                    This section lists important details for each point.

                                    +
                                      +
                                    • Default value may only be specified once for each parameter among all declarations
                                    • +
                                    • Default values must start from the rightmost parameter and continue leftward without gaps
                                    • +
                                    • Considerations of when to use default arguments vs overload set
                                    • +
                                    +

                                    7.6.5 Main: implementing *

                                    +

                                    7.6.5.1 Background/Required knowledge

                                    +
                                      +
                                    • All of the above.
                                    • +
                                    +

                                    7.6.5.2 Student outcomes

                                    +

                                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                    +

                                    A student should be able to:

                                    +

                                    7.6.5.3 Caveats

                                    +

                                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                    +

                                    7.6.5.4 Points to cover

                                    +

                                    This section lists important details for each point.

                                    +

                                    7.6.6 Advanced

                                    +

                                    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                                    +

                                    Subsequent redeclarations of the same function may add default argument values, which are then usable by callers. Though a single parameter cannot be given a default argument twice in the same translation unit, it is legal, though ill-advised, to give the same function different default arguments in different translation units.

                                    +

                                    7.7 Module name: Requires Expressions

                                    +

                                    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                                    +

                                    7.7.1 Overview

                                    +

                                    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                                    + ++++ + + + + + + + + + + + + + + + + + + + + +
                                    LevelObjectives
                                    FoundationalDefine and use requires-expressions to check satisfaction of expressions by given parameters
                                    MainDefine and use requires-expressions to check properties of expressions
                                    Advanced
                                    +

                                    7.7.2 Motivation

                                    +

                                    Why is this important? Why do we want to learn/teach this topic?

                                    +

                                    Requires-expressions allow a developer to perform compile-time evaluation on the validity of other expressions. These are fundamental to the ability to write concepts. [Compile-time programming: concepts]

                                    +

                                    7.8 Topic introduction

                                    +

                                    Very brief introduction to the topic.

                                    +

                                    Requires-expressions are compile-time predicates which evaluate to true when their specified set of expressions are all valid for a given set of inputs.

                                    +

                                    7.8.1 Foundational: Writing requires-expressions

                                    +

                                    7.8.1.1 Background/Required Knowledge

                                    +

                                    A student is able to:

                                    + +

                                    It is helpful if:

                                    +
                                      +
                                    • The student is aware that attempting to specialize the template with types or values which do not match otherwise unstated assumptions will cause errors within the template.
                                    • +
                                    +

                                    7.8.1.2 Student outcomes

                                    +

                                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                    +

                                    A student should be able to:

                                    +
                                      +
                                    1. Write a simple-requirement to assert the validity of an expression
                                    2. +
                                    3. Write a type-requirement to check the existence of a type by its identifier
                                    4. +
                                    5. Write a compound-requirement to test the resulting type of an expression
                                    6. +
                                    7. Write a nested-requirement to test the constexpr value of an operation, as opposed to just the syntactic validity
                                    8. +
                                    9. Use a requires-expression within a concept, requires-clause, or if constexpr condition
                                    10. +
                                    +

                                    7.8.1.3 Caveats

                                    +

                                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                    +

                                    To require that expressions, which evaluate to a boolean value like sizeof(t) == 4, evaluate to true a nested-requirement is needed (e.g., requires sizeof(t) == 4;). Omitting the requires results in a simple-requirement, which is satisfied based purely on syntactic validity, not on the result of the operation.

                                    +

                                    7.8.1.4 Points to cover

                                    +

                                    This section lists important details for each point.

                                    +
                                      +
                                    • All requires-expression requirements terminate with a semicolon.
                                    • +
                                    • simple-requirements are used to check that an expression is well-formed.
                                    • +
                                    • nested-requirements are introduced with requires and primarily used to check the result of an expression computable by the compiler, including concepts or other requires-expressions.
                                    • +
                                    • type-requirements are introduced with typename and used to verify the existence of a type with a particular identifier.
                                    • +
                                    • compound-requirements are enclosed in braces and can be used to check the resulting type of an expression.
                                    • +
                                    • Checks are performed by the compiler, not at run time.
                                    • +
                                    • If covering usage of requires-expression with requires-clause, [Compile-time programming: requires clause] demonstrate requires requires and show how to ever avoid writing it by using a concept. [Compile-time programming: concepts]
                                    • +
                                    +

                                    7.8.2 Main: Advanced requirements

                                    +

                                    7.8.2.1 Background/Required Knowledge

                                    +
                                      +
                                    • All of the above.
                                    • +
                                    • Knowledge of noexcept
                                    • +
                                    +

                                    A student is able to:

                                    + +

                                    7.8.2.2 Student outcomes

                                    +

                                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                    +

                                    A student should be able to:

                                    +
                                      +
                                    1. Write compound-requirements which test the noexceptness of an expression.
                                    2. +
                                    3. Use a concept as the target of a compound-requirement.
                                    4. +
                                    +

                                    7.8.2.3 Caveats

                                    +

                                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                    +

                                    7.8.2.4 Points to cover

                                    +

                                    This section lists important details for each point.

                                    +
                                      +
                                    • Compound-requirements allow the optional ability to test whether an expression is marked as noexcept, by using a trailing noexcept keyword.
                                    • +
                                    + +
                                      +
                                    • If the return-type-requirement of a compound-requirement is a concept, that concept is given the resulting type as the first parameter, followed by the specified parameters in the compound-requirement. { ++x } -> C<int> would substitute C<decltype((++x)), int> and check that concept C is satisfied for those parameters.
                                    • +
                                    +

                                    7.8.3 Advanced

                                    +

                                    7.9 Error handling: Error codes

                                    +

                                    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                                    +

                                    7.9.1 Overview

                                    +

                                    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                                    + ++++ + + + + + + + + + + + + + + + + + + + + +
                                    LevelObjective
                                    FoundationalHandling error codes with std::error_code
                                    MainDesigning APIs around std::error_code
                                    Advanced
                                    +

                                    7.9.2 Motivation

                                    +

                                    Why is this important? Why do we want to learn/teach this topic?

                                    +

                                    C++ offers a type safe way of passing around errors, contrary to the C-style of error handling, by this, we prevent bugs when passing error codes. Furthermore, error handling with error codes is more commonly used than exception handling, which only should be used in exceptional situations and in some environments is not feasible at all, e.g., in embedded or performance critical software.

                                    +

                                    7.9.3 Topic introduction

                                    +

                                    Very brief introduction to the topic.

                                    +

                                    C++ offers std::error_code, which encapsulates error codes in a type safe way. This topic describes how to use these error codes.

                                    +

                                    7.9.4 Foundational: Handling error codes with std::error_code

                                    +

                                    7.9.4.1 Background/Required Knowledge

                                    +

                                    A student:

                                    + +

                                    7.9.4.2 Student outcomes

                                    +

                                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                    +

                                    A student should be able to:

                                    +
                                      +
                                    1. write code to handle errors with std::error_code, e.g., obtain the message of the error code or check if an error occurred.
                                    2. +
                                    3. distinguish between the different categories and make justified decisions when to use which
                                    4. +
                                    +

                                    7.9.4.3 Caveats

                                    +

                                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                    +

                                    7.9.4.4 Points to cover

                                    +

                                    This section lists important details for each point.

                                    +
                                      +
                                    • a brief overview of std::error_code and how to use it
                                    • +
                                    +

                                    7.9.5 Main: Designing APIs around std::error_code

                                    +

                                    7.9.5.1 Background/Required Knowledge

                                    +
                                      +
                                    • should know how to use reference parameters as an output parameter
                                    • +
                                    +

                                    7.9.5.2 Student outcomes

                                    +

                                    A student should be able to:

                                    +
                                      +
                                    1. create an error_code and design API that work with std:error_code
                                    2. +
                                    3. write code that utilizes std::error_category
                                    4. +
                                    5. explain the difference between C-style error handling with errno and std::error_code
                                    6. +
                                    7. make effective use of the interface of std::error_code
                                    8. +
                                    +

                                    7.9.5.3 Caveats

                                    +
                                      +
                                    • reset errno before calling a function that might set errno (better pass an input parameter std::error_code)
                                    • +
                                    +

                                    7.9.5.4 Points to cover

                                    +
                                      +
                                    • provide a full picture of std::error_code and it’s APIs
                                    • +
                                    • std::error_category (explorative)
                                    • +
                                    +

                                    7.9.6 Advanced

                                    +

                                    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                                    +
                                      +
                                    • implementing your own error_category
                                    • +
                                    +

                                    7.9.7 Overview

                                    +

                                    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                                    + ++++ + + + + + + + + + + + + + + + + + + + + +
                                    LevelObjective
                                    FoundationalStandards exception hierarchy
                                    MainException guarantees
                                    Advanced
                                    +

                                    7.9.8 Motivation

                                    +

                                    Why is this important? Why do we want to learn/teach this topic?

                                    +

                                    Exception handling is used to be able to continue the program in case of exceptional situations (like requesting a ridiculous amount of memory: bad_alloc).

                                    +

                                    7.9.9 Topic introduction

                                    +

                                    Very brief introduction to the topic.

                                    +

                                    There are other forms of handling difficult situations, but here we concentrate on exception handling and the peculiarities/characteristics of it. Because there are different forms, we should know when to use which type of handling special situations.

                                    +

                                    7.9.10 Foundational: Standards exception hierarchy

                                    +

                                    7.9.10.1 Background/Required Knowledge

                                    +

                                    A student:

                                    + +

                                    7.9.10.2 Student outcomes

                                    +

                                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                    +

                                    A student should be able to:

                                    +
                                      +
                                    1. Explain how some std:: calls may cause an exception
                                    2. +
                                    3. Discern the different standard exception types
                                    4. +
                                    5. Write simple try … except code (e.g., out of memory, vector at indexing)
                                    6. +
                                    7. Explain on a “simplified” conceptual level what happens when an exception is thrown and is bubbled up through the callers until it is caught
                                    8. +
                                    +

                                    7.9.10.3 Caveats

                                    +

                                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                    +
                                      +
                                    • Exceptions should be used for exceptional situations and should not be used to manage normal control flow.
                                    • +
                                    +

                                    7.9.10.4 Points to cover

                                    +

                                    This section lists important details for each point.

                                    +
                                      +
                                    • Exception hierarchy from the standard library
                                    • +
                                    • Common library functions that may throw exceptions
                                    • +
                                    • Basic handling exceptions: try/catch/throw
                                    • +
                                    • How exceptions bubble up until caught
                                    • +
                                    +

                                    7.9.11 Main: Exception guarantees

                                    +

                                    7.9.11.1 Background/Required Knowledge

                                    +
                                      +
                                    • RAII
                                    • +
                                    • Order of construction/destruction of class members
                                    • +
                                    +

                                    7.9.11.2 Student outcomes

                                    +

                                    A student should be able to:

                                    +
                                      +
                                    1. Explain the four different exception guarantees
                                    2. +
                                    3. Explain the exception guarantees that the standard library containers offer.
                                    4. +
                                    5. Explain what happens when a exception is thrown in constructor
                                    6. +
                                    +

                                    7.9.11.3 Caveats

                                    +
                                      +
                                    • Make sure code is designed with RAII in mind to prevent resources leaking during exception handling, when the stack is unwound.
                                    • +
                                    • Care should be taken in constructor design to make all fully constructed members deleted when the stack unwinding mechanism is activated.
                                    • +
                                    +

                                    7.9.11.4 Points to cover

                                    +
                                      +
                                    • Exception guarantees: Nothrow/Strong/Basic/No
                                    • +
                                    • Rethrowing an exception
                                    • +
                                    +

                                    7.9.12 Advanced: Exception-safe containers and edge cases

                                    +

                                    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                                    +
                                      +
                                    • Rethrowing a modified exception
                                    • +
                                    • Writing exception safe containers
                                    • +
                                    +

                                    7.10 Error handling: Categories of errors

                                    +

                                    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                                    +

                                    7.10.1 Overview

                                    +

                                    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                                    + ++++ + + + + + + + + + + + + + + + + + + + + +
                                    LevelObjective
                                    FoundationalCategories of errors
                                    MainHandling different categories of errors
                                    Advanced
                                    +

                                    7.10.2 Motivation

                                    +

                                    Why is this important? Why do we want to learn/teach this topic?

                                    +

                                    Programs can run in a normal state or erroneous state. Students should be able to identify different types of erroneous state and how to best handle them.

                                    +

                                    7.10.3 Topic introduction

                                    +

                                    Very brief introduction to the topic.

                                    +

                                    This topic is an umbrella topic that refers to the different topics for types of errors and error handling.

                                    +

                                    7.10.4 Foundational: Categories of errors

                                    +

                                    7.10.4.1 Background/Required Knowledge

                                    +

                                    A student:

                                    + +

                                    7.10.4.2 Student outcomes

                                    +

                                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                    +

                                    A student should be able to:

                                    +
                                      +
                                    1. Describe different kinds of errors and exceptional situations that require different approaches of error handling.
                                    2. +
                                    3. Provide some examples of the different error categories.
                                    4. +
                                    5. Identify potential erroneous code sections and attribute them to different error categories.
                                    6. +
                                    +

                                    7.10.4.3 Caveats

                                    +

                                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                    +

                                    No caveats at present.

                                    +

                                    7.10.4.4 Points to cover

                                    +

                                    This section lists important details for each point.

                                    +

                                    Errors can happen at different times during software lifetime.

                                    +
                                      +
                                    • Compile-time errors
                                    • +
                                    • Link-time errors
                                    • +
                                    • Execution-time errors
                                    • +
                                    +

                                    There are different types of errors

                                    +
                                      +
                                    • Logic errors (violations of logical preconditions)
                                    • +
                                    • Run-time errors (errors during code execution due to causes that are external to the program)
                                    • +
                                    +

                                    7.10.5 Main: Handling different categories of errors

                                    +

                                    7.10.5.1 Background/Required Knowledge

                                    +

                                    7.10.5.2 Student outcomes

                                    +

                                    A student should be able to:

                                    +
                                      +
                                    1. pick the right error handling approach for a given problem.
                                    2. +
                                    3. enumerate different error handling strategies.
                                    4. +
                                    5. make a clear distinction between error-handling code and normal-case handling code
                                    6. +
                                    +

                                    7.10.5.3 Caveats

                                    +
                                      +
                                    • The different error handling strategies have different trade-offs (runtime performance, readability, …)
                                    • +
                                    • The trade-off space depends on the run-time context (embedded, …)
                                    • +
                                    • There also exist unhandleable errors (e.g., ODR violations, undefined behavior)
                                    • +
                                    +

                                    7.10.5.4 Points to cover

                                    + +

                                    7.10.6 Advanced

                                    +

                                    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                                    +

                                    8 License

                                    +

                                    [NOTE: This license is copied verbatim from the C++ Core Guidelines.]

                                    +
                                    Copyright (c) Standard C++ Foundation and its contributors
                                    +
                                    +Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
                                    +perpetual license to copy, use, modify, and create derivative works from this
                                    +project for your personal or internal business use only. The above copyright
                                    +notice and this permission notice shall be included in all copies or
                                    +substantial portions of the project. This license does not grant permission
                                    +to use the trade names, trademarks, service marks, or product names of the
                                    +licensor, except as required for reasonable and customary use in describing
                                    +the origin of the project.
                                    +
                                    +Standard C++ Foundation reserves the right to accept contributions to the
                                    +project at its discretion.
                                    +
                                    +By contributing material to this project, you grant Standard C++ Foundation,
                                    +and those who receive the material directly or indirectly from Standard C++
                                    +Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
                                    +transferrable license to reproduce, prepare derivative works of, publicly
                                    +display, publicly perform, and distribute your contributed material and such
                                    +derivative works, and to sublicense any or all of the foregoing rights to third
                                    +parties for commercial or non-commercial use.  You also grant Standard C++
                                    +Foundation, and those who receive the material directly or indirectly from
                                    +Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
                                    +irrevocable license under your patent claims that directly read on your
                                    +contributed material to make, have made, use, offer to sell, sell and import
                                    +or otherwise dispose of the material. You warrant that your material is your
                                    +original work, or that you have the right to grant the above licenses.
                                    +
                                    +THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
                                    +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
                                    +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
                                    +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
                                    +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
                                    +OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
                                    +PROJECT.
                                    +
                                    +If you believe that anything in the project infringes your copyright, please
                                    +contact us at admin@isocpp.org with your contact information and a detailed
                                    +description of your intellectual property, including a specific URL where you
                                    +believe your intellectual property is being infringed.
                                    +
                                    +

                                    9 Contributors

                                    +
                                    Christopher Di Bella
                                    +Florian Sattler
                                    +Michael Adams
                                    +rwdougla
                                    +

                                    10 How To Contribute

                                    +

                                    Before attempting to contribute any content for consideration for inclusion in this document, please read the information below and and the referenced documents as appropriate.

                                    +

                                    All contributions to this project must be made in accordance with the license in section License. This teaching-guidelines document only offers guidance on teaching C++ as it is specified in the current version of the C++ standard. So, content should be presented relative to the most-recently ratified version of the standard. A detailed explanation of how to present the material for a topic is given in:

                                    +
                                      +
                                    • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.
                                    • +
                                    +

                                    Any potential contributors should ensure that they read this document. The following document may also be helpful in providing some general background on the modular approach to teaching followed herein:

                                    + +

                                    In order to prepare content, it is important to understand what learning outcomes are, and how to prepare good ones. Some information on learning outcomes can be found in the References section. The following document offers a concise introduction to learning outcomes:

                                    + +

                                    11 Glossary

                                    +

                                    Some possible terms to include in the glossary:

                                    +
                                      +
                                    • learning objective
                                    • +
                                    • learning outcome
                                    • +
                                    +

                                    12 References

                                    +

                                    12.1 References on Learning Outcomes

                                    + + +
                                      +
                                    • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — Standing Document for SG20: Guidelines for Teaching C++ to Beginners. https://wg21.link/p1389.

                                    • +
                                    • Christopher Di Bella. P1725R0 — Modular Topic Design. https://wg21.link/p1725.

                                    • +
                                    • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.

                                    • +
                                    • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study Group: C++ Education. https://wg21.link/p1231.

                                    • +
                                    • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 — Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0.

                                    • +
                                    +
                                    +
                                    + +
                                    + + diff --git a/0.0.19/html_split/Advanced-Exception_002dsafe-containers-and-edge-cases.html b/0.0.19/html_split/Advanced-Exception_002dsafe-containers-and-edge-cases.html new file mode 100644 index 0000000..40a2176 --- /dev/null +++ b/0.0.19/html_split/Advanced-Exception_002dsafe-containers-and-edge-cases.html @@ -0,0 +1,59 @@ + + + + + +Advanced Exception-safe containers and edge cases (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                                    +

                                    7.9.12 Advanced: Exception-safe containers and edge cases

                                    +

                                    These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

                                    +
                                      +
                                    • Rethrowing a modified exception +
                                    • Writing exception safe containers +
                                    + + + + + + diff --git a/0.0.19/html_split/Advanced-Special-cases-and-peculiarities.html b/0.0.19/html_split/Advanced-Special-cases-and-peculiarities.html new file mode 100644 index 0000000..10f0a59 --- /dev/null +++ b/0.0.19/html_split/Advanced-Special-cases-and-peculiarities.html @@ -0,0 +1,59 @@ + + + + + +Advanced Special cases and peculiarities (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                                    +

                                    7.2.6 Advanced: Special cases and peculiarities

                                    +

                                    These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

                                    +
                                      +
                                    • ABI Incompatibilities: Different definitions of the same type in +multiple object files can lead to subtle program errors. +
                                    + + + + + + diff --git a/0.0.19/html_split/Advanced.html b/0.0.19/html_split/Advanced.html new file mode 100644 index 0000000..b48aaed --- /dev/null +++ b/0.0.19/html_split/Advanced.html @@ -0,0 +1,60 @@ + + + + + +Advanced (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                                    +

                                    7.1.6 Advanced

                                    +

                                    These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

                                    +

                                    When can copies be elided and when does the standard guarantee copy +elision. References: * Abseil tip of +the Week #166 * +cppreference +- Copy elision +

                                    + + + + + diff --git a/0.0.19/html_split/Background_002fRequired-Knowledge.html b/0.0.19/html_split/Background_002fRequired-Knowledge.html new file mode 100644 index 0000000..4a2158e --- /dev/null +++ b/0.0.19/html_split/Background_002fRequired-Knowledge.html @@ -0,0 +1,64 @@ + + + + + +Background/Required Knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                    +

                                    7.1.4.1 Background/Required Knowledge

                                    +

                                    A student is able to: * explain what a C++ type is? +[C++ object model: types] * +explain what an object is? +[C++ object model: +objects], [C++ object +model: constant objects] * define and understand class invariants? +

                                    +

                                    It helps when a student is able to: * use move semantics +[C++ object model: move +semantics] * explain special member functions +[C++ object model: +special member functions] +

                                    + + + + + diff --git a/0.0.19/html_split/Background_002fRequired-knowledge.html b/0.0.19/html_split/Background_002fRequired-knowledge.html new file mode 100644 index 0000000..d6a7198 --- /dev/null +++ b/0.0.19/html_split/Background_002fRequired-knowledge.html @@ -0,0 +1,54 @@ + + + + + +Background/Required knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                                    +

                                    7.6.5.1 Background/Required knowledge

                                    +
                                      +
                                    • All of the above. +
                                    + + + + + + diff --git a/0.0.19/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html b/0.0.19/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html new file mode 100644 index 0000000..7b78e96 --- /dev/null +++ b/0.0.19/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html @@ -0,0 +1,61 @@ + + + + + +Basics Types Objects Values Expressions Statements and Control-Flow Constructs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                    +

                                    6.3 Basics Types, Objects, Values, Expressions, Statements, and

                                    +

                                    Control-Flow Constructs +

                                    + + + + + + +
                                    IDUnitFoundationalMainAdvanced
                                    [‘?’]Constant Objects???
                                    [‘?’]Declarations???
                                    [‘def’]Definitions‘✔️’‘✔️’‘✔️’
                                    [‘?’]Selection Constructs (e.g., if, ternary)???
                                    [‘?’]Looping Constructs (e.g., for, while, etc.)???
                                    + + + + + + diff --git a/0.0.19/html_split/Building.html b/0.0.19/html_split/Building.html new file mode 100644 index 0000000..a50a84a --- /dev/null +++ b/0.0.19/html_split/Building.html @@ -0,0 +1,57 @@ + + + + + +Building (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                    +

                                    6.12 Building

                                    + + + + +
                                    IDUnitFoundationalMainAdvanced
                                    [‘?’]Software Build Tools???
                                    [‘?’]Strategies for Handling Build Problems???
                                    + + + + + + diff --git a/0.0.19/html_split/C_002b_002b-object-model-Declarations.html b/0.0.19/html_split/C_002b_002b-object-model-Declarations.html new file mode 100644 index 0000000..bba29b8 --- /dev/null +++ b/0.0.19/html_split/C_002b_002b-object-model-Declarations.html @@ -0,0 +1,68 @@ + + + + + +C++ object model Declarations (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                                    +

                                    7.3 C++ object model: Declarations

                                    +

                                    Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

                                    + + + + + + + + + + + + + + diff --git a/0.0.19/html_split/C_002b_002b-object-model-Definitions.html b/0.0.19/html_split/C_002b_002b-object-model-Definitions.html new file mode 100644 index 0000000..f9c6074 --- /dev/null +++ b/0.0.19/html_split/C_002b_002b-object-model-Definitions.html @@ -0,0 +1,68 @@ + + + + + +C++ object model Definitions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                                    +

                                    7.2 C++ object model: Definitions

                                    +

                                    Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

                                    + + + + + + + + + + + + + + diff --git a/0.0.19/html_split/C_002b_002b-object-model-copy-semantics.html b/0.0.19/html_split/C_002b_002b-object-model-copy-semantics.html new file mode 100644 index 0000000..56b717b --- /dev/null +++ b/0.0.19/html_split/C_002b_002b-object-model-copy-semantics.html @@ -0,0 +1,69 @@ + + + + + +C++ object model copy semantics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                    +

                                    7.1 C++ object model: copy semantics

                                    +

                                    Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

                                    + + + + + + + + + + + + + + diff --git a/0.0.19/html_split/Caveats.html b/0.0.19/html_split/Caveats.html new file mode 100644 index 0000000..a3ad88c --- /dev/null +++ b/0.0.19/html_split/Caveats.html @@ -0,0 +1,62 @@ + + + + + +Caveats (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                    +

                                    7.1.4.3 Caveats

                                    +

                                    This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                                    +
                                      +
                                    • Compiler-provided copy operations may result in ownership problems +(e.g., char*). These ownership problems can generally be solved +by using types whose copy operations have the appropriate semantics, +e.g., std::string instead of char* to hold string values. +
                                    + + + + + + diff --git a/0.0.19/html_split/Compilation-Model.html b/0.0.19/html_split/Compilation-Model.html new file mode 100644 index 0000000..41802d4 --- /dev/null +++ b/0.0.19/html_split/Compilation-Model.html @@ -0,0 +1,62 @@ + + + + + +Compilation Model (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                    +

                                    6.1 Compilation Model

                                    + + + + + + + + + +
                                    IDUnitFoundationalMainAdvanced
                                    [‘?’]Translation Units???
                                    [‘?’]Headers???
                                    [‘?’]Modules???
                                    [‘?’]Name Mangling???
                                    [‘?’]Phases of Translation???
                                    [‘?’]Separate Compilation???
                                    [‘?’]Linkage???
                                    + + + + + + diff --git a/0.0.19/html_split/Compile_002dTime-Computation.html b/0.0.19/html_split/Compile_002dTime-Computation.html new file mode 100644 index 0000000..4e9e67d --- /dev/null +++ b/0.0.19/html_split/Compile_002dTime-Computation.html @@ -0,0 +1,57 @@ + + + + + +Compile-Time Computation (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                    +

                                    6.7 Compile-Time Computation

                                    + + + + +
                                    IDUnitFoundationalMainAdvanced
                                    [‘?’]Constant Expressions and Constant Evaluation???
                                    [‘static-assert’]static_assert‘✔️’‘✔️’
                                    + + + + + + diff --git a/0.0.19/html_split/Context-and-Aim-of-This-Guide.html b/0.0.19/html_split/Context-and-Aim-of-This-Guide.html new file mode 100644 index 0000000..57fb059 --- /dev/null +++ b/0.0.19/html_split/Context-and-Aim-of-This-Guide.html @@ -0,0 +1,76 @@ + + + + + +Context and Aim of This Guide (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                    +

                                    2 Context and Aim of This Guide

                                    +

                                    This document is intended to serve as a resource for instructors to +assist in the preparation of courses on C++ in a variety of settings, +including university, college, and industry environments. The main +objectives of this document are as follows: +

                                    +
                                      +
                                    • to provide guidelines for content to be covered by courses of various +difficulty levels on C++ (e.g., topics and learning outcomes) +
                                    • to note some common misunderstandings and problematic points that may be +encountered when teaching particular topics +
                                    • to suggest resources useful for teaching C++ +
                                    • to present examples of curriculum for specific courses +
                                    + +

                                    This document does not itself provide a curriculum for a single specific +course, but is rather a set of guidelines that can be used to prepare +curricula for a wide variety of courses that differ in focus and level +of sophistication. (This said, however, some links to other documents +with examples of curricula for specific courses may be included herein.) +This document only intends to target the teaching of the most recently +ratified version of the C++ standard. (This said, however, since older +versions of this document are also available, these older versions may +be of some use to those who need guidance in older versions of the +standard, at least versions that do not predate C++20.) +

                                    + + + + + diff --git a/0.0.19/html_split/Contributing-to-This-Document.html b/0.0.19/html_split/Contributing-to-This-Document.html new file mode 100644 index 0000000..2faa772 --- /dev/null +++ b/0.0.19/html_split/Contributing-to-This-Document.html @@ -0,0 +1,55 @@ + + + + + +Contributing to This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                    +

                                    4 Contributing to This Document

                                    +

                                    Contributions to this document are welcome. If you would like to help +with this project as a contributor, please read the section +‘How to Contribute’. +

                                    + + + + + diff --git a/0.0.19/html_split/Contributors.html b/0.0.19/html_split/Contributors.html new file mode 100644 index 0000000..5531c92 --- /dev/null +++ b/0.0.19/html_split/Contributors.html @@ -0,0 +1,57 @@ + + + + + +Contributors (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                                    +

                                    +Next: , Previous: , Up: Top   [Contents]

                                    +
                                    +
                                    +

                                    9 Contributors

                                    + +
                                    Christopher Di Bella
                                    +Florian Sattler
                                    +Michael Adams
                                    +rwdougla
                                    +
                                    + + + + + diff --git a/0.0.19/html_split/Detailed-Information-for-Modules-and-Topics.html b/0.0.19/html_split/Detailed-Information-for-Modules-and-Topics.html new file mode 100644 index 0000000..0702262 --- /dev/null +++ b/0.0.19/html_split/Detailed-Information-for-Modules-and-Topics.html @@ -0,0 +1,75 @@ + + + + + +Detailed Information for Modules and Topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                                    +

                                    +Next: , Previous: , Up: Top   [Contents]

                                    +
                                    +
                                    +

                                    7 Detailed Information for Modules and Topics

                                    + + + + + + + + + + + + + + + + + + + diff --git a/0.0.19/html_split/Error-Handling.html b/0.0.19/html_split/Error-Handling.html new file mode 100644 index 0000000..8ab42e9 --- /dev/null +++ b/0.0.19/html_split/Error-Handling.html @@ -0,0 +1,59 @@ + + + + + +Error Handling (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                    +

                                    6.9 Error Handling

                                    + + + + + + +
                                    IDUnitFoundationalMainAdvanced
                                    [‘coe’]Categories of Errors‘✔️’‘✔️’
                                    [‘?’]errno???
                                    [‘?’]Error Codes???
                                    [‘eh’]Exception Handling‘✔️’‘✔️’‘✔️’
                                    + + + + + + diff --git a/0.0.19/html_split/Error-handling-Categories-of-errors.html b/0.0.19/html_split/Error-handling-Categories-of-errors.html new file mode 100644 index 0000000..9381d36 --- /dev/null +++ b/0.0.19/html_split/Error-handling-Categories-of-errors.html @@ -0,0 +1,68 @@ + + + + + +Error handling Categories of errors (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                                    +

                                    7.10 Error handling: Categories of errors

                                    +

                                    Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

                                    + + + + + + + + + + + + + + diff --git a/0.0.19/html_split/Error-handling-Error-codes.html b/0.0.19/html_split/Error-handling-Error-codes.html new file mode 100644 index 0000000..6f8c4c8 --- /dev/null +++ b/0.0.19/html_split/Error-handling-Error-codes.html @@ -0,0 +1,79 @@ + + + + + +Error handling Error codes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                                    +

                                    7.9 Error handling: Error codes

                                    +

                                    Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

                                    + + + + + + + + + + + + + + + + + + + + diff --git a/0.0.19/html_split/External-ie-Non-Standard-Libraries.html b/0.0.19/html_split/External-ie-Non-Standard-Libraries.html new file mode 100644 index 0000000..0b3c0fa --- /dev/null +++ b/0.0.19/html_split/External-ie-Non-Standard-Libraries.html @@ -0,0 +1,56 @@ + + + + + +External ie Non Standard Libraries (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                    +

                                    6.11 External (i.e., Non Standard) Libraries

                                    + + + +
                                    IDUnitFoundationalMainAdvanced
                                    [‘?’]Graphical User Interfaces???
                                    + + + + + + diff --git a/0.0.19/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html b/0.0.19/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html new file mode 100644 index 0000000..0919c62 --- /dev/null +++ b/0.0.19/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html @@ -0,0 +1,62 @@ + + + + + +Foundational Calling static_assert with a constant expression (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                                    +

                                    7.4.4 Foundational: Calling static_assert with a constant

                                    +

                                    expression +

                                    + + + + + + + + + + + + diff --git a/0.0.19/html_split/Foundational-Categories-of-errors.html b/0.0.19/html_split/Foundational-Categories-of-errors.html new file mode 100644 index 0000000..a76e900 --- /dev/null +++ b/0.0.19/html_split/Foundational-Categories-of-errors.html @@ -0,0 +1,61 @@ + + + + + +Foundational Categories of errors (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                                    +

                                    7.10.4 Foundational: Categories of errors

                                    + + + + + + + + + + + + + diff --git a/0.0.19/html_split/Foundational-Declaring-variables.html b/0.0.19/html_split/Foundational-Declaring-variables.html new file mode 100644 index 0000000..a7c99a5 --- /dev/null +++ b/0.0.19/html_split/Foundational-Declaring-variables.html @@ -0,0 +1,61 @@ + + + + + +Foundational Declaring variables (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                                    +

                                    7.3.4 Foundational: Declaring variables

                                    + + + + + + + + + + + + + diff --git a/0.0.19/html_split/Foundational-Defining-variables-and-ODR.html b/0.0.19/html_split/Foundational-Defining-variables-and-ODR.html new file mode 100644 index 0000000..95b361d --- /dev/null +++ b/0.0.19/html_split/Foundational-Defining-variables-and-ODR.html @@ -0,0 +1,61 @@ + + + + + +Foundational Defining variables and ODR (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                                    +

                                    7.2.4 Foundational: Defining variables and ODR

                                    + + + + + + + + + + + + + diff --git a/0.0.19/html_split/Foundational-Handling-error-codes-with-stderror_005fcode.html b/0.0.19/html_split/Foundational-Handling-error-codes-with-stderror_005fcode.html new file mode 100644 index 0000000..ee74039 --- /dev/null +++ b/0.0.19/html_split/Foundational-Handling-error-codes-with-stderror_005fcode.html @@ -0,0 +1,62 @@ + + + + + +Foundational Handling error codes with stderror_code (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                                    +

                                    7.9.4 Foundational: Handling error codes with

                                    +

                                    std::error_code +

                                    + + + + + + + + + + + + diff --git a/0.0.19/html_split/Foundational-How-and-when-are-copies-made.html b/0.0.19/html_split/Foundational-How-and-when-are-copies-made.html new file mode 100644 index 0000000..a3e9be7 --- /dev/null +++ b/0.0.19/html_split/Foundational-How-and-when-are-copies-made.html @@ -0,0 +1,63 @@ + + + + + +Foundational How and when are copies made (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                    +

                                    7.1.4 Foundational: How and when are copies made

                                    + + + + + + + + + + + + + diff --git a/0.0.19/html_split/Foundational-Standards-exception-hierarchy.html b/0.0.19/html_split/Foundational-Standards-exception-hierarchy.html new file mode 100644 index 0000000..bcd4358 --- /dev/null +++ b/0.0.19/html_split/Foundational-Standards-exception-hierarchy.html @@ -0,0 +1,61 @@ + + + + + +Foundational Standards exception hierarchy (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                                    +

                                    7.9.10 Foundational: Standards exception hierarchy

                                    + + + + + + + + + + + + + diff --git a/0.0.19/html_split/Foundational-Using-UDLs.html b/0.0.19/html_split/Foundational-Using-UDLs.html new file mode 100644 index 0000000..17a22a2 --- /dev/null +++ b/0.0.19/html_split/Foundational-Using-UDLs.html @@ -0,0 +1,61 @@ + + + + + +Foundational Using UDLs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                                    +

                                    7.5.4 Foundational: Using UDLs

                                    + + + + + + + + + + + + + diff --git a/0.0.19/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html b/0.0.19/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html new file mode 100644 index 0000000..67194e2 --- /dev/null +++ b/0.0.19/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html @@ -0,0 +1,62 @@ + + + + + +Foundational Using and defining functions with default arguments (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                                    +

                                    7.6.4 Foundational: Using and defining functions with default

                                    +

                                    arguments +

                                    + + + + + + + + + + + + diff --git a/0.0.19/html_split/Foundational-Writing-requires_002dexpressions.html b/0.0.19/html_split/Foundational-Writing-requires_002dexpressions.html new file mode 100644 index 0000000..5808e0d --- /dev/null +++ b/0.0.19/html_split/Foundational-Writing-requires_002dexpressions.html @@ -0,0 +1,60 @@ + + + + + +Foundational Writing requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +
                                    +

                                    7.8.1 Foundational: Writing requires-expressions

                                    + + + + + + + + + + + + + diff --git a/0.0.19/html_split/Functions-default-argument.html b/0.0.19/html_split/Functions-default-argument.html new file mode 100644 index 0000000..d16ab75 --- /dev/null +++ b/0.0.19/html_split/Functions-default-argument.html @@ -0,0 +1,67 @@ + + + + + +Functions default argument (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                                    +

                                    7.6 Functions: default argument

                                    +

                                    Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

                                    + + + + + + + + + + + + + + diff --git a/0.0.19/html_split/Functions-user_002ddefined-literals.html b/0.0.19/html_split/Functions-user_002ddefined-literals.html new file mode 100644 index 0000000..ad41e1f --- /dev/null +++ b/0.0.19/html_split/Functions-user_002ddefined-literals.html @@ -0,0 +1,65 @@ + + + + + +Functions user-defined literals (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                                    +

                                    7.5 Functions: user-defined literals

                                    +

                                    Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

                                    + + + + + + + + + + + + + diff --git a/0.0.19/html_split/Functions.html b/0.0.19/html_split/Functions.html new file mode 100644 index 0000000..8e3d484 --- /dev/null +++ b/0.0.19/html_split/Functions.html @@ -0,0 +1,61 @@ + + + + + +Functions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                    +

                                    6.4 Functions

                                    + + + + + + + + +
                                    IDUnitFoundationalMainAdvanced
                                    [‘?’]Calling Functions???
                                    [‘?’]Parameter Passing (e.g., Passing By Value and Reference)???
                                    [‘func-args’]Default Arguments‘✔️’
                                    [‘?’]Returning Multiple Values???
                                    [‘?’]Overloading???
                                    [‘udl’]User-Defined Literals‘✔️’‘✔️’
                                    + + + + + + diff --git a/0.0.19/html_split/Generic-Programming-Templates.html b/0.0.19/html_split/Generic-Programming-Templates.html new file mode 100644 index 0000000..3ed32f5 --- /dev/null +++ b/0.0.19/html_split/Generic-Programming-Templates.html @@ -0,0 +1,61 @@ + + + + + +Generic Programming Templates (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                    +

                                    6.8 Generic Programming (Templates)

                                    + + + + + + + + +
                                    IDUnitFoundationalMainAdvanced
                                    [‘?’]Concepts???
                                    [‘?’]SFINAE???
                                    [‘?’]Template Metaprogramming???
                                    [‘?’]Function Templates???
                                    [‘?’]Requires Clauses???
                                    [‘req-expr’]Requires Expressions‘✔️’‘✔️’
                                    + + + + + + diff --git a/0.0.19/html_split/Glossary.html b/0.0.19/html_split/Glossary.html new file mode 100644 index 0000000..99ff357 --- /dev/null +++ b/0.0.19/html_split/Glossary.html @@ -0,0 +1,58 @@ + + + + + +Glossary (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                                    +

                                    +Next: , Previous: , Up: Top   [Contents]

                                    +
                                    +
                                    +

                                    11 Glossary

                                    +

                                    Some possible terms to include in the glossary: +

                                    +
                                      +
                                    • learning objective +
                                    • learning outcome +
                                    + + + + + + diff --git a/0.0.19/html_split/How-To-Contribute.html b/0.0.19/html_split/How-To-Contribute.html new file mode 100644 index 0000000..91b73c9 --- /dev/null +++ b/0.0.19/html_split/How-To-Contribute.html @@ -0,0 +1,89 @@ + + + + + +How To Contribute (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                                    +

                                    +Next: , Previous: , Up: Top   [Contents]

                                    +
                                    +
                                    +

                                    10 How To Contribute

                                    +

                                    Before attempting to contribute any content for consideration for +inclusion in this document, please read the information below and and +the referenced documents as appropriate. +

                                    +

                                    All contributions to this project must be made in accordance with the +license in section License. This teaching-guidelines +document only offers guidance on teaching C++ as it is specified in the +current version of the C++ standard. So, content should be presented +relative to the most-recently ratified version of the standard. A +detailed explanation of how to present the material for a topic is given +in: +

                                    +
                                      +
                                    • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to +structure a teaching topic. https://wg21.link/p2193. +
                                    + +

                                    Any potential contributors should ensure that they read this document. +The following document may also be helpful in providing some general +background on the modular approach to teaching followed herein: +

                                    + + +

                                    In order to prepare content, it is important to understand what learning +outcomes are, and how to prepare good ones. Some information on learning +outcomes can be found in the References section. The +following document offers a concise introduction to learning outcomes: +

                                    + + + + + + + diff --git a/0.0.19/html_split/Inheritance-and-Class-Hierarchies.html b/0.0.19/html_split/Inheritance-and-Class-Hierarchies.html new file mode 100644 index 0000000..1454f01 --- /dev/null +++ b/0.0.19/html_split/Inheritance-and-Class-Hierarchies.html @@ -0,0 +1,57 @@ + + + + + +Inheritance and Class Hierarchies (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                    +

                                    6.6 Inheritance and Class Hierarchies

                                    + + + + +
                                    IDUnitFoundationalMainAdvanced
                                    [‘?’]Virtual Functions???
                                    [‘?’]Run-Time Type Information???
                                    + + + + + + diff --git a/0.0.19/html_split/License.html b/0.0.19/html_split/License.html new file mode 100644 index 0000000..5835f48 --- /dev/null +++ b/0.0.19/html_split/License.html @@ -0,0 +1,99 @@ + + + + + +License (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                                    +

                                    8 License

                                    +

                                    [NOTE: This license is copied verbatim from the C++ Core +Guidelines.] +

                                    +
                                    Copyright (c) Standard C++ Foundation and its contributors
                                    +
                                    +Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
                                    +perpetual license to copy, use, modify, and create derivative works from this
                                    +project for your personal or internal business use only. The above copyright
                                    +notice and this permission notice shall be included in all copies or
                                    +substantial portions of the project. This license does not grant permission
                                    +to use the trade names, trademarks, service marks, or product names of the
                                    +licensor, except as required for reasonable and customary use in describing
                                    +the origin of the project.
                                    +
                                    +Standard C++ Foundation reserves the right to accept contributions to the
                                    +project at its discretion.
                                    +
                                    +By contributing material to this project, you grant Standard C++ Foundation,
                                    +and those who receive the material directly or indirectly from Standard C++
                                    +Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
                                    +transferrable license to reproduce, prepare derivative works of, publicly
                                    +display, publicly perform, and distribute your contributed material and such
                                    +derivative works, and to sublicense any or all of the foregoing rights to third
                                    +parties for commercial or non-commercial use.  You also grant Standard C++
                                    +Foundation, and those who receive the material directly or indirectly from
                                    +Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
                                    +irrevocable license under your patent claims that directly read on your
                                    +contributed material to make, have made, use, offer to sell, sell and import
                                    +or otherwise dispose of the material. You warrant that your material is your
                                    +original work, or that you have the right to grant the above licenses.
                                    +
                                    +THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
                                    +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
                                    +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
                                    +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
                                    +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
                                    +OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
                                    +PROJECT.
                                    +
                                    +If you believe that anything in the project infringes your copyright, please
                                    +contact us at admin@isocpp.org with your contact information and a detailed
                                    +description of your intellectual property, including a specific URL where you
                                    +believe your intellectual property is being infringed.
                                    +
                                    +
                                    + + + + + + diff --git a/0.0.19/html_split/Main-Advanced-requirements.html b/0.0.19/html_split/Main-Advanced-requirements.html new file mode 100644 index 0000000..16433ad --- /dev/null +++ b/0.0.19/html_split/Main-Advanced-requirements.html @@ -0,0 +1,60 @@ + + + + + +Main Advanced requirements (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +
                                    +

                                    7.8.2 Main: Advanced requirements

                                    + + + + + + + + + + + + + diff --git a/0.0.19/html_split/Main-Contracts-and-static_005fassert.html b/0.0.19/html_split/Main-Contracts-and-static_005fassert.html new file mode 100644 index 0000000..b0d6e8d --- /dev/null +++ b/0.0.19/html_split/Main-Contracts-and-static_005fassert.html @@ -0,0 +1,61 @@ + + + + + +Main Contracts and static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                                    +

                                    7.4.5 Main: Contracts and static_assert

                                    + + + + + + + + + + + + + diff --git a/0.0.19/html_split/Main-Declarations-for-programs.html b/0.0.19/html_split/Main-Declarations-for-programs.html new file mode 100644 index 0000000..9b7d307 --- /dev/null +++ b/0.0.19/html_split/Main-Declarations-for-programs.html @@ -0,0 +1,61 @@ + + + + + +Main Declarations for programs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                                    +

                                    7.3.5 Main: Declarations for programs

                                    + + + + + + + + + + + + + diff --git a/0.0.19/html_split/Main-Defining-for-programs.html b/0.0.19/html_split/Main-Defining-for-programs.html new file mode 100644 index 0000000..87edef4 --- /dev/null +++ b/0.0.19/html_split/Main-Defining-for-programs.html @@ -0,0 +1,61 @@ + + + + + +Main Defining for programs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                                    +

                                    7.2.5 Main: Defining for programs

                                    + + + + + + + + + + + + + diff --git a/0.0.19/html_split/Main-Designing-APIs-around-stderror_005fcode.html b/0.0.19/html_split/Main-Designing-APIs-around-stderror_005fcode.html new file mode 100644 index 0000000..2e18ed1 --- /dev/null +++ b/0.0.19/html_split/Main-Designing-APIs-around-stderror_005fcode.html @@ -0,0 +1,61 @@ + + + + + +Main Designing APIs around stderror_code (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                                    +

                                    7.9.5 Main: Designing APIs around std::error_code

                                    + + + + + + + + + + + + + diff --git a/0.0.19/html_split/Main-Exception-guarantees.html b/0.0.19/html_split/Main-Exception-guarantees.html new file mode 100644 index 0000000..c8e4867 --- /dev/null +++ b/0.0.19/html_split/Main-Exception-guarantees.html @@ -0,0 +1,61 @@ + + + + + +Main Exception guarantees (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                                    +

                                    7.9.11 Main: Exception guarantees

                                    + + + + + + + + + + + + + diff --git a/0.0.19/html_split/Main-Handling-different-categories-of-errors.html b/0.0.19/html_split/Main-Handling-different-categories-of-errors.html new file mode 100644 index 0000000..51779eb --- /dev/null +++ b/0.0.19/html_split/Main-Handling-different-categories-of-errors.html @@ -0,0 +1,61 @@ + + + + + +Main Handling different categories of errors (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                                    +

                                    7.10.5 Main: Handling different categories of errors

                                    + + + + + + + + + + + + + diff --git a/0.0.19/html_split/Main-Implementing-user_002ddefined-copy-operations.html b/0.0.19/html_split/Main-Implementing-user_002ddefined-copy-operations.html new file mode 100644 index 0000000..3f51dae --- /dev/null +++ b/0.0.19/html_split/Main-Implementing-user_002ddefined-copy-operations.html @@ -0,0 +1,62 @@ + + + + + +Main Implementing user-defined copy operations (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                                    +

                                    7.1.5 Main: Implementing user-defined copy operations

                                    + + + + + + + + + + + + + diff --git a/0.0.19/html_split/Main-implementing-UDLs.html b/0.0.19/html_split/Main-implementing-UDLs.html new file mode 100644 index 0000000..cfcca9a --- /dev/null +++ b/0.0.19/html_split/Main-implementing-UDLs.html @@ -0,0 +1,59 @@ + + + + + +Main implementing UDLs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                                    +

                                    7.5.5 Main: implementing UDLs

                                    + + + + + + + + + + + + diff --git a/0.0.19/html_split/Main-implementing-_002a.html b/0.0.19/html_split/Main-implementing-_002a.html new file mode 100644 index 0000000..d0b510b --- /dev/null +++ b/0.0.19/html_split/Main-implementing-_002a.html @@ -0,0 +1,62 @@ + + + + + +Main implementing * (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                                    +

                                    7.6.5 Main: implementing *

                                    + + + + + + + + + + + + + diff --git a/0.0.19/html_split/Meta_002derror-handling-static_005fassert.html b/0.0.19/html_split/Meta_002derror-handling-static_005fassert.html new file mode 100644 index 0000000..011ef71 --- /dev/null +++ b/0.0.19/html_split/Meta_002derror-handling-static_005fassert.html @@ -0,0 +1,67 @@ + + + + + +Meta-error handling static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                                    +

                                    7.4 Meta-error handling: static_assert

                                    +

                                    Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

                                    + + + + + + + + + + + + + + diff --git a/0.0.19/html_split/Module-name-Requires-Expressions.html b/0.0.19/html_split/Module-name-Requires-Expressions.html new file mode 100644 index 0000000..bb32c76 --- /dev/null +++ b/0.0.19/html_split/Module-name-Requires-Expressions.html @@ -0,0 +1,59 @@ + + + + + +Module name Requires Expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + +
                                    +

                                    7.7 Module name: Requires Expressions

                                    +

                                    Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

                                    + + + + + + + + + + diff --git a/0.0.19/html_split/Motivation.html b/0.0.19/html_split/Motivation.html new file mode 100644 index 0000000..e169339 --- /dev/null +++ b/0.0.19/html_split/Motivation.html @@ -0,0 +1,57 @@ + + + + + +Motivation (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                    +

                                    7.1.2 Motivation

                                    +

                                    Why is this important? Why do we want to learn/teach this +topic? +

                                    +

                                    Copy semantics allows the user to define how objects of a class get +replicated and interact on a value level. +

                                    + + + + + diff --git a/0.0.19/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html b/0.0.19/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html new file mode 100644 index 0000000..df78ee3 --- /dev/null +++ b/0.0.19/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html @@ -0,0 +1,78 @@ + + + + + +Obtaining This Document The Most Recent Version and Alternate Formats (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                                    +

                                    +Next: , Previous: , Up: Top   [Contents]

                                    +
                                    +
                                    +

                                    1 Obtaining This Document: The Most Recent Version and Alternate

                                    +

                                    Formats +The most recent version of this document is available as an online HTML +document at: https://cplusplus.github.io/SG20/latest/. +

                                    +

                                    The version of the document that you are currently reading is available +in the following formats: +

                                    +
                                      +
                                    1. online (HTML) format as a single large HTML document: +https://cplusplus.github.io/SG20/0.0.19/html + +
                                    2. EPUB format: +https://cplusplus.github.io/SG20/0.0.19/guidelines.epub + +
                                    3. online (HTML) format, split across multiple HTML documents: +https://cplusplus.github.io/SG20/0.0.19/html_split/ [Note: +The support for this format needs more work (in order to beautify and +fix linking issues).] + +
                                    + +

                                    Older versions of this document are also available. In general version +ver is available at +https://cplusplus.github.io/SG20/ver/html. For example, version +0.1.0 (assuming that this version exists) would be available at +https://cplusplus.github.io/SG20/0.1.0/html. +

                                    + + + + + diff --git a/0.0.19/html_split/Organization-of-This-Document.html b/0.0.19/html_split/Organization-of-This-Document.html new file mode 100644 index 0000000..37c73db --- /dev/null +++ b/0.0.19/html_split/Organization-of-This-Document.html @@ -0,0 +1,95 @@ + + + + + +Organization of This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                    +

                                    5 Organization of This Document

                                    +

                                    The various concepts (i.e., ideas) to potentially be covered are +partitioned into modules. A module is very broad in scope and consists +of numerous topics. +

                                    +

                                    For each module, topics related to the module are identified. Then, for +each topic, learning outcomes are specified. In order to address a wide +variety of courses on C++, each topic is addressed at three proficiency +levels. These proficiency levels allow each topic to be covered at more +than one level of detail. This allows target audiences with different +background and learning objectives to be accommodated. The three +proficiency levels are as follows: +

                                    +
                                      +
                                    • foundational: This level gives the learner the idea that a facility +exists, what benefits it offers, and the basic ways of using it. + +
                                    • main: This level shows mainstream uses and techniques. For abstraction +and organizational mechanisms it also demonstrates how to build them. +This level should also give the learner a basic (but not detailed) +understanding of how a facility might be implemented so that the learner +can have a first-order understanding of any costs involved. + +
                                    • advanced: This level gives information suitable for an expert. For most +topics there is an expert level of knowledge that most programmers +rarely need and techniques that require detailed understanding of +language rules or library implementation. + +
                                    + +

                                    The remainder of this document is organized as follows. The various +topics are listed grouped by module. In cases where a topic might be +classified into more than one module, the topic is listed under the +module of most direct relevance. This is done in order to avoid +duplication of content. (In the case that a topic is equally relevant to +multiple modules, the decision of which to select is made by a +proverbial coin toss.) The order in which modules and topics are +presented is not meant to imply any order of coverage in a course. The +order in which items are listed is essentially arbitrary. +

                                    +
                                    + + + + + + diff --git a/0.0.19/html_split/Overview.html b/0.0.19/html_split/Overview.html new file mode 100644 index 0000000..b01d356 --- /dev/null +++ b/0.0.19/html_split/Overview.html @@ -0,0 +1,61 @@ + + + + + +Overview (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                    +

                                    7.1.1 Overview

                                    +

                                    Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

                                    + + + + + +
                                    LevelObjectives
                                    Foundationalunderstanding how and when are copies made
                                    Mainimplementing user-defined copy operations
                                    Advancedspecial cases: copy elision
                                    + + + + + + diff --git a/0.0.19/html_split/Points-to-cover.html b/0.0.19/html_split/Points-to-cover.html new file mode 100644 index 0000000..4444075 --- /dev/null +++ b/0.0.19/html_split/Points-to-cover.html @@ -0,0 +1,69 @@ + + + + + +Points to cover (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                    +

                                    7.1.4.4 Points to cover

                                    +

                                    This section lists important details for each point. +

                                    +
                                      +
                                    • Principle of copying +
                                        +
                                      • Copying of types, which follow the rule of zero +
                                      • Copying of types, with user defined copy operations +
                                      • Copying an object does not change the original +
                                      + +
                                    • Practical applications +
                                        +
                                      • std::unique_ptr (has no copy) +
                                      • Strings (copies the value) +
                                      + +
                                    + + + + + + diff --git a/0.0.19/html_split/Preprocessor.html b/0.0.19/html_split/Preprocessor.html new file mode 100644 index 0000000..b20bf65 --- /dev/null +++ b/0.0.19/html_split/Preprocessor.html @@ -0,0 +1,58 @@ + + + + + +Preprocessor (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                    +

                                    6.2 Preprocessor

                                    + + + + + +
                                    IDUnitFoundationalMainAdvanced
                                    [‘?’]Preprocessor Metaprogramming???
                                    [‘?’]Inclusion???
                                    [‘?’]Macros???
                                    + + + + + + diff --git a/0.0.19/html_split/References-on-Learning-Outcomes.html b/0.0.19/html_split/References-on-Learning-Outcomes.html new file mode 100644 index 0000000..edf4993 --- /dev/null +++ b/0.0.19/html_split/References-on-Learning-Outcomes.html @@ -0,0 +1,71 @@ + + + + + +References on Learning Outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                    +

                                    12.1 References on Learning Outcomes

                                    + + + + + + + diff --git a/0.0.19/html_split/References.html b/0.0.19/html_split/References.html new file mode 100644 index 0000000..8484d34 --- /dev/null +++ b/0.0.19/html_split/References.html @@ -0,0 +1,59 @@ + + + + + +References (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                                    +

                                    +Previous: , Up: Top   [Contents]

                                    +
                                    +
                                    +

                                    12 References

                                    + + + + + + + + + + + diff --git a/0.0.19/html_split/Software-Design.html b/0.0.19/html_split/Software-Design.html new file mode 100644 index 0000000..dbd34b6 --- /dev/null +++ b/0.0.19/html_split/Software-Design.html @@ -0,0 +1,56 @@ + + + + + +Software Design (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                    +

                                    6.15 Software Design

                                    + + + +
                                    IDUnitFoundationalMainAdvanced
                                    [‘?’]Design by Contract???
                                    + + + + + + diff --git a/0.0.19/html_split/Standard-Library.html b/0.0.19/html_split/Standard-Library.html new file mode 100644 index 0000000..0d173a4 --- /dev/null +++ b/0.0.19/html_split/Standard-Library.html @@ -0,0 +1,57 @@ + + + + + +Standard Library (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                    +

                                    6.10 Standard Library

                                    + + + + +
                                    IDUnitFoundationalMainAdvanced
                                    [‘?’]Input/Output (I/O)???
                                    [‘?’]Containers, Iterators, and Algorithms???
                                    + + + + + + diff --git a/0.0.19/html_split/Student-outcomes.html b/0.0.19/html_split/Student-outcomes.html new file mode 100644 index 0000000..1d53b49 --- /dev/null +++ b/0.0.19/html_split/Student-outcomes.html @@ -0,0 +1,73 @@ + + + + + +Student outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                    +

                                    7.1.4.2 Student outcomes

                                    +

                                    A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                                    +

                                    A student should be able to: +

                                    +
                                      +
                                    1. explain what copy semantics accomplish +
                                    + +
                                      +
                                    • establishing “equivalent” object state in another object +
                                    + +
                                      +
                                    1. explain difference between copying a reference and copying a value* +
                                    2. explain where copies are made +
                                    + +

                                    * In other languages these differences are sometimes referred to as +shallow and deep copy. +

                                    + + + + + diff --git a/0.0.19/html_split/Summary-of-Modules-and-Topics.html b/0.0.19/html_split/Summary-of-Modules-and-Topics.html new file mode 100644 index 0000000..33358df --- /dev/null +++ b/0.0.19/html_split/Summary-of-Modules-and-Topics.html @@ -0,0 +1,100 @@ + + + + + +Summary of Modules and Topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                    +

                                    6 Summary of Modules and Topics

                                    +

                                    In the sections that follow, the various modules and topics are +presented. There is one section per module. For each module, a table +listing the various topics in that module is provided. The ID for a +topic is linked to the detailed coverage of that topic that comes later +in the document. If a topic has any learning outcomes at a given +proficiency level, this is indicated by a checkmark (“✔️”). If a topic +has no learning outcomes (simply because there are not any, not because +the information is missing), this is indicated by an em dash (“—”). +In the case that the information for a topic is completely missing, a +question mark (“?”) symbol is used. +

                                    + + + + + + + + + + + + + + + + + + +
                                    + + + + + + diff --git a/0.0.19/html_split/Testing-and-Debugging.html b/0.0.19/html_split/Testing-and-Debugging.html new file mode 100644 index 0000000..497707a --- /dev/null +++ b/0.0.19/html_split/Testing-and-Debugging.html @@ -0,0 +1,59 @@ + + + + + +Testing and Debugging (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                                    +

                                    +Next: , Previous: , Up: Summary of Modules and Topics   [Contents]

                                    +
                                    +
                                    +

                                    6.13 Testing and Debugging

                                    + + + + + + +
                                    IDUnitFoundationalMainAdvanced
                                    [‘?’]Source-Level Debuggers???
                                    [‘?’]Code Sanitizers???
                                    [‘?’]Test Frameworks???
                                    [‘?’]Debugging Strategies???
                                    + + + + + + diff --git a/0.0.19/html_split/Tooling.html b/0.0.19/html_split/Tooling.html new file mode 100644 index 0000000..e479ed2 --- /dev/null +++ b/0.0.19/html_split/Tooling.html @@ -0,0 +1,57 @@ + + + + + +Tooling (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                    +

                                    6.14 Tooling

                                    + + + + +
                                    IDUnitFoundationalMainAdvanced
                                    [‘?’]Compiler Toolchains???
                                    [‘?’]IDEs???
                                    + + + + + + diff --git a/0.0.19/html_split/Topic-introduction.html b/0.0.19/html_split/Topic-introduction.html new file mode 100644 index 0000000..c011ddf --- /dev/null +++ b/0.0.19/html_split/Topic-introduction.html @@ -0,0 +1,55 @@ + + + + + +Topic introduction (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                    +

                                    7.1.3 Topic introduction

                                    +

                                    Very brief introduction to the topic. +

                                    +

                                    Explains when and how objects are copied. +

                                    + + + + + diff --git a/0.0.19/html_split/Use-of-This-Document.html b/0.0.19/html_split/Use-of-This-Document.html new file mode 100644 index 0000000..dedcdd3 --- /dev/null +++ b/0.0.19/html_split/Use-of-This-Document.html @@ -0,0 +1,58 @@ + + + + + +Use of This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                    +

                                    3 Use of This Document

                                    +

                                    [NOTE: This document follows the same license model as the C++ +Core Guidelines. The LICENSE document is taken verbatim from the C++ +Core Guidelines.] This document is made available under a MIT-style +license. In simple terms, this license permits copying, use, +modification, and creation of derivative works. A copy of the license is +included in the section LICENSE. +

                                    + + + + + diff --git a/0.0.19/html_split/User_002dDefined-Types-Classes.html b/0.0.19/html_split/User_002dDefined-Types-Classes.html new file mode 100644 index 0000000..d7acd5e --- /dev/null +++ b/0.0.19/html_split/User_002dDefined-Types-Classes.html @@ -0,0 +1,69 @@ + + + + + +User-Defined Types Classes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                                    +

                                    6.5 User-Defined Types (Classes)

                                    + + + + + + + + + + + + + + + +
                                    IDUnitFoundationalMainAdvanced
                                    [‘?’]Special Member Functions???
                                    [‘?’]Types???
                                    [‘?’]Conversions???
                                    [‘?’]Constructors and Destructors???
                                    [‘?’]Move/Copy Constructors and Assignment Operators???
                                    [‘?’]Member Functions???
                                    [‘?’]Sum Types???
                                    [‘?’]User-Defined Literals???
                                    [‘?’]Special Member Functions???
                                    [‘?’]Guidelines for Special Member Functions (e.g., Rule of Five, Rule +of Zero)???
                                    [‘copy’]Copy Semantics‘✔️’‘✔️’
                                    [‘?’]Moving and Copying???
                                    [‘?’]Lambdas???
                                    + + + + + + diff --git a/0.0.19/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html b/0.0.19/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html new file mode 100644 index 0000000..c5a1bfb --- /dev/null +++ b/0.0.19/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html @@ -0,0 +1,69 @@ + + + + + +Working Group Documents Related to C++ Teaching Guidelines (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                                    +

                                    12.2 Working Group Documents Related to C++ Teaching Guidelines

                                    +
                                      +
                                    • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — +Standing Document for SG20: Guidelines for Teaching C++ to Beginners. +https://wg21.link/p1389. + +
                                    • Christopher Di Bella. P1725R0 — Modular Topic Design. +https://wg21.link/p1725. + +
                                    • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to +structure a teaching topic. https://wg21.link/p2193. + +
                                    • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study +Group: C++ Education. https://wg21.link/p1231. + +
                                    • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 +— Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0. + +
                                    + + + + + + diff --git a/0.0.19/html_split/_0023advanced.html b/0.0.19/html_split/_0023advanced.html new file mode 100644 index 0000000..d503bfc --- /dev/null +++ b/0.0.19/html_split/_0023advanced.html @@ -0,0 +1,40 @@ + + + + + + +#advanced (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #advanced.

                                    + diff --git a/0.0.19/html_split/_0023advanced_002d1.html b/0.0.19/html_split/_0023advanced_002d1.html new file mode 100644 index 0000000..282a7b8 --- /dev/null +++ b/0.0.19/html_split/_0023advanced_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #advanced-1.

                                    + diff --git a/0.0.19/html_split/_0023advanced_002d2.html b/0.0.19/html_split/_0023advanced_002d2.html new file mode 100644 index 0000000..039b3ff --- /dev/null +++ b/0.0.19/html_split/_0023advanced_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #advanced-2.

                                    + diff --git a/0.0.19/html_split/_0023advanced_002d3.html b/0.0.19/html_split/_0023advanced_002d3.html new file mode 100644 index 0000000..ebf5529 --- /dev/null +++ b/0.0.19/html_split/_0023advanced_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #advanced-3.

                                    + diff --git a/0.0.19/html_split/_0023advanced_002d4.html b/0.0.19/html_split/_0023advanced_002d4.html new file mode 100644 index 0000000..a320ab5 --- /dev/null +++ b/0.0.19/html_split/_0023advanced_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #advanced-4.

                                    + diff --git a/0.0.19/html_split/_0023advanced_002d5.html b/0.0.19/html_split/_0023advanced_002d5.html new file mode 100644 index 0000000..b823fd0 --- /dev/null +++ b/0.0.19/html_split/_0023advanced_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #advanced-5.

                                    + diff --git a/0.0.19/html_split/_0023advanced_002d6.html b/0.0.19/html_split/_0023advanced_002d6.html new file mode 100644 index 0000000..d70f35f --- /dev/null +++ b/0.0.19/html_split/_0023advanced_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #advanced-6.

                                    + diff --git a/0.0.19/html_split/_0023advanced_002dexception_002dsafe_002dcontainers_002dand_002dedge_002dcases.html b/0.0.19/html_split/_0023advanced_002dexception_002dsafe_002dcontainers_002dand_002dedge_002dcases.html new file mode 100644 index 0000000..35d5f33 --- /dev/null +++ b/0.0.19/html_split/_0023advanced_002dexception_002dsafe_002dcontainers_002dand_002dedge_002dcases.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-exception-safe-containers-and-edge-cases (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #advanced-exception-safe-containers-and-edge-cases.

                                    + diff --git a/0.0.19/html_split/_0023advanced_002dspecial_002dcases_002dand_002dpeculiarities.html b/0.0.19/html_split/_0023advanced_002dspecial_002dcases_002dand_002dpeculiarities.html new file mode 100644 index 0000000..db94ba0 --- /dev/null +++ b/0.0.19/html_split/_0023advanced_002dspecial_002dcases_002dand_002dpeculiarities.html @@ -0,0 +1,40 @@ + + + + + + +#advanced-special-cases-and-peculiarities (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #advanced-special-cases-and-peculiarities.

                                    + diff --git a/0.0.19/html_split/_0023backgroundrequired_002dknowledge.html b/0.0.19/html_split/_0023backgroundrequired_002dknowledge.html new file mode 100644 index 0000000..9959745 --- /dev/null +++ b/0.0.19/html_split/_0023backgroundrequired_002dknowledge.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #backgroundrequired-knowledge.

                                    + diff --git a/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d1.html b/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d1.html new file mode 100644 index 0000000..f6f6bd0 --- /dev/null +++ b/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #backgroundrequired-knowledge-1.

                                    + diff --git a/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d10.html b/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d10.html new file mode 100644 index 0000000..eb0e440 --- /dev/null +++ b/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d10.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-10 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #backgroundrequired-knowledge-10.

                                    + diff --git a/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d11.html b/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d11.html new file mode 100644 index 0000000..6977882 --- /dev/null +++ b/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d11.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-11 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #backgroundrequired-knowledge-11.

                                    + diff --git a/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d12.html b/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d12.html new file mode 100644 index 0000000..7729c32 --- /dev/null +++ b/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d12.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-12 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #backgroundrequired-knowledge-12.

                                    + diff --git a/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d13.html b/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d13.html new file mode 100644 index 0000000..039c0d3 --- /dev/null +++ b/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d13.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-13 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #backgroundrequired-knowledge-13.

                                    + diff --git a/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d14.html b/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d14.html new file mode 100644 index 0000000..2846fa7 --- /dev/null +++ b/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d14.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-14 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #backgroundrequired-knowledge-14.

                                    + diff --git a/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d15.html b/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d15.html new file mode 100644 index 0000000..a4cd187 --- /dev/null +++ b/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d15.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-15 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #backgroundrequired-knowledge-15.

                                    + diff --git a/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d16.html b/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d16.html new file mode 100644 index 0000000..4489e3b --- /dev/null +++ b/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d16.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-16 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #backgroundrequired-knowledge-16.

                                    + diff --git a/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d17.html b/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d17.html new file mode 100644 index 0000000..77a6add --- /dev/null +++ b/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d17.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-17 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #backgroundrequired-knowledge-17.

                                    + diff --git a/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d18.html b/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d18.html new file mode 100644 index 0000000..cf9a64d --- /dev/null +++ b/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d18.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-18 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #backgroundrequired-knowledge-18.

                                    + diff --git a/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d19.html b/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d19.html new file mode 100644 index 0000000..121441a --- /dev/null +++ b/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d19.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-19 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #backgroundrequired-knowledge-19.

                                    + diff --git a/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d2.html b/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d2.html new file mode 100644 index 0000000..b0b297d --- /dev/null +++ b/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #backgroundrequired-knowledge-2.

                                    + diff --git a/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d3.html b/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d3.html new file mode 100644 index 0000000..ae34d91 --- /dev/null +++ b/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #backgroundrequired-knowledge-3.

                                    + diff --git a/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d4.html b/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d4.html new file mode 100644 index 0000000..7417f62 --- /dev/null +++ b/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #backgroundrequired-knowledge-4.

                                    + diff --git a/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d5.html b/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d5.html new file mode 100644 index 0000000..34298e9 --- /dev/null +++ b/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #backgroundrequired-knowledge-5.

                                    + diff --git a/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d6.html b/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d6.html new file mode 100644 index 0000000..a1cdee1 --- /dev/null +++ b/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #backgroundrequired-knowledge-6.

                                    + diff --git a/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d7.html b/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d7.html new file mode 100644 index 0000000..893a0ba --- /dev/null +++ b/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #backgroundrequired-knowledge-7.

                                    + diff --git a/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d8.html b/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d8.html new file mode 100644 index 0000000..6080498 --- /dev/null +++ b/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #backgroundrequired-knowledge-8.

                                    + diff --git a/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d9.html b/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d9.html new file mode 100644 index 0000000..3ea462d --- /dev/null +++ b/0.0.19/html_split/_0023backgroundrequired_002dknowledge_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#backgroundrequired-knowledge-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #backgroundrequired-knowledge-9.

                                    + diff --git a/0.0.19/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html b/0.0.19/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html new file mode 100644 index 0000000..925c568 --- /dev/null +++ b/0.0.19/html_split/_0023basics_002dtypes_002dobjects_002dvalues_002dexpressions_002dstatements_002dand_002dcontrol_002dflow_002dconstructs.html @@ -0,0 +1,40 @@ + + + + + + +#basics-types-objects-values-expressions-statements-and-control-flow-constructs (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #basics-types-objects-values-expressions-statements-and-control-flow-constructs.

                                    + diff --git a/0.0.19/html_split/_0023building.html b/0.0.19/html_split/_0023building.html new file mode 100644 index 0000000..8ffc9df --- /dev/null +++ b/0.0.19/html_split/_0023building.html @@ -0,0 +1,40 @@ + + + + + + +#building (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #building.

                                    + diff --git a/0.0.19/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html b/0.0.19/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html new file mode 100644 index 0000000..a7e6bad --- /dev/null +++ b/0.0.19/html_split/_0023c_002dobject_002dmodel_002dcopy_002dsemantics.html @@ -0,0 +1,40 @@ + + + + + + +#c-object-model-copy-semantics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #c-object-model-copy-semantics.

                                    + diff --git a/0.0.19/html_split/_0023c_002dobject_002dmodel_002ddeclarations.html b/0.0.19/html_split/_0023c_002dobject_002dmodel_002ddeclarations.html new file mode 100644 index 0000000..fe710a9 --- /dev/null +++ b/0.0.19/html_split/_0023c_002dobject_002dmodel_002ddeclarations.html @@ -0,0 +1,40 @@ + + + + + + +#c-object-model-declarations (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #c-object-model-declarations.

                                    + diff --git a/0.0.19/html_split/_0023c_002dobject_002dmodel_002ddefinitions.html b/0.0.19/html_split/_0023c_002dobject_002dmodel_002ddefinitions.html new file mode 100644 index 0000000..b76a8b1 --- /dev/null +++ b/0.0.19/html_split/_0023c_002dobject_002dmodel_002ddefinitions.html @@ -0,0 +1,40 @@ + + + + + + +#c-object-model-definitions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #c-object-model-definitions.

                                    + diff --git a/0.0.19/html_split/_0023caveats.html b/0.0.19/html_split/_0023caveats.html new file mode 100644 index 0000000..d4bac8b --- /dev/null +++ b/0.0.19/html_split/_0023caveats.html @@ -0,0 +1,40 @@ + + + + + + +#caveats (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #caveats.

                                    + diff --git a/0.0.19/html_split/_0023caveats_002d1.html b/0.0.19/html_split/_0023caveats_002d1.html new file mode 100644 index 0000000..64faefd --- /dev/null +++ b/0.0.19/html_split/_0023caveats_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #caveats-1.

                                    + diff --git a/0.0.19/html_split/_0023caveats_002d10.html b/0.0.19/html_split/_0023caveats_002d10.html new file mode 100644 index 0000000..da12422 --- /dev/null +++ b/0.0.19/html_split/_0023caveats_002d10.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-10 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #caveats-10.

                                    + diff --git a/0.0.19/html_split/_0023caveats_002d11.html b/0.0.19/html_split/_0023caveats_002d11.html new file mode 100644 index 0000000..6e2bb58 --- /dev/null +++ b/0.0.19/html_split/_0023caveats_002d11.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-11 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #caveats-11.

                                    + diff --git a/0.0.19/html_split/_0023caveats_002d12.html b/0.0.19/html_split/_0023caveats_002d12.html new file mode 100644 index 0000000..5badafb --- /dev/null +++ b/0.0.19/html_split/_0023caveats_002d12.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-12 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #caveats-12.

                                    + diff --git a/0.0.19/html_split/_0023caveats_002d13.html b/0.0.19/html_split/_0023caveats_002d13.html new file mode 100644 index 0000000..e42da0c --- /dev/null +++ b/0.0.19/html_split/_0023caveats_002d13.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-13 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #caveats-13.

                                    + diff --git a/0.0.19/html_split/_0023caveats_002d14.html b/0.0.19/html_split/_0023caveats_002d14.html new file mode 100644 index 0000000..c6f3b37 --- /dev/null +++ b/0.0.19/html_split/_0023caveats_002d14.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-14 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #caveats-14.

                                    + diff --git a/0.0.19/html_split/_0023caveats_002d15.html b/0.0.19/html_split/_0023caveats_002d15.html new file mode 100644 index 0000000..84c0210 --- /dev/null +++ b/0.0.19/html_split/_0023caveats_002d15.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-15 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #caveats-15.

                                    + diff --git a/0.0.19/html_split/_0023caveats_002d16.html b/0.0.19/html_split/_0023caveats_002d16.html new file mode 100644 index 0000000..4652060 --- /dev/null +++ b/0.0.19/html_split/_0023caveats_002d16.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-16 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #caveats-16.

                                    + diff --git a/0.0.19/html_split/_0023caveats_002d17.html b/0.0.19/html_split/_0023caveats_002d17.html new file mode 100644 index 0000000..017a129 --- /dev/null +++ b/0.0.19/html_split/_0023caveats_002d17.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-17 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #caveats-17.

                                    + diff --git a/0.0.19/html_split/_0023caveats_002d18.html b/0.0.19/html_split/_0023caveats_002d18.html new file mode 100644 index 0000000..48f80ec --- /dev/null +++ b/0.0.19/html_split/_0023caveats_002d18.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-18 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #caveats-18.

                                    + diff --git a/0.0.19/html_split/_0023caveats_002d19.html b/0.0.19/html_split/_0023caveats_002d19.html new file mode 100644 index 0000000..a8fc473 --- /dev/null +++ b/0.0.19/html_split/_0023caveats_002d19.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-19 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #caveats-19.

                                    + diff --git a/0.0.19/html_split/_0023caveats_002d2.html b/0.0.19/html_split/_0023caveats_002d2.html new file mode 100644 index 0000000..6c66559 --- /dev/null +++ b/0.0.19/html_split/_0023caveats_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #caveats-2.

                                    + diff --git a/0.0.19/html_split/_0023caveats_002d3.html b/0.0.19/html_split/_0023caveats_002d3.html new file mode 100644 index 0000000..479063f --- /dev/null +++ b/0.0.19/html_split/_0023caveats_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #caveats-3.

                                    + diff --git a/0.0.19/html_split/_0023caveats_002d4.html b/0.0.19/html_split/_0023caveats_002d4.html new file mode 100644 index 0000000..9588a55 --- /dev/null +++ b/0.0.19/html_split/_0023caveats_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #caveats-4.

                                    + diff --git a/0.0.19/html_split/_0023caveats_002d5.html b/0.0.19/html_split/_0023caveats_002d5.html new file mode 100644 index 0000000..11edee5 --- /dev/null +++ b/0.0.19/html_split/_0023caveats_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #caveats-5.

                                    + diff --git a/0.0.19/html_split/_0023caveats_002d6.html b/0.0.19/html_split/_0023caveats_002d6.html new file mode 100644 index 0000000..6cea721 --- /dev/null +++ b/0.0.19/html_split/_0023caveats_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #caveats-6.

                                    + diff --git a/0.0.19/html_split/_0023caveats_002d7.html b/0.0.19/html_split/_0023caveats_002d7.html new file mode 100644 index 0000000..2a8f1cd --- /dev/null +++ b/0.0.19/html_split/_0023caveats_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #caveats-7.

                                    + diff --git a/0.0.19/html_split/_0023caveats_002d8.html b/0.0.19/html_split/_0023caveats_002d8.html new file mode 100644 index 0000000..e330642 --- /dev/null +++ b/0.0.19/html_split/_0023caveats_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #caveats-8.

                                    + diff --git a/0.0.19/html_split/_0023caveats_002d9.html b/0.0.19/html_split/_0023caveats_002d9.html new file mode 100644 index 0000000..004e434 --- /dev/null +++ b/0.0.19/html_split/_0023caveats_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#caveats-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #caveats-9.

                                    + diff --git a/0.0.19/html_split/_0023compilation_002dmodel.html b/0.0.19/html_split/_0023compilation_002dmodel.html new file mode 100644 index 0000000..1017867 --- /dev/null +++ b/0.0.19/html_split/_0023compilation_002dmodel.html @@ -0,0 +1,40 @@ + + + + + + +#compilation-model (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #compilation-model.

                                    + diff --git a/0.0.19/html_split/_0023compile_002dtime_002dcomputation.html b/0.0.19/html_split/_0023compile_002dtime_002dcomputation.html new file mode 100644 index 0000000..59b0c57 --- /dev/null +++ b/0.0.19/html_split/_0023compile_002dtime_002dcomputation.html @@ -0,0 +1,40 @@ + + + + + + +#compile-time-computation (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #compile-time-computation.

                                    + diff --git a/0.0.19/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html b/0.0.19/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html new file mode 100644 index 0000000..9294adf --- /dev/null +++ b/0.0.19/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html @@ -0,0 +1,40 @@ + + + + + + +#context-and-aim-of-this-guide (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #context-and-aim-of-this-guide.

                                    + diff --git a/0.0.19/html_split/_0023contributing_002dto_002dthis_002ddocument.html b/0.0.19/html_split/_0023contributing_002dto_002dthis_002ddocument.html new file mode 100644 index 0000000..272d848 --- /dev/null +++ b/0.0.19/html_split/_0023contributing_002dto_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#contributing-to-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #contributing-to-this-document.

                                    + diff --git a/0.0.19/html_split/_0023contributors.html b/0.0.19/html_split/_0023contributors.html new file mode 100644 index 0000000..a391f9d --- /dev/null +++ b/0.0.19/html_split/_0023contributors.html @@ -0,0 +1,40 @@ + + + + + + +#contributors (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #contributors.

                                    + diff --git a/0.0.19/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html b/0.0.19/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html new file mode 100644 index 0000000..d32c27e --- /dev/null +++ b/0.0.19/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html @@ -0,0 +1,40 @@ + + + + + + +#detailed-information-for-modules-and-topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #detailed-information-for-modules-and-topics.

                                    + diff --git a/0.0.19/html_split/_0023error_002dhandling.html b/0.0.19/html_split/_0023error_002dhandling.html new file mode 100644 index 0000000..80cfb94 --- /dev/null +++ b/0.0.19/html_split/_0023error_002dhandling.html @@ -0,0 +1,40 @@ + + + + + + +#error-handling (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #error-handling.

                                    + diff --git a/0.0.19/html_split/_0023error_002dhandling_002dcategories_002dof_002derrors.html b/0.0.19/html_split/_0023error_002dhandling_002dcategories_002dof_002derrors.html new file mode 100644 index 0000000..97b3124 --- /dev/null +++ b/0.0.19/html_split/_0023error_002dhandling_002dcategories_002dof_002derrors.html @@ -0,0 +1,40 @@ + + + + + + +#error-handling-categories-of-errors (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #error-handling-categories-of-errors.

                                    + diff --git a/0.0.19/html_split/_0023error_002dhandling_002derror_002dcodes.html b/0.0.19/html_split/_0023error_002dhandling_002derror_002dcodes.html new file mode 100644 index 0000000..a966f0a --- /dev/null +++ b/0.0.19/html_split/_0023error_002dhandling_002derror_002dcodes.html @@ -0,0 +1,40 @@ + + + + + + +#error-handling-error-codes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #error-handling-error-codes.

                                    + diff --git a/0.0.19/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html b/0.0.19/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html new file mode 100644 index 0000000..fc9b3eb --- /dev/null +++ b/0.0.19/html_split/_0023external_002di_002ee_002e_002dnon_002dstandard_002dlibraries.html @@ -0,0 +1,40 @@ + + + + + + +#external-i.e.-non-standard-libraries (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #external-i.e.-non-standard-libraries.

                                    + diff --git a/0.0.19/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html b/0.0.19/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html new file mode 100644 index 0000000..f915680 --- /dev/null +++ b/0.0.19/html_split/_0023foundational_002dcalling_002dstatic_005fassert_002dwith_002da_002dconstant_002dexpression.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-calling-static_assert-with-a-constant-expression (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #foundational-calling-static_assert-with-a-constant-expression.

                                    + diff --git a/0.0.19/html_split/_0023foundational_002dcategories_002dof_002derrors.html b/0.0.19/html_split/_0023foundational_002dcategories_002dof_002derrors.html new file mode 100644 index 0000000..6156f14 --- /dev/null +++ b/0.0.19/html_split/_0023foundational_002dcategories_002dof_002derrors.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-categories-of-errors (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #foundational-categories-of-errors.

                                    + diff --git a/0.0.19/html_split/_0023foundational_002ddeclaring_002dvariables.html b/0.0.19/html_split/_0023foundational_002ddeclaring_002dvariables.html new file mode 100644 index 0000000..63bc7ed --- /dev/null +++ b/0.0.19/html_split/_0023foundational_002ddeclaring_002dvariables.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-declaring-variables (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #foundational-declaring-variables.

                                    + diff --git a/0.0.19/html_split/_0023foundational_002ddefining_002dvariables_002dand_002dodr.html b/0.0.19/html_split/_0023foundational_002ddefining_002dvariables_002dand_002dodr.html new file mode 100644 index 0000000..2f9e1a7 --- /dev/null +++ b/0.0.19/html_split/_0023foundational_002ddefining_002dvariables_002dand_002dodr.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-defining-variables-and-odr (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #foundational-defining-variables-and-odr.

                                    + diff --git a/0.0.19/html_split/_0023foundational_002dhandling_002derror_002dcodes_002dwith_002dstderror_005fcode.html b/0.0.19/html_split/_0023foundational_002dhandling_002derror_002dcodes_002dwith_002dstderror_005fcode.html new file mode 100644 index 0000000..f7a0fe5 --- /dev/null +++ b/0.0.19/html_split/_0023foundational_002dhandling_002derror_002dcodes_002dwith_002dstderror_005fcode.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-handling-error-codes-with-stderror_code (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #foundational-handling-error-codes-with-stderror_code.

                                    + diff --git a/0.0.19/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html b/0.0.19/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html new file mode 100644 index 0000000..88f62bc --- /dev/null +++ b/0.0.19/html_split/_0023foundational_002dhow_002dand_002dwhen_002dare_002dcopies_002dmade.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-how-and-when-are-copies-made (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #foundational-how-and-when-are-copies-made.

                                    + diff --git a/0.0.19/html_split/_0023foundational_002dstandards_002dexception_002dhierarchy.html b/0.0.19/html_split/_0023foundational_002dstandards_002dexception_002dhierarchy.html new file mode 100644 index 0000000..5dfbff7 --- /dev/null +++ b/0.0.19/html_split/_0023foundational_002dstandards_002dexception_002dhierarchy.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-standards-exception-hierarchy (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #foundational-standards-exception-hierarchy.

                                    + diff --git a/0.0.19/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html b/0.0.19/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html new file mode 100644 index 0000000..95ab098 --- /dev/null +++ b/0.0.19/html_split/_0023foundational_002dusing_002dand_002ddefining_002dfunctions_002dwith_002ddefault_002darguments.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-using-and-defining-functions-with-default-arguments (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #foundational-using-and-defining-functions-with-default-arguments.

                                    + diff --git a/0.0.19/html_split/_0023foundational_002dusing_002dudls.html b/0.0.19/html_split/_0023foundational_002dusing_002dudls.html new file mode 100644 index 0000000..2f7afdd --- /dev/null +++ b/0.0.19/html_split/_0023foundational_002dusing_002dudls.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-using-udls (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #foundational-using-udls.

                                    + diff --git a/0.0.19/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html b/0.0.19/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html new file mode 100644 index 0000000..708f2d3 --- /dev/null +++ b/0.0.19/html_split/_0023foundational_002dwriting_002drequires_002dexpressions.html @@ -0,0 +1,40 @@ + + + + + + +#foundational-writing-requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #foundational-writing-requires-expressions.

                                    + diff --git a/0.0.19/html_split/_0023functions.html b/0.0.19/html_split/_0023functions.html new file mode 100644 index 0000000..e304abe --- /dev/null +++ b/0.0.19/html_split/_0023functions.html @@ -0,0 +1,40 @@ + + + + + + +#functions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #functions.

                                    + diff --git a/0.0.19/html_split/_0023functions_002ddefault_002dargument.html b/0.0.19/html_split/_0023functions_002ddefault_002dargument.html new file mode 100644 index 0000000..ccfbcbb --- /dev/null +++ b/0.0.19/html_split/_0023functions_002ddefault_002dargument.html @@ -0,0 +1,40 @@ + + + + + + +#functions-default-argument (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #functions-default-argument.

                                    + diff --git a/0.0.19/html_split/_0023functions_002duser_002ddefined_002dliterals.html b/0.0.19/html_split/_0023functions_002duser_002ddefined_002dliterals.html new file mode 100644 index 0000000..b4f78b5 --- /dev/null +++ b/0.0.19/html_split/_0023functions_002duser_002ddefined_002dliterals.html @@ -0,0 +1,40 @@ + + + + + + +#functions-user-defined-literals (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #functions-user-defined-literals.

                                    + diff --git a/0.0.19/html_split/_0023generic_002dprogramming_002dtemplates.html b/0.0.19/html_split/_0023generic_002dprogramming_002dtemplates.html new file mode 100644 index 0000000..3b91080 --- /dev/null +++ b/0.0.19/html_split/_0023generic_002dprogramming_002dtemplates.html @@ -0,0 +1,40 @@ + + + + + + +#generic-programming-templates (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #generic-programming-templates.

                                    + diff --git a/0.0.19/html_split/_0023glossary.html b/0.0.19/html_split/_0023glossary.html new file mode 100644 index 0000000..9b46bf6 --- /dev/null +++ b/0.0.19/html_split/_0023glossary.html @@ -0,0 +1,40 @@ + + + + + + +#glossary (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #glossary.

                                    + diff --git a/0.0.19/html_split/_0023how_002dto_002dcontribute.html b/0.0.19/html_split/_0023how_002dto_002dcontribute.html new file mode 100644 index 0000000..d9cff4a --- /dev/null +++ b/0.0.19/html_split/_0023how_002dto_002dcontribute.html @@ -0,0 +1,40 @@ + + + + + + +#how-to-contribute (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #how-to-contribute.

                                    + diff --git a/0.0.19/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html b/0.0.19/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html new file mode 100644 index 0000000..def5140 --- /dev/null +++ b/0.0.19/html_split/_0023inheritance_002dand_002dclass_002dhierarchies.html @@ -0,0 +1,40 @@ + + + + + + +#inheritance-and-class-hierarchies (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #inheritance-and-class-hierarchies.

                                    + diff --git a/0.0.19/html_split/_0023license.html b/0.0.19/html_split/_0023license.html new file mode 100644 index 0000000..6b44dd1 --- /dev/null +++ b/0.0.19/html_split/_0023license.html @@ -0,0 +1,40 @@ + + + + + + +#license (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #license.

                                    + diff --git a/0.0.19/html_split/_0023main_002dadvanced_002drequirements.html b/0.0.19/html_split/_0023main_002dadvanced_002drequirements.html new file mode 100644 index 0000000..8214533 --- /dev/null +++ b/0.0.19/html_split/_0023main_002dadvanced_002drequirements.html @@ -0,0 +1,40 @@ + + + + + + +#main-advanced-requirements (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #main-advanced-requirements.

                                    + diff --git a/0.0.19/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html b/0.0.19/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html new file mode 100644 index 0000000..22b0484 --- /dev/null +++ b/0.0.19/html_split/_0023main_002dcontracts_002dand_002dstatic_005fassert.html @@ -0,0 +1,40 @@ + + + + + + +#main-contracts-and-static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #main-contracts-and-static_assert.

                                    + diff --git a/0.0.19/html_split/_0023main_002ddeclarations_002dfor_002dprograms.html b/0.0.19/html_split/_0023main_002ddeclarations_002dfor_002dprograms.html new file mode 100644 index 0000000..f64b111 --- /dev/null +++ b/0.0.19/html_split/_0023main_002ddeclarations_002dfor_002dprograms.html @@ -0,0 +1,40 @@ + + + + + + +#main-declarations-for-programs (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #main-declarations-for-programs.

                                    + diff --git a/0.0.19/html_split/_0023main_002ddefining_002dfor_002dprograms.html b/0.0.19/html_split/_0023main_002ddefining_002dfor_002dprograms.html new file mode 100644 index 0000000..543487e --- /dev/null +++ b/0.0.19/html_split/_0023main_002ddefining_002dfor_002dprograms.html @@ -0,0 +1,40 @@ + + + + + + +#main-defining-for-programs (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #main-defining-for-programs.

                                    + diff --git a/0.0.19/html_split/_0023main_002ddesigning_002dapis_002daround_002dstderror_005fcode.html b/0.0.19/html_split/_0023main_002ddesigning_002dapis_002daround_002dstderror_005fcode.html new file mode 100644 index 0000000..6d5bb84 --- /dev/null +++ b/0.0.19/html_split/_0023main_002ddesigning_002dapis_002daround_002dstderror_005fcode.html @@ -0,0 +1,40 @@ + + + + + + +#main-designing-apis-around-stderror_code (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #main-designing-apis-around-stderror_code.

                                    + diff --git a/0.0.19/html_split/_0023main_002dexception_002dguarantees.html b/0.0.19/html_split/_0023main_002dexception_002dguarantees.html new file mode 100644 index 0000000..13702b2 --- /dev/null +++ b/0.0.19/html_split/_0023main_002dexception_002dguarantees.html @@ -0,0 +1,40 @@ + + + + + + +#main-exception-guarantees (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #main-exception-guarantees.

                                    + diff --git a/0.0.19/html_split/_0023main_002dhandling_002ddifferent_002dcategories_002dof_002derrors.html b/0.0.19/html_split/_0023main_002dhandling_002ddifferent_002dcategories_002dof_002derrors.html new file mode 100644 index 0000000..5030ef3 --- /dev/null +++ b/0.0.19/html_split/_0023main_002dhandling_002ddifferent_002dcategories_002dof_002derrors.html @@ -0,0 +1,40 @@ + + + + + + +#main-handling-different-categories-of-errors (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #main-handling-different-categories-of-errors.

                                    + diff --git a/0.0.19/html_split/_0023main_002dimplementing.html b/0.0.19/html_split/_0023main_002dimplementing.html new file mode 100644 index 0000000..260008c --- /dev/null +++ b/0.0.19/html_split/_0023main_002dimplementing.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #main-implementing.

                                    + diff --git a/0.0.19/html_split/_0023main_002dimplementing_002dudls.html b/0.0.19/html_split/_0023main_002dimplementing_002dudls.html new file mode 100644 index 0000000..a41d194 --- /dev/null +++ b/0.0.19/html_split/_0023main_002dimplementing_002dudls.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing-udls (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #main-implementing-udls.

                                    + diff --git a/0.0.19/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html b/0.0.19/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html new file mode 100644 index 0000000..1e5a4d8 --- /dev/null +++ b/0.0.19/html_split/_0023main_002dimplementing_002duser_002ddefined_002dcopy_002doperations.html @@ -0,0 +1,40 @@ + + + + + + +#main-implementing-user-defined-copy-operations (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #main-implementing-user-defined-copy-operations.

                                    + diff --git a/0.0.19/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html b/0.0.19/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html new file mode 100644 index 0000000..4502ed8 --- /dev/null +++ b/0.0.19/html_split/_0023meta_002derror_002dhandling_002dstatic_005fassert.html @@ -0,0 +1,40 @@ + + + + + + +#meta-error-handling-static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #meta-error-handling-static_assert.

                                    + diff --git a/0.0.19/html_split/_0023module_002dname_002drequires_002dexpressions.html b/0.0.19/html_split/_0023module_002dname_002drequires_002dexpressions.html new file mode 100644 index 0000000..56a9ebf --- /dev/null +++ b/0.0.19/html_split/_0023module_002dname_002drequires_002dexpressions.html @@ -0,0 +1,40 @@ + + + + + + +#module-name-requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #module-name-requires-expressions.

                                    + diff --git a/0.0.19/html_split/_0023motivation.html b/0.0.19/html_split/_0023motivation.html new file mode 100644 index 0000000..0141374 --- /dev/null +++ b/0.0.19/html_split/_0023motivation.html @@ -0,0 +1,40 @@ + + + + + + +#motivation (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #motivation.

                                    + diff --git a/0.0.19/html_split/_0023motivation_002d1.html b/0.0.19/html_split/_0023motivation_002d1.html new file mode 100644 index 0000000..7e4a69e --- /dev/null +++ b/0.0.19/html_split/_0023motivation_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #motivation-1.

                                    + diff --git a/0.0.19/html_split/_0023motivation_002d2.html b/0.0.19/html_split/_0023motivation_002d2.html new file mode 100644 index 0000000..7901fd3 --- /dev/null +++ b/0.0.19/html_split/_0023motivation_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #motivation-2.

                                    + diff --git a/0.0.19/html_split/_0023motivation_002d3.html b/0.0.19/html_split/_0023motivation_002d3.html new file mode 100644 index 0000000..ec720ad --- /dev/null +++ b/0.0.19/html_split/_0023motivation_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #motivation-3.

                                    + diff --git a/0.0.19/html_split/_0023motivation_002d4.html b/0.0.19/html_split/_0023motivation_002d4.html new file mode 100644 index 0000000..f53583a --- /dev/null +++ b/0.0.19/html_split/_0023motivation_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #motivation-4.

                                    + diff --git a/0.0.19/html_split/_0023motivation_002d5.html b/0.0.19/html_split/_0023motivation_002d5.html new file mode 100644 index 0000000..e177cbf --- /dev/null +++ b/0.0.19/html_split/_0023motivation_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #motivation-5.

                                    + diff --git a/0.0.19/html_split/_0023motivation_002d6.html b/0.0.19/html_split/_0023motivation_002d6.html new file mode 100644 index 0000000..8437847 --- /dev/null +++ b/0.0.19/html_split/_0023motivation_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #motivation-6.

                                    + diff --git a/0.0.19/html_split/_0023motivation_002d7.html b/0.0.19/html_split/_0023motivation_002d7.html new file mode 100644 index 0000000..bd56988 --- /dev/null +++ b/0.0.19/html_split/_0023motivation_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #motivation-7.

                                    + diff --git a/0.0.19/html_split/_0023motivation_002d8.html b/0.0.19/html_split/_0023motivation_002d8.html new file mode 100644 index 0000000..e0a71ac --- /dev/null +++ b/0.0.19/html_split/_0023motivation_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #motivation-8.

                                    + diff --git a/0.0.19/html_split/_0023motivation_002d9.html b/0.0.19/html_split/_0023motivation_002d9.html new file mode 100644 index 0000000..f19f6b8 --- /dev/null +++ b/0.0.19/html_split/_0023motivation_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#motivation-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #motivation-9.

                                    + diff --git a/0.0.19/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html b/0.0.19/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html new file mode 100644 index 0000000..57e8b6e --- /dev/null +++ b/0.0.19/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html @@ -0,0 +1,40 @@ + + + + + + +#obtaining-this-document-the-most-recent-version-and-alternate-formats (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #obtaining-this-document-the-most-recent-version-and-alternate-formats.

                                    + diff --git a/0.0.19/html_split/_0023organization_002dof_002dthis_002ddocument.html b/0.0.19/html_split/_0023organization_002dof_002dthis_002ddocument.html new file mode 100644 index 0000000..e312b8e --- /dev/null +++ b/0.0.19/html_split/_0023organization_002dof_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#organization-of-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #organization-of-this-document.

                                    + diff --git a/0.0.19/html_split/_0023overview.html b/0.0.19/html_split/_0023overview.html new file mode 100644 index 0000000..b2d4bdc --- /dev/null +++ b/0.0.19/html_split/_0023overview.html @@ -0,0 +1,40 @@ + + + + + + +#overview (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #overview.

                                    + diff --git a/0.0.19/html_split/_0023overview_002d1.html b/0.0.19/html_split/_0023overview_002d1.html new file mode 100644 index 0000000..d551764 --- /dev/null +++ b/0.0.19/html_split/_0023overview_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#overview-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #overview-1.

                                    + diff --git a/0.0.19/html_split/_0023overview_002d2.html b/0.0.19/html_split/_0023overview_002d2.html new file mode 100644 index 0000000..5a34b05 --- /dev/null +++ b/0.0.19/html_split/_0023overview_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#overview-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #overview-2.

                                    + diff --git a/0.0.19/html_split/_0023overview_002d3.html b/0.0.19/html_split/_0023overview_002d3.html new file mode 100644 index 0000000..f230145 --- /dev/null +++ b/0.0.19/html_split/_0023overview_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#overview-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #overview-3.

                                    + diff --git a/0.0.19/html_split/_0023overview_002d4.html b/0.0.19/html_split/_0023overview_002d4.html new file mode 100644 index 0000000..2436b9a --- /dev/null +++ b/0.0.19/html_split/_0023overview_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#overview-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #overview-4.

                                    + diff --git a/0.0.19/html_split/_0023overview_002d5.html b/0.0.19/html_split/_0023overview_002d5.html new file mode 100644 index 0000000..173ebf3 --- /dev/null +++ b/0.0.19/html_split/_0023overview_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#overview-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #overview-5.

                                    + diff --git a/0.0.19/html_split/_0023overview_002d6.html b/0.0.19/html_split/_0023overview_002d6.html new file mode 100644 index 0000000..9c8c247 --- /dev/null +++ b/0.0.19/html_split/_0023overview_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#overview-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #overview-6.

                                    + diff --git a/0.0.19/html_split/_0023overview_002d7.html b/0.0.19/html_split/_0023overview_002d7.html new file mode 100644 index 0000000..57f1a51 --- /dev/null +++ b/0.0.19/html_split/_0023overview_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#overview-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #overview-7.

                                    + diff --git a/0.0.19/html_split/_0023overview_002d8.html b/0.0.19/html_split/_0023overview_002d8.html new file mode 100644 index 0000000..c26d4de --- /dev/null +++ b/0.0.19/html_split/_0023overview_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#overview-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #overview-8.

                                    + diff --git a/0.0.19/html_split/_0023overview_002d9.html b/0.0.19/html_split/_0023overview_002d9.html new file mode 100644 index 0000000..61e9212 --- /dev/null +++ b/0.0.19/html_split/_0023overview_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#overview-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #overview-9.

                                    + diff --git a/0.0.19/html_split/_0023points_002dto_002dcover.html b/0.0.19/html_split/_0023points_002dto_002dcover.html new file mode 100644 index 0000000..424b02b --- /dev/null +++ b/0.0.19/html_split/_0023points_002dto_002dcover.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #points-to-cover.

                                    + diff --git a/0.0.19/html_split/_0023points_002dto_002dcover_002d1.html b/0.0.19/html_split/_0023points_002dto_002dcover_002d1.html new file mode 100644 index 0000000..2a554bb --- /dev/null +++ b/0.0.19/html_split/_0023points_002dto_002dcover_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #points-to-cover-1.

                                    + diff --git a/0.0.19/html_split/_0023points_002dto_002dcover_002d10.html b/0.0.19/html_split/_0023points_002dto_002dcover_002d10.html new file mode 100644 index 0000000..dc42850 --- /dev/null +++ b/0.0.19/html_split/_0023points_002dto_002dcover_002d10.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-10 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #points-to-cover-10.

                                    + diff --git a/0.0.19/html_split/_0023points_002dto_002dcover_002d11.html b/0.0.19/html_split/_0023points_002dto_002dcover_002d11.html new file mode 100644 index 0000000..15ba774 --- /dev/null +++ b/0.0.19/html_split/_0023points_002dto_002dcover_002d11.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-11 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #points-to-cover-11.

                                    + diff --git a/0.0.19/html_split/_0023points_002dto_002dcover_002d12.html b/0.0.19/html_split/_0023points_002dto_002dcover_002d12.html new file mode 100644 index 0000000..03897e9 --- /dev/null +++ b/0.0.19/html_split/_0023points_002dto_002dcover_002d12.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-12 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #points-to-cover-12.

                                    + diff --git a/0.0.19/html_split/_0023points_002dto_002dcover_002d13.html b/0.0.19/html_split/_0023points_002dto_002dcover_002d13.html new file mode 100644 index 0000000..a249733 --- /dev/null +++ b/0.0.19/html_split/_0023points_002dto_002dcover_002d13.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-13 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #points-to-cover-13.

                                    + diff --git a/0.0.19/html_split/_0023points_002dto_002dcover_002d14.html b/0.0.19/html_split/_0023points_002dto_002dcover_002d14.html new file mode 100644 index 0000000..2580f50 --- /dev/null +++ b/0.0.19/html_split/_0023points_002dto_002dcover_002d14.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-14 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #points-to-cover-14.

                                    + diff --git a/0.0.19/html_split/_0023points_002dto_002dcover_002d15.html b/0.0.19/html_split/_0023points_002dto_002dcover_002d15.html new file mode 100644 index 0000000..e96f6f5 --- /dev/null +++ b/0.0.19/html_split/_0023points_002dto_002dcover_002d15.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-15 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #points-to-cover-15.

                                    + diff --git a/0.0.19/html_split/_0023points_002dto_002dcover_002d16.html b/0.0.19/html_split/_0023points_002dto_002dcover_002d16.html new file mode 100644 index 0000000..309b85b --- /dev/null +++ b/0.0.19/html_split/_0023points_002dto_002dcover_002d16.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-16 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #points-to-cover-16.

                                    + diff --git a/0.0.19/html_split/_0023points_002dto_002dcover_002d17.html b/0.0.19/html_split/_0023points_002dto_002dcover_002d17.html new file mode 100644 index 0000000..bc28131 --- /dev/null +++ b/0.0.19/html_split/_0023points_002dto_002dcover_002d17.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-17 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #points-to-cover-17.

                                    + diff --git a/0.0.19/html_split/_0023points_002dto_002dcover_002d18.html b/0.0.19/html_split/_0023points_002dto_002dcover_002d18.html new file mode 100644 index 0000000..104f3f1 --- /dev/null +++ b/0.0.19/html_split/_0023points_002dto_002dcover_002d18.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-18 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #points-to-cover-18.

                                    + diff --git a/0.0.19/html_split/_0023points_002dto_002dcover_002d2.html b/0.0.19/html_split/_0023points_002dto_002dcover_002d2.html new file mode 100644 index 0000000..053a51a --- /dev/null +++ b/0.0.19/html_split/_0023points_002dto_002dcover_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #points-to-cover-2.

                                    + diff --git a/0.0.19/html_split/_0023points_002dto_002dcover_002d3.html b/0.0.19/html_split/_0023points_002dto_002dcover_002d3.html new file mode 100644 index 0000000..b0dad48 --- /dev/null +++ b/0.0.19/html_split/_0023points_002dto_002dcover_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #points-to-cover-3.

                                    + diff --git a/0.0.19/html_split/_0023points_002dto_002dcover_002d4.html b/0.0.19/html_split/_0023points_002dto_002dcover_002d4.html new file mode 100644 index 0000000..94de8fa --- /dev/null +++ b/0.0.19/html_split/_0023points_002dto_002dcover_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #points-to-cover-4.

                                    + diff --git a/0.0.19/html_split/_0023points_002dto_002dcover_002d5.html b/0.0.19/html_split/_0023points_002dto_002dcover_002d5.html new file mode 100644 index 0000000..39d1eaf --- /dev/null +++ b/0.0.19/html_split/_0023points_002dto_002dcover_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #points-to-cover-5.

                                    + diff --git a/0.0.19/html_split/_0023points_002dto_002dcover_002d6.html b/0.0.19/html_split/_0023points_002dto_002dcover_002d6.html new file mode 100644 index 0000000..92df88f --- /dev/null +++ b/0.0.19/html_split/_0023points_002dto_002dcover_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #points-to-cover-6.

                                    + diff --git a/0.0.19/html_split/_0023points_002dto_002dcover_002d7.html b/0.0.19/html_split/_0023points_002dto_002dcover_002d7.html new file mode 100644 index 0000000..6e6c895 --- /dev/null +++ b/0.0.19/html_split/_0023points_002dto_002dcover_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #points-to-cover-7.

                                    + diff --git a/0.0.19/html_split/_0023points_002dto_002dcover_002d8.html b/0.0.19/html_split/_0023points_002dto_002dcover_002d8.html new file mode 100644 index 0000000..b5574e1 --- /dev/null +++ b/0.0.19/html_split/_0023points_002dto_002dcover_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #points-to-cover-8.

                                    + diff --git a/0.0.19/html_split/_0023points_002dto_002dcover_002d9.html b/0.0.19/html_split/_0023points_002dto_002dcover_002d9.html new file mode 100644 index 0000000..d30dd49 --- /dev/null +++ b/0.0.19/html_split/_0023points_002dto_002dcover_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#points-to-cover-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #points-to-cover-9.

                                    + diff --git a/0.0.19/html_split/_0023preprocessor.html b/0.0.19/html_split/_0023preprocessor.html new file mode 100644 index 0000000..a3bb5f6 --- /dev/null +++ b/0.0.19/html_split/_0023preprocessor.html @@ -0,0 +1,40 @@ + + + + + + +#preprocessor (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #preprocessor.

                                    + diff --git a/0.0.19/html_split/_0023references.html b/0.0.19/html_split/_0023references.html new file mode 100644 index 0000000..69fbd6b --- /dev/null +++ b/0.0.19/html_split/_0023references.html @@ -0,0 +1,40 @@ + + + + + + +#references (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #references.

                                    + diff --git a/0.0.19/html_split/_0023references_002don_002dlearning_002doutcomes.html b/0.0.19/html_split/_0023references_002don_002dlearning_002doutcomes.html new file mode 100644 index 0000000..d28fbbf --- /dev/null +++ b/0.0.19/html_split/_0023references_002don_002dlearning_002doutcomes.html @@ -0,0 +1,40 @@ + + + + + + +#references-on-learning-outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #references-on-learning-outcomes.

                                    + diff --git a/0.0.19/html_split/_0023software_002ddesign.html b/0.0.19/html_split/_0023software_002ddesign.html new file mode 100644 index 0000000..16f5f54 --- /dev/null +++ b/0.0.19/html_split/_0023software_002ddesign.html @@ -0,0 +1,40 @@ + + + + + + +#software-design (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #software-design.

                                    + diff --git a/0.0.19/html_split/_0023standard_002dlibrary.html b/0.0.19/html_split/_0023standard_002dlibrary.html new file mode 100644 index 0000000..71956d3 --- /dev/null +++ b/0.0.19/html_split/_0023standard_002dlibrary.html @@ -0,0 +1,40 @@ + + + + + + +#standard-library (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #standard-library.

                                    + diff --git a/0.0.19/html_split/_0023student_002doutcomes.html b/0.0.19/html_split/_0023student_002doutcomes.html new file mode 100644 index 0000000..df0035d --- /dev/null +++ b/0.0.19/html_split/_0023student_002doutcomes.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #student-outcomes.

                                    + diff --git a/0.0.19/html_split/_0023student_002doutcomes_002d1.html b/0.0.19/html_split/_0023student_002doutcomes_002d1.html new file mode 100644 index 0000000..e9344b7 --- /dev/null +++ b/0.0.19/html_split/_0023student_002doutcomes_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #student-outcomes-1.

                                    + diff --git a/0.0.19/html_split/_0023student_002doutcomes_002d10.html b/0.0.19/html_split/_0023student_002doutcomes_002d10.html new file mode 100644 index 0000000..b6e9f31 --- /dev/null +++ b/0.0.19/html_split/_0023student_002doutcomes_002d10.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-10 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #student-outcomes-10.

                                    + diff --git a/0.0.19/html_split/_0023student_002doutcomes_002d11.html b/0.0.19/html_split/_0023student_002doutcomes_002d11.html new file mode 100644 index 0000000..2e7468d --- /dev/null +++ b/0.0.19/html_split/_0023student_002doutcomes_002d11.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-11 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #student-outcomes-11.

                                    + diff --git a/0.0.19/html_split/_0023student_002doutcomes_002d12.html b/0.0.19/html_split/_0023student_002doutcomes_002d12.html new file mode 100644 index 0000000..efd9dbf --- /dev/null +++ b/0.0.19/html_split/_0023student_002doutcomes_002d12.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-12 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #student-outcomes-12.

                                    + diff --git a/0.0.19/html_split/_0023student_002doutcomes_002d13.html b/0.0.19/html_split/_0023student_002doutcomes_002d13.html new file mode 100644 index 0000000..328f484 --- /dev/null +++ b/0.0.19/html_split/_0023student_002doutcomes_002d13.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-13 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #student-outcomes-13.

                                    + diff --git a/0.0.19/html_split/_0023student_002doutcomes_002d14.html b/0.0.19/html_split/_0023student_002doutcomes_002d14.html new file mode 100644 index 0000000..0da7731 --- /dev/null +++ b/0.0.19/html_split/_0023student_002doutcomes_002d14.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-14 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #student-outcomes-14.

                                    + diff --git a/0.0.19/html_split/_0023student_002doutcomes_002d15.html b/0.0.19/html_split/_0023student_002doutcomes_002d15.html new file mode 100644 index 0000000..91f9812 --- /dev/null +++ b/0.0.19/html_split/_0023student_002doutcomes_002d15.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-15 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #student-outcomes-15.

                                    + diff --git a/0.0.19/html_split/_0023student_002doutcomes_002d16.html b/0.0.19/html_split/_0023student_002doutcomes_002d16.html new file mode 100644 index 0000000..383a843 --- /dev/null +++ b/0.0.19/html_split/_0023student_002doutcomes_002d16.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-16 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #student-outcomes-16.

                                    + diff --git a/0.0.19/html_split/_0023student_002doutcomes_002d17.html b/0.0.19/html_split/_0023student_002doutcomes_002d17.html new file mode 100644 index 0000000..1dd8eee --- /dev/null +++ b/0.0.19/html_split/_0023student_002doutcomes_002d17.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-17 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #student-outcomes-17.

                                    + diff --git a/0.0.19/html_split/_0023student_002doutcomes_002d18.html b/0.0.19/html_split/_0023student_002doutcomes_002d18.html new file mode 100644 index 0000000..584e270 --- /dev/null +++ b/0.0.19/html_split/_0023student_002doutcomes_002d18.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-18 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #student-outcomes-18.

                                    + diff --git a/0.0.19/html_split/_0023student_002doutcomes_002d19.html b/0.0.19/html_split/_0023student_002doutcomes_002d19.html new file mode 100644 index 0000000..aa061be --- /dev/null +++ b/0.0.19/html_split/_0023student_002doutcomes_002d19.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-19 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #student-outcomes-19.

                                    + diff --git a/0.0.19/html_split/_0023student_002doutcomes_002d2.html b/0.0.19/html_split/_0023student_002doutcomes_002d2.html new file mode 100644 index 0000000..6fa7724 --- /dev/null +++ b/0.0.19/html_split/_0023student_002doutcomes_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #student-outcomes-2.

                                    + diff --git a/0.0.19/html_split/_0023student_002doutcomes_002d3.html b/0.0.19/html_split/_0023student_002doutcomes_002d3.html new file mode 100644 index 0000000..195d9d2 --- /dev/null +++ b/0.0.19/html_split/_0023student_002doutcomes_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #student-outcomes-3.

                                    + diff --git a/0.0.19/html_split/_0023student_002doutcomes_002d4.html b/0.0.19/html_split/_0023student_002doutcomes_002d4.html new file mode 100644 index 0000000..3e30430 --- /dev/null +++ b/0.0.19/html_split/_0023student_002doutcomes_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #student-outcomes-4.

                                    + diff --git a/0.0.19/html_split/_0023student_002doutcomes_002d5.html b/0.0.19/html_split/_0023student_002doutcomes_002d5.html new file mode 100644 index 0000000..0a4a7da --- /dev/null +++ b/0.0.19/html_split/_0023student_002doutcomes_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #student-outcomes-5.

                                    + diff --git a/0.0.19/html_split/_0023student_002doutcomes_002d6.html b/0.0.19/html_split/_0023student_002doutcomes_002d6.html new file mode 100644 index 0000000..c5c4ac0 --- /dev/null +++ b/0.0.19/html_split/_0023student_002doutcomes_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #student-outcomes-6.

                                    + diff --git a/0.0.19/html_split/_0023student_002doutcomes_002d7.html b/0.0.19/html_split/_0023student_002doutcomes_002d7.html new file mode 100644 index 0000000..5233f94 --- /dev/null +++ b/0.0.19/html_split/_0023student_002doutcomes_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #student-outcomes-7.

                                    + diff --git a/0.0.19/html_split/_0023student_002doutcomes_002d8.html b/0.0.19/html_split/_0023student_002doutcomes_002d8.html new file mode 100644 index 0000000..f19fd7f --- /dev/null +++ b/0.0.19/html_split/_0023student_002doutcomes_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #student-outcomes-8.

                                    + diff --git a/0.0.19/html_split/_0023student_002doutcomes_002d9.html b/0.0.19/html_split/_0023student_002doutcomes_002d9.html new file mode 100644 index 0000000..735a21f --- /dev/null +++ b/0.0.19/html_split/_0023student_002doutcomes_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#student-outcomes-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #student-outcomes-9.

                                    + diff --git a/0.0.19/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html b/0.0.19/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html new file mode 100644 index 0000000..4801178 --- /dev/null +++ b/0.0.19/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html @@ -0,0 +1,40 @@ + + + + + + +#summary-of-modules-and-topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #summary-of-modules-and-topics.

                                    + diff --git a/0.0.19/html_split/_0023testing_002dand_002ddebugging.html b/0.0.19/html_split/_0023testing_002dand_002ddebugging.html new file mode 100644 index 0000000..1ae096d --- /dev/null +++ b/0.0.19/html_split/_0023testing_002dand_002ddebugging.html @@ -0,0 +1,40 @@ + + + + + + +#testing-and-debugging (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #testing-and-debugging.

                                    + diff --git a/0.0.19/html_split/_0023tooling.html b/0.0.19/html_split/_0023tooling.html new file mode 100644 index 0000000..634a8dc --- /dev/null +++ b/0.0.19/html_split/_0023tooling.html @@ -0,0 +1,40 @@ + + + + + + +#tooling (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #tooling.

                                    + diff --git a/0.0.19/html_split/_0023topic_002dintroduction.html b/0.0.19/html_split/_0023topic_002dintroduction.html new file mode 100644 index 0000000..742d5d9 --- /dev/null +++ b/0.0.19/html_split/_0023topic_002dintroduction.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #topic-introduction.

                                    + diff --git a/0.0.19/html_split/_0023topic_002dintroduction_002d1.html b/0.0.19/html_split/_0023topic_002dintroduction_002d1.html new file mode 100644 index 0000000..a110644 --- /dev/null +++ b/0.0.19/html_split/_0023topic_002dintroduction_002d1.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #topic-introduction-1.

                                    + diff --git a/0.0.19/html_split/_0023topic_002dintroduction_002d2.html b/0.0.19/html_split/_0023topic_002dintroduction_002d2.html new file mode 100644 index 0000000..986bf37 --- /dev/null +++ b/0.0.19/html_split/_0023topic_002dintroduction_002d2.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #topic-introduction-2.

                                    + diff --git a/0.0.19/html_split/_0023topic_002dintroduction_002d3.html b/0.0.19/html_split/_0023topic_002dintroduction_002d3.html new file mode 100644 index 0000000..3d14fd9 --- /dev/null +++ b/0.0.19/html_split/_0023topic_002dintroduction_002d3.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #topic-introduction-3.

                                    + diff --git a/0.0.19/html_split/_0023topic_002dintroduction_002d4.html b/0.0.19/html_split/_0023topic_002dintroduction_002d4.html new file mode 100644 index 0000000..c73a236 --- /dev/null +++ b/0.0.19/html_split/_0023topic_002dintroduction_002d4.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #topic-introduction-4.

                                    + diff --git a/0.0.19/html_split/_0023topic_002dintroduction_002d5.html b/0.0.19/html_split/_0023topic_002dintroduction_002d5.html new file mode 100644 index 0000000..e92b876 --- /dev/null +++ b/0.0.19/html_split/_0023topic_002dintroduction_002d5.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #topic-introduction-5.

                                    + diff --git a/0.0.19/html_split/_0023topic_002dintroduction_002d6.html b/0.0.19/html_split/_0023topic_002dintroduction_002d6.html new file mode 100644 index 0000000..1869b1b --- /dev/null +++ b/0.0.19/html_split/_0023topic_002dintroduction_002d6.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #topic-introduction-6.

                                    + diff --git a/0.0.19/html_split/_0023topic_002dintroduction_002d7.html b/0.0.19/html_split/_0023topic_002dintroduction_002d7.html new file mode 100644 index 0000000..1e5c6a3 --- /dev/null +++ b/0.0.19/html_split/_0023topic_002dintroduction_002d7.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #topic-introduction-7.

                                    + diff --git a/0.0.19/html_split/_0023topic_002dintroduction_002d8.html b/0.0.19/html_split/_0023topic_002dintroduction_002d8.html new file mode 100644 index 0000000..c83b0b5 --- /dev/null +++ b/0.0.19/html_split/_0023topic_002dintroduction_002d8.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #topic-introduction-8.

                                    + diff --git a/0.0.19/html_split/_0023topic_002dintroduction_002d9.html b/0.0.19/html_split/_0023topic_002dintroduction_002d9.html new file mode 100644 index 0000000..3825e57 --- /dev/null +++ b/0.0.19/html_split/_0023topic_002dintroduction_002d9.html @@ -0,0 +1,40 @@ + + + + + + +#topic-introduction-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #topic-introduction-9.

                                    + diff --git a/0.0.19/html_split/_0023use_002dof_002dthis_002ddocument.html b/0.0.19/html_split/_0023use_002dof_002dthis_002ddocument.html new file mode 100644 index 0000000..68d835d --- /dev/null +++ b/0.0.19/html_split/_0023use_002dof_002dthis_002ddocument.html @@ -0,0 +1,40 @@ + + + + + + +#use-of-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #use-of-this-document.

                                    + diff --git a/0.0.19/html_split/_0023user_002ddefined_002dtypes_002dclasses.html b/0.0.19/html_split/_0023user_002ddefined_002dtypes_002dclasses.html new file mode 100644 index 0000000..04771a9 --- /dev/null +++ b/0.0.19/html_split/_0023user_002ddefined_002dtypes_002dclasses.html @@ -0,0 +1,40 @@ + + + + + + +#user-defined-types-classes (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #user-defined-types-classes.

                                    + diff --git a/0.0.19/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html b/0.0.19/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html new file mode 100644 index 0000000..f4b9435 --- /dev/null +++ b/0.0.19/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html @@ -0,0 +1,40 @@ + + + + + + +#working-group-documents-related-to-c-teaching-guidelines (Guidelines for Teaching C++) + + + + + + + + + + + + + + +

                                    The node you are looking for is at #working-group-documents-related-to-c-teaching-guidelines.

                                    + diff --git a/0.0.19/html_split/index.html b/0.0.19/html_split/index.html new file mode 100644 index 0000000..405046d --- /dev/null +++ b/0.0.19/html_split/index.html @@ -0,0 +1,336 @@ + + + + + +Top (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +

                                    Table of Contents

                                    + +
                                    + + +
                                    + + + +
                                    +

                                    Guidelines for Teaching C++

                                    + + + + + + + + + + + + + + + + +
                                    + + + + + + diff --git a/0.0.19/html_split/unknown_node.html b/0.0.19/html_split/unknown_node.html new file mode 100644 index 0000000..731756c --- /dev/null +++ b/0.0.19/html_split/unknown_node.html @@ -0,0 +1,1588 @@ + + + + + +Guidelines for Teaching C++ + + + + + + + + + + + + + + + + +
                                    +

                                    +   [Contents]

                                    +
                                    +
                                    +

                                    7.1.5.1 Background/Required Knowledge

                                    +

                                    A student is able to: * identify special member functions +[C++ object model: +special member functions] +

                                    +

                                    It helps when a student is able to: * use move semantics +[C++ object model: move +semantics] * explain the rule of zero +[C++ object model: rule-of-zero] +* explain the rule of five [C++ +object model: rule-of-five] +

                                    +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.1.5.2 Student outcomes

                                    +

                                    A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                                    +

                                    A student should be able to: * explain when they have to implement the +copy operations for their own type * Copy constructor * Copy assignment +operator * implement copy operations for their own types * +Optional: explain when copying with basic and strong exception +guarantees is useful +

                                    +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.1.5.3 Caveats

                                    +

                                    This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                                    +
                                      +
                                    • Intricacies when implementing copy operations: +
                                        +
                                      • Examples of how not to write copy operations (e.g., C++03 +std::auto_ptr) +
                                      + +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.1.5.4 Points to cover

                                    +

                                    This section lists important details for each point. +

                                    +
                                      +
                                    • Copy constructors and copy assignment operators +
                                        +
                                      • How compiler generates default copy operations +
                                      • =default, =delete (No copy) +
                                      • How-to write your own copy operations +
                                      • Rule-of-five +
                                      • Copy assignment operators can be ref-qualified to avoid assigning into +temporary objects. +
                                      + +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.2.1 Overview

                                    +

                                    Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

                                    + + + + + +
                                    LevelObjective
                                    FoundationalDefining variables and ODR
                                    MainDefining for programs
                                    AdvancedSpecial cases and peculiarities
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.2.2 Motivation

                                    +

                                    Why is this important? Why do we want to learn/teach this +topic? +

                                    +
                                      +
                                    • A definition is a declaration that supplies all that is needed for a +complete entity +
                                    • int baz = 42; +
                                    • void bar() { /* implementation */ } +
                                    • class Foo { /* class body */ }; +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.2.3 Topic introduction

                                    +

                                    Very brief introduction to the topic. +

                                    +

                                    A definition extends a declaration, providing all that is needed for a +complete entity, e.g., allocate memory for variables, provide the +implementation for functions, complete definitions of data and function +members of a class. +

                                    +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.2.4.1 Background/Required Knowledge

                                    +

                                    A student: +

                                    + + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.2.4.2 Student outcomes

                                    +

                                    A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                                    +

                                    A student should be able to: +

                                    +
                                      +
                                    1. define a variable with a specific type int baz = 42; +
                                    2. define a function void bar() {} +
                                    3. define a class class Foo {}; +
                                    4. explain the one definition rule +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.2.4.3 Caveats

                                    +

                                    This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                                    +

                                    No caveats at present. +

                                    +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.2.4.4 Points to cover

                                    +

                                    This section lists important details for each point. +

                                    +
                                      +
                                    • One definition rule (ODR) +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.2.5.1 Background/Required Knowledge

                                    + + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.2.5.2 Student outcomes

                                    +

                                    A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                                    +

                                    A student should be able to: +

                                    +
                                      +
                                    1. organize variables, functions, classes into multiple translation units, +describing interface with declarations and providing the implementations +with definitions without violating ODR. +
                                    2. distinguish between template declaration and definition +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.2.5.3 Caveats

                                    +

                                    This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                                    +
                                      +
                                    • Putting a definition into a header file that is included more than once +leads to ODR violations, possibly resulting in linker errors. +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.2.5.4 Points to cover

                                    +

                                    This section lists important details for each point. +

                                    +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.3.1 Overview

                                    +

                                    Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

                                    + + + + + +
                                    LevelObjective
                                    FoundationalDeclaring variables
                                    MainDeclaring for programs
                                    AdvancedSpecial cases and peculiarities
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.3.2 Motivation

                                    +

                                    Why is this important? Why do we want to learn/teach this +topic? +

                                    +
                                      +
                                    • Introduces a name and it’s type +
                                    • int baz; +
                                    • void bar(); +
                                    • class Foo; +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.3.3 Topic introduction

                                    +

                                    Very brief introduction to the topic. +

                                    +

                                    Introduce names and their associated type in a scope. +

                                    +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.3.4.1 Background/Required Knowledge

                                    +

                                    A student: +

                                    +
                                      +
                                    • is familiar with the basic C++ types: +
                                        +
                                      • bool (Boolean type) +
                                      • int (Integer type) +
                                      • double (Floating-point type) +
                                      + +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.3.4.2 Student outcomes

                                    +

                                    A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                                    +

                                    A student should be able to: +

                                    +
                                      +
                                    1. declare a variable with a specific type ‘int baz;’ +
                                    2. declare a function ‘void bar();’ +
                                    3. declare a class ‘class Foo;’ +
                                    4. forward declare a user-defined type or a function +
                                    5. explain the difference between a definition and a declaration +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.3.4.3 Caveats

                                    +

                                    This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                                    +

                                    No caveats at present. +

                                    +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.3.4.4 Points to cover

                                    +

                                    This section lists important details for each point. +

                                    +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.3.5.1 Background/Required Knowledge

                                    +
                                      +
                                    • All of the above. +
                                    • Basic template syntax +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.3.5.2 Student outcomes

                                    +

                                    A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                                    +

                                    A student should be able to: +

                                    +
                                      +
                                    1. create header and source files with a declaration in the former and +definition of a variable/function in the latter +
                                    2. declare type aliases to introduce a type with an alternative name ‘using +std::string;’ +
                                    3. write a forward template declaration +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.3.5.3 Caveats

                                    +

                                    This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                                    +
                                      +
                                    • Declaring aliases can introduce name clashes +
                                    • Prefer using declaration’s over using directives in header files [link] +
                                    • The order of declarations dictates the order of initialization +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.3.5.4 Points to cover

                                    +

                                    This section lists important details for each point. +

                                    +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.3.6 Advanced

                                    +

                                    These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

                                    +
                                      +
                                    • asm declaration +
                                    • using-enum-declaration +
                                    • extern “C” declarations +
                                    + +

                                    See concepts. +

                                    +

                                    See user-defined-literals. +

                                    +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.4.1 Overview

                                    +

                                    Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

                                    + + + + + +
                                    LevelObjectives
                                    FoundationalCalling static_assert with a constant expression
                                    MainUsing static_assert to detect contract violations and +improve error messages
                                    Advanced
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.4.2 Motivation

                                    +

                                    Why is this important? Why do we want to learn/teach this +topic? +

                                    +

                                    static_assert allows the developer to enforce that conditions +which can be checked during compilation will force build errors when +violated. Additionally, they are the best mechanism by which a developer +can pass useful information to other developers regarding what violation +occurred or what must be done, instead. +

                                    +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.4.3 Topic introduction

                                    +

                                    Very brief introduction to the topic. +

                                    +

                                    static_assert is a compile-time evaluated function that asserts +the truth of a supplied predicate, issuing an optional user-supplied +error message if the predicate is false. +

                                    +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.4.4.1 Background/Required Knowledge

                                    +

                                    A student: +

                                    +
                                      +
                                    • Should be able to explain the difference between code evaluated at +compile-time and run-time +
                                    • Should be able to cite some examples of compile-time known information, +such as sizeof(T) +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.4.4.2 Student outcomes

                                    +

                                    A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                                    +

                                    A student should be able to: +

                                    +
                                      +
                                    1. Assert the expected size of a structure using static_assert +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.4.4.3 Caveats

                                    +

                                    This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                                    +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.4.4.4 Points to cover

                                    +

                                    This section lists important details for each point. +

                                    +
                                      +
                                    • X +
                                    • In addition to what is wrong, a good error message will inform the user +of how to correct it +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.4.5.1 Background/Required Knowledge

                                    +
                                      +
                                    • All of the above. +
                                    • General understanding of compile-time requirements +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.4.5.2 Student outcomes

                                    +

                                    A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                                    +

                                    A student should be able to: +

                                    +
                                      +
                                    1. Utilize static_assert to verify preconditions of a meta-function +
                                    2. Utilize static_assert to verify the results of meta-functions for +known values +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.4.5.3 Caveats

                                    +

                                    This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                                    +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.4.5.4 Points to cover

                                    +

                                    This section lists important details for each point. +

                                    +
                                      +
                                    • When writing a meta-function, use static_assert to test the +results +
                                    • Write static_assert calls at the scope of the code they are +guarding +
                                    + +
                                    template<typename T>
                                    +struct container {
                                    +    std::map<int, T> vals;
                                    +
                                    +    // Test location #1
                                    +    static_assert(
                                    +        std::is_default_constructible_v<T>,
                                    +        "container type T must be default constructible");i
                                    +
                                    +    void add(int key, T const& t) {
                                    +        // Test location #2
                                    +        static_assert(
                                    +            std::is_default_constructible_v<T>,
                                    +            "container type T must be default constructible");
                                    +        // std::map::operator[] requires default constructible type for 
                                    +        // the value. This will cause a build failure deep in the 
                                    +        // implementation of std::map, when T is not default constructible
                                    +        vals[key] = t;
                                    +    }
                                    +};
                                    +
                                    +struct NoDefCtor {
                                    +    NoDefCtor() = delete;
                                    +    NoDefCtor(double d) {}
                                    +};
                                    +
                                    +container<NoDefCtor> c; // If Test #1 was omitted, this would succeed
                                    +// This is ill-formed. Test #2 would catch this and provide a better 
                                    +// error message for the user
                                    +c.add(42, NoDefCtor(1.0)); 
                                    +
                                    +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.4.6 Advanced

                                    +

                                    These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

                                    +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.5.1 Overview

                                    +

                                    Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

                                    + + + + + +
                                    LevelObjectives
                                    Foundationalusing and understanding UDLs
                                    Mainimplementing your own UDLs
                                    AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.5.2 Motivation

                                    +

                                    Why is this important? Why do we want to learn/teach this +topic? +

                                    +
                                      +
                                    • Allows clearer expression of intent in C++. +
                                    • std::string: "Hello, world!"s +
                                    • std::chrono: 3h + 10min + 5s +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.5.3 Topic introduction

                                    +

                                    Very brief introduction to the topic. +

                                    +
                                      +
                                    • Explain the existence of user defined literals. Example: +12min + 17s is terse, expressive and type safe. +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.5.4.1 Background/Required Knowledge

                                    +

                                    A student: * knows how to form numeric literals, e.g., 1.5f means +a float of value 1.5. * is familiar with the major C++ +types: * bool (Boolean type) * int (Integer type) * +double (Floating-point type) * std::string (Text type) * +std::vector (Collection type) * knows that namespaces exist, and +namespace std. * knows what using-declarations and +using-directives are. [C++ +object model: declarations] +

                                    +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.5.4.2 Student outcomes

                                    +

                                    A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                                    +

                                    A student should be able to: +

                                    +
                                      +
                                    1. use using namespace std::string_literals[1]. +
                                    2. recognise UDLs in code that they are reading. +
                                    3. figure out which UDL definitions for a used type exist. +
                                    4. identify parts of the standard library that make use of UDLs. +
                                    5. prevent the dangers of temporaries created with "blah"s as well +as with std::string{"blah"}. +
                                    6. effectively selects the right set of namespaces in using-directives from +the sub-namespaces std::literals. +
                                    + +

                                    [1]: explain that it’s okay to use a using-directive to “activate” +UDLs. +

                                    +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.5.4.3 Caveats

                                    +

                                    This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                                    +
                                      +
                                    • A student gets confused by the similarities and differences between +built-in suffixes and UDLs and between UDLs from different namespaces. +
                                    • A student “activates” two suffixes with the same signature from +different namespaces. +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.5.4.4 Points to cover

                                    +

                                    This section lists important details for each point. +

                                    +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.5.5.1 Background/Required Knowledge

                                    +
                                      +
                                    • All of the above. +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.5.5.2 Student outcomes

                                    +

                                    A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                                    +

                                    A student should be able to: +

                                    +
                                      +
                                    1. write a UDL operator of their own. +
                                    2. separate unrelated UDLs into distinct namespaces. +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.5.5.3 Caveats

                                    +

                                    This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                                    +

                                    No caveats at present. #### Points to cover +

                                    +

                                    This section lists important details for each point. +

                                    +

                                    No caveats at present. ### Advanced {#udl-advanced} +

                                    +

                                    These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

                                    +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.6.1 Overview

                                    +

                                    Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

                                    +

                                    Functions in C++ may be overloaded with different numbers and types of +parameters. It may be of value to specify default arguments for some +number of parameters, to allow a caller to avoid specifying arguments +that rarely change, or to enable expanding the set of parameters while +maintaining backward compatibility with existing callers. +

                                    + + + + + +
                                    LevelObjective
                                    FoundationalDefine and use functions with default arguments
                                    Main
                                    Advancedrefinement of default arguments through multiple declarations
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.6.2 Motivation

                                    +

                                    Why is this important? Why do we want to learn/teach this +topic? +

                                    +

                                    Default arguments allow the omission of arguments with obvious or common +values. Also may be utilized to extend an existing function signature +without forcing changes to existing calling code. +

                                    +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.6.3 Topic introduction

                                    +

                                    Very brief introduction to the topic. +

                                    +

                                    Explain how default arguments work and how to define them. +

                                    +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.6.4.1 Background/Required Knowledge

                                    +

                                    A student is able to: +

                                    + + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.6.4.2 Student outcomes

                                    +

                                    A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                                    +

                                    A student should be able to: +

                                    +
                                      +
                                    1. Call to a function with a default argument with or without that argument +specified +
                                    2. Declare a function with a default argument, and omit the default in the +definition’s signature +
                                    3. Explain when the lifetime of a default argument begins and ends +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.6.4.3 Caveats

                                    +

                                    This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                                    +
                                      +
                                    • When no forward-declaration exists, the definition serves as the +declaration +
                                    • When multiple declarations exist, only one may specify the default for +any particular parameter, but multiple declarations may specify the +defaults for different parameters. +
                                    • Additional default values may be specified for other parameters in +repeat declarations +
                                    • Calling an overloaded function with fewer arguments may be ambiguous +with regard to an overload with default arguments +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.6.4.4 Points to cover

                                    +

                                    This section lists important details for each point. +

                                    +
                                      +
                                    • Default value may only be specified once for each parameter among all +declarations +
                                    • Default values must start from the rightmost parameter and continue +leftward without gaps +
                                    • Considerations of when to use default arguments vs overload set +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.6.5.2 Student outcomes

                                    +

                                    A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                                    +

                                    A student should be able to: +

                                    +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.6.5.3 Caveats

                                    +

                                    This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                                    +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.6.5.4 Points to cover

                                    +

                                    This section lists important details for each point. +

                                    +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.6.6 Advanced

                                    +

                                    These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

                                    +

                                    Subsequent redeclarations of the same function may add default argument +values, which are then usable by callers. Though a single parameter +cannot be given a default argument twice in the same translation unit, +it is legal, though ill-advised, to give the same function different +default arguments in different translation units. +

                                    +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.7.1 Overview

                                    +

                                    Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

                                    + + + + + +
                                    LevelObjectives
                                    FoundationalDefine and use requires-expressions to check satisfaction of +expressions by given parameters
                                    MainDefine and use requires-expressions to check properties of +expressions
                                    Advanced
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.7.2 Motivation

                                    +

                                    Why is this important? Why do we want to learn/teach this +topic? +

                                    +

                                    Requires-expressions allow a developer to perform compile-time +evaluation on the validity of other expressions. These are fundamental +to the ability to write concepts. +[Compile-time programming: +concepts] +

                                    +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.8 Topic introduction

                                    +

                                    Very brief introduction to the topic. +

                                    +

                                    Requires-expressions are compile-time predicates which evaluate to true +when their specified set of expressions are all valid for a given set of +inputs. +

                                    + + + + + + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.8.1.1 Background/Required Knowledge

                                    +

                                    A student is able to: +

                                    + + +

                                    It is helpful if: +

                                    +
                                      +
                                    • The student is aware that attempting to specialize the template with +types or values which do not match otherwise unstated assumptions will +cause errors within the template. +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.8.1.2 Student outcomes

                                    +

                                    A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                                    +

                                    A student should be able to: +

                                    +
                                      +
                                    1. Write a simple-requirement to assert the validity of an expression +
                                    2. Write a type-requirement to check the existence of a type by its +identifier +
                                    3. Write a compound-requirement to test the resulting type of an expression +
                                    4. Write a nested-requirement to test the constexpr value of an operation, +as opposed to just the syntactic validity +
                                    5. Use a requires-expression within a concept, requires-clause, or +if constexpr condition +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.8.1.3 Caveats

                                    +

                                    This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                                    +

                                    To require that expressions, which evaluate to a boolean value like +sizeof(t) == 4, evaluate to true a nested-requirement is +needed (e.g., requires sizeof(t) == 4;). Omitting the +requires results in a simple-requirement, which is satisfied +based purely on syntactic validity, not on the result of the operation. +

                                    +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.8.1.4 Points to cover

                                    +

                                    This section lists important details for each point. +

                                    +
                                      +
                                    • All requires-expression requirements terminate with a semicolon. +
                                    • simple-requirements are used to check that an expression is well-formed. +
                                    • nested-requirements are introduced with requires and primarily +used to check the result of an expression computable by the compiler, +including concepts or other requires-expressions. +
                                    • type-requirements are introduced with typename and used to verify +the existence of a type with a particular identifier. +
                                    • compound-requirements are enclosed in braces and can be used to check +the resulting type of an expression. +
                                    • Checks are performed by the compiler, not at run time. +
                                    • If covering usage of requires-expression with requires-clause, +[Compile-time +programming: requires clause] demonstrate requires requires and +show how to ever avoid writing it by using a concept. +[Compile-time programming: +concepts] +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.8.2.1 Background/Required Knowledge

                                    +
                                      +
                                    • All of the above. +
                                    • Knowledge of noexcept +
                                    + +

                                    A student is able to: +

                                    + + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.8.2.2 Student outcomes

                                    +

                                    A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                                    +

                                    A student should be able to: +

                                    +
                                      +
                                    1. Write compound-requirements which test the noexceptness of an +expression. +
                                    2. Use a concept as the target of a compound-requirement. +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.8.2.3 Caveats

                                    +

                                    This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                                    +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.8.2.4 Points to cover

                                    +

                                    This section lists important details for each point. +

                                    +
                                      +
                                    • Compound-requirements allow the optional ability to test whether an +expression is marked as noexcept, by using a trailing +noexcept keyword. +
                                    + +
                                    struct S
                                    +{
                                    +    void foo() noexcept {}
                                    +    void bar() {}
                                    +};
                                    +
                                    +static_assert(requires(S s) { { s.foo() } noexcept; } ); // Succeeds. s.foo() is noexcept
                                    +static_assert(requires(S s) { { s.bar() } noexcept; } ); // Fails. s.bar() is not noexcept
                                    +
                                    +
                                      +
                                    • If the return-type-requirement of a compound-requirement is a concept, +that concept is given the resulting type as the first parameter, +followed by the specified parameters in the compound-requirement. +{ ++x } -> C<int> would substitute +C<decltype((++x)), int> and check that concept C is satisfied for +those parameters. +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.8.3 Advanced

                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.9.1 Overview

                                    +

                                    Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

                                    + + + + + +
                                    LevelObjective
                                    FoundationalHandling error codes with std::error_code
                                    MainDesigning APIs around std::error_code
                                    Advanced
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.9.2 Motivation

                                    +

                                    Why is this important? Why do we want to learn/teach this +topic? +

                                    +

                                    C++ offers a type safe way of passing around errors, contrary to the +C-style of error handling, by this, we prevent bugs when passing error +codes. Furthermore, error handling with error codes is more commonly +used than exception handling, which only should be used in exceptional +situations and in some environments is not feasible at all, e.g., in +embedded or performance critical software. +

                                    +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.9.3 Topic introduction

                                    +

                                    Very brief introduction to the topic. +

                                    +

                                    C++ offers std::error_code, which encapsulates error codes in a +type safe way. This topic describes how to use these error codes. +

                                    +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.9.4.1 Background/Required Knowledge

                                    +

                                    A student: +

                                    + + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.9.4.2 Student outcomes

                                    +

                                    A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                                    +

                                    A student should be able to: +

                                    +
                                      +
                                    1. write code to handle errors with std::error_code, e.g., obtain +the message of the error code or check if an error occurred. +
                                    2. distinguish between the different categories and make justified +decisions when to use which +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.9.4.3 Caveats

                                    +

                                    This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                                    +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.9.4.4 Points to cover

                                    +

                                    This section lists important details for each point. +

                                    +
                                      +
                                    • a brief overview of std::error_code and how to use it +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.9.5.1 Background/Required Knowledge

                                    +
                                      +
                                    • should know how to use reference parameters as an output parameter +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.9.5.2 Student outcomes

                                    +

                                    A student should be able to: +

                                    +
                                      +
                                    1. create an error_code and design API that work with +std:error_code +
                                    2. write code that utilizes std::error_category +
                                    3. explain the difference between C-style error handling with errno and +std::error_code +
                                    4. make effective use of the interface of std::error_code +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.9.5.3 Caveats

                                    +
                                      +
                                    • reset errno before calling a function that might set errno (better pass +an input parameter std::error_code) +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.9.5.4 Points to cover

                                    +
                                      +
                                    • provide a full picture of std::error_code and it’s APIs +
                                    • std::error_category (explorative) +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.9.6 Advanced

                                    +

                                    These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

                                    +
                                      +
                                    • implementing your own error_category +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.9.7 Overview

                                    +

                                    Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

                                    + + + + + +
                                    LevelObjective
                                    FoundationalStandards exception hierarchy
                                    MainException guarantees
                                    Advanced
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.9.8 Motivation

                                    +

                                    Why is this important? Why do we want to learn/teach this +topic? +

                                    +

                                    Exception handling is used to be able to continue the program in case of +exceptional situations (like requesting a ridiculous amount of memory: +bad_alloc). +

                                    +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.9.9 Topic introduction

                                    +

                                    Very brief introduction to the topic. +

                                    +

                                    There are other forms of handling difficult situations, but here we +concentrate on exception handling and the peculiarities/characteristics +of it. Because there are different forms, we should know when to use +which type of handling special situations. +

                                    +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.9.10.1 Background/Required Knowledge

                                    +

                                    A student: +

                                    + + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.9.10.2 Student outcomes

                                    +

                                    A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                                    +

                                    A student should be able to: +

                                    +
                                      +
                                    1. Explain how some std:: calls may cause an exception +
                                    2. Discern the different standard exception types +
                                    3. Write simple try … except code (e.g., out of memory, vector at +indexing) +
                                    4. Explain on a “simplified” conceptual level what happens when an +exception is thrown and is bubbled up through the callers until it is +caught +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.9.10.3 Caveats

                                    +

                                    This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                                    +
                                      +
                                    • Exceptions should be used for exceptional situations and should not be +used to manage normal control flow. +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.9.10.4 Points to cover

                                    +

                                    This section lists important details for each point. +

                                    +
                                      +
                                    • Exception hierarchy from the standard library +
                                    • Common library functions that may throw exceptions +
                                    • Basic handling exceptions: try/catch/throw +
                                    • How exceptions bubble up until caught +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.9.11.1 Background/Required Knowledge

                                    +
                                      +
                                    • RAII +
                                    • Order of construction/destruction of class members +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.9.11.2 Student outcomes

                                    +

                                    A student should be able to: +

                                    +
                                      +
                                    1. Explain the four different exception guarantees +
                                    2. Explain the exception guarantees that the standard library containers +offer. +
                                    3. Explain what happens when a exception is thrown in constructor +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.9.11.3 Caveats

                                    +
                                      +
                                    • Make sure code is designed with RAII in mind to prevent resources +leaking during exception handling, when the stack is unwound. +
                                    • Care should be taken in constructor design to make all fully constructed +members deleted when the stack unwinding mechanism is activated. +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.9.11.4 Points to cover

                                    +
                                      +
                                    • Exception guarantees: Nothrow/Strong/Basic/No +
                                    • Rethrowing an exception +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.10.1 Overview

                                    +

                                    Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

                                    + + + + + +
                                    LevelObjective
                                    FoundationalCategories of errors
                                    MainHandling different categories of errors
                                    Advanced
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.10.2 Motivation

                                    +

                                    Why is this important? Why do we want to learn/teach this +topic? +

                                    +

                                    Programs can run in a normal state or erroneous state. Students should +be able to identify different types of erroneous state and how to best +handle them. +

                                    +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.10.3 Topic introduction

                                    +

                                    Very brief introduction to the topic. +

                                    +

                                    This topic is an umbrella topic that refers to the different topics for +types of errors and error handling. +

                                    +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.10.4.1 Background/Required Knowledge

                                    +

                                    A student: +

                                    + + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.10.4.2 Student outcomes

                                    +

                                    A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                                    +

                                    A student should be able to: +

                                    +
                                      +
                                    1. Describe different kinds of errors and exceptional situations that +require different approaches of error handling. +
                                    2. Provide some examples of the different error categories. +
                                    3. Identify potential erroneous code sections and attribute them to +different error categories. +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.10.4.3 Caveats

                                    +

                                    This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                                    +

                                    No caveats at present. +

                                    +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.10.4.4 Points to cover

                                    +

                                    This section lists important details for each point. +

                                    +

                                    Errors can happen at different times during software lifetime. +

                                    +
                                      +
                                    • Compile-time errors +
                                    • Link-time errors +
                                    • Execution-time errors +
                                    + +

                                    There are different types of errors +

                                    +
                                      +
                                    • Logic errors (violations of logical preconditions) +
                                    • Run-time errors (errors during code execution due to causes that are +external to the program) +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.10.5.1 Background/Required Knowledge

                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.10.5.2 Student outcomes

                                    +

                                    A student should be able to: +

                                    +
                                      +
                                    1. pick the right error handling approach for a given problem. +
                                    2. enumerate different error handling strategies. +
                                    3. make a clear distinction between error-handling code and normal-case +handling code +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.10.5.3 Caveats

                                    +
                                      +
                                    • The different error handling strategies have different trade-offs +(runtime performance, readability, …) +
                                    • The trade-off space depends on the run-time context (embedded, …) +
                                    • There also exist unhandleable errors (e.g., ODR violations, undefined +behavior) +
                                    + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.10.5.4 Points to cover

                                    + + +
                                    +

                                    +   [Contents]

                                    +
                                    +

                                    7.10.6 Advanced

                                    +

                                    These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

                                    + + + + + diff --git a/latest/index.html b/latest/index.html index 1cffdbf..7529a94 100644 --- a/latest/index.html +++ b/latest/index.html @@ -106,7 +106,7 @@

                                    Guidelines for Teaching C++

                                    -

                                    Version 0.0.18

                                    +

                                    Version 0.0.19

                                    SG20 (ISO C++ Study Group on Education)

                                    @@ -197,6 +197,28 @@

                                    Version 0.0.18

                                  • 7.8.2 Main: Advanced requirements
                                  • 7.8.3 Advanced
                                • +
                                • 7.9 Error handling: Error codes
                                • +
                                • 7.10 Error handling: Categories of errors
                              • 8 License
                              • 9 Contributors
                              • @@ -217,9 +239,9 @@

                                <

                                The most recent version of this document is available as an online HTML document at: https://cplusplus.github.io/SG20/latest/.

                                The version of the document that you are currently reading is available in the following formats:

                                  -
                                1. online (HTML) format as a single large HTML document: https://cplusplus.github.io/SG20/0.0.18/html

                                2. -
                                3. EPUB format: https://cplusplus.github.io/SG20/0.0.18/guidelines.epub

                                4. -
                                5. online (HTML) format, split across multiple HTML documents: https://cplusplus.github.io/SG20/0.0.18/html_split/ [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

                                6. +
                                7. online (HTML) format as a single large HTML document: https://cplusplus.github.io/SG20/0.0.19/html

                                8. +
                                9. EPUB format: https://cplusplus.github.io/SG20/0.0.19/guidelines.epub

                                10. +
                                11. online (HTML) format, split across multiple HTML documents: https://cplusplus.github.io/SG20/0.0.19/html_split/ [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

                                Older versions of this document are also available. In general version ver is available at https://cplusplus.github.io/SG20/ver/html. For example, version 0.1.0 (assuming that this version exists) would be available at https://cplusplus.github.io/SG20/0.1.0/html.

                                2 Context and Aim of This Guide

                                @@ -686,11 +708,11 @@

                                6.9 Error Handling

                                -[?] -Classes of Errors -? -? -? +[coe] +Categories of Errors +✔️ +✔️ +— [?] @@ -707,11 +729,11 @@

                                6.9 Error Handling

                                ? -[?] +[eh] Exception Handling -? -? -? +✔️ +✔️ +✔️ @@ -922,8 +944,8 @@

                                7.1.3 Top

                                Explains when and how objects are copied.

                                7.1.4 Foundational: How and when are copies made

                                7.1.4.1 Background/Required Knowledge

                                -

                                A student is able to: * explain what a C++ type is? [C++ object model: types] * explain what an object is? [C++ object model: objects], [C++ object model: constant objects] * define and understand class invariants?

                                -

                                It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain special member functions [C++ object model: special member functions]

                                +

                                A student is able to: * explain what a C++ type is? [C++ object model: types] * explain what an object is? [C++ object model: objects], [C++ object model: constant objects] * define and understand class invariants?

                                +

                                It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain special member functions [C++ object model: special member functions]

                                7.1.4.2 Student outcomes

                                A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                A student should be able to:

                                @@ -961,7 +983,7 @@

                                7.1.4.4 Poin

                                7.1.5 Main: Implementing user-defined copy operations

                                7.1.5.1 Background/Required Knowledge

                                A student is able to: * identify special member functions [C++ object model: special member functions]

                                -

                                It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain the rule of zero [C++ object model: rule-of-zero] * explain the rule of five [C++ object model: rule-of-five]

                                +

                                It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain the rule of zero [C++ object model: rule-of-zero] * explain the rule of five [C++ object model: rule-of-five]

                                7.1.5.2 Student outcomes

                                A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                A student should be able to: * explain when they have to implement the copy operations for their own type * Copy constructor * Copy assignment operator * implement copy operations for their own types * Optional: explain when copying with basic and strong exception guarantees is useful

                                @@ -1033,7 +1055,7 @@

                                7.2.4 Foundational

                                7.2.4.1 Background/Required Knowledge

                                A student:

                                7.2.4.2 Student outcomes

                                A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                @@ -1056,7 +1078,7 @@

                                7.2.5 Main: Definin

                                7.2.5.1 Background/Required Knowledge

                                7.2.5.2 Student outcomes

                                A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                @@ -1330,7 +1352,7 @@

                                7.5.3 T

                              7.5.4 Foundational: Using UDLs

                              7.5.4.1 Background/Required Knowledge

                              -

                              A student: * knows how to form numeric literals, e.g., 1.5f means a float of value 1.5. * is familiar with the major C++ types: * bool (Boolean type) * int (Integer type) * double (Floating-point type) * std::string (Text type) * std::vector (Collection type) * knows that namespaces exist, and namespace std. * knows what using-declarations and using-directives are. [C++ object model: declarations]

                              +

                              A student: * knows how to form numeric literals, e.g., 1.5f means a float of value 1.5. * is familiar with the major C++ types: * bool (Boolean type) * int (Integer type) * double (Floating-point type) * std::string (Text type) * std::vector (Collection type) * knows that namespaces exist, and namespace std. * knows what using-declarations and using-directives are. [C++ object model: declarations]

                              7.5.4.2 Student outcomes

                              A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                              A student should be able to:

                              @@ -1410,10 +1432,10 @@

                              7.6.4 Founda

                              7.6.4.1 Background/Required Knowledge

                              A student is able to:

                              7.6.4.2 Student outcomes

                              A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                              @@ -1485,7 +1507,7 @@

                              7.7.1 Overview

                              7.7.2 Motivation

                              Why is this important? Why do we want to learn/teach this topic?

                              -

                              Requires-expressions allow a developer to perform compile-time evaluation on the validity of other expressions. These are fundamental to the ability to write concepts. [Compile-time programming: concepts]

                              +

                              Requires-expressions allow a developer to perform compile-time evaluation on the validity of other expressions. These are fundamental to the ability to write concepts. [Compile-time programming: concepts]

                              7.8 Topic introduction

                              Very brief introduction to the topic.

                              Requires-expressions are compile-time predicates which evaluate to true when their specified set of expressions are all valid for a given set of inputs.

                              @@ -1493,7 +1515,7 @@

                              7.8.1 Foundat

                              7.8.1.1 Background/Required Knowledge

                              A student is able to:

                              It is helpful if:

                              @@ -1522,7 +1544,7 @@

                              7.8.1.4 P
                            • type-requirements are introduced with typename and used to verify the existence of a type with a particular identifier.
                            • compound-requirements are enclosed in braces and can be used to check the resulting type of an expression.
                            • Checks are performed by the compiler, not at run time.
                            • -
                            • If covering usage of requires-expression with requires-clause, [Compile-time programming: requires clause] demonstrate requires requires and show how to ever avoid writing it by using a concept. [Compile-time programming: concepts]
                            • +
                            • If covering usage of requires-expression with requires-clause, [Compile-time programming: requires clause] demonstrate requires requires and show how to ever avoid writing it by using a concept. [Compile-time programming: concepts]

                            7.8.2 Main: Advanced requirements

                            7.8.2.1 Background/Required Knowledge

                            @@ -1532,7 +1554,7 @@

                            7.8

                          A student is able to:

                          7.8.2.2 Student outcomes

                          A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                          @@ -1560,6 +1582,273 @@

                          7.8.2.4 P
                        • If the return-type-requirement of a compound-requirement is a concept, that concept is given the resulting type as the first parameter, followed by the specified parameters in the compound-requirement. { ++x } -> C<int> would substitute C<decltype((++x)), int> and check that concept C is satisfied for those parameters.

                        7.8.3 Advanced

                        +

                        7.9 Error handling: Error codes

                        +

                        Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                        +

                        7.9.1 Overview

                        +

                        Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                        + ++++ + + + + + + + + + + + + + + + + + + + + +
                        LevelObjective
                        FoundationalHandling error codes with std::error_code
                        MainDesigning APIs around std::error_code
                        Advanced
                        +

                        7.9.2 Motivation

                        +

                        Why is this important? Why do we want to learn/teach this topic?

                        +

                        C++ offers a type safe way of passing around errors, contrary to the C-style of error handling, by this, we prevent bugs when passing error codes. Furthermore, error handling with error codes is more commonly used than exception handling, which only should be used in exceptional situations and in some environments is not feasible at all, e.g., in embedded or performance critical software.

                        +

                        7.9.3 Topic introduction

                        +

                        Very brief introduction to the topic.

                        +

                        C++ offers std::error_code, which encapsulates error codes in a type safe way. This topic describes how to use these error codes.

                        +

                        7.9.4 Foundational: Handling error codes with std::error_code

                        +

                        7.9.4.1 Background/Required Knowledge

                        +

                        A student:

                        + +

                        7.9.4.2 Student outcomes

                        +

                        A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                        +

                        A student should be able to:

                        +
                          +
                        1. write code to handle errors with std::error_code, e.g., obtain the message of the error code or check if an error occurred.
                        2. +
                        3. distinguish between the different categories and make justified decisions when to use which
                        4. +
                        +

                        7.9.4.3 Caveats

                        +

                        This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                        +

                        7.9.4.4 Points to cover

                        +

                        This section lists important details for each point.

                        +
                          +
                        • a brief overview of std::error_code and how to use it
                        • +
                        +

                        7.9.5 Main: Designing APIs around std::error_code

                        +

                        7.9.5.1 Background/Required Knowledge

                        +
                          +
                        • should know how to use reference parameters as an output parameter
                        • +
                        +

                        7.9.5.2 Student outcomes

                        +

                        A student should be able to:

                        +
                          +
                        1. create an error_code and design API that work with std:error_code
                        2. +
                        3. write code that utilizes std::error_category
                        4. +
                        5. explain the difference between C-style error handling with errno and std::error_code
                        6. +
                        7. make effective use of the interface of std::error_code
                        8. +
                        +

                        7.9.5.3 Caveats

                        +
                          +
                        • reset errno before calling a function that might set errno (better pass an input parameter std::error_code)
                        • +
                        +

                        7.9.5.4 Points to cover

                        +
                          +
                        • provide a full picture of std::error_code and it’s APIs
                        • +
                        • std::error_category (explorative)
                        • +
                        +

                        7.9.6 Advanced

                        +

                        These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                        +
                          +
                        • implementing your own error_category
                        • +
                        +

                        7.9.7 Overview

                        +

                        Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                        + ++++ + + + + + + + + + + + + + + + + + + + + +
                        LevelObjective
                        FoundationalStandards exception hierarchy
                        MainException guarantees
                        Advanced
                        +

                        7.9.8 Motivation

                        +

                        Why is this important? Why do we want to learn/teach this topic?

                        +

                        Exception handling is used to be able to continue the program in case of exceptional situations (like requesting a ridiculous amount of memory: bad_alloc).

                        +

                        7.9.9 Topic introduction

                        +

                        Very brief introduction to the topic.

                        +

                        There are other forms of handling difficult situations, but here we concentrate on exception handling and the peculiarities/characteristics of it. Because there are different forms, we should know when to use which type of handling special situations.

                        +

                        7.9.10 Foundational: Standards exception hierarchy

                        +

                        7.9.10.1 Background/Required Knowledge

                        +

                        A student:

                        + +

                        7.9.10.2 Student outcomes

                        +

                        A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                        +

                        A student should be able to:

                        +
                          +
                        1. Explain how some std:: calls may cause an exception
                        2. +
                        3. Discern the different standard exception types
                        4. +
                        5. Write simple try … except code (e.g., out of memory, vector at indexing)
                        6. +
                        7. Explain on a “simplified” conceptual level what happens when an exception is thrown and is bubbled up through the callers until it is caught
                        8. +
                        +

                        7.9.10.3 Caveats

                        +

                        This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                        +
                          +
                        • Exceptions should be used for exceptional situations and should not be used to manage normal control flow.
                        • +
                        +

                        7.9.10.4 Points to cover

                        +

                        This section lists important details for each point.

                        +
                          +
                        • Exception hierarchy from the standard library
                        • +
                        • Common library functions that may throw exceptions
                        • +
                        • Basic handling exceptions: try/catch/throw
                        • +
                        • How exceptions bubble up until caught
                        • +
                        +

                        7.9.11 Main: Exception guarantees

                        +

                        7.9.11.1 Background/Required Knowledge

                        +
                          +
                        • RAII
                        • +
                        • Order of construction/destruction of class members
                        • +
                        +

                        7.9.11.2 Student outcomes

                        +

                        A student should be able to:

                        +
                          +
                        1. Explain the four different exception guarantees
                        2. +
                        3. Explain the exception guarantees that the standard library containers offer.
                        4. +
                        5. Explain what happens when a exception is thrown in constructor
                        6. +
                        +

                        7.9.11.3 Caveats

                        +
                          +
                        • Make sure code is designed with RAII in mind to prevent resources leaking during exception handling, when the stack is unwound.
                        • +
                        • Care should be taken in constructor design to make all fully constructed members deleted when the stack unwinding mechanism is activated.
                        • +
                        +

                        7.9.11.4 Points to cover

                        +
                          +
                        • Exception guarantees: Nothrow/Strong/Basic/No
                        • +
                        • Rethrowing an exception
                        • +
                        +

                        7.9.12 Advanced: Exception-safe containers and edge cases

                        +

                        These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                        +
                          +
                        • Rethrowing a modified exception
                        • +
                        • Writing exception safe containers
                        • +
                        +

                        7.10 Error handling: Categories of errors

                        +

                        Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                        +

                        7.10.1 Overview

                        +

                        Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                        + ++++ + + + + + + + + + + + + + + + + + + + + +
                        LevelObjective
                        FoundationalCategories of errors
                        MainHandling different categories of errors
                        Advanced
                        +

                        7.10.2 Motivation

                        +

                        Why is this important? Why do we want to learn/teach this topic?

                        +

                        Programs can run in a normal state or erroneous state. Students should be able to identify different types of erroneous state and how to best handle them.

                        +

                        7.10.3 Topic introduction

                        +

                        Very brief introduction to the topic.

                        +

                        This topic is an umbrella topic that refers to the different topics for types of errors and error handling.

                        +

                        7.10.4 Foundational: Categories of errors

                        +

                        7.10.4.1 Background/Required Knowledge

                        +

                        A student:

                        + +

                        7.10.4.2 Student outcomes

                        +

                        A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                        +

                        A student should be able to:

                        +
                          +
                        1. Describe different kinds of errors and exceptional situations that require different approaches of error handling.
                        2. +
                        3. Provide some examples of the different error categories.
                        4. +
                        5. Identify potential erroneous code sections and attribute them to different error categories.
                        6. +
                        +

                        7.10.4.3 Caveats

                        +

                        This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                        +

                        No caveats at present.

                        +

                        7.10.4.4 Points to cover

                        +

                        This section lists important details for each point.

                        +

                        Errors can happen at different times during software lifetime.

                        +
                          +
                        • Compile-time errors
                        • +
                        • Link-time errors
                        • +
                        • Execution-time errors
                        • +
                        +

                        There are different types of errors

                        +
                          +
                        • Logic errors (violations of logical preconditions)
                        • +
                        • Run-time errors (errors during code execution due to causes that are external to the program)
                        • +
                        +

                        7.10.5 Main: Handling different categories of errors

                        +

                        7.10.5.1 Background/Required Knowledge

                        +

                        7.10.5.2 Student outcomes

                        +

                        A student should be able to:

                        +
                          +
                        1. pick the right error handling approach for a given problem.
                        2. +
                        3. enumerate different error handling strategies.
                        4. +
                        5. make a clear distinction between error-handling code and normal-case handling code
                        6. +
                        +

                        7.10.5.3 Caveats

                        +
                          +
                        • The different error handling strategies have different trade-offs (runtime performance, readability, …)
                        • +
                        • The trade-off space depends on the run-time context (embedded, …)
                        • +
                        • There also exist unhandleable errors (e.g., ODR violations, undefined behavior)
                        • +
                        +

                        7.10.5.4 Points to cover

                        + +

                        7.10.6 Advanced

                        +

                        These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                        8 License

                        [NOTE: This license is copied verbatim from the C++ Core Guidelines.]

                        Copyright (c) Standard C++ Foundation and its contributors
                        
                        From a72b44e4fa2ba345bf0090f6c334d2e76d34d7ac Mon Sep 17 00:00:00 2001
                        From: vulder 
                        Date: Thu, 8 Jun 2023 11:41:28 +0000
                        Subject: [PATCH 20/21] deploy: ce762bbbf7cbc4db2ac67aafb2a88c052788743d
                        
                        ---
                         PR_0.0.20/guidelines.epub                     |  Bin 0 -> 39907 bytes
                         PR_0.0.20/html/images/cpp_logo.png            |  Bin 0 -> 23613 bytes
                         PR_0.0.20/html/index.html                     | 2156 ++++++++++++++++
                         ...on_002dsafe-containers-and-edge-cases.html |   65 +
                         ...anced-Special-cases-and-peculiarities.html |   65 +
                         PR_0.0.20/html_split/Advanced.html            |   64 +
                         .../Background_002fRequired-Knowledge.html    |   63 +
                         .../Background_002fRequired-knowledge.html    |   58 +
                         ...ments-and-Control_002dFlow-Constructs.html |   66 +
                         PR_0.0.20/html_split/Building.html            |   62 +
                         ...C_002b_002b-object-model-Declarations.html |   69 +
                         .../C_002b_002b-object-model-Definitions.html |   69 +
                         ...002b_002b-object-model-copy-semantics.html |   67 +
                         PR_0.0.20/html_split/Caveats.html             |   60 +
                         PR_0.0.20/html_split/Compilation-Model.html   |   66 +
                         .../Compile_002dTime-Computation.html         |   62 +
                         .../Context-and-Aim-of-This-Guide.html        |   81 +
                         .../Contributing-to-This-Document.html        |   60 +
                         PR_0.0.20/html_split/Contributors.html        |   62 +
                         ...ed-Information-for-Modules-and-Topics.html |   64 +
                         PR_0.0.20/html_split/Error-Handling.html      |   64 +
                         .../Error-handling-Categories-of-errors.html  |   68 +
                         .../Error-handling-Error-codes.html           |   73 +
                         .../External-ie-Non-Standard-Libraries.html   |   61 +
                         ...005fassert-with-a-constant-expression.html |   65 +
                         .../Foundational-Categories-of-errors.html    |   64 +
                         .../Foundational-Declaring-variables.html     |   64 +
                         ...undational-Defining-variables-and-ODR.html |   64 +
                         ...ng-error-codes-with-stderror_005fcode.html |   65 +
                         ...dational-How-and-when-are-copies-made.html |   64 +
                         ...ational-Standards-exception-hierarchy.html |   64 +
                         .../html_split/Foundational-Using-UDLs.html   |   64 +
                         ...ning-functions-with-default-arguments.html |   65 +
                         ...Using-reference-types-to-avoid-copies.html |   64 +
                         ...onal-Writing-requires_002dexpressions.html |   63 +
                         .../Functions-default-argument.html           |   68 +
                         .../Functions-user_002ddefined-literals.html  |   68 +
                         PR_0.0.20/html_split/Functions.html           |   66 +
                         .../Generic-Programming-Templates.html        |   66 +
                         PR_0.0.20/html_split/Glossary.html            |   63 +
                         PR_0.0.20/html_split/How-To-Contribute.html   |   94 +
                         .../Inheritance-and-Class-Hierarchies.html    |   62 +
                         PR_0.0.20/html_split/License.html             |  105 +
                         .../Main-Advanced-requirements.html           |   63 +
                         .../Main-Contracts-and-static_005fassert.html |   64 +
                         .../Main-Declarations-for-programs.html       |   64 +
                         .../Main-Defining-for-programs.html           |   65 +
                         ...signing-APIs-around-stderror_005fcode.html |   64 +
                         .../html_split/Main-Exception-guarantees.html |   65 +
                         ...ndling-different-categories-of-errors.html |   64 +
                         ...ting-user_002ddefined-copy-operations.html |   64 +
                         ...ng-references-to-modify-external-data.html |   64 +
                         .../html_split/Main-implementing-UDLs.html    |   63 +
                         .../html_split/Main-implementing-_002a.html   |   64 +
                         ..._002derror-handling-static_005fassert.html |   68 +
                         ...-name-Passing-Parameters-by-Reference.html |   75 +
                         ...dule-name-Passing-Parameters-by-Value.html |   69 +
                         .../Module-name-Requires-Expressions.html     |   63 +
                         PR_0.0.20/html_split/Motivation.html          |   66 +
                         ...-Recent-Version-and-Alternate-Formats.html |   83 +
                         .../Organization-of-This-Document.html        |  100 +
                         PR_0.0.20/html_split/Overview.html            |   65 +
                         PR_0.0.20/html_split/Points-to-cover.html     |   61 +
                         PR_0.0.20/html_split/Preprocessor.html        |   63 +
                         .../References-on-Learning-Outcomes.html      |   75 +
                         PR_0.0.20/html_split/References.html          |   61 +
                         PR_0.0.20/html_split/Software-Design.html     |   60 +
                         PR_0.0.20/html_split/Standard-Library.html    |   62 +
                         PR_0.0.20/html_split/Student-outcomes.html    |   69 +
                         .../Summary-of-Modules-and-Topics.html        |   85 +
                         .../html_split/Testing-and-Debugging.html     |   64 +
                         PR_0.0.20/html_split/Tooling.html             |   62 +
                         PR_0.0.20/html_split/Topic-introduction.html  |   61 +
                         .../html_split/Use-of-This-Document.html      |   63 +
                         .../User_002dDefined-Types-Classes.html       |   74 +
                         ...ed-to-C_002b_002b-Teaching-Guidelines.html |   74 +
                         PR_0.0.20/html_split/_0023B.html              |   42 +
                         PR_0.0.20/html_split/_0023BLD.html            |   42 +
                         PR_0.0.20/html_split/_0023C.html              |   42 +
                         PR_0.0.20/html_split/_0023CM.html             |   42 +
                         PR_0.0.20/html_split/_0023CT.html             |   42 +
                         PR_0.0.20/html_split/_0023EH.html             |   42 +
                         PR_0.0.20/html_split/_0023EL.html             |   42 +
                         PR_0.0.20/html_split/_0023F.html              |   42 +
                         PR_0.0.20/html_split/_0023I.html              |   42 +
                         PR_0.0.20/html_split/_0023P.html              |   42 +
                         PR_0.0.20/html_split/_0023SD.html             |   42 +
                         PR_0.0.20/html_split/_0023SL.html             |   42 +
                         PR_0.0.20/html_split/_0023T.html              |   42 +
                         PR_0.0.20/html_split/_0023TD.html             |   42 +
                         PR_0.0.20/html_split/_0023TOOL.html           |   42 +
                         PR_0.0.20/html_split/_0023advanced.html       |   42 +
                         PR_0.0.20/html_split/_0023advanced_002d1.html |   42 +
                         PR_0.0.20/html_split/_0023advanced_002d2.html |   42 +
                         PR_0.0.20/html_split/_0023advanced_002d3.html |   42 +
                         ..._0023backgroundrequired_002dknowledge.html |   42 +
                         ...ackgroundrequired_002dknowledge_002d1.html |   42 +
                         ...ckgroundrequired_002dknowledge_002d10.html |   42 +
                         ...ckgroundrequired_002dknowledge_002d11.html |   42 +
                         ...ckgroundrequired_002dknowledge_002d12.html |   42 +
                         ...ckgroundrequired_002dknowledge_002d13.html |   42 +
                         ...ckgroundrequired_002dknowledge_002d14.html |   42 +
                         ...ckgroundrequired_002dknowledge_002d15.html |   42 +
                         ...ckgroundrequired_002dknowledge_002d16.html |   42 +
                         ...ckgroundrequired_002dknowledge_002d17.html |   42 +
                         ...ckgroundrequired_002dknowledge_002d18.html |   42 +
                         ...ckgroundrequired_002dknowledge_002d19.html |   42 +
                         ...ackgroundrequired_002dknowledge_002d2.html |   42 +
                         ...ckgroundrequired_002dknowledge_002d20.html |   42 +
                         ...ckgroundrequired_002dknowledge_002d21.html |   42 +
                         ...ckgroundrequired_002dknowledge_002d22.html |   42 +
                         ...ckgroundrequired_002dknowledge_002d23.html |   42 +
                         ...ackgroundrequired_002dknowledge_002d3.html |   42 +
                         ...ackgroundrequired_002dknowledge_002d4.html |   42 +
                         ...ackgroundrequired_002dknowledge_002d5.html |   42 +
                         ...ackgroundrequired_002dknowledge_002d6.html |   42 +
                         ...ackgroundrequired_002dknowledge_002d7.html |   42 +
                         ...ackgroundrequired_002dknowledge_002d8.html |   42 +
                         ...ackgroundrequired_002dknowledge_002d9.html |   42 +
                         ...002dobject_002dmodel_002ddeclarations.html |   42 +
                         PR_0.0.20/html_split/_0023caveats.html        |   42 +
                         PR_0.0.20/html_split/_0023caveats_002d1.html  |   42 +
                         PR_0.0.20/html_split/_0023caveats_002d10.html |   42 +
                         PR_0.0.20/html_split/_0023caveats_002d11.html |   42 +
                         PR_0.0.20/html_split/_0023caveats_002d12.html |   42 +
                         PR_0.0.20/html_split/_0023caveats_002d13.html |   42 +
                         PR_0.0.20/html_split/_0023caveats_002d14.html |   42 +
                         PR_0.0.20/html_split/_0023caveats_002d15.html |   42 +
                         PR_0.0.20/html_split/_0023caveats_002d16.html |   42 +
                         PR_0.0.20/html_split/_0023caveats_002d17.html |   42 +
                         PR_0.0.20/html_split/_0023caveats_002d18.html |   42 +
                         PR_0.0.20/html_split/_0023caveats_002d19.html |   42 +
                         PR_0.0.20/html_split/_0023caveats_002d2.html  |   42 +
                         PR_0.0.20/html_split/_0023caveats_002d20.html |   42 +
                         PR_0.0.20/html_split/_0023caveats_002d21.html |   42 +
                         PR_0.0.20/html_split/_0023caveats_002d22.html |   42 +
                         PR_0.0.20/html_split/_0023caveats_002d23.html |   42 +
                         PR_0.0.20/html_split/_0023caveats_002d3.html  |   42 +
                         PR_0.0.20/html_split/_0023caveats_002d4.html  |   42 +
                         PR_0.0.20/html_split/_0023caveats_002d5.html  |   42 +
                         PR_0.0.20/html_split/_0023caveats_002d6.html  |   42 +
                         PR_0.0.20/html_split/_0023caveats_002d7.html  |   42 +
                         PR_0.0.20/html_split/_0023caveats_002d8.html  |   42 +
                         PR_0.0.20/html_split/_0023caveats_002d9.html  |   42 +
                         .../html_split/_0023coe_002dadvanced.html     |   42 +
                         PR_0.0.20/html_split/_0023coe_002dfound.html  |   42 +
                         PR_0.0.20/html_split/_0023coe_002dmain.html   |   42 +
                         ...and_002daim_002dof_002dthis_002dguide.html |   42 +
                         PR_0.0.20/html_split/_0023contributing.html   |   42 +
                         ...ributing_002dto_002dthis_002ddocument.html |   42 +
                         PR_0.0.20/html_split/_0023contributors.html   |   42 +
                         PR_0.0.20/html_split/_0023copy.html           |   42 +
                         .../html_split/_0023copy_002dadvanced.html    |   42 +
                         PR_0.0.20/html_split/_0023copy_002dbasic.html |   42 +
                         PR_0.0.20/html_split/_0023copy_002dmain.html  |   42 +
                         PR_0.0.20/html_split/_0023def.html            |   42 +
                         .../html_split/_0023def_002dadvanced.html     |   42 +
                         PR_0.0.20/html_split/_0023def_002dfound.html  |   42 +
                         PR_0.0.20/html_split/_0023def_002dmain.html   |   42 +
                         ...02dfor_002dmodules_002dand_002dtopics.html |   42 +
                         PR_0.0.20/html_split/_0023ecodes.html         |   42 +
                         .../html_split/_0023eh_002dadvanced.html      |   42 +
                         PR_0.0.20/html_split/_0023eh_002dfound.html   |   42 +
                         PR_0.0.20/html_split/_0023eh_002dmain.html    |   42 +
                         ...ling_002dcategories_002dof_002derrors.html |   42 +
                         ...ndational_002ddeclaring_002dvariables.html |   42 +
                         ...002dtypes_002dto_002davoid_002dcopies.html |   42 +
                         ...pes_002dto_002davoid_002dcopies_002d1.html |   42 +
                         PR_0.0.20/html_split/_0023func_002dargs.html  |   42 +
                         .../_0023func_002dargs_002dadvanced.html      |   42 +
                         .../_0023func_002dargs_002dbasic.html         |   42 +
                         .../_0023func_002dargs_002dmain.html          |   42 +
                         PR_0.0.20/html_split/_0023glossary.html       |   42 +
                         PR_0.0.20/html_split/_0023license.html        |   42 +
                         ...002ddeclarations_002dfor_002dprograms.html |   42 +
                         ...2dto_002dmodify_002dexternal_002ddata.html |   42 +
                         ...02dmodify_002dexternal_002ddata_002d1.html |   42 +
                         ...g_002dparameters_002dby_002dreference.html |   42 +
                         ...ssing_002dparameters_002dby_002dvalue.html |   42 +
                         PR_0.0.20/html_split/_0023motivation.html     |   42 +
                         .../html_split/_0023motivation_002d1.html     |   42 +
                         .../html_split/_0023motivation_002d10.html    |   42 +
                         .../html_split/_0023motivation_002d11.html    |   42 +
                         .../html_split/_0023motivation_002d2.html     |   42 +
                         .../html_split/_0023motivation_002d3.html     |   42 +
                         .../html_split/_0023motivation_002d4.html     |   42 +
                         .../html_split/_0023motivation_002d5.html     |   42 +
                         .../html_split/_0023motivation_002d6.html     |   42 +
                         .../html_split/_0023motivation_002d7.html     |   42 +
                         .../html_split/_0023motivation_002d8.html     |   42 +
                         .../html_split/_0023motivation_002d9.html     |   42 +
                         ...ion_002dand_002dalternate_002dformats.html |   42 +
                         ...nization_002dof_002dthis_002ddocument.html |   42 +
                         PR_0.0.20/html_split/_0023overview.html       |   42 +
                         PR_0.0.20/html_split/_0023overview_002d1.html |   42 +
                         .../html_split/_0023overview_002d10.html      |   42 +
                         .../html_split/_0023overview_002d11.html      |   42 +
                         PR_0.0.20/html_split/_0023overview_002d2.html |   42 +
                         PR_0.0.20/html_split/_0023overview_002d3.html |   42 +
                         PR_0.0.20/html_split/_0023overview_002d4.html |   42 +
                         PR_0.0.20/html_split/_0023overview_002d5.html |   42 +
                         PR_0.0.20/html_split/_0023overview_002d6.html |   42 +
                         PR_0.0.20/html_split/_0023overview_002d7.html |   42 +
                         PR_0.0.20/html_split/_0023overview_002d8.html |   42 +
                         PR_0.0.20/html_split/_0023overview_002d9.html |   42 +
                         .../_0023points_002dto_002dcover.html         |   42 +
                         .../_0023points_002dto_002dcover_002d1.html   |   42 +
                         .../_0023points_002dto_002dcover_002d10.html  |   42 +
                         .../_0023points_002dto_002dcover_002d11.html  |   42 +
                         .../_0023points_002dto_002dcover_002d12.html  |   42 +
                         .../_0023points_002dto_002dcover_002d13.html  |   42 +
                         .../_0023points_002dto_002dcover_002d14.html  |   42 +
                         .../_0023points_002dto_002dcover_002d15.html  |   42 +
                         .../_0023points_002dto_002dcover_002d16.html  |   42 +
                         .../_0023points_002dto_002dcover_002d17.html  |   42 +
                         .../_0023points_002dto_002dcover_002d18.html  |   42 +
                         .../_0023points_002dto_002dcover_002d19.html  |   42 +
                         .../_0023points_002dto_002dcover_002d2.html   |   42 +
                         .../_0023points_002dto_002dcover_002d20.html  |   42 +
                         .../_0023points_002dto_002dcover_002d21.html  |   42 +
                         .../_0023points_002dto_002dcover_002d22.html  |   42 +
                         .../_0023points_002dto_002dcover_002d3.html   |   42 +
                         .../_0023points_002dto_002dcover_002d4.html   |   42 +
                         .../_0023points_002dto_002dcover_002d5.html   |   42 +
                         .../_0023points_002dto_002dcover_002d6.html   |   42 +
                         .../_0023points_002dto_002dcover_002d7.html   |   42 +
                         .../_0023points_002dto_002dcover_002d8.html   |   42 +
                         .../_0023points_002dto_002dcover_002d9.html   |   42 +
                         PR_0.0.20/html_split/_0023references.html     |   42 +
                         ...nces_002don_002dlearning_002doutcomes.html |   42 +
                         PR_0.0.20/html_split/_0023req_002dexpr.html   |   42 +
                         .../_0023req_002dexpr_002dadvanced.html       |   42 +
                         .../_0023req_002dexpr_002dbasic.html          |   42 +
                         .../_0023req_002dexpr_002dmain.html           |   42 +
                         .../html_split/_0023static_002dassert.html    |   42 +
                         .../_0023static_002dassert_002dadvanced.html  |   42 +
                         .../_0023static_002dassert_002dbasic.html     |   42 +
                         .../_0023static_002dassert_002dmain.html      |   42 +
                         .../html_split/_0023student_002doutcomes.html |   42 +
                         .../_0023student_002doutcomes_002d1.html      |   42 +
                         .../_0023student_002doutcomes_002d10.html     |   42 +
                         .../_0023student_002doutcomes_002d11.html     |   42 +
                         .../_0023student_002doutcomes_002d12.html     |   42 +
                         .../_0023student_002doutcomes_002d13.html     |   42 +
                         .../_0023student_002doutcomes_002d14.html     |   42 +
                         .../_0023student_002doutcomes_002d15.html     |   42 +
                         .../_0023student_002doutcomes_002d16.html     |   42 +
                         .../_0023student_002doutcomes_002d17.html     |   42 +
                         .../_0023student_002doutcomes_002d18.html     |   42 +
                         .../_0023student_002doutcomes_002d19.html     |   42 +
                         .../_0023student_002doutcomes_002d2.html      |   42 +
                         .../_0023student_002doutcomes_002d20.html     |   42 +
                         .../_0023student_002doutcomes_002d21.html     |   42 +
                         .../_0023student_002doutcomes_002d22.html     |   42 +
                         .../_0023student_002doutcomes_002d23.html     |   42 +
                         .../_0023student_002doutcomes_002d3.html      |   42 +
                         .../_0023student_002doutcomes_002d4.html      |   42 +
                         .../_0023student_002doutcomes_002d5.html      |   42 +
                         .../_0023student_002doutcomes_002d6.html      |   42 +
                         .../_0023student_002doutcomes_002d7.html      |   42 +
                         .../_0023student_002doutcomes_002d8.html      |   42 +
                         .../_0023student_002doutcomes_002d9.html      |   42 +
                         ...002dof_002dmodules_002dand_002dtopics.html |   42 +
                         .../_0023topic_002dintroduction.html          |   42 +
                         .../_0023topic_002dintroduction_002d1.html    |   42 +
                         .../_0023topic_002dintroduction_002d10.html   |   42 +
                         .../_0023topic_002dintroduction_002d11.html   |   42 +
                         .../_0023topic_002dintroduction_002d2.html    |   42 +
                         .../_0023topic_002dintroduction_002d3.html    |   42 +
                         .../_0023topic_002dintroduction_002d4.html    |   42 +
                         .../_0023topic_002dintroduction_002d5.html    |   42 +
                         .../_0023topic_002dintroduction_002d6.html    |   42 +
                         .../_0023topic_002dintroduction_002d7.html    |   42 +
                         .../_0023topic_002dintroduction_002d8.html    |   42 +
                         .../_0023topic_002dintroduction_002d9.html    |   42 +
                         PR_0.0.20/html_split/_0023udl.html            |   42 +
                         PR_0.0.20/html_split/_0023udl_002dbasic.html  |   42 +
                         PR_0.0.20/html_split/_0023udl_002dmain.html   |   42 +
                         ..._0023use_002dof_002dthis_002ddocument.html |   42 +
                         ...dto_002dc_002dteaching_002dguidelines.html |   42 +
                         PR_0.0.20/html_split/index.html               |  357 +++
                         PR_0.0.20/html_split/unknown_node.html        | 2265 +++++++++++++++++
                         latest/index.html                             | 1493 ++++++-----
                         283 files changed, 19094 insertions(+), 639 deletions(-)
                         create mode 100644 PR_0.0.20/guidelines.epub
                         create mode 100644 PR_0.0.20/html/images/cpp_logo.png
                         create mode 100644 PR_0.0.20/html/index.html
                         create mode 100644 PR_0.0.20/html_split/Advanced-Exception_002dsafe-containers-and-edge-cases.html
                         create mode 100644 PR_0.0.20/html_split/Advanced-Special-cases-and-peculiarities.html
                         create mode 100644 PR_0.0.20/html_split/Advanced.html
                         create mode 100644 PR_0.0.20/html_split/Background_002fRequired-Knowledge.html
                         create mode 100644 PR_0.0.20/html_split/Background_002fRequired-knowledge.html
                         create mode 100644 PR_0.0.20/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html
                         create mode 100644 PR_0.0.20/html_split/Building.html
                         create mode 100644 PR_0.0.20/html_split/C_002b_002b-object-model-Declarations.html
                         create mode 100644 PR_0.0.20/html_split/C_002b_002b-object-model-Definitions.html
                         create mode 100644 PR_0.0.20/html_split/C_002b_002b-object-model-copy-semantics.html
                         create mode 100644 PR_0.0.20/html_split/Caveats.html
                         create mode 100644 PR_0.0.20/html_split/Compilation-Model.html
                         create mode 100644 PR_0.0.20/html_split/Compile_002dTime-Computation.html
                         create mode 100644 PR_0.0.20/html_split/Context-and-Aim-of-This-Guide.html
                         create mode 100644 PR_0.0.20/html_split/Contributing-to-This-Document.html
                         create mode 100644 PR_0.0.20/html_split/Contributors.html
                         create mode 100644 PR_0.0.20/html_split/Detailed-Information-for-Modules-and-Topics.html
                         create mode 100644 PR_0.0.20/html_split/Error-Handling.html
                         create mode 100644 PR_0.0.20/html_split/Error-handling-Categories-of-errors.html
                         create mode 100644 PR_0.0.20/html_split/Error-handling-Error-codes.html
                         create mode 100644 PR_0.0.20/html_split/External-ie-Non-Standard-Libraries.html
                         create mode 100644 PR_0.0.20/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html
                         create mode 100644 PR_0.0.20/html_split/Foundational-Categories-of-errors.html
                         create mode 100644 PR_0.0.20/html_split/Foundational-Declaring-variables.html
                         create mode 100644 PR_0.0.20/html_split/Foundational-Defining-variables-and-ODR.html
                         create mode 100644 PR_0.0.20/html_split/Foundational-Handling-error-codes-with-stderror_005fcode.html
                         create mode 100644 PR_0.0.20/html_split/Foundational-How-and-when-are-copies-made.html
                         create mode 100644 PR_0.0.20/html_split/Foundational-Standards-exception-hierarchy.html
                         create mode 100644 PR_0.0.20/html_split/Foundational-Using-UDLs.html
                         create mode 100644 PR_0.0.20/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html
                         create mode 100644 PR_0.0.20/html_split/Foundational-Using-reference-types-to-avoid-copies.html
                         create mode 100644 PR_0.0.20/html_split/Foundational-Writing-requires_002dexpressions.html
                         create mode 100644 PR_0.0.20/html_split/Functions-default-argument.html
                         create mode 100644 PR_0.0.20/html_split/Functions-user_002ddefined-literals.html
                         create mode 100644 PR_0.0.20/html_split/Functions.html
                         create mode 100644 PR_0.0.20/html_split/Generic-Programming-Templates.html
                         create mode 100644 PR_0.0.20/html_split/Glossary.html
                         create mode 100644 PR_0.0.20/html_split/How-To-Contribute.html
                         create mode 100644 PR_0.0.20/html_split/Inheritance-and-Class-Hierarchies.html
                         create mode 100644 PR_0.0.20/html_split/License.html
                         create mode 100644 PR_0.0.20/html_split/Main-Advanced-requirements.html
                         create mode 100644 PR_0.0.20/html_split/Main-Contracts-and-static_005fassert.html
                         create mode 100644 PR_0.0.20/html_split/Main-Declarations-for-programs.html
                         create mode 100644 PR_0.0.20/html_split/Main-Defining-for-programs.html
                         create mode 100644 PR_0.0.20/html_split/Main-Designing-APIs-around-stderror_005fcode.html
                         create mode 100644 PR_0.0.20/html_split/Main-Exception-guarantees.html
                         create mode 100644 PR_0.0.20/html_split/Main-Handling-different-categories-of-errors.html
                         create mode 100644 PR_0.0.20/html_split/Main-Implementing-user_002ddefined-copy-operations.html
                         create mode 100644 PR_0.0.20/html_split/Main-Using-references-to-modify-external-data.html
                         create mode 100644 PR_0.0.20/html_split/Main-implementing-UDLs.html
                         create mode 100644 PR_0.0.20/html_split/Main-implementing-_002a.html
                         create mode 100644 PR_0.0.20/html_split/Meta_002derror-handling-static_005fassert.html
                         create mode 100644 PR_0.0.20/html_split/Module-name-Passing-Parameters-by-Reference.html
                         create mode 100644 PR_0.0.20/html_split/Module-name-Passing-Parameters-by-Value.html
                         create mode 100644 PR_0.0.20/html_split/Module-name-Requires-Expressions.html
                         create mode 100644 PR_0.0.20/html_split/Motivation.html
                         create mode 100644 PR_0.0.20/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html
                         create mode 100644 PR_0.0.20/html_split/Organization-of-This-Document.html
                         create mode 100644 PR_0.0.20/html_split/Overview.html
                         create mode 100644 PR_0.0.20/html_split/Points-to-cover.html
                         create mode 100644 PR_0.0.20/html_split/Preprocessor.html
                         create mode 100644 PR_0.0.20/html_split/References-on-Learning-Outcomes.html
                         create mode 100644 PR_0.0.20/html_split/References.html
                         create mode 100644 PR_0.0.20/html_split/Software-Design.html
                         create mode 100644 PR_0.0.20/html_split/Standard-Library.html
                         create mode 100644 PR_0.0.20/html_split/Student-outcomes.html
                         create mode 100644 PR_0.0.20/html_split/Summary-of-Modules-and-Topics.html
                         create mode 100644 PR_0.0.20/html_split/Testing-and-Debugging.html
                         create mode 100644 PR_0.0.20/html_split/Tooling.html
                         create mode 100644 PR_0.0.20/html_split/Topic-introduction.html
                         create mode 100644 PR_0.0.20/html_split/Use-of-This-Document.html
                         create mode 100644 PR_0.0.20/html_split/User_002dDefined-Types-Classes.html
                         create mode 100644 PR_0.0.20/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html
                         create mode 100644 PR_0.0.20/html_split/_0023B.html
                         create mode 100644 PR_0.0.20/html_split/_0023BLD.html
                         create mode 100644 PR_0.0.20/html_split/_0023C.html
                         create mode 100644 PR_0.0.20/html_split/_0023CM.html
                         create mode 100644 PR_0.0.20/html_split/_0023CT.html
                         create mode 100644 PR_0.0.20/html_split/_0023EH.html
                         create mode 100644 PR_0.0.20/html_split/_0023EL.html
                         create mode 100644 PR_0.0.20/html_split/_0023F.html
                         create mode 100644 PR_0.0.20/html_split/_0023I.html
                         create mode 100644 PR_0.0.20/html_split/_0023P.html
                         create mode 100644 PR_0.0.20/html_split/_0023SD.html
                         create mode 100644 PR_0.0.20/html_split/_0023SL.html
                         create mode 100644 PR_0.0.20/html_split/_0023T.html
                         create mode 100644 PR_0.0.20/html_split/_0023TD.html
                         create mode 100644 PR_0.0.20/html_split/_0023TOOL.html
                         create mode 100644 PR_0.0.20/html_split/_0023advanced.html
                         create mode 100644 PR_0.0.20/html_split/_0023advanced_002d1.html
                         create mode 100644 PR_0.0.20/html_split/_0023advanced_002d2.html
                         create mode 100644 PR_0.0.20/html_split/_0023advanced_002d3.html
                         create mode 100644 PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge.html
                         create mode 100644 PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d1.html
                         create mode 100644 PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d10.html
                         create mode 100644 PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d11.html
                         create mode 100644 PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d12.html
                         create mode 100644 PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d13.html
                         create mode 100644 PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d14.html
                         create mode 100644 PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d15.html
                         create mode 100644 PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d16.html
                         create mode 100644 PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d17.html
                         create mode 100644 PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d18.html
                         create mode 100644 PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d19.html
                         create mode 100644 PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d2.html
                         create mode 100644 PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d20.html
                         create mode 100644 PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d21.html
                         create mode 100644 PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d22.html
                         create mode 100644 PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d23.html
                         create mode 100644 PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d3.html
                         create mode 100644 PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d4.html
                         create mode 100644 PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d5.html
                         create mode 100644 PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d6.html
                         create mode 100644 PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d7.html
                         create mode 100644 PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d8.html
                         create mode 100644 PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d9.html
                         create mode 100644 PR_0.0.20/html_split/_0023c_002dobject_002dmodel_002ddeclarations.html
                         create mode 100644 PR_0.0.20/html_split/_0023caveats.html
                         create mode 100644 PR_0.0.20/html_split/_0023caveats_002d1.html
                         create mode 100644 PR_0.0.20/html_split/_0023caveats_002d10.html
                         create mode 100644 PR_0.0.20/html_split/_0023caveats_002d11.html
                         create mode 100644 PR_0.0.20/html_split/_0023caveats_002d12.html
                         create mode 100644 PR_0.0.20/html_split/_0023caveats_002d13.html
                         create mode 100644 PR_0.0.20/html_split/_0023caveats_002d14.html
                         create mode 100644 PR_0.0.20/html_split/_0023caveats_002d15.html
                         create mode 100644 PR_0.0.20/html_split/_0023caveats_002d16.html
                         create mode 100644 PR_0.0.20/html_split/_0023caveats_002d17.html
                         create mode 100644 PR_0.0.20/html_split/_0023caveats_002d18.html
                         create mode 100644 PR_0.0.20/html_split/_0023caveats_002d19.html
                         create mode 100644 PR_0.0.20/html_split/_0023caveats_002d2.html
                         create mode 100644 PR_0.0.20/html_split/_0023caveats_002d20.html
                         create mode 100644 PR_0.0.20/html_split/_0023caveats_002d21.html
                         create mode 100644 PR_0.0.20/html_split/_0023caveats_002d22.html
                         create mode 100644 PR_0.0.20/html_split/_0023caveats_002d23.html
                         create mode 100644 PR_0.0.20/html_split/_0023caveats_002d3.html
                         create mode 100644 PR_0.0.20/html_split/_0023caveats_002d4.html
                         create mode 100644 PR_0.0.20/html_split/_0023caveats_002d5.html
                         create mode 100644 PR_0.0.20/html_split/_0023caveats_002d6.html
                         create mode 100644 PR_0.0.20/html_split/_0023caveats_002d7.html
                         create mode 100644 PR_0.0.20/html_split/_0023caveats_002d8.html
                         create mode 100644 PR_0.0.20/html_split/_0023caveats_002d9.html
                         create mode 100644 PR_0.0.20/html_split/_0023coe_002dadvanced.html
                         create mode 100644 PR_0.0.20/html_split/_0023coe_002dfound.html
                         create mode 100644 PR_0.0.20/html_split/_0023coe_002dmain.html
                         create mode 100644 PR_0.0.20/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html
                         create mode 100644 PR_0.0.20/html_split/_0023contributing.html
                         create mode 100644 PR_0.0.20/html_split/_0023contributing_002dto_002dthis_002ddocument.html
                         create mode 100644 PR_0.0.20/html_split/_0023contributors.html
                         create mode 100644 PR_0.0.20/html_split/_0023copy.html
                         create mode 100644 PR_0.0.20/html_split/_0023copy_002dadvanced.html
                         create mode 100644 PR_0.0.20/html_split/_0023copy_002dbasic.html
                         create mode 100644 PR_0.0.20/html_split/_0023copy_002dmain.html
                         create mode 100644 PR_0.0.20/html_split/_0023def.html
                         create mode 100644 PR_0.0.20/html_split/_0023def_002dadvanced.html
                         create mode 100644 PR_0.0.20/html_split/_0023def_002dfound.html
                         create mode 100644 PR_0.0.20/html_split/_0023def_002dmain.html
                         create mode 100644 PR_0.0.20/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html
                         create mode 100644 PR_0.0.20/html_split/_0023ecodes.html
                         create mode 100644 PR_0.0.20/html_split/_0023eh_002dadvanced.html
                         create mode 100644 PR_0.0.20/html_split/_0023eh_002dfound.html
                         create mode 100644 PR_0.0.20/html_split/_0023eh_002dmain.html
                         create mode 100644 PR_0.0.20/html_split/_0023error_002dhandling_002dcategories_002dof_002derrors.html
                         create mode 100644 PR_0.0.20/html_split/_0023foundational_002ddeclaring_002dvariables.html
                         create mode 100644 PR_0.0.20/html_split/_0023foundational_002dusing_002dreference_002dtypes_002dto_002davoid_002dcopies.html
                         create mode 100644 PR_0.0.20/html_split/_0023foundational_002dusing_002dreference_002dtypes_002dto_002davoid_002dcopies_002d1.html
                         create mode 100644 PR_0.0.20/html_split/_0023func_002dargs.html
                         create mode 100644 PR_0.0.20/html_split/_0023func_002dargs_002dadvanced.html
                         create mode 100644 PR_0.0.20/html_split/_0023func_002dargs_002dbasic.html
                         create mode 100644 PR_0.0.20/html_split/_0023func_002dargs_002dmain.html
                         create mode 100644 PR_0.0.20/html_split/_0023glossary.html
                         create mode 100644 PR_0.0.20/html_split/_0023license.html
                         create mode 100644 PR_0.0.20/html_split/_0023main_002ddeclarations_002dfor_002dprograms.html
                         create mode 100644 PR_0.0.20/html_split/_0023main_002dusing_002dreferences_002dto_002dmodify_002dexternal_002ddata.html
                         create mode 100644 PR_0.0.20/html_split/_0023main_002dusing_002dreferences_002dto_002dmodify_002dexternal_002ddata_002d1.html
                         create mode 100644 PR_0.0.20/html_split/_0023module_002dname_002dpassing_002dparameters_002dby_002dreference.html
                         create mode 100644 PR_0.0.20/html_split/_0023module_002dname_002dpassing_002dparameters_002dby_002dvalue.html
                         create mode 100644 PR_0.0.20/html_split/_0023motivation.html
                         create mode 100644 PR_0.0.20/html_split/_0023motivation_002d1.html
                         create mode 100644 PR_0.0.20/html_split/_0023motivation_002d10.html
                         create mode 100644 PR_0.0.20/html_split/_0023motivation_002d11.html
                         create mode 100644 PR_0.0.20/html_split/_0023motivation_002d2.html
                         create mode 100644 PR_0.0.20/html_split/_0023motivation_002d3.html
                         create mode 100644 PR_0.0.20/html_split/_0023motivation_002d4.html
                         create mode 100644 PR_0.0.20/html_split/_0023motivation_002d5.html
                         create mode 100644 PR_0.0.20/html_split/_0023motivation_002d6.html
                         create mode 100644 PR_0.0.20/html_split/_0023motivation_002d7.html
                         create mode 100644 PR_0.0.20/html_split/_0023motivation_002d8.html
                         create mode 100644 PR_0.0.20/html_split/_0023motivation_002d9.html
                         create mode 100644 PR_0.0.20/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html
                         create mode 100644 PR_0.0.20/html_split/_0023organization_002dof_002dthis_002ddocument.html
                         create mode 100644 PR_0.0.20/html_split/_0023overview.html
                         create mode 100644 PR_0.0.20/html_split/_0023overview_002d1.html
                         create mode 100644 PR_0.0.20/html_split/_0023overview_002d10.html
                         create mode 100644 PR_0.0.20/html_split/_0023overview_002d11.html
                         create mode 100644 PR_0.0.20/html_split/_0023overview_002d2.html
                         create mode 100644 PR_0.0.20/html_split/_0023overview_002d3.html
                         create mode 100644 PR_0.0.20/html_split/_0023overview_002d4.html
                         create mode 100644 PR_0.0.20/html_split/_0023overview_002d5.html
                         create mode 100644 PR_0.0.20/html_split/_0023overview_002d6.html
                         create mode 100644 PR_0.0.20/html_split/_0023overview_002d7.html
                         create mode 100644 PR_0.0.20/html_split/_0023overview_002d8.html
                         create mode 100644 PR_0.0.20/html_split/_0023overview_002d9.html
                         create mode 100644 PR_0.0.20/html_split/_0023points_002dto_002dcover.html
                         create mode 100644 PR_0.0.20/html_split/_0023points_002dto_002dcover_002d1.html
                         create mode 100644 PR_0.0.20/html_split/_0023points_002dto_002dcover_002d10.html
                         create mode 100644 PR_0.0.20/html_split/_0023points_002dto_002dcover_002d11.html
                         create mode 100644 PR_0.0.20/html_split/_0023points_002dto_002dcover_002d12.html
                         create mode 100644 PR_0.0.20/html_split/_0023points_002dto_002dcover_002d13.html
                         create mode 100644 PR_0.0.20/html_split/_0023points_002dto_002dcover_002d14.html
                         create mode 100644 PR_0.0.20/html_split/_0023points_002dto_002dcover_002d15.html
                         create mode 100644 PR_0.0.20/html_split/_0023points_002dto_002dcover_002d16.html
                         create mode 100644 PR_0.0.20/html_split/_0023points_002dto_002dcover_002d17.html
                         create mode 100644 PR_0.0.20/html_split/_0023points_002dto_002dcover_002d18.html
                         create mode 100644 PR_0.0.20/html_split/_0023points_002dto_002dcover_002d19.html
                         create mode 100644 PR_0.0.20/html_split/_0023points_002dto_002dcover_002d2.html
                         create mode 100644 PR_0.0.20/html_split/_0023points_002dto_002dcover_002d20.html
                         create mode 100644 PR_0.0.20/html_split/_0023points_002dto_002dcover_002d21.html
                         create mode 100644 PR_0.0.20/html_split/_0023points_002dto_002dcover_002d22.html
                         create mode 100644 PR_0.0.20/html_split/_0023points_002dto_002dcover_002d3.html
                         create mode 100644 PR_0.0.20/html_split/_0023points_002dto_002dcover_002d4.html
                         create mode 100644 PR_0.0.20/html_split/_0023points_002dto_002dcover_002d5.html
                         create mode 100644 PR_0.0.20/html_split/_0023points_002dto_002dcover_002d6.html
                         create mode 100644 PR_0.0.20/html_split/_0023points_002dto_002dcover_002d7.html
                         create mode 100644 PR_0.0.20/html_split/_0023points_002dto_002dcover_002d8.html
                         create mode 100644 PR_0.0.20/html_split/_0023points_002dto_002dcover_002d9.html
                         create mode 100644 PR_0.0.20/html_split/_0023references.html
                         create mode 100644 PR_0.0.20/html_split/_0023references_002don_002dlearning_002doutcomes.html
                         create mode 100644 PR_0.0.20/html_split/_0023req_002dexpr.html
                         create mode 100644 PR_0.0.20/html_split/_0023req_002dexpr_002dadvanced.html
                         create mode 100644 PR_0.0.20/html_split/_0023req_002dexpr_002dbasic.html
                         create mode 100644 PR_0.0.20/html_split/_0023req_002dexpr_002dmain.html
                         create mode 100644 PR_0.0.20/html_split/_0023static_002dassert.html
                         create mode 100644 PR_0.0.20/html_split/_0023static_002dassert_002dadvanced.html
                         create mode 100644 PR_0.0.20/html_split/_0023static_002dassert_002dbasic.html
                         create mode 100644 PR_0.0.20/html_split/_0023static_002dassert_002dmain.html
                         create mode 100644 PR_0.0.20/html_split/_0023student_002doutcomes.html
                         create mode 100644 PR_0.0.20/html_split/_0023student_002doutcomes_002d1.html
                         create mode 100644 PR_0.0.20/html_split/_0023student_002doutcomes_002d10.html
                         create mode 100644 PR_0.0.20/html_split/_0023student_002doutcomes_002d11.html
                         create mode 100644 PR_0.0.20/html_split/_0023student_002doutcomes_002d12.html
                         create mode 100644 PR_0.0.20/html_split/_0023student_002doutcomes_002d13.html
                         create mode 100644 PR_0.0.20/html_split/_0023student_002doutcomes_002d14.html
                         create mode 100644 PR_0.0.20/html_split/_0023student_002doutcomes_002d15.html
                         create mode 100644 PR_0.0.20/html_split/_0023student_002doutcomes_002d16.html
                         create mode 100644 PR_0.0.20/html_split/_0023student_002doutcomes_002d17.html
                         create mode 100644 PR_0.0.20/html_split/_0023student_002doutcomes_002d18.html
                         create mode 100644 PR_0.0.20/html_split/_0023student_002doutcomes_002d19.html
                         create mode 100644 PR_0.0.20/html_split/_0023student_002doutcomes_002d2.html
                         create mode 100644 PR_0.0.20/html_split/_0023student_002doutcomes_002d20.html
                         create mode 100644 PR_0.0.20/html_split/_0023student_002doutcomes_002d21.html
                         create mode 100644 PR_0.0.20/html_split/_0023student_002doutcomes_002d22.html
                         create mode 100644 PR_0.0.20/html_split/_0023student_002doutcomes_002d23.html
                         create mode 100644 PR_0.0.20/html_split/_0023student_002doutcomes_002d3.html
                         create mode 100644 PR_0.0.20/html_split/_0023student_002doutcomes_002d4.html
                         create mode 100644 PR_0.0.20/html_split/_0023student_002doutcomes_002d5.html
                         create mode 100644 PR_0.0.20/html_split/_0023student_002doutcomes_002d6.html
                         create mode 100644 PR_0.0.20/html_split/_0023student_002doutcomes_002d7.html
                         create mode 100644 PR_0.0.20/html_split/_0023student_002doutcomes_002d8.html
                         create mode 100644 PR_0.0.20/html_split/_0023student_002doutcomes_002d9.html
                         create mode 100644 PR_0.0.20/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html
                         create mode 100644 PR_0.0.20/html_split/_0023topic_002dintroduction.html
                         create mode 100644 PR_0.0.20/html_split/_0023topic_002dintroduction_002d1.html
                         create mode 100644 PR_0.0.20/html_split/_0023topic_002dintroduction_002d10.html
                         create mode 100644 PR_0.0.20/html_split/_0023topic_002dintroduction_002d11.html
                         create mode 100644 PR_0.0.20/html_split/_0023topic_002dintroduction_002d2.html
                         create mode 100644 PR_0.0.20/html_split/_0023topic_002dintroduction_002d3.html
                         create mode 100644 PR_0.0.20/html_split/_0023topic_002dintroduction_002d4.html
                         create mode 100644 PR_0.0.20/html_split/_0023topic_002dintroduction_002d5.html
                         create mode 100644 PR_0.0.20/html_split/_0023topic_002dintroduction_002d6.html
                         create mode 100644 PR_0.0.20/html_split/_0023topic_002dintroduction_002d7.html
                         create mode 100644 PR_0.0.20/html_split/_0023topic_002dintroduction_002d8.html
                         create mode 100644 PR_0.0.20/html_split/_0023topic_002dintroduction_002d9.html
                         create mode 100644 PR_0.0.20/html_split/_0023udl.html
                         create mode 100644 PR_0.0.20/html_split/_0023udl_002dbasic.html
                         create mode 100644 PR_0.0.20/html_split/_0023udl_002dmain.html
                         create mode 100644 PR_0.0.20/html_split/_0023use_002dof_002dthis_002ddocument.html
                         create mode 100644 PR_0.0.20/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html
                         create mode 100644 PR_0.0.20/html_split/index.html
                         create mode 100644 PR_0.0.20/html_split/unknown_node.html
                        
                        diff --git a/PR_0.0.20/guidelines.epub b/PR_0.0.20/guidelines.epub
                        new file mode 100644
                        index 0000000000000000000000000000000000000000..a40fa767d5747d6f602a9087c696e52d57729019
                        GIT binary patch
                        literal 39907
                        zcmZsCV{~WFvi2{wZQHgc_QbYr+jcUsZ5tCinb@{%zH`pG_rw3b=R@t?yVvTyR(1DN
                        z)lXIRPiYWPQ~)p}06?oVs%mFYNs9^q0RAO^y8t#8HYUy<_9h1Q_SP0g2F@0CwhSir
                        zE`~Io7WO~?XC&mmM;{C6n{}owLWg$9AIWYz!J6mT13tJOMdUqRZo!CC;
                        zenv!*YhTfo%7qizA4)3cT
                        zh#edi>IA#1t0A?`ewgCOFn(u`G>
                        z_AT*pFq<
                        zEl!nn%49?gz5YbQew>p753a-GiFSZbXP;L>kYwm~Hny;_8dnRExbWLXix=FBpW6*B
                        zQv2gu7d80ymPUR6BvXD*Te5*b86a~cW%i!-)%JZ>ee!rT(1Cc@x*}Yf#YJ{CHJ*lF
                        zMMpf0Pe9;P9hse*$p;gpKXzv*E}3#Ffab0#Wcnx<6hVc$h)%&PCuyKx8ppJ_&ikz+
                        zR%F6=plDqwl9p6!lOl8)RUpxu>MXtx9Pix^Gc*
                        z(AX$ylDMWohD91*;6%31Z)T&6^!61ung!OBZ@e%h)^rxuS}udGlA=0Gs|^NlyqemP
                        z@^q?6Ze62GDQz)mQ|@!6LZ4vs>N|T;T?gfM=5v0~A{8!R;xkUgaYXome>0Sj85NbG
                        z0>cAqS|IK~(g77@e*~7QTi0>Sn{iL6{ZaMYacFBr+~5-eR@YvRksJ00*g|ln3&W3R
                        zccZHl4&?51eben2v%N8eJ3%W+4Q!0%PEGK6TdMF7)
                        z|AMN7T;4xX5&uSZm=#S-3>>+X=2T4Cbqcpa{_=_1qOZs#*>KTlYw@RI4&+o4O=Zcj
                        zNQv9eHS`*~A{TUKkD>$r>5+w_x!N!)N;+OI>KRG3nGUFIJU)}wvbNr}!r<)u!2uL#
                        zg3tXv?p4A`I*uZCiOU8x;pv%TKC++q09rrhS(*B+NQQ~KV!o)$;j>j1LmlVe&{eT|
                        z)rB_58^3IC1qwJ>h!BK&xAT_omHKu8oLSI0aQG+_LB2-x
                        zjCSk{t+=@=39H)ol5_QQtf@%OYdG&clE)FleV3_=$6}n9TaYzJ0WPfWSN%-}3x8_z
                        zf++gDn{9^OhKwc)o%ht*@31Moe}XBFl?%k~FOUc=0f4`+|A5Ka&WPUD$bCv@)p4B@
                        z-RHVi&_Z`^9!{FHIi8wFCnCFg*tXNK^qmPTA$|}FgAK~_v^E#UKA~y|Sa60>L?u4>!%Yx{{7*&hOv!kV*T~NO7yH|tdatZ!C{fchzf4j
                        z{RWKSdFYp_*G9^My+}a0NZYfuO~2P<7;!f#aDIFJgeCs$1Ln4O;4rpl?(_SNtqcQ5
                        zYXnH^#B*38%|703f>9i!TyGFy1f7biQ_Ll-SN_N0Q=#RjNFty+3Udm%pYkoul*ynS
                        zoX3v~Q=P2dub2&T5&#NMjc70G0E=l)&bU*Ns^9A`83Xi38n&W!gx}Z8+IiYRpdrx(
                        zv(Q<0i{iG3O=BI+>NjntG0HG!cIpF0m$eG}v;#Z*+pqahq0b^VNlvr~;!?PqxAt;F
                        z0{jtvRC!_;Gq8P|lwvUnSdJVK9d=U-9`?e0Yq1kA6ZuRW2Pxx8?}Z}+fvX|?>?O1S+0b#5rZbH1p|xC!H&)$%jtmPCPgJo6RNe=oiQYcH&?gXIUjx8x
                        z*dNXKk-7b4e;8Bbcv`{KUD&m^B%p=XRL!zOaUB>|Jf(sAWWkeek=PlC+Qty~Bg(u%`t8$|a|
                        z@J6P7iVn~f8TM^85hKrrQ7vX9R;due8Pd(AmwGFA_LhG35L74#_WXFi6bpA;sod$zS1eh(mXo{Cn{bD2o$HD{T}Ts2-cIII>i8!tsSPN4-@=lo
                        z71-cZ$y^AqrJ@3jK^d>svi-zXaYb=}^3~{UaGLDpj+CnifKfA2#8SXvUZM}k%caip
                        zoXvM7LO)S%!#A`0hFV3X8o}kMta+v
                        zvo8D;CZjRTbZgG?w-68&aG!oRU_Y1@(BYMY*3HUh&LmUlmDVJ$j&BVgX#8MBtS
                        zer*$o2#W0&2J_fs$k|*c;YGeRn%JzkeBfK
                        zqrWsZh?>+a8{~z86CJV97%S+rf2f)A;0nK}4C$YG)P#3d*mwkhRyD=4%rQ>$-Vf*a
                        z5=C0-LygG-MQv4Tql97TuYNT2Q@&e2+QB#VZ<^0aNES%N@1!CGq+BB#ssOfS4JC0^
                        zl>om5l^a|cSqlQ1Hbk|waxGO*TvJU(ff%hn_{$%64eHt$>!C@3U=AUT+!W8wX78cw
                        zXuoNz;XuF;cA-(od@0`2{PcJo?2*5%g6^ube|_i-5{HS3<|g%Dgqks;uOgxS
                        z{Xrv+E=2vPkOCKZ(p>@ZrAG81@s=yC;W;Lq8uRKLPdaa$5VguEM{6~XK8O?mxOKcp
                        zS$2$1W|Ge8S_BK_Qa9fiot!+i`FRj`#C)`sdh8JKdeEnt)0lX^h&MzA3V9D_b>m&1ltVeMuGb<;^!e)9?rn
                        zGp~`H^H3EWRzs;S+>wHtd#{B0as9yZsCV3)&OrmC6?v(D$>mTl}NIZ&C5-ZAc5w$q%;mn+TS|Yd;IfIb3O(P8V9eu
                        zxP}HR(#4x*8iSahrWLBY3{^~`CDFb3H6rz*1&O-EWeZ#4kDNM)Zx^xDkbJFFl-vNebJ^R7YJ(nO{sFbWNNdM-VECK}FrtUf
                        zp`DP-m=>Vk=8~ZkPVL+4C2W$|=w9&8FX+Gy><#6@KN@4vfa6E@Zx;&mu=J|&feINW
                        zbfvURDWYkna+=xW$^%XRT8BeBa;?~@AgZ!%XOY3G@Hn(~YZRu{U{;p6bO&jeFlX8uiDHP3;6IapCc#%U5u)Tmj2vJmI{ytM{
                        z<0IUdb+^?4Vm@E{fttMc(=(_;)=&wjV;Lqs5Ckx(h>l`Y3fLU^I-0XJF1ugFrpVFw
                        z3U%@eT8s)AQ+3>2#XDpQc6~Ba{1^DjH(Wl51vhm?P8{w
                        z*Aq``~U}^i=LFv+lY-i^mkof%4=^Uf^e6_ZomLFAa
                        z^vm5U=rB)SA>)|G3`ttJT92i^EK(ti>XsYas!a}e$p+%Fl62`*Y6K;SPK)`zcaJO9
                        zDx6YwhKww|u6r2*+4VqY4*vpkxTUNje{6G>r&Wi!sny+dKiA?Z$muP)c&NeyPYizH
                        zwQm>bPtdMuy+`fzn-358ia>ITQBG{LgyuILx!CyvVFAV^||1UAIHE^YOH+QzNZq{CR+-FDj$*t|BW=P7OVJ2Hg
                        zR%uYeT6ZdMUaqMpFZYq^BPDeR!wA99dpd6gLMEgGvKOx5l}sMJ60ZAmIvjJampd2C
                        zTUQW$f8o4CfC~>f(a#&%xOlqrzL&&-_u=_u`xO_Jc|YW5%P`g&08ZM5#4rjUvUuS$IwTJvzoKiEUH9(H1W9@?I>k60!?@49Ei{wtn1FvWY>Mi`m~$V3O5Ks0vhp}M#cH?$s62;br@~Nv
                        zk&zbYu0vniW4MlIRsiukaQ(HeJ?7O1pKm~1i~!OuO2aCmFskrqV%7U{0z{q=Yh||P
                        zv(Y0bo-yBqN|v;qIbkpd;r9%>Nsyk1#xQB(V
                        zs&3y8-wm-ah?vvaB12Iznj@gBWK}Xw%KUV)@Wc=_fz)j_nyxCjYYisO`(t6>C9L)Y
                        z{xM+h#HgiXSa_^<@X~`!dnsSLEabn>B)PHD;ZtvkKSu+kTRoczSFYlhmyu=e6&dT{
                        zN(_4J&)s{n(VZ~~T`~8=szLN}l0DW};=J@I9rf^=ZK7(aGDL~;zz~+SLOu-Xz{EI9
                        z!G{uIhh@u(qTYIH#O!xIf_RTwQftI2vBGXu!fvz!E$XwhUj%5j&sGgaXt8`+CoMd)
                        z`8*c0DJ~gvd+8w3_hsNhh(KzGnVcethav@?R@M&s%Q19F_Amz0d5w*Jh9I84F(OVo
                        zZhx3J2PNm#0pVmN=oxFc+lHUiEt}}pN(V$V6J3n$u-5bfhC0;rK1F0rOd9@DslWX#
                        zKQU_j8Gg?f9SLaj+d%t+u?oWEr}aO+i!B*TKhmbtt)GSVL)0TWUsk2^?cI-kFhrS1U`y>eXYSs`QvzsSct|
                        z{aE4!@g;gi7MA=eIBa}0JX6tN84ZR$c0eYX)*7xv4u2-aI1DLBGlUFS`&NGYo;=Uv
                        z1f4sm3@o8q-h77nW$WM80#UH24Yhv;Bh*6YCrKN9Ihaib!
                        z|7(40(&*Bg>Z0}zAN8hoouaYlbRUeXUacznGfCwgovrN+f>8N3@gJL8_6Eysysy}l
                        zx6Q+evjlWl+tz3`z6^wW5di#+bv*yDci_schwAKcM7AeX<#`AIR5gWx>%ixz}y~>%&n%1cB
                        zNtc2(3H6`5`gPL!6cQ#Yzes)ok)u81|h|0DyXTK5XW55cZr-u
                        z;eN|CfykOtS0XNfL3%`2vZdc&o0*_ZneP1-c)j(e^koZNg0@3&hSpK#H7$l+wqLDE
                        z0fT>PU9S~v2;3g?&J>&~G9PG)#*(UNR7nVe>ek>anqn-Ckf=6ChB6QfNI{dOHkpO?Ei@r0DJRF&64j;*
                        zrkF3l_(Al0+=FUN9BVN5M45-Vc+JTq8G(aU42jFl8qJ#wj)axpdkIg=q>};;ej4xY
                        zYNcWr+rr+zUi^r!!O}U6g~J9jU9px)&N;1WZ;Gj1qTigSv4WZ~GF4jjMqz&jEL&xr
                        zi(4%Pb5*e-;!Rvtwzd%TTn8)$8<3HZfiNXTo4^PBP-S1~$y!)N)2666W?tocb0Mw&_dPk=W;V8}s}Sbt`TJO!~;WaqPS-F}Q-8
                        z17^CB$_`mwZ{ZMhHntnYPczUm;q#)v3ZF$;sFiZ3XqsPfGj%r$T*K%Se|0Hyy3nNM
                        z>0Jrp9#J(=+1(Y(BjE{f-=sMBML=tU%ce7bsm{!NxkBB8XOGc?r}6qEPl8&B>Go5b
                        zj2BAMNq9MFf`wi5oIlb)d8pIKcIi7(uf=C*u$Z&Je+YbGD)hwDCe=
                        zy;2m=7tu8cn?9muo9wNb#ed*%5VC{9v%u9{8Fojsl%DL}q5VP_gCJs@ZO-D~RqciS
                        zr5ZS4=kriVU5R$1x~gdi1gM8ezR070%BW0#
                        z3dxn4Q2Z9~rB$v!1=^`>4>*zovvT~YZ13-163E74tpp@Lyw728U?_{&u+JrMeEnOO0ox4&m#{)2smP6+m`3db_eS^*Aj;a~Gg+falK@_3^ja*D}f@*cap=kx(r|nx+bF0a{rLRh=!x8g~iYOv7(y3}LED*UCMU
                        zK=3dIy%N>(s}u(K>1wcOCi<%JYATZ%|B~8d<|i{0^+m1Fn28s9!n2$|6Oo5;#5LIY
                        zwtEsQS0f3wvK=aMXo4S{^dlUe>HMUvq>SgIj{1wbV52sysX^GC&$hsoPrtlpolkB>
                        z55OFi#Am9@+D+r*SC^n6+7BXez8aY}^z0v{sx%%oPkT|}&}u;fRDOAJ@9b>klc1;%
                        zX$<&6V0t;51gb@z>aMggZLg?tl}4zW=*Q-o`i9+s3Eprl;AOL8+6_=&G1v`=61a{_
                        z*JFi*sx*?HqQRf|YYu&r{Z!km`vpn9d4o{hK;YTFQZ*3e3|`Cyf*9idYn16Nua)}h
                        zV*p|rc%V{mnwq8{Q5?>giQ&w(IS6
                        zzu)JQ7|eHe`~?Z%tvjxp(m{iq>L+IURt>O%2nN*4(OxE2rb-PLd#Y6L@`Xq|j1pth
                        zl3nygp@ZymkLg5T^oET(=6sO`72O)7Z&^~>9Xy8VWmE08P&ss<_kFY&C$m!SIuV(4
                        ze$T*V{N1A#wcBbOKGy@Ds`&d`b_(}X=Zl-+Z3pb$#jQ7jJ?VI4uH`pGB^oP_B
                        zg~7Z143pq%c&v$X$4j}OmtI-TPI7)$n*Xtxw>hqqABEZGS9b7GQ
                        zD@)exdzk&2yx<*B+tBR0_s8emMAi)E
                        zZ%Am0>{7Y}v}bs@j){1tJLx9$GAcK;tMAX&C&53-2rhi2xfT!rAOj2lVE-=}aW-*x
                        zW^lG}wl>kTH!w5#4>9pc>~jqKSMrg6h`rP`3%Nc_72-y}dOj(87T+_v4zVQOII;L_
                        zog;wzthf~MY5n3EB5|nRW(T6WvRO(4R~9pG+(n_1+9bELbp)ejRBUYX+_e4uO+BEf
                        z<@UYK-%f?zByn_-O8^&sc9&|dW$)ISeSf644k)AW^ohe*C#}J(G--@wdHC_53(4Rr
                        zF$9S+(i$|rNdnlBs!CW&L%i4x*q4fG)^MC!*&NJbf^a$Vr^gbc%EDap)kC|JF!yI5we%x5k
                        zvPT;v+=*X34VRwW0q@V369uz
                        z8?RZ#CKx~JLP#8nnD_Tkc}L3Rig&bg!6`B>(xFj(8i0Ywx8a*D4+9JMrG47lBtSjb
                        z$(8y-qGt~+o7X%Mn6(+=u)*hY6tIlAXA2Gbe
                        z;shq>EV^iDwa)X5dZWxhhi>wiZ7mbXqkiaabiHLRn{#
                        zX1mWxIryAcl2x+CGq4r&^9tD;uX@?ZnE%I%&c>#7Cp=eB-Z|gG&a?d(*>;5&g=`Aa
                        zb2dm!aMeK73YXM8^%Up91lKr;`*xofm|b0>ohO+Ved>Nq%o4#GJ6v*^A?oTC3!I;$
                        zcX2$}(UPK`R~#Ku7N=XNJtEzbW^IWmNk-{Lj9^iUW{gG5hNsAV@>D!BJw6`YF7f8K
                        z6Jo{oD$f0U_GTT+3Q#E)sOK@cvc!*K9+>9Zle_!lKV|4y?IJ7b#8ow%;3CXo&1JRz
                        z1IU$QtB#hkY`+$hRKn<)hVd+c2goAvL5iJuuCm}MSNSVQvxVD0`JbVHq6b75b3Yhy
                        zg)E4q6x2Au@{bf)J~#I}q=tl;0f~t@HQ-sF#Jp|P{w%{!R1n_KuujoC_B;;gS)?_v
                        zK#KZ3f>Zi5!=*pXahiLMk)tpA$Bm
                        z5UBdu2f5qAkF}1su@LPr)KrutS>D0~1XZ1w@6{5}X|O&uBvsUAS<|}3Dd2n+tw4dG
                        zWZp!TWzU_`QU+0tLMaY;$|&KMkX>l?aI>G)7`ppj7O*9sF`T5&Yio};vt2qh1+JF|BZDPTxHIdXQ_>{X
                        zMt0T_#QHRSM^u&PsA=9P*=ntCz}SYN^bYEIpBg}Tun~KshGH@0w8Qhmh)x+KV+{+g
                        zn~|?73s!DZ)*3jr%(UMjKw=qAAxJ?|kbk0qjqhp%5=oh7TD#7|{UDgvJD{K^gp84j
                        zI*=Q;A-o)}Z;HScoTEW8o15{xB}-*}$KIDwsO1h}B#dLq$Un#Gmm0I0at<=(XjEmC
                        zJir)2Efqjz*Y-IDOG4~U$mAjTdh>XKBVcldtyJcH=PuBlp4PB@%rG&pgKjB5jh@@z
                        zFPuu+2Iae3QJ6jE!Cr9zRfR0M#U%hEiJ=1P@#yja@tWW^4=>MoD_YD~2N5JWAoSDe
                        zEk^4P^U&;1!rBuX9%LeGvJNg#ExY?R~ud-MTMk|q9{e74=7u{dxWK8_gMuqc`?z8Sy;@bwbl8zUBPQ+ATBS6
                        zGb4yWnwqVebQl`sQ|<15Hy$q*-rb(xtEKAEZwX3g?>c>eus0hdG>d#{k58GBu=_zB
                        zFFU%rx{|jdCB@`%Jq_GJmS_5=)X7Kfr91mbjJ7KIZJlZY-he0rSA7Wsy^wV2E`Y@8{
                        z!|V0x8$^yNMNw8Iatgg|{cH=C=xb0@iHA1C^=@B49>yX~iO{2ZeaA)hvs{Hrg-mKy
                        zkHS#|A0ewu1(b)w{|@qThwnElkDSI37LT0lx^buDaGUH0cZw@NxTC4%sIp8U4Lske
                        zJ#q+V_KhSl87JgS^VNgpfi6jOo#gHPl`
                        zyd)3imb#3i=D{tKF8`^m)bq3aKT&4-d<4?=7iH1^6=lr-L79unMB=&_Y}Y#tVosMy
                        zL~^ol1GQw$!jXdve5P=0ArWOP-$C6`{>XMI6KV6-PT7rt+w*QLkbU#~%HD;m5LA@OTrKC{D|)|F?D?a8UR
                        z(#P_PZ@0Jg9a1t(;5Hr-BWejH_!+pJ8r8n#8;FhvOVoWn)S!VXJ}-hz=bY4Y)pr5=
                        zJreao^2*)bXDTD_dxLylXxR)Bo&1h*D?*RW^G^1xvv)$Rm5U{lQf3
                        zJ&?DiTuqbpdG0trx$oFix$}mWoEjO%8?b{aQdeBkLHwI4ho{}d)wU(V?M9gIHp($q
                        zVY+*{e>gEe_Kd>m?IT~(r=0$((HQ<4`K3zF=o_g3WYguY*1%M#C{OUah(Em>CKYS?
                        zJv(9u`c5Z@t}sxHQdMzUyQYZXomdP~?9AJhkSx!z+?+D>LFBSAh6?+F@hL$#Ks}2Y
                        z*R+?MP}T{slnX*rgQs?xT4ssMg!5axAd|vgruiS_7*4Rd
                        z5{jA~!i{8lhkha%VWGbi*d!tqFJ$s|-L?pJG<)xfmKeNo17U$bnCffov!8fv`iwsoL3pL6nFP(Ltn%y*8W-rzIp
                        zgi&WhLDjq3(;aih&Mk7Fo3*q4f_4lr&Uth2e}yk3
                        zPmap-W9hgDJ;2`Mn=mC*FI_c;6~cGq@W)2|qopu6GRaD*#8Bpf5&Sx2-kPQEQL1h0
                        zfldP8ZMl}J+){DH4{#{&g;`vA_?v-6UwwRHul5d&8P6q5ytv&w>5^JuOcnn@0>{;`
                        z6C<>H%E2N&)^<#!(({F+z&dn5JM1z2HQTf1KYv&it&(;h0tmilrYO-kqVG(LXoBZR
                        zMeiIuQKVG^rYRld8TGcqrjSj31YPwSJ+ar7PKU>xNIx-E;g3F+V9V}zr11;>7#I~;
                        z{090b)IohvZ#e$)$MwH(|Nk8-%l|-KNj7et5wZKa7IV@evn?OOJjFPq1FRafQ^FYm
                        z(!oAS(rA$&;j(Gn@Ap1wG4LSO)646W*M929l_(8o!TnrDpvh?#P{#Pu+y%^2*JrY~
                        zzT2Vf*U^_n_vft*h|Nso(=CYe;!9vNku%M-e5sPBX3^56M~gQ7tMp(UQd57;_Gdt{
                        z%QEbW+x@GTEsp@9n$%#A6}nbl*#wTiwh`jb=6(-YuybMI41c}2=o$4oK5S=V^^v>=
                        z@;oAI3K^S97|zkWx~jET?*#ZgNB&=X`H4pWc$GeHPMQZgLw&?)JOv1EsIEKGdY2Vc
                        zTG>~~JvHlJ@PM=Adj*f4#z(Az+eHbKXU$-L`n7v?unexz3|!e`Sw_wocjD;jP
                        zGTs=qT_ly^Jai$_l4TxeFfCY=@h_^Q99}(JF}#z+@_A6BL*ip3mHtNYIymccx(#_7
                        zNguHVJSH%+sh*G5m!{1su^CYuR#hsmJ48)T`F#j78di}~n;7Up_lBPCkY*RiTrWuz
                        zi29Bd%S
                        zm$y3E(B%#Z+1)<>)Q&=AzKAE5@cZw}qQVT=oc@LEQ?oQ6zB$^rq?jrZ+!I(z-Je{z
                        zt`3O{Qur2bBAgm-gslW&@3*v`?ehp$Kd#GXBGDL-0ruR&xcBNibS>UNo
                        z3ME|EhASme4p<=U2X-&wdjDsq&2m-~{r(%RfcURFjrBh}%_LFiUsci}*RN<=hnn${
                        zeDiB0qkWR4e9aKgGlj5L!X%_IO`z}FZeW~pr4)j1MbA%s3;XRHH<3iH)4vKv)qrP~
                        zYECc8QGY+_H8SkgcPJ6$_+C8y_Tv|p?%utA0PtHHQE3wYPI1H?@%~8ev`-u|ZA>^G
                        z498k4Ab|gl*V&Ild9Ty-`87Qfv4NfK>_#k^XIsGoSR}D1)50TGqypz|ponj!tMsBB
                        zf}#VLrH3rbCTp7Xw82r+GdLU7SNZEmxN|3|xEP9M=T|Wx&83h|4H;X)N&V?_YRP$%
                        zsz|h~LGYy$jvYe}V(9Lm^vTG~j?Z>7V2b)$@7Yc}mqjq=+>xyICiAVN5@5rw7!gZz
                        z5+=$n4Tq=0az=JMqGPif`_x!N{Kb-{FJ=fBlMVSqRX$qFh!Onw(qRoo(Z|407B$C2
                        zRO-A+5f1eKyxlaN-1CB2y_|`0;h_Ao?q4K7@nW9;Z-)$hQN@s1iE
                        zSW)1~edzl%5YHnqcaQ1~iQ9oY3)c>_#T0EbEq<5-q^k2yl5PD)kXPQ`NGsavDoE@Y
                        zPkAU$JIr~=7*FfS_&WamPuoIl77wuo3IGs8|2Nyh_CK~oRn}>p9kKgZ&Dz6}9NnUI
                        z-(o)@`IK}@Mt-c1@1cz}mDn;~AMmr`?fe}*&zMV29=UJR$8Ou#{~SR+sJQz@f1{1c
                        zb|N#-*jn3ac(df?eE0sWb#LHl>aA2>kDveJ^AX`}U;nmB0CbtjI+B0*w5I|-OxWY4
                        z*x6TYv&Zkd$5Szr7-w^Wb(w)ymd9o6={Pe}kA@?}*uzf4K>!_^Xv20Ju^J*mM)nWC
                        z#0ILD$cCy0g-2^IEpiaT>dHxPoz5qTj29pH!apD*
                        zl)CdUb0X$)C7Y--0pj-z=Y8WYl`ENb!1o@4*rOwk{?n>YhITNPTz8gPVVWN$ZPJRH
                        zJ>1$5q<(kGKlapM4h&VTua{CZZB8e^{+oIW2i0AW1cJj5=B
                        z|JWxdT2LSgg7OCyGA7jZ5aCECPd>MlLKWbV@0a}@+^M@|WxxfDmWHH3t3M7k*w?}`
                        z_e(-+*y>DgG9gC!g
                        zcu=+1IFXJ9w^?HG-?c_`NP##|@y3rkQNXigxys%wl+}%xyv&&mxkRY26@xvGUsg?%
                        zJ-}9~zK3!5$QT@$dDzKzh&jgcrv$unpq=B$hbSo0QFA9(dE{hr7Etxb2l
                        zSh?@JW(T7_x95>?~~vx<#|*gRv&aG7-{EaTK}_&nXTFrCCU^*XFs^O0C1sJm|k
                        zTnc7y8gN(SWf3r&lV{K}EBH2Vk{r>xa%B+Vb0Vu*iMq2ynh&v2T7hZhr9ZUPcHIla
                        zS_qTxoyqzq+Tj-n?XA;3Z>mB6)}Nr@HtyIU+Q}x8SPK!yqGa;kCLhFYQL4{%w*mc-v3YKPy`NN@WXWi`kvuzq<*$N
                        z<3IEI1bBsH=97NAk(DaIL;d6|5OFjeP2Zl3pI^H5*=a;7Qy;wDt|1UuavuHST>uS4~VmQ8?ZOWB+$rNn$5S_-rQWgemYZxyFBXa3-FQm
                        zscM=h5|Q+)DYY*QIPF|FzgTCEl>H-|i?SIjO6uQvnTu%!mdEA9TVpsQu37*wiqcq`
                        z`vbo>fh`yjby-nkG9f<{@m-A9xj4yf>BswwYnRx*>?Y%K!@SzVEXJ-`Nv}YIA>R|x
                        z6QF76fwRAyZNq9kB0*HXZ)db(`LZdA?{d8=6JDa+q%^DbZ4QqG`GYY#bPZ@38#MwW
                        zsL)|5-9Et>8B{ywZ<-dSD03&7?Vzi~gcLVx;npMi{9*v|qhv_C#)D2KkiU%NJVvA9
                        zXl_C^y8oCYg6L;+wDHoE>FHv_UOWb`
                        z`T@@Qu4|Bc(JBRw;}a8Bk+g&j3HaYT{=>SrDIIXrozSJnXm3qc!nghBd=Gp$_z>d$CG
                        z(l79SBy;-(B)8Nhq}Kw!d>Y)My@s!}gtwr3tmhM!^|z4Mn68&ci2eaA9zuGyRL=
                        z51&syBYGX8uuKgLGK>=46+~l>J0Xy}427cX??gdsPkHp6v=Xyh&J*d}VWMT*ZWD1B
                        z*TwcMj+{-={c?_&*NYl=opJxOsf}Rn(e@jq{FzWd-_ZI{d(6_@HY{pWM(#ZG_S&Wr
                        zC<%kl7b-NLP4)z-^HkSHZcq0CaaN1m1`-0EeIrMU>JbNpWG{=jW=Bo_dCT|G9#+|>
                        zw{>%z7Q5Xyo_NRUa?YMX7L=&=(7gP}wvP-~8uH)}g0#YiKKfyw^EmXceC@+MZ;|Ce
                        z`q@&VIoL|{Gwe%(7(5{>(`{;uTXf=BUkp>aJWELi#8#wS4ickdSN&sl3$v##f9z$^
                        zy!uXTR@aHZVOx0YW#}0&PQ($#ZqTl@lrWtFo}s0mw}dZ1mkib6n=`jbFHlX_i9Axa
                        z;dsR<*E$Jzm({90-3{ZdsWjU>_(}^411qds25O&vhHBm~Deq9-oSmiaF-s^ot=M!~
                        zhPd7(Wi@~AAtm}=;u;B94r-FYw}&0q4v1mnpLvT?FRv^0B8^MDm-)saX9uy)zOIG@
                        zEDqx5E*wy&PP~PDrnpTsjN#Aj=FX{aJ&*%
                        zc{*uk?BNtl5a^l8HWRJFkhV>X5Ypdq!pe3oS6k`ssM7&@20X-0-`@jQ>Z^=erldVL
                        z{Rlu->%bOW{dC}fCG5UuloQ-=q)RUU9qQ(hZbd#C1z{N6k1g`Juho
                        z;>QMjD1F863SjLlh&b1>`OqNzq!LqNgN);P3lS{d^PN4~p)E%8bDi`Y)Z6HqOIxJs
                        zuUf8TI(N~S^vpI|+W3)fA8zAf{*4HiO@13o^g9t@JSmM>^2e$SO;Ggf%&?!}UAGA9wMwh+L*
                        zv{PflT>bQPgTt2zc#7Ky0uu>Wfgm*>c=)iqeVs>NP|rjqx5Ftq7`B}%1hxso>RFOi
                        zi|t7Oa)!2Phc|1y52AU^_$_Exc+sg^zH{Kwi?h3ZQgCw)WUoIR{oR3UIdRD8LnN!I
                        zU-R%q>SEgGs}`BWP@z}>%UI6u0vY%`)KVWM~XFgpr*7H*t!xz
                        zNM!l+zI};B)e@qBf|IR>@7kA_t8(rBDD(axm8<<(ALX%3a{=ci5ps~|Zd~$XROr1*
                        zh~`BRB$&4{TcCR17#tHukT}=E$T=Oh3ZOpCk4iMrXKBnu8AS`h)sRIMlHLpPfPX6b
                        z&H{og4qOaV=loS=K$#-J@E8+Kb8TUNFkI@&S~AB9lniaMD3*EU1(AJ2LPGDZiqj=(
                        z`5b&%w524gwFP&>z6Fb`csFfrDzclRVIkbzO-Y+%Syi57nM|K-DH93D)Z)}$5ERKz
                        z&cAPFR!w7tz{uQMiyY&(qPpDUc{AHjPT_@Z0)lp3S2I05Gq?VVlKWHGOGt(4UZcLh
                        zil&N2PlJQ1nx~V4qnUpl*`@5dE^bt`Mr1u5y*vKkwRr{u>`6w8=z-kuAH
                        z-!5?Hq4L%JI*Rhj+*7?%g=t&T*}amof(dnh3A?Xp}f7XlJiC~P4
                        z-@)t*pUKYRZ=XxQe{x4ofXnPMCIBE1{NIjC9RE2kUGlBl;)wsczDGlYN4F;@w$Mc#
                        z(bNbfSq-mmCsJis2Nn8xL7#~CXj9QC>JS8Y4foN|e|8a|)oVD;syM45?;NxwYY@je
                        zCPH6bbm4lox_x++MQ*erilUUxg(EK<0U@6wgei1>w7$7KtlXstIyUp;`rO&8yr1}f
                        zc_Y(Gm4wZ`B>=B28EWk7puJDJb#GjaW^Ys=SKA+(FO?tR;55wx&kpa>Y!VYQ=qak7
                        zABoG2ZtTiSpkNwt`2*1wytBKihsh%=GNw^?)PQ){D5OGfAaA|FE9F6)1E)%imYAB3
                        zTSq7@ozTCMRce5q)@PzTyhp1(5J!
                        z!%NgF`_#ir2S7cN-N=a-?grwswtqTsjxL;D3E6`4+Pnzu)4PCa#sTj%NNvL5JU2e3
                        z1r8U#uy*R`oSF@0=e~Sdv#KnNSiO*@GBC4RLDsi-DG->)*LPA*?GtRggl`70#{(
                        z%-2G`O(QBff|1&Qw9Rk19y!rPOFCDx}&2^+yfek5m9@=4gj3Fabr`
                        zTVd3s4+$oUj#dAEY@I`pE=?4s+qP}cBxGP);!TwMvG-66NW99*uBxwtoUUQIw+GY(kgK#)AGui5qfs96=)_b;s>
                        z9jH4kAe>TQ>u1_KrMs0f>|}pD-YnhSU_KAf-+ceKoI`HF`C^oG+|$cRoyD~sIyD$!
                        z3$)n-7AN-yN;^+?m+ux$yl5YedS8DRBLpr4IV@1-=NyOW8KQ0(>*ch@aj2M=;Gl~Y
                        z#}H>|ZG&p~d5_-Xgj8b6k6`3J@sYnErOEXc&x}GRC
                        z*`o4g!9Wg_l8rC8PgZ~|X+kps98jSW*H>KGE}{GdKn1{59mX&OyHPY4{l)1D8V)pr
                        zik_OrP=G@hUC0_)1SG<(N;Sq)^EgO|$Va3`4zXT%G-G1T1^aBV29D~swZ#>i`CH+V
                        zC9uKUBwOg%^YTSu@DU`*ngaIa|670u5Q@xbqj5f#j{VCQZvad04!|(^=>$?#9}}n3
                        zGJSY-liad>*>=z_D~q^0*h{~%e_&&4%b;pu6cd|fv9POw}k{$t8~aXw1VhW
                        z^-F^u@WDN_!yY;L#m~Zz*-YCH+|ay2OT1WM@U&?nGfUmS(j@A~>lUv=NcX3h=i2YM
                        z2-*});m38!tz*&TuHfSM6}k=mOkY7E04O~@fI)g-0?uX8YG|D056+|?0R+GvJ;FzU
                        z0RGI{KVtqgkv{W7vK~g4W<^``7?}6zRl^D(mS>+ji;s9z_9+r99#g@?h^0mdd7;}^
                        zHWnJiFi(p9`6&%n1Zw6@3u}My2LxO`+6Jp=1RAb!Hn-dUbvP^v!B69gJc-%_{*zfc
                        z<1g{+KPa0ECFv{C@BRMZ+sYe9sVOrKc=r8#_QTc-G!iBuE-Q)-q^Uuf%<2k;q^7cO
                        z88sC%90!h}mxfxhqB%mX98V1&5@z=tG*Ljb(5ORQoOVIROQ
                        z&=}7gc4GkIOEgn}_askOsN6@ZqG@gh$qS@w&*ce5rT%zHmBd!e$zSRUs`~@rZ=Hh-
                        zc4CM6G*1z&_0|yze%XT{cWgB=XF~6zqLSptAkQA*ZAPBZ-UJzW7SZgDkqQ^52ggrg
                        zfIe59hrU}ifcLptm>d16vwJx6(d{S6!22#eYv@YZS-X)TwtZNm0u-78Rf~RNz0U4e7GvWd
                        zy5<0+5*kqIz=k!$W1A|#EI=915Qm687KEbS=i`;)@L%VRMj8H^u8Au~D*{^+ryeZ_
                        z@=5%-8A+lbB$+oua8-u!fhgzMg#551DkZn9U8>sqoDF(&S4<+>${xFHiFx1?D(XV`
                        zw!_$=)E%S;fI^AB3Ro)K_(=SbMcap`COANRfqExN!lPb>7J=k%M=-!w)gH-fd?0r7$BNjh!e-ca~f(y
                        zvScatQAyG^$eem-CmLkmc3Lpke*3}ipCB$n(TwZU65B652fd?k^jf2P}hoM-!
                        z8Vt&5Tfar{;rc$v8eTKLf-JO!!>F63wwp&xvWiYOqMtdS#RIFI#FNT@hvR8E6N807
                        z@kftQ4RJ`R21rZzr%Kq9fskFl2v5#{Bl>|clfp*-onyzk4r(f8DEj*>wz231E2g)i
                        zFbD@4es)MfMqtI0en<~
                        z6u>|h>H?z4N+Wiqglvyry#s5$@IqB+=%wp5kB5%cDktzK8e{rPq5gK<$n53AA@1q<
                        z@aFCnxO`(aH-~^thca#(q1p4quiz8PYV_-W
                        z9v;a*w(ahoKO9E>H=Hi>wWknELVy8+R>0@$GiF3X)i(5*YTq@C6CvA3RzsJYhEJ#uE<)Y2%)h0SYVOf>EI#OW+Q(
                        z`aYN%no`JR%j!A=`vDHzvJWbVuRVGHHA|fr=%}~)AZCVwoM-(oNX&h9#dfyy$Zb!M
                        z$fQnKm?v}R%4uBt(BRUu<6?Cxq}2ta;=?lr1spyWu0fUy4MdinX}ZBlA1Qx&lT;+k
                        zB|JhgSUP2kwuh_>;i*>_br~@(`5vT9*0RQ;q0%CIE2|1@$3P|{ygMfKxbx?e>{(4G
                        ziyDy<6}S!4X+EyqKMt#CFZBi#*U4h7QR}l%nI7^dM;N44dMZapwjMEdx?R58`VX|w
                        zk5;6`RK<=oBl%^&C1!2dONe!E*(l#R@eW!f-Ig;HNuLtdT}>zuQgF+x6Y9>2vo#Av
                        zTkfM{9TP@z!xEYUm1SRLP3BE}R$;N%%Jm8xM4U-JXr+WNTak@wJ}btKRK<7Trb>~L
                        z7hi~3^5jYWXVlz5XtD{bROH`AG*A3SAS)pLZgg+xoP8n0
                        z8!fAQ6v1wag}&l0mGipj`biOXJ%v&Txpj=pBnS7n0Q`mJbmx_~$triwuS)mg{!`xL!pStg
                        z`jZGfg;Ho}Z1|o-p;ZbejX3!@jmq%@R~x^9
                        z5}Y&9jA8&b$%myeUV!257UY@1n@M{!6n{u2>rJ)CRYeat6~7WUY*yma48S9AeEtsb
                        z%wAUdx^}0}N-nIN4_YaSJgV&{;R=a9g>H%gJ2b)8pDqr&F*0FsKDKFqYdpYM%cxQ@S{$&(=}|F}PA_jZq#-g65mqRs$J1F~YIVl2!OHy_U0S~V^L+c7e)Hnx
                        z-pT)6_3v=d`pEhr{l((H!{*_x8NEw(uL<4L*+}}f5*IZ3inc&XV)>bS8&1?C@odi;
                        zUB~FRV@iK!NYMv`jiwCBS}lxKMO~S!#j;Ww{ULNPNN-d*Di@^1qQPA37;QBFLHTAY
                        zUJ_JG?vqNA@rV=MB#tfoe4j0R5`nf5)b(!LMe0dH-7%d$jVOzZLJig6b&D_n;+R-Z
                        z*g@GguC8Y=(YDR_n>T1094!sq*uMNJkOd?jL|>ntmudPNKPg{3HVO`mV535%LR*id
                        zSJPMV@3yXN04~2VMsd5|Uia@>
                        z(5)Wns1?iT49oE%!W3#dO^#9@2mhuYg;#bPS#87c4GbI2;5k(Ss^G*|;1q=VoI<~349
                        z_^99}dOJdrM8PQ`Zf#hoFW-B=Vn3F#UNN$CFp1o9f5xQ-5SEr>FhF-%c8b0b
                        zUB?_)x7hM7xHaWQ{@xQmLwTC43_Sd;8v5cPCTp@m_WW8!@lrLs^5X-2tC%&W9EE}p
                        zBnw%^5uS?wF;t02d)pdyV|57*H
                        zwaed<&oQDR_%?dV3fc(wE3206(Y8oYrwGb^-6Cn?NX?T(?$zghd%>}G3@gSUo9
                        zyqwVhGgtc+N^XwMOLY6a2ppFIOn+U*jxA=(u9(nXli94gvz(nnL-5nrP!4mFAR
                        zFKTagdIKkZ$^P9o+gwfqzCW~)8cDtH#oa%HQbin8=vtv++BFDl{ZpOHv^yJ4I|&-V
                        z2Yc?Y@Kt)mtbg;0CcfftvO5!L{uZ!2LMAAW&srv5ywSPjfcBF%9YlwXxHMSzNV4)~
                        zAnE1%=Jsn>aT(T5dZM7Bf~d+bm~@J9L~fQ3DNS$X+(7LPYvr@4Ckwhs&atm*pk;6_
                        zBMPOTD^F7+;j&rR%+r#2KrluqtMG0eaeWIw)I2OyWg7Gs$Nb?!SJ=cU?&t?v&ohcF
                        zo*`maxex78dlJb|A<=w7dYRpdDlB)+r+6N%^qdtyUT@1*B_O)F1ycCUy6
                        zYS=o(a2k~iq`|j~s6TY;H>1AV}zX=e88;SOYCVp`(ImAge%CopvH=vj$#~
                        zQ<>|2yI4SYeuO4{0kNuVs#@S#VOz-WVQalFc5v))qDcaVMnX{y$>>9&
                        zDT%FdYfOY>!l$kzK+bso%SOBY`sdmSM2F9Y)s5O~xv;j9E$a(K)=6!kTnxz2*K0sx
                        zyQW)tF+wJEAiH;ba>5d$Ew;V(B0pQgA5*lYC=7hvz==CT;
                        zHL+pEY$I+(?y_uvmm5Dv>sU&F{Sq(E*V-32?}YIo(sFu3NTB<5j5*k%RmJpM<2i1Jt?fYO4k1`s}V*9+om8`EVu2<}uLa9%^R8
                        z0x7eJ`+JT+)O=2pxu#4;F}Yq^MG%EEd2)nY`SsFu_BLJ4qd8{L`h8TDfkOFPX74%E
                        zhH7$QEtxggg3X1z?zl|!%}ckvucR&∾|{$ghdGdHbDhmVOvwS-zU{d4fknxDuvX
                        z7l(WpW?L^Aa#~yVvB;0)Oux?MMiy+^Ys0|q*|856w-!vhU0nb80XDomPnLbvAz5ZaV(Ey0-ZH34qPLX!OW?UjLr|w6@$`GWtI!
                        z{G?~m=*jQVc|9mw7$!j$n^+v)@)z+*8IMa`*#60tLgwqaLMGvjf|ryCR7~FUwL?ay
                        zXV%HjU)e{C8ZUy-Pub9g)f37PYT8iAW}5I<
                        z%uTMOK897a3vf<|Xk;xuy|B`GcDBl&T?D<7En$I0w=gYQayeKZ1u5{A=Y*bAZiq_;
                        z(aucOC_~9?QE(<~AWQV}tIe5voK4qVxbOv6K5MJxSQO^bTncY^3OMu9U&#Nn67rSe
                        zoihyq1l07OHTeG}bUFT4B_u_C)A2uw&SzFF&zns|szq^=bo`L(Ug|QU)FJVlRG2|z
                        ziLCE{M8jvo&bj2f-CM$~KZ;5#IvrCdeAw{y>X?qB)0e@q1;Qpc@ll_L3m$7som{Zy
                        zq`!2u^NyrVx9i{c)6L-ZAtBsq>8uzZj4lh8O!FKdg7$;a7-OKTbM{zc8+dzmqTNjr*KqzyqvTUFJkoei9Qn$
                        zE})ZMp*h41cNjuuilyjLpCyte-<*=0zyp}a0z)NrHkD?b$?>Z~QRo-emfqZPmfsrL
                        zi6YTMzHI0iDUsA*JVxN|Uh7Z~jcwl%x5ncJ=-x
                        z+w$N)0j!K{W1O=(-YyJS49v#xB8;mYtpnn2L&Oy7x9#+SRIQhP(gKvD?%M6?0`+fi
                        zV4Uht>Fs
                        z&kfcL$Ur0tkkG9MUrtph4w2ScW27(wM94kq^-*PC4KlleZCGCVWDs}=z_!h|{9p5V
                        zQTqQi?eUm5W1K-AP8myT4XtoZJBgOxyuo1U;Z%B9|C8+2Qeh*)Dj7Fs-XMOd4^}S%
                        zK~JA8!m~AJdl%rOs%wAG!AF(nnRY*e!n2{(*2U1uIOi!D$v%R
                        zgZgb#QzBCd`+s&ze1G8=2`cK>9jQ+}X8D%Nj<{R}Pp8WnE?z~_WXBwMF&L}u8Au%1;fPyLI1VsOnlp1HUDFnOXg`e=X?N{S`I&+zdn+mu=CgK
                        z1&)MOvszw3fV+;}zTIZhK>2+hmG{<;s%TlA?7j|=gO6~yJ_pEQHSjJP)Ofw?w)chT
                        zHj$zy+D;<&Lv*cly#HyR`g5%{R~EWwvV0YuS4|)1-CELvsJT(TKIh>oKv39%EOe&j
                        zY_2l4DoJJ#ts2M)asF-~J{uF%jsn!GXrD>fdTHxTnx0gX+^kq^`uS@*Jxb>mY=Jpf`u=m-fq5Vl;p5Ut-1w>vd2EWCig1Ptwc;|tfv8t2>GW!0sm<`&%WK*
                        z8Qtg~30!fjNX1QsRdON_-LA9K`#q+o5Km!{D}!F1^ZxuGJfv0)s4ZTzpf^nGEEtSl
                        zdLxU)v@UdBSoVi63H&emjI063p{zI=-23N-zWr#%HXHyB)2LU={{6C?ujKKU`6GIO
                        zXj`$})$lYb^+P8F>wTBnUN37$C@7ALNxK%Wd6weg?Y`y$L&$}ly09mS>5m?0>mbu{
                        z6{8Zw>+++HS$8$Uj#RwZLF)+D!*;9iVJb&MqoP67b9I07lT#q}v+(}Te?#yZYTH^x
                        z3iwvL*B$&+EFWM{%KVkzCp_X;JWT_%VC%sacT&#&Y&Zm#e+&yr3pZeUv-{yBR
                        ze9RT>&)$Y5NY*f05gn>C*jpB@_aUP1B-M<{Fm{}`5XuRHA9b6I(@oVcS|zmbN6MD|2o+!d#14xY?{ayvFo>zF3UTZt5w
                        zOXd1l3PKT0cVPw}hzl@unUi^GW5ym9kp04;B=f0x?d)EeO<>hLI+?tRxoYoS1+hy|)88r-|5Bru0t+Ql4HH2PHw?es4P`z=8LSt4Q!oA6&-Qq}+4|+BXccaJ=
                        zJ!G6KSdkhVN@56^)ieaNX@1%xDbpdJp?jOmcDcWLBj@RKqF42v7WeyqMLxN6A`QSu
                        zfq=jV|9{^<&i_pUSUGL6CGI}b+9!3;Zz7usOE&1HI>u&gwZE{r4$qv_D3+sz4w<(d
                        z#KRHdP?swoi*1E!D;L;Bg>Bwu@xxLz_7I8N7L~z7<{plwLL!99=
                        zyc(B8%X*i}IWFMHOdbZ&H*EY+nNmBjcBD2;xF;E>n36jX9GYW0c8GuLa6raL;CM~z
                        z>>O1Bxfz${9Z2(Vh~g{$r++#pKvd$PXxh`}Pq;2;-3_p|N+%VlH{xUBR&)Bz~i
                        zVIT{1NOc0V$cYjK*4>o|nd%fHt+IVgSAlPdat`XC4s2o~OB#qe2f!H}RHT4mQQs+5%oHUEw^UpJ@8C4efG
                        z5^gnmhxX(neUZ?6rBN|M037k&>SA(x5X2&mbRt
                        zn!3c8D!__K#$Rzro=}NkIq>*!*bwt4s{tGdhwfjp)FTKP>v`+?bZC$*A9|2
                        zA>Yn%=i|@qIkJQ~Q4Was^s3K@gCbILbu4V*;ozS8D))*Wnh3_sq#z4ldS?6;C|OwN
                        zMbNB&L9aC{Lw>!tMySGl7i(KD-~;5k<RB5d#`*l?}z6;;R?5oLw`@8tmLJ$3(&^<3MzA?v$MI7t+Gug$ldxS
                        zzKFv5NsQGmLGrV9x#tX9p@p$;$AV3Edgka#a?A%ew?{IB@S$w7
                        z#={nY+3)M^tn7W9HeTW0!Q5r$M|3Ve&1pba(tb}59wBqLp_YXMpn(}GJ)0Z8{9Z|0X9V+KsJf2~
                        zO6iK%49}T|1c*)@Ftp?tKeOw>6jY1ln?Xqz17^;PL3Ur;`y~f#RS!~_4LrLi)HwKz
                        z5)BXFfeD7)X(W*l@{`Q|`>&XOtKirVKeG9;ErP2yrlVYH?9r0|QE+!@8Ol396zs?y
                        z-BH(c+y&}UU!Rd)0c50$iaGw_EFkqu5x_ee75xb=g~38Ef$krzy}9t-G=k-DLlTTo
                        zZ-c~OE&?N(G+B<=-@g#aC^LmN7V%bFFmLGbGv9lN$=~wE{MY@@FQn{^=F!J_m1XX}
                        z-rXXm{t_gaJ*N+D*{NJ@64JF85U0rAg!T`Js({Q82W#-($>&n$_4=D{JD%ui-QE)2
                        zid%!3h%3|4q23IV!If2G)Sy5d+Y!9LFvC4OO
                        z#0{b%yVO>?A(gORLB$e%TOUnSh#tsHQ~EWWYd{|wKow&)9Ph|%2#||oZ19h*8FUv3
                        zZY1w1OvbO)@54)|w70bM7YEYpWDlOjKcmg$kq#|N6gSJRR$6?PuNT-3iEPdjdIhew
                        zJfaA-Ao)KFf1m~)Mxs7*4knT9fFbmBt%veN$zlwL7FP5=((|hGZ9E=W>EiwvMeGss
                        z=yvGhw{O-B;_!LTNcng(W!12Xq9iE@G}mxH%=ro0=~i#YR9&U?mwf0ysH{p34Kb27
                        zwAf2lv&Plzn8YTpZbpcivecGbmAR=N#l5;-OM9S?znWjAbc~YG!*ha#oQhJ;Y
                        zjH3JR%=LYJFp9tsVEWUT8>!?tWvmZL*esARd5rYVd7(~;4R=ZCH4i{T?rcMFsRWeRm5fX0auU7A_g_e@bUsPzTd}w9wDT2@+N3??Q>-x&uPC#-oQ?jCl8Z!u-{BH
                        zYN3Lj@QjA>Bhl98g<+`#B@Z3NYXq8>#eR9`#<;Bt@
                        zCJo3T{UkowuuAVs$_PJ#-CaDLWTmo|Sgg*mSP1R{dVYkhbxYR?4_IT*BzYB#fuv
                        zd3-YbAgG#D_CY^>b)Zi!AyIx(PvD9ajHC@~a}e4A^=cmTvi#AIxycSSRXA_pcj4Rf
                        zwCd;Ny$DIx9Xb{g=JI17=AWE3o%nvAY+vx0_091<8u>v$b%)5Db94LrlHiD>5}8F+
                        z7BnZx&1D}bpR#t%#o_ve+FHQ&i8KkkMomjT_;KTwNji&fi#e^5v+sDII%E11%CHx+
                        z@$-fD#C>9@P{6mBB{%$AeHj>aq5eoLD~8(Bn_$EIm84%fk4FfT#U!#Bjk6J9l$8*?)cf2nV4fc@?NKmkSlsI!B$X-%g
                        z-e5iI#4g6$lxCk#Sl37n)D8H7RAk9-=sfr)2F$Di7fsg?1*R6aTpK$s;i|0}2$0_;
                        zgZ=Uyyk%7ivFoY%p>O7u26nhf1Z!2HLHnwM{T!77PMb;q2sDoe&bp`VrC)z+&86Rd
                        z`)5A@|M#vy3{HuHMzF#gsiF@YDe5V1mw$3C36^5w5l2rlN=CC7buX}bBUNwE{={ux
                        z$yaDadNs{QUx^_?Xk~hk4UOpHM$r*DKp0$WsDcr1A4u+i{~5fK#fro-UZ$b
                        zzCa9BdwlPz@ArM&t9ftRJVFYx3yQUC*h_%Ws)tCwf1B~VEBeO$_qW3Cy^h8lo`jDx1lyf0QdR06LtxK{AwO|vB
                        z%2Z^&t*r#*6;9B&Frx8;19^?|AwX7YLBuAevKq~7=5cO!#9NH5+KWZ|l3-c0^&iz6
                        zMUtvuZoJYI=hot`ovcZ(9gQW^XR2CIDf8CuE@1}wTPTNOln<$xe7Fh@afG^u@=rsG
                        z6!%|C-(`YHW}Dn#jxB98E4p4Qd7bDDpq&f_n{%zA(^(5wDdgfPCd2&#R)MEgX}YTM
                        z2Qs4`{_vvibn%8$G*}|t#l=$X2)G8&=1L;}Ba-;ZGq@^u;NEy;?J)l#CJJ>>h)a!{
                        zCJ!8t)i=BZy1EPrii3f+Kk3Uh8+eh}!ht#2V33vnl}?C>8h_0uN2zWMIE#Vs$O+3f
                        z5FcYbV#zaYzQ<(_{tH08hLARSC7NQolGy^)9t9{}1vqx=GlgP#h^>_)8wSZ#G)nRL5x!C>+MNr26)J8Yv;g?}f4^Z&
                        zp6B$Ef-e#_GSb@Epj|Ii`4{_~ll?pbQ`AoP3m_15(A|R(1MQswc1XL|>+iPq{BbyL
                        zLY}Oh-Er?#PhTztX#z0XLPfVvSR`4~Nnll*>IrZHRI7B5^;vWTXo&0U*qdsVEsJlO
                        zY{EvOjFyZshIG>5K>EH!C25QJ&)F21D|qM1&(HP~x>W-Ok@PHl3!su@CuFXk|J@sA
                        z26Rq;b0dR(zrF<~)OmWGO`VTjV)DW(d(Plk5ap|;_RvDq-ECaKwolgqe7wWrkr%4k
                        z5dYg8@u4NrTyKCXFc1>9Iz@_YSTRZ^QYFBMG%|u_~e}~!Js;BlPZaJH>KhP&EUPJAP)Q?
                        zS@_eJ^cZbK!jCaDRJLtn-c%uAGzI%5icsKfessbXNqwVRR~1ctVe9?tO}q{?O5+rL
                        z->=WMy`o~KTB%K0n;mfCLH=$$Yn%x>T5UY6KA-AR6$fylV;=kkYyvweqN`aQn}vXr
                        zh^ES_(tNPH{)iRh(&(WzE^g{5Na3BCNAF*;qRw({EXPY1`pgDhJ8m_8=ImhYF5;eg
                        zZ8%OtfGX$egGv}Xkl5NQpxZR#b?@&~QN+3l7-s4;3eXz6Om``uz4WtQc9?!=2y7Un
                        z)GkPQ=hZyQJp5j6k+Co+(Sy%2h~!s>cL>Rey<-N2k6!4x8-2mv{=8!f#cTuXW|*Fw*fQTL0
                        z1Q?Mw@|4-tUM&A|LKc=jMM=h25b|0g>@`E)Re^pj?GEa8hW)idY~$+yHkFs2neSQP
                        zXGlEi7h3rz(M{5@F30y8)UXR-@_UmvK+xLhZmqYmgMhG!
                        zj~AN{kEH(d%2ZX_;WuZYf;-mGPn!xVx##z;T(dN*wF=|*`j^Ls?J;Tm-FiefrH4^C
                        zUas<{tfTba<98}1y14UzFEC8e8zg`i1U5OTT1eA*F5YFoS*~_DW|8uw??hAFZQ#;7#5V8uczS7*iIf}-mt#M8G
                        z=h4irH(1KnbPb4L?RQTHh$f;Se66oMa)}Lq_OusjJm#Z_R0ZTpH2tZ(%<8{RKi`F{
                        zm0^>avFoa`8d^+VD+dkQ*d?_mLDEz99|hug0Tm7tl;jCXPLTXh8bY66I@M2MJ@Cp<
                        zH&kEv>;OD@IMH1g0KQDk4FRy7XF_RJ{9>%n0j4gM}MY
                        zLJo8IftD6DC962W3hFufw^2L>PhuJo2TVhkFnd&qev)!pq%(w&QaV^*JCpj177m|B
                        z6GhHsSo+q|eZcAx!-%@c&pA0I?UC7M#1uUIx=__@zW7KXc06>bvls%t2xeh
                        zQ}%;T$8*m@CsW1dq@PuVDW<^R(P`O~fB=1tuxTsR|EKKwHWmKPFWUcSrAfRSyazMN
                        zNcfW*{_HnQ0Uzk8)|#dwQ|vn`gYt^eA+knckBFtJhX)_CkTHnXp}vI;)cY-M&Ymn!(^>2aY+Vij<4Z?2kN
                        z%cHJZkj>?bqG^hC5?&Ijqj8E6K~R$wC}P%;t=3V$MrA|5p~C?>TL5|G6iK?5=
                        zn^tBW-GBbscApDZQ=9~L*ill_hUdJemvDoV4V)N74g3t-utH=d
                        z@!(~2XxlpycIiH_FgrD4qM{<}i2DpN)1iEm|n7O;{)#
                        zN(-oqYtEnN+c|u3e_`=7(K-QbC9T<-Cg-zD!lff}1uN*(AlaY_0zfeR9FZxEX8L{V
                        z=sfJe=4F9rP-KpmkqT{33obzzx|k!|79!$ui?mC2(DiB3oC{+mTtvoC_qi0+a4TNX
                        z>}8nJ;qc=Wax+0bX<{Bc9XK+_;|E;Xrj3<_^n&j{;&U6ZDGgnZDXua|*DvmPvexNy
                        zp)5B_E&W8Yz7>%kb-{~j`eEv9Ud)Uvr;Rh$xAhtQ&=^)AFZK0X-+ByDjw9@}j`6Z}z$N|2Nj6>yF;G@&OVH>>X!HcVglvv2(dPK--N7vd
                        zdPKwGy)L9|JF;c>h{qUxLL9MS8(iJ@unPiS2GwIur@34=Mshi9^TNljH%mkQX|ht)
                        zk(+sK?r$(6y%J&JbSv%Dv@#4i3Kbl!|FfO{?E3N4oYQu*_qh5Yr_U^x+)YVYw+^Be
                        z+dd0b8xYyXW$tkq0^ga6i|Y!hx1L8GtmFLvo#YPyIRazcFDGgjTlN~=3}4u8PPrXt
                        z7y9!GNwc@vig}0s)dTL`dkbwd2J}Ft<`FW>&804bC>1t7@f~toQ6#$^2Ik19#+|z_
                        zfE|KIT2cMJTfAip<)(RYeU#b1_3ov-rGg9b)Z%*N3l}z_IUeY~$?;3@qbL^L2j%p0
                        zXwfK|=P8p}Xn`424Ne^FlR#EVIw9o=vl?0zSL`U$gWbhzSL<3mz?-kDSkF@q=P&sc
                        zFBx!@P3e3CA$lRUWr1S;<4jWz0J2E!`15WGSfEQW>Q1yYR{b>B5`_wDEpC49+(&({
                        zmK^Yh$Mi-o2v(%DGk~UEc}S2D!Wfs>#zTxYK;%^#9ogFqW2Gg=Sy-I?*1bp_G
                        zA+a!Z-K16LuGLTi`3S#6iP>@R9}6P5xzE&)!yK6SKWWty{1
                        zI88D8O8A%AlF)}rdbv*yRC|G*MAPm;$jC0ModNJnBKk~;Y=G=nplk=j6ov4Vdxu>R
                        z2OD&A>;i!yu13_=Qzx?UgD=(fg=uOvJ0|d4>XW}Wv-`y>r$8Qd$Y~{k1(@G>%Ysu2uYvQJsWE+(?Bj;fdTd
                        zr3b!avNPb&ifETLSS%8=1>A+W{n-R%0&fpQfc>#~R$x?uvkG4I+
                        zJ*fayx~4O7sEx0$8tCmG$`sF<#)LCh*B8~%8LXN%eu<@~ly&-%xnVpC=^oO}#SG62
                        zN^C6e3N#5OHwn;F1&8o?Pf<-ZPv*iGEpT<=qS!vzIdz_#Y>>y@o#x<|b~C{~PnaN0
                        z#{A$fMav2;b@!u{mj$!2z^GdpNr>C~CHEkhDcn3E1FQzJcP%LR1>KNYS3U?}B>mMm
                        zh?PujyOn7GOL?4|MgwZ0*Ext4PixzD9*5q<@$GbbPcF^X_k?=WNnqDyB^eGSpI~r#cEL?<6$)sf
                        z*I+(?pGA3*?+^Z$)Dq2C{3aGo(P=Y6A2zLCd
                        zRk6Rz7MYvSk7id{eQhJo=3bZxzk^GLJ7x8`R(MgR$F-TLw#l8hT6|FnLAjla}q*GKhN6&Rjj%R$>g
                        z$bdH@)|#8bP0@MaHBQSAXoM*Jpx3!jI^dj2i-AgVg(Z)^!#rQ1HWi?>*;;J@)IAZ2cHeF+1R=&JB~VohTeE*M#s`g`1Ptqg-i^@M>5ASmdc2hNc<73n
                        zd-4vP4HxqOade1?P9~jc?od*|R!9(oRPT3d+r;a0HQWT1&KYEcG@S}D=hP6+pBkyA
                        zye&5)KhVT{+~}g3Ye$#_Qcj{-;?m~8dbNrlyy(}r5>ubWNWysDa!|ja)E!QiEeXQH
                        zCsh@p3B1R_winvUCcKV}E6GT`U&oP1MOTh@5*p(8XCYT+uK%>L{R!kSSIR5?VrK4zGwFB$T}O(KOC*CZOYt6$Qe)BYbnQ4s+ti|6t{Tn8|FV5w|O
                        zAN^UkzU4J*yeGm0Kzzwld2B!hwx(`!9346xCQ`tC?(_8HB^bx170$WNv9(i0;S|l?
                        zF4_8C_Wr;(t1ary2kE!&1n!y~EAx(>vYaalHNFP;0Pn;H|XHpGb{aY@XF>
                        z^@n#>ISSvEViw*6vF9p1aIRg6{?kTLGC=?OkyhxEWqNBz;!FxzV3LzBnJ1B*sgPZU
                        zyy5{>B|S;rLOSvON)__H#Lhexfr0R@>KJq<`~mn@_qIj)_#3GK*AZ6V8ad%VbUNifv7c%4Vxd
                        zCOgo%5}T@d-qaHQ&cer1uXT6f#+L#maN018`RD&FcD)(`nFRk28)f*fTjBqMjs5}r
                        zFKnjxKl$Qe8}k3C>pXy(>b5;j6QoL$7U>|;rAY5hAb@m`-a8?50tkvCAU!mtgEWJH
                        zB3(iUDbjnF-a8*96kopkxDRjMclXSm%sF$`FMB3?_Bwm*to4T<8F+aqyE-{`X%KaZ
                        zl>0hH&=lL7YMemCNn;8@Bb;A#d!0>w~V)qk<7bBgY)k
                        zdUbGW6GC1bmT7GR*z62JX5>X=BVkZobVu-eo`>x{I;zIwBO*t^Si@s;1XX?B;~xh>
                        z)qve={t-KYI>i1$>pK1xLC8?$He%Eu6}CBMcG{nk5=^_%=ij?!1fJ=7DX*+GtE8}`
                        zBqqC}PsKUgo9*jtkvlkDs4sYE_a(kWu*FdzTf17LYG6mfc;m2WJF$4hwH97q_rM>#
                        zq(yx2!>BT=s}o^oG24*r!?|a5I3SP38&SwrXk8z&FeY;TTNOPtni)
                        z@{1+i7ss0kvj7X}g6Ww_`Iu{Yur%2c)k!1V<;pJ>70G4g4K$jp=`{`)cC3U>o*U0=
                        z5y2Z1OoJb}aZ*+ne_dw_*TCx@#2W4-+c8pEm^GW@INN)Due~}A)XE#zbwLstTKctp
                        zRrP0>I2Ux~oj(FRj8ziogYzPUpi;=92fv<8Ed&#@_yJM2C}f
                        z?3zNGQP;fT1(iYst;93Nvn}FSc%}|#r+CUuF)MfTrv0U{dZ2Bpt+o)BhfbB4Ec72T
                        zzLhCGr&ALPEH~C_rQIB2g5%k0{UTs8XNk;?-!Y)@5)G}%5c)~B>}>uOb82DyNvR+g
                        z3Bv${;t7U8)O+;|S%Y(xZ|)+37`kmX`4C%&FyLa6**UQoUUNkRZc=;(vn8Kv
                        z<4HFIuH8Ld0rz4tV$G8=$FrFLtj=<1mBLdCZpEmlulbc5RkpA6`Jk^b?iGhgDfr|b
                        z8*0q1c7>#q&;vQs_c~P>8*B&_YNxX%D*!C9ssc-M$w0~|>-n@-M`1;_kgU?~7Z1B6Y%PIC^n++q-h2QH2W7J@-bobxo##K*x)Tve%vI)qPiU
                        z&__4At39suUdngZmU2@fpku@jsAp@86N^<
                        z+hoHm#k{It@8J{G!K(vTIz8*|tc$st|FQ@$Qzt1O`_;NlUdC8)H^KYS_~7}#5uB_e
                        zVJ9BaR`{zM+s2Yvrb%*va!^aO3E{LajN|r$H88u)swy%pG4rrpdPqff5*mCBRUc-*
                        zIv6+m-pB^L+uHwL%C^0Au{QgeN+#RUVkpIF;!pGStjRzc9Yk57gei|>{L{&$VJ;wJ
                        z&uYTtkziVIp7_KU49SA?W%M7*JZZM=zz4JT?ddP(cs*3t
                        z*}EcL4kdsd{{DSg6g}h%g<$di)l<>jyx5I;Dkct_#On}DZhGisl)Pe>z`$Bm?8C^y
                        z6p4#7&4E@cA$7)j;47}$w0uT#XzEYsHeUfUuQE^#K8j&>7(R+2hB%HZ4_{(E6J{@O
                        zPal5IwW=6n9mRFDXoFxkF5qK@RN2Vw9<^IP;LG@8=*RXYt*{wiM|~~-6*hfV{Lvu2
                        z`mhbQ0kCR?;9lJ$r>c|aFD(L!2s0Ub3q_0TulK;Q>84B~rG#xmbiRWNK^=!McNG>0TzQES84TZhAuPeeNnK9ls4rh{ctu9|Oh{rJ
                        zELKl@&er(+Dq&3e0yW)01HF6mEwW5A1X&dP|ND&_g$-M1FKGHP@tZyWciejvy(a@x
                        z+2n#6o}5P68#zynOpFyCX)_qaU!9n$54%U`_ZkHa<+V1a%uz#nb$=NJHBQUMt
                        zNe3KUY`7mO&QvB{@9!_|AFr(muRHG7^V0t+WE9S2qdC>?J2L6d+I-)qz2hSeVUIG*
                        zk&GEWpdXq%sQ5x(J>AbA17SR!BcFf$h{D0e7=0bROJ+PRF`kBRFhbx};CDQ`CZ%*f
                        z3x4v1mps@lP1_D3(X*UtF%ng#je0P%7ROq;B;a0)0LyW7r`KQa0~APQ#^dvGd0D>y
                        zB)ND~s5DY(!g$^R^GBah>3LEsr4$gVeHN6&e$h;9$+2R)9Uef`CzOk&u`A;4Kek@q
                        zHKQNPyPkyR-09LH_<--=<;W1tU%x-~ne1#$L(zs;SKXHsiW8IXI4|t?#ba_((2`Z9
                        zvc>M?Jmb-M5TLgI>lYndc=Tgz*Vk6w(k5$IgE$?o|Cv*7T(RJ^NCte+Lu;VC$ej~}
                        z+g+a6=w*NY`WoXu^F+i7ZOrqK)s|Cn|LKRj5p5{ZS9hCM`n%e)+9WWtGcUhF*;N_u
                        zGNMX3l_8nrxQ6NJq8M=3%GdFE^<}sj;`9)Ruv1a-o~cN|;OBC;x1Xzr9OZ2khjk1{
                        zUSzw9_jH`QE6pTV4ej_R&+?SU26dbDW~n#U1_pdRyPCZ}`jzjD>-SxQ>Bl{rRI`p+
                        zE<$O6M@-d0rcuu{G~VGvbRn{Jd}a@|@=9ko+BITg%_+u0$staOBk;~VtYW9@D2FMq
                        zuI^YjPRzH@k(?H}i{KI1Tl>jW;}Z^}EG@_BPHw9VCr;ztkdHBM*KA)%WG>^*RIJl?
                        zZ81mWFI9(gpGuidIRS^x
                        z9J7?9ggKN>hRlBPhjGSd*FCRvv9t;-_
                        zzXbXE-a)_knA1U=()%O9k3TQb31RM?>F$R7ed-eEDX>%xvXe-C#aQ*u+R3tTn$G#~pFY%ax!5(;3
                        zlkzbpJ33g}exhq7M@EW$g`vQj{wUEVg*t{B9q+ceS9hK2h_&9(fSCt$pBtI8=M_fB
                        zc*7jLx?Giid`DLwee9#v=U$fX7FOeOT^B6CJt9#Uni%=Ho2H(&M0_8^^xzd*dC4Ty
                        zG^a$yBNO(qbC=XqBAADEQ(5``gB1V#!5}N>r|tR_!PXWg9e=JAIV|UH1JT)u!63Pu
                        zs*F#0&TFE-a6M#K7%npdLYl$|4>|=9;b?5H)mR&g+&hDn?vH5z+V)?!cAPB9n?#>8
                        zZfL@u#ZX&nK4h0)7}?M^GRAy)cex_VoUOp>_;MV-E-Xsg0x%i1eyMSuyz$UKa^bu$
                        z8Y)y8t=N|g%GPd`D)db_=)y-_Zp5;<$i)5P_hDMbtp4N|L{&7QMJ#RftfQ7nW`U(Y
                        z2vfZ5+qpr=P*dR@2I~bfe`Vt0h0psugnR7{d|Q@8aqleNRjO{g_(twm(~{iho8ULZ
                        zMu(?pe5}e-`@;V-HQLx)$p+nf-ubIDUX|sh>%f3^68*RZq06KXmFFn+%Ebygv*V?>
                        z6T<(!Lv&~We^TVs7TO6|IVH7klIqUT4_-Fu25F6oMrtVUP#~}9y7$GNTF=UF8>5ix
                        zhz)ZF;d{f>Bdg@fv@FszK2L@F{2hc;2^?OgDmGV;>@LVPBsI8F0tc{x2Q$uF*$au@
                        zt|gB
                        zx4NcohBCjg#wao2av}VXCT@_m=ls`aFCu8+rgMLVF>>#0nete!abXcLzB=2b3G=vm
                        z{eJDq>R;!>S&WJq0Oz!0#~eBrXF%`51<7oc*auZ|{JeQTdABp!lrP0;
                        znBeW{C0^op#bP>|tw*-XQ!zWHLpjWf&B>(imgD23uV2WjG?*krFzuu5;fHT7@EeI(
                        zs=fBDd=y!N=GEc*T6}D=zbCdA?&q*Ol2T|M%NraV9G0ona~g=2Ql}f4`AAngvwv-|
                        zo-Vrkb1s-Dlg=lGDb_}lKsPST?9t3)!<$~0WS{WkuJi7MbPGC04;U@vt20
                        zy|Kc)rKA$$48MGeXAVI0jE8Xd;R&ndtZ!-K+Ced}wuCvSZ(<$2Q^6|=I=hKK4Kbw+
                        zo(LIvv<^sIkT8P54%`?Q0J6BSW@>ToPBzV0u)uS6>Kd2s{wAVmMOxZMiv1nuWQiQ;
                        zgX_4o&M%#*@t!3nw5$E~sSwYjEd)yDBI)Qk`x??CasA^K^hWUku0IW0LS`<`m%Yb(
                        zG+^c0tqpxB`KS7`eqM#l7j?VZ3$K
                        z3QHHTe;c;l_??$!CPzpv={18@2HF=jU5;)S;=o!l(B7TBw{D2Ws6L{yhD>@{5WY(P
                        zE{=nfBepEabripK!>hZ%SZ#wVs%{qKxA(aD!AL8t0TM#)_~c-sW_XfN&sL(Gtu``%
                        zs)o38cmeP-=vA^j)YEl2%6$%
                        znCI#hAgQm3buNu}DHEBx=#-M#+y-4`7?PDK&V4u;udmD^%mQl@Pt-zVudX*8YbSK#
                        z=&z!DXhgdM==SCtZ+|)qViK&epmIHx#{smo^V7vgo3RWRbdlEbe4?I$RYh=Q3Pc%D
                        zm3MkZjYl`eutw@bFyb%1Ie~9avK*t1%N&7jPD=P=MMa
                        zH@Aatb-h$PO|2~JE30Q`C#R?AgyVmZL$;Y?DdT@cb}n5V@b6FHm~EOmlMwtaE4qri
                        z_gwn(+pD-l)6RgVU(n`Px-f@kc1-9+(NE2xxe9I(tNr+9_Yy)$lLW*uiFV%#+xngR
                        zVLlF0dbKv-_C38%@2HD#EsXjd6Q(v-)3(CJ4MK|_tW8F$B#e7{71Rilhsn)6^2Vq4
                        z2N#uV*W6*yyF;ma&@U2NraFIO(YB|6SJ=fS#cU$0t`tq`?R#yQP~3C4cG}nr-AG-u
                        z?kZT+*L{z-JNr{IG-$Kzpp<&rZWF=O;B$hodZ7N$Gp8tWaKj_UKi8|-v9W1V8(Aqj
                        zjL0{CLKr)my_0dF+S-4kz#KoVl@F5LKarzP(>*HN^b)6@G#PYgHZ
                        z1DWTO=gTK?{LBNe#ovQ1{gEX87q|dGz-qqErkH)^2Yv6+f^S7W)M-Mrf)$R#ReC#l
                        zu7LQd57Q7YVt9+q5~Z3@P-RyKegZtx^9|V#5+(c?n}$qg!#iPa^HPb2HeDX0!S_75
                        zqxAG*Xp}IBG*vY+81aUdWO(6cx&!Vpq$fIN1G|#3RVQ_nv}fm6I3`9IHIMO`8jy$h
                        ziyC`cHqtdV%j+aPm_M-~(t6&}KzsML8ESfco(cQ{1bIc!bO~@U{|jJGkUbq%k(_?^
                        zNtI<}L&;_ZTU8Juz=}~)czi&-TeLimC0{=M+HIs-Syfv$der*~<&_}^_gxh8a+h)XmNJ|myKKz54%
                        zun|LEsVnNra;s=4@mjlqyeu6-wjMlwt}dtyU!SufU*yx-$j*)Iw~YqrX8&Ng@>qhw
                        zF19?5R&H+2o;)^=o?sVC2)7&9%h3(w`A=wx^%fd>Of)nQa=}Lm;QrBOkZ46sJ-L4k
                        z%@*Xv;|8`v9ayZOD5e|IlEDcL4f*j$V@E3L{>$3S&6)>f?T2a^2bP(zM4EtsXlO)#
                        z*rB1dkla{;EPehr|4!4LWhNy^}k`AZ{
                        z)I8Wf5ay_eo2*z=1nQZ
                        tQ8xv*2*FrX#DAHcs4u6th`l&e#Q)9CzYkRYUU@0d+K@{UZt~w({{z-sg%JP%
                        
                        literal 0
                        HcmV?d00001
                        
                        diff --git a/PR_0.0.20/html/images/cpp_logo.png b/PR_0.0.20/html/images/cpp_logo.png
                        new file mode 100644
                        index 0000000000000000000000000000000000000000..780e8a32bdd384c1dbd0fc999b9ef9ed2e1bdad6
                        GIT binary patch
                        literal 23613
                        zcmaI7WmsH6vo(rKa0u=m!DVpw;KAM98QfiiyIT?*f;$Aa!DVoF7~F#8PTq6Q_uU`&
                        z+<6#grk}3r+TGQ?t5&TYt)e7@@s8vj3=9m0oUG(m7#LV<=sOJs3EDDuY=;Z|Aa;||
                        zc2je*bn`TEwSW;bcQUo0l5;SzviNFYV(#rSY9R;%15an8uI;9+sK9ULzPft%4PfivmS1VR_K0dyGIyg9(p*@&^-i~f2Ud)a_+W*lY
                        zX#q5IwQ+W{adM>kr_sdJ$=ywe25RYlU4n!2|557*{O@UkP8h3~i8CuZ3){a-`k#)9
                        zivRyz9UT5oZ=l;(i~noy|EFT0y0^0h>sJe)le?=Kbm1&%{|)8LFX3uo;^yS4?&M_u
                        zKeMP}?d0YJw03f)l28LseNZ$pvvK^_@bNzqii-SljzBjPM>7jKNg*1j4i+05bAEOJ
                        z8@D(QyA(SQCxD$@iicN9LQGPOO@d3BgH4*7SMq;kC7sON9V{H({zumQ|H?}Lud@G~
                        z!ND0ivZRHpjfaJ~w5yW?)qgIU-{ya}MdE+e_usPS|GO=c|Enx3)EL%(OZ)#?>i=ni
                        z`p>_w|HpBmKmL#FTR1}f-4*KC+tq{0FfiJ+a*|@|UMpvL$j15$GtEXezG@l1JWESM
                        z0Ot3kxIXM%bg9^~;^Mfn)QQ+W@37%0P|M%XQ8#9qX1ipV>m*xfR6cApRj#Mq
                        zPOSmMF`8UH-#kOG?=vk>!q}{cml4fNkNeJu4<72Qr|9(F+IlW#!=K>m
                        zc}4~#a3l*6O%Mi>{d3NA>+yyktr~t8RIPTIlaA!mJrgbmp?6_BqKRSmMc1b6C%^iW
                        z4R|}{mi?{KfAvHQL20D&i%&BzNECv{x5~FBIPQ7Idu>92wi|m{CcTn=ns@$6)R~`h
                        z3%+)GZ9@ImKGNpNsBXQTWAgaaUEb3yV3CJHGaZuDDo)t*%=S|CO=WAw$gJiq8&M2F
                        zH%d32=9zLCh@zP5-N-a+bVKq=g7B}MwFM6usi^Qbz(;SPqp@?LA_wTp2deo_K~?^No>i&@I;qSIwZ?@
                        zDh?uugX;bYv$yQH2sqXzeY|03-eu`|M#zPe^ItPsJhnUzvT%{R8gX6{W~7@aAjttVORUBPuiO-64cPf=TJ&Z7t9MM
                        zoDB!j5{v}l1Ht>*MRn|80%7>l&?{7ME@rcA1g$xG6SqHJa`%TQQPO-l^8`_R^<36|
                        z96)aAW{S+MFCA17(r%>rA9InUA{4#HjrT_nU!XeBVR%4O49|g4lYqh*>EeLedYt7*
                        za_D6B1!#-k8Q^PS!5*RV8%HDg*rs;BVD)tPM-ubdX4KV?c)i0Qzj%bcJ
                        z6Gh-Z2^m#S!9r&Xg%)Jq6H+1B@g<`Fm;R5bV54K8IMhaQ^p=`E{bi$MK67651c?GP
                        z#Kh*GP)kO%<(dg9-1q&6F}Hyr@ZpfIf6YJ35!lF2Iy*4TOUIp2khk3YYXpm?$p5Vd
                        zvT5PhO0UyTjM8Yd`yEefZ5jpgPZw83x+hmI9d<#NLn=Zd)A;LcTSn286x13j%+MI*Zh4PJ^hj*e_{GDW&rfUb
                        zB?~d4(N3bDFh}s*sb9AEvMQ%kGteVZ8k1TnI#z?eOd(L~vmXPwj0ze;P~6mkBc=1MNaU4++y1}$i!1QwF*w{
                        zs7oKCL?hY#gxAbe4*N$#-}hSQ)=a$)Qym(|h(_Y%#<-!Wf11VMAPec;=2j`JMNRoP
                        z=!do-rkpdAdS2*`n7%x+qtP>>4MDjLt4FWU*gZ9uH|Iq#sb!i0kC6CJKv!?~3(azY
                        z+mz@^(7V1%UKu0Kz*%r26`at)3(=>^7c=5_Vu{>zaO4zKG^-Uo&&uiB*kPfj_1)>s
                        zCwB7K!4&vtBZgGao}a^)F$nei$6eK6qhZfZvA
                        z54KO8M8gQZq9skS@d<$Xzol7vya
                        z&HR*|{|SzK`6ZVL%ax{%N|F?OYWJ*(b2PF`Q_oZ%If84>f+nusXZI{tCapjiEgC5j
                        znbIYFZ&bg}5s27}%`^vov1>j*8oqlus?`WG%ad_
                        z=|&A3!2s=@n*(+*Ce9i{E+;1iV-5}QD|VPrX0e@wWD9qkWUwKMJ4k@Cgcdp{VoQ_~
                        z4vJc*E7Wj8N|$1(`lj
                        zY^QpOowCazC?VKa`XzRlb_r4lJ{OnE<`NE~1{_uhVws})OY4hV_LDRi$ic$NXXIsb
                        z{#YsAG$`UII%Re<0_^}|%|f-2H}P~ik95$#+hA0Ko5NFVjRtiuS@EVX+A_p^lmjbF
                        zh}fKzY+jg{3hfrFIM5iT7xs-81yV3CV)vI=y}DH~J
                        za<#y}&@a=w*2W#uRxog#;rGx;ntZ-$712(Te4ZEEC@q!Nfad
                        zaNQbfNwCJ8j+}JNOmBlJZ0jQ@+1)S`&|`ebA@*}6h!^3N$X%ijnYD?&_&Bq=&
                        z_9Gq7m|1cU7W)WdOFMoUSHvQW+Ly6!Uk)V`Q%n$H2JV5~>@-zYL$41Ey`G<%R8SJ)
                        z!o-USJY+Y+$BGUlql%rc3iHf+s5&roMU|rf%2|{r?nxg!9}sb5Xn-i*qvMv|&U?AM
                        zWc*Sw!VicdL=%ijlT4?gN*WmixZ7+hx%~))akPZgQQ9)}uw{*c!qd$>sc;ilge(cU
                        zv=4Ocf))`Hgpe*V=JmLKe5MhZsW`Bpg-MvH;+I^#h3H0H+|w}@ND=KY1kZqgxmsDA
                        zN>z?;dEIbISt~m&-xswJLDO<)sKUn^)d;dFi)Vj?QBA
                        z#Gu1S&5@*?G7QCa*)EwSWJ0x(|HKRJ#Bbmv8rxbJ?NX;6f%xGF$CBk}OMi=K#gml|
                        z%X>dWvWiOnN_O5>&_vk>=+eQkNRQE_>w_;wsbU))(_HQ{1uPX%Vzzr
                        zJ4u4BJt=3x#G50LcH%y-@O$jfO+-iDGD<_`k&Jfv4cH{Sqj+d2whJd4orrlCmRk_sP>?awsCy6>MMQKZRuZl?YLagF85&XXvJ6ZzQ
                        zjL@I>a1KY%t=#^E=sH4@j~#Ij%6ZSRN29(mM3~M)XM1PA`tC!`g&0S4-i^06*D^fEaFlmempgkNnflT%ad@TMkyaDE3f?e8P0ppFlik~s
                        zzAvIlo(gLhv;fT^hQ6%^Z8TF;Q;+Ltk%GFeFy7V{X`w8cA!gUkgGGv-#l!7AsnJ&3
                        zeJ%z0#?jwIQP-BN`J3vIcj48}I*Pha-@WFxu_!MHV|x5VZ(+A)8JJ{DSti2+1RlpBb}*N0vNS3{W1o5U;Lxe
                        zBK~<)lQEU&sdfP6Px@t-buG)SFvMsMwm!lom8FQl+REa#+0y+^`7ee?;mh_M)EhQ3
                        zE#OE{@+b4N3h`gV$gO8|lMHV(=Y9`yU8uJTWsUsQ-?}V?d&4-nlyq{xUE~2`9hMdUM~f(1v)|J2CX0WRRj+oYMw8V^7;33SfCjYdm3idzc-U1Pf4
                        zBhkMH6d7^~3~RQM1JnV{Td$Dt5vC8JQj_^>cmi
                        zMNVVMKIluB%r4=cA`DCFJ7f@ka%@Xa<`EjLu?Yz)TUQN<|64%ygos>H#){3(
                        z=sxuR^i_08Jqd)|ZXF6|x#D3X-{nD9kSR37}sN}fJn44w7V8T*k
                        zL+8RG<1c|`OstXnN0iAbSXezmFm(r%Me=HWa&5Q2vdQbxjvj-J8{quJM8`kjW$TZT
                        zysinMGO=lGT(vtOYM67Ba**#}01fKrS98xhS3K@5B`g#%O{Vod@xTtiod~ea*?A(7m2vN)4?!cpXdW
                        z6-(nQuvHL=S3Ax|z-v90YJH~Yt4J4^uPS(s<#8iii
                        zW;^7xI3JvEt^kU}UQt3ut$>#d4g
                        z^^-{O(K4Dr^9l*qhS}Dn!8RXgEu>_8qN`MZL^pymfy2QVRI8@+P*n|TWwM5s$UB|laRY?aL0Qg&@W9Hw=J
                        zDch2V9R)1S5Inp&G}#xo@uvyn8JrrAt^p>m1HoQ8c&p8wcqvsQjEaYQhZh(n@I`L37d7axfoD1)okhfv-#317TnC#b
                        z8V^%(U}`ESHgbb$L7ZI4&iqiW0en^u>~0~($6#LisvR-5!l3cWQ|DrdbEFarEDXfP
                        zfcWcvTGts@vrq|(+WQ=vJTnJQ5b05i|A^|BZm2NO^qJfio}{!17BV!v96s`~R%2L^
                        zycMGinubSnF8_v6Sv~3BXH@8?H%d+gQrGLa5703aycW1GWG2~1Mhhm&P9GKV0&~Y<
                        zYej+-z3F8)HBgPLSWz1=e(?=+7U&@G>*KdqEXQ(Y{McD#oJzdHE)Myur7#z7;44%D
                        z+n`3a%?w)dUwc11iB@sa^y&A{p8)rH^|i1)&REe%QnJ!Y$E)oTK9|=0wKfhaadnqn
                        z;)a>Ecgr2&QT@E0HqqyzARQ=exAaHixE}OL&LkvwI_!U)n#fLL6alLxF6w!
                        z7U93#G^#0|^gQoKSliL(yr<@O(N@$Y6f9*Xs9q0FEZu}GBc&?G%Y9}VZlL@@3$%)U
                        z=jObkZ?7OpKJWofC}QBqLE;bf7<1);Eu$uiI2R}VhID@8Cvy|DaA~ZQAqP>uMSb4`~0*#BHD165|HV}B~?qEVc-ntP!Cn4oVZTfuSBp-)@-svcakI2mmZ|A{(YHkdJ%
                        zm8~$%707RpE3t8dU}oAfuw!*NvCw(A;Swd&aNtThEs1-09YN69DU4?~=TTfaUKzG*
                        z8c$+E5KJKve!x{ysiibLn?*s4)jNG@bE}`aFg?R#smnKy#6>?Des9RSXnr>EnY6j2
                        zy+$X`mgCAnlzsr`V^LhY2W5OVX(>5A9SWRt?@UTvS0~=_5Av1K+Y$_S>-}X0yq!D`
                        zw`V`?0=;jIJ6{ld{prR$@Moh!cpJQ?cei;{4nc>g*T=)I?^>w*(kb(}WzZhneL`t5
                        z-OrYh<{h*gL<@{sFmmc+vCk+`VgZFT(fg<}+nVzeJh6e>dTs
                        zuT`BJ@evh3j3ve^TDF_bIyHTQa6i9Pq`WH|CWJ|PU3q%d$GG}SxB;fSJLuCCAPfC7
                        zXh$sJQzI-_GB2g@Tqs&XJ`?n6`?o+pK5A!xL-en||Dj8N3x-`lnzt0=Zh>WHl93B*
                        zg2l(;N56W&vi&HrDdheWJ%Z|6(8YB2wi2*0%%cT%-7v^%)Q%q_hcQ{wptS@oJFLd)yr&q!;5~XGTSc{G;
                        z@r(B!zb#e!n6}YzjzS5nuk-bwc|iFZDoZT-2*U4=ItvcM^UZff?Sqy6dp|EBU9i=g
                        z9!80hS=~Pi!m@G>&@nGVOT}I>(%xizC4{F_!?O`{2KhH^q(kOH%v)$1K?Hz1DHzHIGqqoc-YCBJuHDw+nx8c|jC6
                        zZhOs~9t2+ubzQR~At2uaPJ<9MS)(IPWDilp=OJvOuKrFwc-N)7ov>bPI^Y*J8@6u5
                        zA>0w~P^MT_fFRIOjAqlZa(t)#E73#g-;MYxl7VKKdAk}uNpmesAb%qSYY~5LYc^*)
                        zmyUau20F~{w$O8EXzN*PIR}xMD1~=9CB$A#S|`%ugfF(9fY2kW|9}rC*1cXJeIu87
                        z&j8C*#)7dqt$DYH7=zctP*BM*_Zy;`fh(toj6^9`j~{?M(DyTP;Z&0|QUN?Ko11AN
                        z6t*4O0GdTo%1p-fvp2GZ&osm#{K-3Gs79oxWXc}EI>v<*u&g@!MNQR4n{A9z;G1rP
                        zU!R(hItx}qN^FF48wBykE#>|?9X!+?Zndyl7B*E8XDajwa;o+bL+wZN+}eqh`^wJi
                        zs9is4sHqmG<>-)O+9v
                        zX%3h3Wj2!7I1J?~hwX?lbb+~0987zH{ZpkaTl)cW&o)T5zJzr;fm^*=4%6Kz_Kt)&h9`k&PZx*B11<@O@5{sB+?i!r}_v?;RV*>dgi=!I%@D%c+FQ
                        zMs$=(kId26KxE{SmGYg_hD@_2yM1*~PnS`7xNwbt#m{s#a>Wl_bT^f-@e_x;jq4RzTSHHY60tS
                        zuu^8kczho26}TBtiPYo6f{_ErfWt&%VWuyyZA`6AUs
                        z%|zhqZuN?UD8XmibC1XxZ`)#WA+E@`E0Z+Mm+Rez1MBjzBxyM_!gGVXc*f1ieSI}!
                        z-4HG=++fVQ8-<(NF2*Rd`0T1XN9=nHD{H}P55AKXzsw|4@Zxz8lVNpOZiA2|H0oei
                        zl1d@u$>WqcrKUjjvLU>^gl_7K@m1`y3l$g34!s?y+ZRQ)9IfSS&-bTTu-&&nCTxbx
                        zF0`yCqAX_|L)DJVApwgy2Uf&_0KccnbyoasWGm1j2{@8-s&+M8K+{QTc~X~Z^hX~t
                        zt`$KrCgDX}lRy+JWqQ=8i)-pax0jDUhNe^10tJFA=~RGD=X2OF1N~%-qZ4-EqfyqP
                        z@=JEg&&c)DwXaK2tNAM-?xY^&*JsOL^O@nuJ@nKj9(qS(>F+yPDU9@reoVXMD3O*<
                        zjlxlAj)YQDxi$}TlG;MCCMQ8oK}^ybyN8|g1)ImizplX)lx+0*H^_G?5o>xlM{FUK
                        zn69?-Nx<)H7EUkug1@17LL(E#BrJggMX)TE_&D-mov(vlsK>}}XoyTW3%;GUTlU%t
                        zM{m?>tl$Nj77t`e754LV&dB9s5E9GE&#+!!>izI?lHr7+RoJAT?Yy|q@moMY+4bek
                        zMgzO=UZM$)!E<9SQ*$;Wqg4nykXa;k1pXJ)TdY2b)#)@eTnjeg;ew5io6M8R7VgtD
                        z6J{ecuK|t?i{Fk9G=PkIo)=Y)!;rrlVLT#C>a3>esaCO~GAOxIzK;qm_wxoz6FtH;
                        zLwc*EgFp)Tqyuu&IC?G0?v#b^d1+p+HVs3N2bZJse5>Z2BpzU^q~=(IR3R;E=l0FR
                        zuKdmSDqrP|rNy8_0N7Nzn4IA%cUX8$%xvtCy1TK-aQwD)Pu|SP{qZq7uk~Wkq3p9Q
                        z41=6^Gm0C+4ptc;(w_V-DQ{^!uDG5c^7Z$b*=1U2UQw}%I;%ElCP&2Oqv
                        z5C}x$@vh-`sr|=$=jHE$dIi17}_ea*1nJKbt2?h2GyTP3U5omt&F{DX;XF
                        zj`1=*_Gfc2pY>)@l>BJz#_KW6i&(hWgYBhiJMziZIX4+Fee|(3G7duESF(ib6^f_y
                        zX-FOVZX_V6G2s2O&3-`J6Y>i0bvc21i-;us!s&AyurATpc@%N@>uCY{q^9CyLsPRMJgzXHeqf|C;8WE5j+
                        zcVl?5s31%i%}QGVcQO%MW^ZntaDY0+Ad`8SbOm*__6Lu(72?GyvE6&y~@l=B#6175On;Q5-h2
                        zv>G~YF2T#)>zC{difR||VY%(`pwQHhZ4v$a^;6`Z=Q{b!vQf0Ug6Xgt0UciLD7QUe
                        z4ZA~>FKc}BhFo012RCeg@2;#Q$jPz-w$dQluKf*F@0872z1)IKa^#=+HJ
                        z&K2X+ctOwnJvnn#gLzW9{j~GF#8MZB&0Di(R>mGNh_#L%`-PO91}B+tAqbI;u=v68
                        z0gu|1KRDN&SL5<*9x1Q$9S*d$6=q>Rl5OcFZq?77PsThOO^BK4aT*4)8oieMlL5T*
                        zBe|hg`vwu}$y+GPE8@`;*wP@7kPXigwCY%Z%b19HYQ{7_uaIL0m!L7gC%FSELeCleRv%&c9Y3|C
                        zz8RHDnS|mn(T*9Oo=B~*?e9(Q`(2-@wb<7B!Akt2C`<)=-u^GeXHaBqX(QTU5PwNk
                        zbDX|9Xs)IdG|G#LL}R$CdBhono=o5>+2PO)XZrdGF#Q$iJ_8=Gdq<6I=BNa4JMR6S?O1b8@^H)Lc
                        z7s*%2`Z0lRk4(wjVIQU75&{ob1~XOtxu6NeeQSGr#H#e81WwP#%iV?y@QWh
                        z5$9+I`-oDM3{|~&)wGo~Pj6k(Ny%0Gq4yn-$-!(lPYD6}DXFd!j#w(~$o@3>+FlId
                        z$@mHxxhdkv53?xA`U0c4c(igq5Uu1r6oC(24H`1lGDy+PH&EN`8!m)#p#ede2TNYl
                        zm^WSn*ZtW$?G%tyOxg&Kp+3829p>8uODTW5|3cYSODULKcqL8|KJ+m~iBfW{B#E=^
                        zhVzVN`!w+|+T5{mm>d8KbEnoI(48p|lcf4J&Nx9U&8p#$>0kc@Nb%~bSniCHcZ$|(
                        zc5E)XS-i0)sY*U8pTz3T_A5XVo+`auh~p9
                        z0@qm!CL#)2w(UzUu}n6^RAc)S7ri(NQq@NeoKpRK%)h32H^g35L?LSEE&%riAKPw%
                        zkiA*PJJ8$3`%N;Ehj+~z@2(HzAiA3eX!N)@?VmJQG9(#v5S2NbecI068@k^#;G*t1
                        z2U*Oy92nJ-Ts{0S{EMD#CjdJo{B(T#n3PDA(D=+cPgZ|*P_;kjvRIOlpc0G3zB_cN
                        zsZm|{ne=IaEr29#@a#Cr0X;PX~H9{Rqno82j|R(Zq_9%&&)B>p62aIet7Tc
                        z&}`8hj6KC`x=X})chU*FX1!|XWeun!UT4RCI=zb^aa~Kr<|F#_5JN6U>z(rY8oH9c
                        z@ZqV`igY@jf>n5uWnrvAgH%Ppp$HlTL760ao?iugK%$d$BHvIjosneRj2a27e%gIY
                        zxS77gq-yy71cHnY)ca6&hufb0Ge(mgTM+ongWsf1S4CGdzWNV+*)dhZvU&Qy
                        zt*(n8zmX_T4+2!;JGP)gDr8YY&eXIz`56co6W&SX9;Gkn&Tdsu#gNNtwFu|77=Jx)`
                        z7TK@s%XgisKd_R4DwP<*lsY!2pb3dh_lw?cg)lC6k6#RaFg%zTCJ9
                        z1B)-tc)OmTAFWt~HShS1#T=bzYTI)J?Vofz-hL-aP(rzkqAFYA>9(x3dT4(S(g8iST;<-QG%sn(F^YNjJZ!|9qc}I=S5eN?w
                        z40YK)HennR;|9h}kPU%N02t3YnZbhA^wWN~DM?#z;9!(hZfgfoIltZA-RV_uq~h^v
                        zQc@b4k$hzgC*weZphJ8EKkwVjoD|#zeNy`4trfBXAN#hxjUCB}A5ZJw)2-UN2p8}d
                        zNYfyC?Qkn}FM0L{Z&CRLn4!7}qPl&jWA|G@N)0^77SK3hlBb5)_6s77r5+B(-z_b{svh)-Lg@|IEmGv6dpWh;%y+te>s;
                        zzT6JA7xX6_Z$8?^cir6Kcs4vkJeB9ODdWOC8|<8iH+jCb<`@7=mHiV?8oRk{X8*vy
                        zULt+N_f;sC`#q5yK~WzLtp@yB-F911)zC|*UaeQvZIq9O@dcTA``nja9m7m-lns~S
                        z9Vz}UC#b~Po%^YMJ9p0Uxxv-^weVCx6*$OF`{vGFEi|&G0;dp7>MdeD7a*>;mxp8%
                        zXJw@s*GlQO@Ixm45lSQA2h6(D@k?)DW%tX?V)U#XPw|Ba;WV1N^m2D@5sUar_Ke5L9X}w
                        z#fIgbuMhuiV<)c#8Rm8$A>Yjx6r6}ky1lm%>6^k7A+sjDx!+?g
                        z-)CqT+gW0sjDLon9-;A^2~XtuwSs$(ZfL0P3Hc(B#V)4N0%+hi?2qB`^sQ<7vHT^~
                        zi*$^{ce^ff!>)PN-Z_OA%*90$8rDYDBO7h1pBv!g5!Iy;Fx^jZS^3zgoS?i)HWa4}
                        zjpgw053Db^^BK7q7lPgYFe8IhNR&+gH!f-vJpAqLS64&TvQv|TF#a`zSrZ4BrvR(j
                        z8|&qi^SPT+K4FLEFS_|qjEZFv=cBr>@^5DzZ^sHXffGC95Kg{`9S{>JS2r~+r&a^j
                        zV}Yk4pSU31Dza`Vi|ORf-Sdov^pNaCyI~9t2Lb1(E?BB!j`ZbLtX7rRtpe?%izZ}*
                        z>KQ>JrW{a+sa>s^s;O?%r?013LoouW6cq4lG3?l#BcFi&!xT~z-I;?%CB0_cz$jW#
                        z8gkK)In&HjCFg8*fx%!qpj?kkfl-?>(k^>VGC_}&#R(@StRxGQgUDJY
                        zQ0T205G}UOLJzQFdjiuT#IXY^A+Qw^USDXI(ao2^XF{MCh8~~^CvAOGs#-U1Xh(SdZzpr2C-&TMnz5xao`Tp*&`C75wNK
                        zbUr~&nXgTyCH~5-Zs~g;R|2uYy=hUqTocgidkQ>ReU0$r5jIsKYtC?|NrJ|K2Xm!R
                        zLLf_HW7BTR#PJA)EquF`cXLs*6_l#jC5l$M-{t}3F&;d+b&>}LSTPE(>F^XgjaS=h
                        z?9Z6ET*$s(1H6c|$0ywUSG3)9L0(%Gnt36ZG$%(XB&{RkAOy=)Kpxq_Dm>r}XRv+l>8B}i8jME77qNR~}6KX{HqiL@S8A2UQ;G>%M<^40bUNogQxtirvnCijd5C`49x_W9KNeR)J
                        zrlGuqZ2s2|4o3@L&%cdS&@ygAs-$mkF-(WPBe;1yY?WZ>B_*Xq2G_7eb1G{unN2nS
                        zG}MS5vGFFbvHL{Cg+wmDs!-cQ*+KG+^uT#KXC7KfmMLwa%<>NRI)_e0v&(0s$0){V
                        z&PdU+iBB&x>zIx6<-(Nf{-SC;s7<{qtnY>htoNmIepPl4PxJi!_G7fHdMWy$zz3h)
                        z!9f(RfXo!%1QTE4$|n9UBh|#CkBUXmiXGLXm##I!za1)e${^X`%Ho7%cTe9LA#dRV8TEk1;L~;?3i9-522GT0{_YOC-IsOOjVrC
                        zg#Lr&<1PpLpLs8w_lAei%&;~?$1MH!lg(VtWBMC=o=(Oje(hd;cDYbi3Z8TPDh|0I
                        zEFuVw-$6UfLk>Erz62~A5GjPF=ko}l72Z$xZwaje~lEWibG}@m>K^G=VvRYSG(3P
                        zyP;3+{)XjPngF1U$oF9b`I00!t11ks^bdncc==<0)
                        zB1VP%nuS^cmw8ptfHOtdO@561Ut=!rg7>@<`-hfebqH5lor6k@0
                        z_vI_EzX_Y@qvNe^gGEbMOKGitOG|%C0S(87`q#YQWBGVymb5RF3Vp~;x6a7A;_D7L
                        z;CSzLYkVjpVB>2Kp6wgBAz@$&@P~y2Z&`o?5S?DmPpJd=*m-S6xvtBwq)7Sbmc89S
                        zt%hDyqBMo^_PJsVy84E~PUINYQK|kMGHgBDqc4nO=U6;&eu^E-NMHPp>>O-u>h2S~
                        z0`U7QbGS7sz=E2SL2yyOUA%j^J-EawY2Lp>q1zvRpbtwqWbMOeJe%B3yhW`QxixQe4doiPnUdp^1
                        zpgzr&AOs&y-~Fl0A#N)swC4=}flhV5hco)9rmSDWJ%$>z&^Qmptu>sVWaX9D-zJ7(
                        zsc(ZXHSF;8kTTA}BCbr974h-Xpd(C>tF~>t^v+HAPu0HHMJ;$YQ{t!OB+IOQU%3ou
                        z0N+R$q1qpI?_hD}?)KQmyPg7CIQzDMTN%#xD7O7FszjXlihc2GNAHjvqo+Rvnn?pk
                        zIbMIT6JAeqYjN9kM0W)EP~>+WayWdWNlN8KW)Zr=CTs9|=fUk>4CsN~LT8NpcLqtc
                        zO~NoQ)chDvfKq|Rg3v?f;20#2#KF&KHuec2xR+IOH_@}<^!aWNeU4|Ix604ZgcUREtnVA0TpKB71N8Vq&Y*}C
                        zD*6C1{Slz>ArT8{LFkwgWelG%1VeVY6~)cE^T+_BOPebEGcB}c
                        z7G0ay{eGB|lM-Xy|HDKj(u$8)xJfOo{*;(NwHadQpq@kP{CFFxH2qx;U|V7
                        zpJGqudmA-5MdIRe9bich{TkTj?oV##GPbW)S%!qbc`@EVA;D!PfH-Gv}T9<$tAgXhkgG&K~KliGlF)
                        zE+vP&)PwBnfE$}zv?!%<9KiFbiEa3zMo0fQ8fUcs|v-a?{1
                        zV}o<#a)YVs*LqX@=Rcf-Z|s&5ntU5;>QODD9UH1Dm4ccPX6?BZJcjfSWX(j=h*^V~
                        z&lbOiGe{z72`7Gg8)YZlC}{_oWq?w1xZdRlh+ugN6$FoU`cQ@M4VtNW&qFgDZQmJ(
                        zbulPvy^~}|VAoX=ensu8CA2a1p*OwL)}EGkSngUzWH+5I9;naza#9#MUD>P<}JPG*N4s7s@yF9`p6M2XLqA{~@R$76u3s0UtI-LnfTQ`=uAtYr1dHItkK`hAz{Ms4*sG2wLG{
                        z(oze%ZqPC1=2bLpy&sA!Uh#N&I%f9rP$S-IoO>lsU224m%O;CA3UMoRq9XV~|KssF
                        zZrF5@E?O!g2FeuWN^VNwcAFh`q-^gBxJ}ZAJ|&dRqBp|XtUGbJR4wbg%FfptJ;001
                        zK;N2ZUg*~9yc@3k&UvtQ1BT(pY>wr(bP1L-qrxAh2LWNrwspUEU5e^{U}WhCBsN&W
                        zcaz%pbvzi+!@sBbx|5fUnlyZ$Oj6iPvQ-bKOk>>iF^PgKv3D8Sb#K8ij1K@HkVCzS
                        zqE@z7(`Cr_-&fo-H;3g^yWFrN_7bVoNBV*-{d=)bSMYJTWz<&*#!pC8o_ux1XNX@NT<|90I`
                        z=$?|oJ_+!ied+xpHa{;p{}a*&QLae|#tSpK?8s;_1~Yp9zNMp|M9+w5I0S{PNuO5z
                        zpg6jLW0;&~A1yp4dZOM|$>p1bh|9|`&Ng^Z`N{}y{fORisbmV85^=EP=~yk*$lC9^
                        z2Qp<-TWp2=V*QlE&;A?|nF`%$Q|laL6ypZjX!4d*mrtnMW&uw&cE(
                        zXBrRFU;r2{uX-AH34@{lkSdC$h?OuN?v;Q%Xo2r_eAiNU9_oGsIfqTg)xax&-?w(%
                        zfPl>R{4--WyBl>hi>S`Rhr#Bir+TYFIv;H($ecweOAxZOKA~|%3i))XkMx^^hAkpc
                        zU4B8)uH`K^ewDfDs78n74=igxnhhPn-9iViiVWw}GlZh|l_LH1d|&+;P$W`$JdDp(
                        ztV6pFXVkH5y=QOzJs7vX6eeKa-5{Z-h>*WhV-i?4jE3zEARrt?1h%@M<@??-zdt;f
                        z!)SqZp?H0N(3|vTjIVZszH!R_v{nA$Y0ncH&}u3
                        z{ys`Km|`B0Cm3PLvc*hqQi-{M&#Yh52mV~k2I%XH^8b`@-_dYAZ5+TO(Ypvju+bB3
                        z_1+00YV=N!5Z%hEi|C?7@0}3cM(-uDx&*OS?{yKq^IpIA?|aVd%-uQn%z5Vfd_?j+
                        zJSn!P>e?R&OPp4gtH?gz^ZZB$pC6|8vt0?0t3VXDhzG2TC1oQXI>Hrh3=~Z*K4_jf
                        z&2h7FQWB`Jv&YqQ;RqJ3m7<6dX*dWt)q|T%!~XNZ9OPoT)%sHR3ULwz`_trDH;#i&
                        z`Kq$S=2TuZj^vY^by6IvMwi=K4l^5=?Z{jAbqyt5!t}QHEr0P-W+E=XQCeHCKL=Nl
                        z;$rJg&nmAB^~{I;UbRC93(kK&L^}PNz)UIE>2h)RzDfObaF>C(
                        zfM-pnXSA$}>Nt2mFC9C~XTl!tcHsMd=-}sD?FYfu>o{aRghNZpqs|*^V8VA2v{o6k
                        zB+_a_5NDX8Ua5sLck7XtJGvC)?@EvF;}SlGtbj{SXC#Rz8TyLlV|l+Aq1BkL8Ql6A
                        zbIrJmvAC`wl((?2@B01-ldkwDxf_(dz9S_FBym|^uGghGd%7R{@1V>$K=k_xc%QV&rgXziWxT;%LR$2a|`m}?1!)-%96{_Uy_2`&2xDPsNygl`|8d1oG2Pas@e*1#4Q2
                        z_2kj+Ez*OoN&l>&V4gCmrWyu#wTQLC1O9@NsKFl%1?~Ap6zR+?3dubFr>0?*UF9ce
                        z&wmY7jPs6&-IS`YN!$vwv2Ark9&<O=KH##5%x|NOD<{%+4ogS*13)I6_xgZo4KKfKr
                        z)78|}qFztY+m`y?9`AcC5?5uam3?TZdwM{3*LDU&tiJw#(3bAdLzrsZR+2DxXasV<-CzwrOyIU8?zB7HrRnHIEniB0pQ
                        z`6A-r56h5GH+jahmw$?G7L(a5^XIxeMy2GQ$lw}hUwE=r-W+r&*P?UQ&y=`WZveX4)K2jq!
                        zHv@K~aZ7a9v(Op6@upE8x2L+-2Q>hJq5@W5P;D?sjZfAZ{wl76yVkvDYjluE#`2!^
                        zXCn9!t$^Bv=I1q0Y^7xY7kn`{!SY^EWrgVqwNTLQwcYv6&G}XlB7zauvd4UWI`mm1
                        zf5FUy>?5-xtyqn#tAI&tmfy5F*;DWXKOjQ9K_+bmeD2a}T@*d4^z9#|XJ4w0
                        z{N4(mcj3<&!9FD*K``3>OI_{VaWOP6!2h~rDbz15#5f}nTIOpU_Mza3sLsM0u
                        z_gD5n`^3_7y867<($HYhXGycz6NL>Jy5`JhzPR)3u2Ig4eDttYE`eJ2rC&ba6jw6V
                        z%rgHYKE1mgc?&&u(YKUj8{kd%A*azalIj!aj-A)a0fd3^5tffR<51y6_d&uzRA@eV|zxdn5vd3M70sx01hah
                        z^|f{w{ajTSZB}cn`|t}7$sJufqO=x+KY64(Bi5H(X()|(g)!=xXwq=wzi)TB5-lbX
                        z5Y?!1WE@`ZVF?OjZPtz$<}&N;usqHNmw{-si@{gp@c9vGO%mdv^J@5SRDfH)pl<^-
                        zhu9S@pa=K`o?$Uqwo3*Ha|Sn^x{c_2p_)*C`
                        zxmy*WBl^&F$S^y%jUn&^g80zd|Loq9eaa
                        zd({gsUV1waN|_}@ls5}yLY5h)hFPhfSx&g0V!8Y>9bEzYd!?KXx%R%4N#n_j(Uqh7
                        zSN2h%Qf4*YRYk|_0*_UScRQ!F$3pc$dlj*r
                        zvWV67e3}W?~YOhm&2&LWiAmE-)7wPpE5!-Cwv)(qj)aswz(f{hBJKYX0{f
                        zgZA`yY4KST#48F-x2v>CFVN#;xR%|0p8_}@qI)p})_KWH-ypF|gq8Vb{ttn`r+0s`
                        z5Q`Bl+`rr_Pag-vH2;o;?Cis^_FL=J=+HF#iC+~WgxnBKwGeAfZS%i>g)^2k%;A5Q=`~$zMPqor;;BW{yc{DgYhv90pSp9r>
                        zG#P!tw4SQA&gb75oAruiDm^WFIC_F)3g5YV1AmN
                        zKIwFQOyay$lp<92UI{H4iKO)#p+w{x=GN6pjQ-~T+;m*EmV>LWeXwr=<5jD%1k
                        zJ;~hN%F*?Ewl7ztlN*JII>*aGowc7Eq8yFFe&
                        zNo!%wlQ?CBgHmyMPEwU
                        zAOoK_?Y7mr^7trRF`L=>0zQ+|BVJYf$aPgvLw!n;Dp)zN410gR%xUF#0lkwUVj48Q
                        z_tqLX$Icm?rSHsqmLV<9tbcL_+b1kH5PQ?hitp)c&%1Yhb=7yyY+hHICEy-Y9HoXi
                        zMwq0xLHAvTf0oTVGRiWzn_iIW$=`ZAf(y8=((;JCdM_Dps;r5S5n9z*?)sav$Tbbz
                        zk$?J_?|u7xG=ed0rN4e}2c(wTuwa$^v2UP{JJ~f#CbXO0*FnpH^H7Lt$$5V*x2A{y
                        z@`0HtDR%a8clJ=X(d^-dVB^J-uvVgWp2Yi?nqROhS&V;lfJMFn^Z31>1Z|G`fJq?e
                        zW7Jv_bkk>$5{6h9mh*y%udBWJX>EwM>}Nx*oo^NFF9OXJpG~-hmacxHsNa60Bbrq_
                        zJ^$RkDZ>yW*>sN)AYTNuZD&g*r7IEKZvRMLxuSyMaiomK)!;pvbmHo@s`|EcLgE&n
                        z4(4IOa8ahPc;ZThy6L&-j>8pzFrfpK=<>qeLzp{4rF3Q<44mkf`-&JWHQ}Qk>?G=Pp~G
                        z4xH=YoM`(|lbEvpb@ikfiEQirQUt#}q&mHvyNaedRp)6BRoI7xHidnXPRgk
                        zetv*sfo4bfJmH=2X|9Vj5d*#Z@NF?ZfpTeJoEU+{K@ya
                        za+@`grog<&^i;sxWaH920cYbX{|*u22ffLR0`VJ!Qcmo@3YG^M2mUCF>R=4;7npy+
                        zVf#(!p?!%3pfHq8Y+Bp84QC}ddU)KN#(a-9=sO;4#SGJv+
                        zxCGD!edn<40N7jFu$SLNkNP^ABx}gu6h~_FMT?%ZUBdW35Bl4KTXl8
                        zv#@uS9O&ntH=D;4@OUX(pL!xxC3FxU-M^oQuRh)D{4%;qhNLD6onoERCn@;6+}PJG
                        z7@UhKE|M$ZR7}D9nqE}}YIQrIFqD%SV8^@+`NnJ^8;^{iovi+Zt%9U3kQw3K$-ov0)|&V1reR?nt}L-nq#cQ2S2>f+lh}~iwf{n#owfJ
                        zez=BZMUZVWG;Te{`5pV!htrmEmxSGl%o^jv{>(?M5E>`}XSxhWTnv+}hiLh9&KxlT
                        zT8JQ1h#&SnqLv?RWUpA$Ol}FSBb6`eumMDbZsn5Q5e~0CbOYG%hWCovwED_AtPtJI1
                        zdd+cWI&}H1d6C@AXx^>dgi^dqTtuKRcoie=zA6pnAh!L%#iO`B#aQf)duQY~k@76R
                        z2|<{huecXduE4l*sof-ZjZ=l9PdX$LKMS;5aQjQ(TVERd!H_7jAAvPvhY&5L5A_#E9C?`nh8**e62Nv@BvkSux6{d?!9Mjj
                        z-teT$2YUU!k1;I?OU49kiYj?6-xMawA5dCHv}47^W5|*!_T*MFydh;^m{2a&-wniH
                        zhLmp_rr84;RltW&yN$-k`0(eCpW#3G3d=&9zy;Dg0-vM91WY;FEA5pO$olEbC%@7u
                        zK_3~m4av)rp5~e%Ls#4@!j<#$Sg1f|K2K2~8+H7^T>CD|W+4TEKV$qgLFo4-%tuHY
                        zKm0%jFH>Yd#wWFK&-{w-j@+nMnvQA^>vrHl-yh`lt7dEkqCeB0t_9(1n#Iu#gVz+n
                        zC55KuD}yJ3pic@{HKZi6MUxT?5JS@ZFKowkH<|+Gg=8bU-d>rqMQeok+LQ(Y}xPU@I3*-$ptBB
                        zC_DtW;730ugNm1yxqZWqy#|nCrhKJYe5C^9m7e;9P6wD(RtW;hB^@C3bAx9XL>Ts*
                        z_6gCY(U;Bpe%B>LPTpI;TTXcfTzDv;mBk9(%;jYKXyxi*!0lOfgbiOSn9Bn<3ys~o
                        zMEY^2%Jtfz@}#E&>aghYz}h>C&%_wco7r8Xq_Q|#_}wDoMO6`NmoxyCDX%Dv+Rt+n
                        z0i`UF5{|4~8lAVb3jr~%>fB_sB0R}@AAkd~S75Ncg_0^jcNF79DL}C&c=v7YDLn0O
                        zqbK~wP2g}DCCpJdUFA7>N`T+XkII#5pxTC*-g9~nt7x@W
                        zhiN3j!(}baB2EL$<*D@iHDFV$s2JR$%F;my~~(Jng{1ynr(91Ll#
                        z4V_}+{$}8TRySmW>e3{BhyhR!38|T{q)QBz7Jvt2haRv!iNaBq{}9HHeU)tDWN-hn
                        z(59Z9G`Y1&dEASb52tYdQY{(5AKzn+iJOoWLfAd#D2MB*ve0~+KE%;u>DhW|BBGk}
                        z3|JKDyGG&tsy<42?<1PD4=1AkIFw1;$ZQ$VFT%v;0$XDGwdRe5MamG6A*8EYDz*X$l_q!sfY8<*!+&Zecb4Wayum)R1i-j7
                        z8{c08ANz0si`D8>he!60unfj6g^Rcy`*_s&fw6!e#W$3%r!B3sE+bT$8ZTWaTf1xn
                        zY(1<;ofRyip%-k_U#izME+ymdcXS|z9dk%lzpJw_!Bhr{
                        zW!O%r)YpgH@4~v2yfVw47`h2<+?^#Q!4IwM3F^|r64Jnmnh)O(M?j10iGj1q3i9qaPU
                        z;NG&hVl@R7a2)dj?Vf;@x`<`E_qX50S0zh|6(L7oeJ_QEFOe6BhMh4`<2w>k
                        z%B!1E0aN73r)!x>Z-3Xhzuyu+4{%X(a74joIz6&#i>#^benV^tB+My81sGelt^r`y
                        zX`<@&{lFy*4YdeB
                        z`<(<|CFqV=eKySu@G+z6d~NsI>OqC@5k*YS-2BisAQ$EwEv5{
                        k<+^65`#d>g;2pU00k&`(N>hQ}@E-Jj{YqV-QqCgqe>C@%9smFU
                        
                        literal 0
                        HcmV?d00001
                        
                        diff --git a/PR_0.0.20/html/index.html b/PR_0.0.20/html/index.html
                        new file mode 100644
                        index 0000000..743eaba
                        --- /dev/null
                        +++ b/PR_0.0.20/html/index.html
                        @@ -0,0 +1,2156 @@
                        +
                        +
                        +
                        +    
                        +        
                        +        
                        +        Guidelines for Teaching C++
                        +        
                        +        
                        +
                        +
                        +
                        +        
                        +        
                        +        
                        +        
                        +        
                        +        
                        +        
                        +        
                        +        
                        +        
                        +
                        +        
                        +                
                        +                
                        +        
                        +        Guidelines for Teaching C++
                        +        
                        +                        
                        +                                               
                        +    
                        +
                        +    
                        +
                        +
                        +        
                        + +
                        + +
                        + +
                        + +
                        +

                        Guidelines for Teaching C++

                        + +

                        Version PR_0.0.20

                        + +

                        SG20 (ISO C++ Study Group on Education)

                        +
                        +
                        + +
                        +
                        +
                        + +
                        +
                        + +
                        +

                        1 Obtaining This Document: The Most Recent Version and Alternate Formats

                        +

                        The most recent version of this document is available as an online HTML document at: https://cplusplus.github.io/SG20/latest/.

                        +

                        The version of the document that you are currently reading is available in the following formats:

                        +
                          +
                        1. online (HTML) format as a single large HTML document: https://cplusplus.github.io/SG20/PR_0.0.20/html

                        2. +
                        3. EPUB format: https://cplusplus.github.io/SG20/PR_0.0.20/guidelines.epub

                        4. +
                        5. online (HTML) format, split across multiple HTML documents: https://cplusplus.github.io/SG20/PR_0.0.20/html_split/ [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

                        6. +
                        +

                        Older versions of this document are also available. In general version ver is available at https://cplusplus.github.io/SG20/ver/html. For example, version 0.1.0 (assuming that this version exists) would be available at https://cplusplus.github.io/SG20/0.1.0/html.

                        +

                        2 Context and Aim of This Guide

                        +

                        This document is intended to serve as a resource for instructors to assist in the preparation of courses on C++ in a variety of settings, including university, college, and industry environments. The main objectives of this document are as follows:

                        +
                          +
                        • to provide guidelines for content to be covered by courses of various difficulty levels on C++ (e.g., topics and learning outcomes)
                        • +
                        • to note some common misunderstandings and problematic points that may be encountered when teaching particular topics
                        • +
                        • to suggest resources useful for teaching C++
                        • +
                        • to present examples of curriculum for specific courses
                        • +
                        +

                        This document does not itself provide a curriculum for a single specific course, but is rather a set of guidelines that can be used to prepare curricula for a wide variety of courses that differ in focus and level of sophistication. (This said, however, some links to other documents with examples of curricula for specific courses may be included herein.) This document only intends to target the teaching of the most recently ratified version of the C++ standard. (This said, however, since older versions of this document are also available, these older versions may be of some use to those who need guidance in older versions of the standard, at least versions that do not predate C++20.)

                        +

                        3 Use of This Document

                        +

                        [NOTE: This document follows the same license model as the C++ Core Guidelines. The LICENSE document is taken verbatim from the C++ Core Guidelines.] This document is made available under a MIT-style license. In simple terms, this license permits copying, use, modification, and creation of derivative works. A copy of the license is included in the section LICENSE.

                        +

                        4 Contributing to This Document

                        +

                        Contributions to this document are welcome. If you would like to help with this project as a contributor, please read the section How to Contribute.

                        +

                        5 Organization of This Document

                        +

                        The various concepts (i.e., ideas) to potentially be covered are partitioned into modules. A module is very broad in scope and consists of numerous topics.

                        +

                        For each module, topics related to the module are identified. Then, for each topic, learning outcomes are specified. In order to address a wide variety of courses on C++, each topic is addressed at three proficiency levels. These proficiency levels allow each topic to be covered at more than one level of detail. This allows target audiences with different background and learning objectives to be accommodated. The three proficiency levels are as follows:

                        +
                          +
                        • foundational: This level gives the learner the idea that a facility exists, what benefits it offers, and the basic ways of using it.

                        • +
                        • main: This level shows mainstream uses and techniques. For abstraction and organizational mechanisms it also demonstrates how to build them. This level should also give the learner a basic (but not detailed) understanding of how a facility might be implemented so that the learner can have a first-order understanding of any costs involved.

                        • +
                        • advanced: This level gives information suitable for an expert. For most topics there is an expert level of knowledge that most programmers rarely need and techniques that require detailed understanding of language rules or library implementation.

                        • +
                        +

                        The remainder of this document is organized as follows. The various topics are listed grouped by module. In cases where a topic might be classified into more than one module, the topic is listed under the module of most direct relevance. This is done in order to avoid duplication of content. (In the case that a topic is equally relevant to multiple modules, the decision of which to select is made by a proverbial coin toss.) The order in which modules and topics are presented is not meant to imply any order of coverage in a course. The order in which items are listed is essentially arbitrary.

                        +

                        6 Summary of Modules and Topics

                        +

                        In the sections that follow, the various modules and topics are presented. There is one section per module. For each module, a table listing the various topics in that module is provided. The ID for a topic is linked to the detailed coverage of that topic that comes later in the document. If a topic has any learning outcomes at a given proficiency level, this is indicated by a checkmark (“✔️”). If a topic has no learning outcomes (simply because there are not any, not because the information is missing), this is indicated by an em dash (“—”). In the case that the information for a topic is completely missing, a question mark (“?”) symbol is used.

                        +

                        6.1 Compilation Model

                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                        IDUnitFoundationalMainAdvanced
                        [?]Translation Units???
                        [?]Headers???
                        [?]Modules???
                        [?]Name Mangling???
                        [?]Phases of Translation???
                        [?]Separate Compilation???
                        [?]Linkage???
                        +

                        6.2 Preprocessor

                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                        IDUnitFoundationalMainAdvanced
                        [?]Preprocessor Metaprogramming???
                        [?]Inclusion???
                        [?]Macros???
                        +

                        6.3 Basics Types, Objects, Values, Expressions, Statements, and Control-Flow Constructs

                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                        IDUnitFoundationalMainAdvanced
                        [?]Constant Objects???
                        [?]Declarations???
                        [def]Definitions✔️✔️✔️
                        [?]Selection Constructs (e.g., if, ternary)???
                        [?]Looping Constructs (e.g., for, while, etc.)???
                        +

                        6.4 Functions

                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                        IDUnitFoundationalMainAdvanced
                        [?]Calling Functions???
                        [?]Parameter Passing (e.g., Passing By Value and Reference)???
                        [func-args]Default Arguments✔️
                        [?]Returning Multiple Values???
                        [?]Overloading???
                        [udl]User-Defined Literals✔️✔️
                        +

                        6.5 User-Defined Types (Classes)

                        + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                        IDUnitFoundationalMainAdvanced
                        [?]Special Member Functions???
                        [?]Types???
                        [?]Conversions???
                        [?]Constructors and Destructors???
                        [?]Move/Copy Constructors and Assignment Operators???
                        [?]Member Functions???
                        [?]Sum Types???
                        [?]User-Defined Literals???
                        [?]Special Member Functions???
                        [?]Guidelines for Special Member Functions (e.g., Rule of Five, Rule of Zero)???
                        [copy]Copy Semantics✔️✔️
                        [?]Moving and Copying???
                        [?]Lambdas???
                        +

                        6.6 Inheritance and Class Hierarchies

                        + + + + + + + + + + + + + + + + + + + + + + + + + + +
                        IDUnitFoundationalMainAdvanced
                        [?]Virtual Functions???
                        [?]Run-Time Type Information???
                        +

                        6.7 Compile-Time Computation

                        + + + + + + + + + + + + + + + + + + + + + + + + + + +
                        IDUnitFoundationalMainAdvanced
                        [?]Constant Expressions and Constant Evaluation???
                        [static-assert]static_assert✔️✔️
                        +

                        6.8 Generic Programming (Templates)

                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                        IDUnitFoundationalMainAdvanced
                        [?]Concepts???
                        [?]SFINAE???
                        [?]Template Metaprogramming???
                        [?]Function Templates???
                        [?]Requires Clauses???
                        [req-expr]Requires Expressions✔️✔️
                        +

                        6.9 Error Handling

                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                        IDUnitFoundationalMainAdvanced
                        [coe]Categories of Errors✔️✔️
                        [?]errno???
                        [?]Error Codes???
                        [eh]Exception Handling✔️✔️✔️
                        +

                        6.10 Standard Library

                        + + + + + + + + + + + + + + + + + + + + + + + + + + +
                        IDUnitFoundationalMainAdvanced
                        [?]Input/Output (I/O)???
                        [?]Containers, Iterators, and Algorithms???
                        +

                        6.11 External (i.e., Non Standard) Libraries

                        + + + + + + + + + + + + + + + + + + + +
                        IDUnitFoundationalMainAdvanced
                        [?]Graphical User Interfaces???
                        +

                        6.12 Building

                        + + + + + + + + + + + + + + + + + + + + + + + + + + +
                        IDUnitFoundationalMainAdvanced
                        [?]Software Build Tools???
                        [?]Strategies for Handling Build Problems???
                        +

                        6.13 Testing and Debugging

                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                        IDUnitFoundationalMainAdvanced
                        [?]Source-Level Debuggers???
                        [?]Code Sanitizers???
                        [?]Test Frameworks???
                        [?]Debugging Strategies???
                        +

                        6.14 Tooling

                        + + + + + + + + + + + + + + + + + + + + + + + + + + +
                        IDUnitFoundationalMainAdvanced
                        [?]Compiler Toolchains???
                        [?]IDEs???
                        +

                        6.15 Software Design

                        + + + + + + + + + + + + + + + + + + + +
                        IDUnitFoundationalMainAdvanced
                        [?]Design by Contract???
                        +

                        7 Detailed Information for Modules and Topics

                        +

                        7.1 Error handling: Error codes

                        +

                        Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                        +

                        7.1.1 Overview

                        +

                        Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                        + ++++ + + + + + + + + + + + + + + + + + + + + +
                        LevelObjective
                        FoundationalHandling error codes with std::error_code
                        MainDesigning APIs around std::error_code
                        Advanced
                        +

                        7.1.2 Motivation

                        +

                        Why is this important? Why do we want to learn/teach this topic?

                        +

                        C++ offers a type safe way of passing around errors, contrary to the C-style of error handling, by this, we prevent bugs when passing error codes. Furthermore, error handling with error codes is more commonly used than exception handling, which only should be used in exceptional situations and in some environments is not feasible at all, e.g., in embedded or performance critical software.

                        +

                        7.1.3 Topic introduction

                        +

                        Very brief introduction to the topic.

                        +

                        C++ offers std::error_code, which encapsulates error codes in a type safe way. This topic describes how to use these error codes.

                        +

                        7.1.4 Foundational: Handling error codes with std::error_code

                        +

                        7.1.4.1 Background/Required Knowledge

                        +

                        A student:

                        + +

                        7.1.4.2 Student outcomes

                        +

                        A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                        +

                        A student should be able to:

                        +
                          +
                        1. write code to handle errors with std::error_code, e.g., obtain the message of the error code or check if an error occurred.
                        2. +
                        3. distinguish between the different categories and make justified decisions when to use which
                        4. +
                        +

                        7.1.4.3 Caveats

                        +

                        This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                        +

                        7.1.4.4 Points to cover

                        +

                        This section lists important details for each point.

                        +
                          +
                        • a brief overview of std::error_code and how to use it
                        • +
                        +

                        7.1.5 Main: Designing APIs around std::error_code

                        +

                        7.1.5.1 Background/Required Knowledge

                        +
                          +
                        • should know how to use reference parameters as an output parameter
                        • +
                        +

                        7.1.5.2 Student outcomes

                        +

                        A student should be able to:

                        +
                          +
                        1. create an error_code and design API that work with std:error_code
                        2. +
                        3. write code that utilizes std::error_category
                        4. +
                        5. explain the difference between C-style error handling with errno and std::error_code
                        6. +
                        7. make effective use of the interface of std::error_code
                        8. +
                        +

                        7.1.5.3 Caveats

                        +
                          +
                        • reset errno before calling a function that might set errno (better pass an input parameter std::error_code)
                        • +
                        +

                        7.1.5.4 Points to cover

                        +
                          +
                        • provide a full picture of std::error_code and it’s APIs
                        • +
                        • std::error_category (explorative)
                        • +
                        +

                        7.1.6 Advanced

                        +

                        These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                        +
                          +
                        • implementing your own error_category
                        • +
                        +

                        7.1.7 Overview

                        +

                        Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                        + ++++ + + + + + + + + + + + + + + + + + + + + +
                        LevelObjective
                        FoundationalStandards exception hierarchy
                        MainException guarantees
                        Advanced
                        +

                        7.1.8 Motivation

                        +

                        Why is this important? Why do we want to learn/teach this topic?

                        +

                        Exception handling is used to be able to continue the program in case of exceptional situations (like requesting a ridiculous amount of memory: bad_alloc).

                        +

                        7.1.9 Topic introduction

                        +

                        Very brief introduction to the topic.

                        +

                        There are other forms of handling difficult situations, but here we concentrate on exception handling and the peculiarities/characteristics of it. Because there are different forms, we should know when to use which type of handling special situations.

                        +

                        7.1.10 Foundational: Standards exception hierarchy

                        +

                        7.1.10.1 Background/Required Knowledge

                        +

                        A student:

                        + +

                        7.1.10.2 Student outcomes

                        +

                        A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                        +

                        A student should be able to:

                        +
                          +
                        1. Explain how some std:: calls may cause an exception
                        2. +
                        3. Discern the different standard exception types
                        4. +
                        5. Write simple try … except code (e.g., out of memory, vector at indexing)
                        6. +
                        7. Explain on a “simplified” conceptual level what happens when an exception is thrown and is bubbled up through the callers until it is caught
                        8. +
                        +

                        7.1.10.3 Caveats

                        +

                        This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                        +
                          +
                        • Exceptions should be used for exceptional situations and should not be used to manage normal control flow.
                        • +
                        +

                        7.1.10.4 Points to cover

                        +

                        This section lists important details for each point.

                        +
                          +
                        • Exception hierarchy from the standard library
                        • +
                        • Common library functions that may throw exceptions
                        • +
                        • Basic handling exceptions: try/catch/throw
                        • +
                        • How exceptions bubble up until caught
                        • +
                        +

                        7.1.11 Main: Exception guarantees

                        +

                        7.1.11.1 Background/Required Knowledge

                        +
                          +
                        • RAII
                        • +
                        • Order of construction/destruction of class members
                        • +
                        +

                        7.1.11.2 Student outcomes

                        +

                        A student should be able to:

                        +
                          +
                        1. Explain the four different exception guarantees
                        2. +
                        3. Explain the exception guarantees that the standard library containers offer.
                        4. +
                        5. Explain what happens when a exception is thrown in constructor
                        6. +
                        +

                        7.1.11.3 Caveats

                        +
                          +
                        • Make sure code is designed with RAII in mind to prevent resources leaking during exception handling, when the stack is unwound.
                        • +
                        • Care should be taken in constructor design to make all fully constructed members deleted when the stack unwinding mechanism is activated.
                        • +
                        +

                        7.1.11.4 Points to cover

                        +
                          +
                        • Exception guarantees: Nothrow/Strong/Basic/No
                        • +
                        • Rethrowing an exception
                        • +
                        +

                        7.1.12 Advanced: Exception-safe containers and edge cases

                        +

                        These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                        +
                          +
                        • Rethrowing a modified exception
                        • +
                        • Writing exception safe containers
                        • +
                        +

                        7.2 Error handling: Categories of errors

                        +

                        Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                        +

                        7.2.1 Overview

                        +

                        Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                        + ++++ + + + + + + + + + + + + + + + + + + + + +
                        LevelObjective
                        FoundationalCategories of errors
                        MainHandling different categories of errors
                        Advanced
                        +

                        7.2.2 Motivation

                        +

                        Why is this important? Why do we want to learn/teach this topic?

                        +

                        Programs can run in a normal state or erroneous state. Students should be able to identify different types of erroneous state and how to best handle them.

                        +

                        7.2.3 Topic introduction

                        +

                        Very brief introduction to the topic.

                        +

                        This topic is an umbrella topic that refers to the different topics for types of errors and error handling.

                        +

                        7.2.4 Foundational: Categories of errors

                        +

                        7.2.4.1 Background/Required Knowledge

                        +

                        A student:

                        + +

                        7.2.4.2 Student outcomes

                        +

                        A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                        +

                        A student should be able to:

                        +
                          +
                        1. Describe different kinds of errors and exceptional situations that require different approaches of error handling.
                        2. +
                        3. Provide some examples of the different error categories.
                        4. +
                        5. Identify potential erroneous code sections and attribute them to different error categories.
                        6. +
                        +

                        7.2.4.3 Caveats

                        +

                        This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                        +

                        No caveats at present.

                        +

                        7.2.4.4 Points to cover

                        +

                        This section lists important details for each point.

                        +

                        Errors can happen at different times during software lifetime.

                        +
                          +
                        • Compile-time errors
                        • +
                        • Link-time errors
                        • +
                        • Execution-time errors
                        • +
                        +

                        There are different types of errors

                        +
                          +
                        • Logic errors (violations of logical preconditions)
                        • +
                        • Run-time errors (errors during code execution due to causes that are external to the program)
                        • +
                        +

                        7.2.5 Main: Handling different categories of errors

                        +

                        7.2.5.1 Background/Required Knowledge

                        +

                        7.2.5.2 Student outcomes

                        +

                        A student should be able to:

                        +
                          +
                        1. pick the right error handling approach for a given problem.
                        2. +
                        3. enumerate different error handling strategies.
                        4. +
                        5. make a clear distinction between error-handling code and normal-case handling code
                        6. +
                        +

                        7.2.5.3 Caveats

                        +
                          +
                        • The different error handling strategies have different trade-offs (runtime performance, readability, …)
                        • +
                        • The trade-off space depends on the run-time context (embedded, …)
                        • +
                        • There also exist unhandleable errors (e.g., ODR violations, undefined behavior)
                        • +
                        +

                        7.2.5.4 Points to cover

                        + +

                        7.2.6 Advanced

                        +

                        These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                        +

                        7.3 Functions: user-defined literals

                        +

                        Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                        +

                        7.3.1 Overview

                        +

                        Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                        + ++++ + + + + + + + + + + + + + + + + + + + + +
                        LevelObjectives
                        Foundationalusing and understanding UDLs
                        Mainimplementing your own UDLs
                        AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
                        +

                        7.3.2 Motivation

                        +

                        Why is this important? Why do we want to learn/teach this topic?

                        +
                          +
                        • Allows clearer expression of intent in C++.
                        • +
                        • std::string: "Hello, world!"s
                        • +
                        • std::chrono: 3h + 10min + 5s
                        • +
                        +

                        7.3.3 Topic introduction

                        +

                        Very brief introduction to the topic.

                        +
                          +
                        • Explain the existence of user defined literals. Example: 12min + 17s is terse, expressive and type safe.
                        • +
                        +

                        7.3.4 Foundational: Using UDLs

                        +

                        7.3.4.1 Background/Required Knowledge

                        +

                        A student: * knows how to form numeric literals, e.g., 1.5f means a float of value 1.5. * is familiar with the major C++ types: * bool (Boolean type) * int (Integer type) * double (Floating-point type) * std::string (Text type) * std::vector (Collection type) * knows that namespaces exist, and namespace std. * knows what using-declarations and using-directives are. [C++ object model: declarations]

                        +

                        7.3.4.2 Student outcomes

                        +

                        A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                        +

                        A student should be able to:

                        +
                          +
                        1. use using namespace std::string_literals[1].
                        2. +
                        3. recognise UDLs in code that they are reading.
                        4. +
                        5. figure out which UDL definitions for a used type exist.
                        6. +
                        7. identify parts of the standard library that make use of UDLs.
                        8. +
                        9. prevent the dangers of temporaries created with "blah"s as well as with std::string{"blah"}.
                        10. +
                        11. effectively selects the right set of namespaces in using-directives from the sub-namespaces std::literals.
                        12. +
                        +

                        [1]: explain that it’s okay to use a using-directive to “activate” UDLs.

                        +

                        7.3.4.3 Caveats

                        +

                        This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                        +
                          +
                        • A student gets confused by the similarities and differences between built-in suffixes and UDLs and between UDLs from different namespaces.
                        • +
                        • A student “activates” two suffixes with the same signature from different namespaces.
                        • +
                        +

                        7.3.4.4 Points to cover

                        +

                        This section lists important details for each point.

                        +

                        7.3.5 Main: implementing UDLs

                        +

                        7.3.5.1 Background/Required Knowledge

                        +
                          +
                        • All of the above.
                        • +
                        +

                        7.3.5.2 Student outcomes

                        +

                        A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                        +

                        A student should be able to:

                        +
                          +
                        1. write a UDL operator of their own.
                        2. +
                        3. separate unrelated UDLs into distinct namespaces.
                        4. +
                        +

                        7.3.5.3 Caveats

                        +

                        This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                        +

                        No caveats at present. #### Points to cover

                        +

                        This section lists important details for each point.

                        +

                        No caveats at present. ### Advanced {#udl-advanced}

                        +

                        These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                        +

                        7.4 Functions: default argument

                        +

                        Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                        +

                        7.4.1 Overview

                        +

                        Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                        +

                        Functions in C++ may be overloaded with different numbers and types of parameters. It may be of value to specify default arguments for some number of parameters, to allow a caller to avoid specifying arguments that rarely change, or to enable expanding the set of parameters while maintaining backward compatibility with existing callers.

                        + ++++ + + + + + + + + + + + + + + + + + + + + +
                        LevelObjective
                        FoundationalDefine and use functions with default arguments
                        Main
                        Advancedrefinement of default arguments through multiple declarations
                        +

                        7.4.2 Motivation

                        +

                        Why is this important? Why do we want to learn/teach this topic?

                        +

                        Default arguments allow the omission of arguments with obvious or common values. Also may be utilized to extend an existing function signature without forcing changes to existing calling code.

                        +

                        7.4.3 Topic introduction

                        +

                        Very brief introduction to the topic.

                        +

                        Explain how default arguments work and how to define them.

                        +

                        7.4.4 Foundational: Using and defining functions with default arguments

                        +

                        7.4.4.1 Background/Required Knowledge

                        +

                        A student is able to:

                        + +

                        7.4.4.2 Student outcomes

                        +

                        A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                        +

                        A student should be able to:

                        +
                          +
                        1. Call to a function with a default argument with or without that argument specified
                        2. +
                        3. Declare a function with a default argument, and omit the default in the definition’s signature
                        4. +
                        5. Explain when the lifetime of a default argument begins and ends
                        6. +
                        +

                        7.4.4.3 Caveats

                        +

                        This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                        +
                          +
                        • When no forward-declaration exists, the definition serves as the declaration
                        • +
                        • When multiple declarations exist, only one may specify the default for any particular parameter, but multiple declarations may specify the defaults for different parameters.
                        • +
                        • Additional default values may be specified for other parameters in repeat declarations
                        • +
                        • Calling an overloaded function with fewer arguments may be ambiguous with regard to an overload with default arguments
                        • +
                        +

                        7.4.4.4 Points to cover

                        +

                        This section lists important details for each point.

                        +
                          +
                        • Default value may only be specified once for each parameter among all declarations
                        • +
                        • Default values must start from the rightmost parameter and continue leftward without gaps
                        • +
                        • Considerations of when to use default arguments vs overload set
                        • +
                        +

                        7.4.5 Main: implementing *

                        +

                        7.4.5.1 Background/Required knowledge

                        +
                          +
                        • All of the above.
                        • +
                        +

                        7.4.5.2 Student outcomes

                        +

                        A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                        +

                        A student should be able to:

                        +

                        7.4.5.3 Caveats

                        +

                        This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                        +

                        7.4.5.4 Points to cover

                        +

                        This section lists important details for each point.

                        +

                        7.4.6 Advanced

                        +

                        These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                        +

                        Subsequent redeclarations of the same function may add default argument values, which are then usable by callers. Though a single parameter cannot be given a default argument twice in the same translation unit, it is legal, though ill-advised, to give the same function different default arguments in different translation units.

                        +

                        8 Module name: Passing Parameters by Value

                        +

                        Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                        +

                        8.1 Overview

                        +

                        Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                        + + + + + + + + + + + + + + + + + +
                        +Level + +Objectives +
                        +Foundational + +Defining and calling functions with values +
                        +Main + +
                        +Advanced + +
                        +

                        8.2 Motivation

                        +

                        Why is this important? Why do we want to learn/teach this topic?

                        +

                        The fundamental element for code-reuse is a function. For functions to be useful, we need to parameterize them. Understanding how to do such is thus fundamental to programming in any language.

                        +

                        8.3 Topic introduction

                        +

                        Very brief introduction to the topic.

                        +

                        Explain how to define functions with parameters and call them with values.

                        +

                        8.4 Foundational: Using reference types to avoid copies

                        +

                        8.4.1 Background/Required Knowledge

                        +

                        A student is able to:

                        +
                          +
                        • Explain what a function is
                        • +
                        +

                        8.4.2 Student outcomes

                        +

                        A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                        +

                        A student should be able to:

                        +
                          +
                        1. Call a function with any number of parameters using the same number of arguments
                        2. +
                        3. Define a function with any number of parameters
                        4. +
                        +

                        8.4.3 Caveats

                        +

                        This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                        +

                        8.4.4 Points to cover

                        +

                        This section lists important details for each point.

                        +
                          +
                        • A function is called by invoking the name of the function, followed by parentheses
                        • +
                        • For each parameter in the function signature, a value must be provided, and in the same order
                        • +
                        • Multiple values passed to a function are comma-separated
                        • +
                        • When defining a function, you must list the parameters with the type first, and parameter name second
                        • +
                        +

                        8.5 Main: Using references to modify external data

                        +

                        8.5.1 Background/Required Knowledge

                        +

                        8.5.2 Student outcomes

                        +

                        8.5.3 Caveats

                        +

                        8.5.4 Points to cover

                        +

                        8.6 Advanced

                        +

                        These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                        +

                        9 Module name: Passing Parameters by Reference

                        +

                        Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                        +

                        9.1 Overview

                        +

                        Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                        + + + + + + + + + + + + + + + + + +
                        +Level + +Objectives +
                        +Foundational + +Avoiding copies using const-reference modifiers +
                        +Main + +Using references to modify external data +
                        +Advanced + +
                        +

                        9.2 Motivation

                        +

                        Why is this important? Why do we want to learn/teach this topic?

                        +

                        9.3 Topic introduction

                        +

                        Very brief introduction to the topic.

                        +

                        Explain what a reference type is and how it constrasts with a value type.

                        +

                        9.4 Foundational: Using reference types to avoid copies

                        +

                        9.4.1 Background/Required Knowledge

                        +

                        A student is able to:

                        +
                          +
                        • Define and call a function with parameters
                        • +
                        +

                        9.4.2 Student outcomes

                        +

                        A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                        +

                        A student should be able to:

                        +
                          +
                        1. Use const-refernce types for function arguments
                        2. +
                        3. Explain what considerations to take when deciding whether or not to use a const-reference type
                        4. +
                        +

                        9.4.3 Caveats

                        +

                        This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                        +

                        9.4.4 Points to cover

                        +

                        This section lists important details for each point.

                        +
                          +
                        • No copy of the data is made when taken by constant reference
                        • +
                        • A constant reference value cannot be modified
                        • +
                        • The lifetime of a constant reference cannot be expected to extend beyond the lifetime of the function, so the reference should not be saved off for future use.
                        • +
                        • Taking a reference is not always a time or space savings. Modern machines may use 8-bytes to reference a 4-byte integer, for instance.
                        • +
                        +

                        9.5 Main: Using references to modify external data

                        +

                        9.5.1 Background/Required Knowledge

                        +
                          +
                        • All of the above
                        • +
                        +

                        9.5.2 Student outcomes

                        +

                        A student should be able to:

                        +
                          +
                        1. Define and utilize a non-const reference for passing values out of a function
                        2. +
                        +

                        9.5.3 Caveats

                        +

                        9.5.4 Points to cover

                        +
                          +
                        • If the function does not intend to modify the value, const-references should be preferred
                        • +
                        • A reference value may be modified
                        • +
                        • The lifetime of a reference cannot be expected to extend beyond the lifetime of the function, so the reference should not be saved off for future use.
                        • +
                        • Taking a reference is not always a time or space savings. Modern machines may use 8-bytes to reference a 4-byte integer, for instance.
                        • +
                        +

                        9.6 Advanced

                        +

                        These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                        +

                        9.7 Module name: Requires Expressions

                        +

                        Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                        +

                        9.7.1 Overview

                        +

                        Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                        + ++++ + + + + + + + + + + + + + + + + + + + + +
                        LevelObjectives
                        FoundationalDefine and use requires-expressions to check satisfaction of expressions by given parameters
                        MainDefine and use requires-expressions to check properties of expressions
                        Advanced
                        +

                        9.7.2 Motivation

                        +

                        Why is this important? Why do we want to learn/teach this topic?

                        +

                        Requires-expressions allow a developer to perform compile-time evaluation on the validity of other expressions. These are fundamental to the ability to write concepts. [Compile-time programming: concepts]

                        +

                        9.8 Topic introduction

                        +

                        Very brief introduction to the topic.

                        +

                        Requires-expressions are compile-time predicates which evaluate to true when their specified set of expressions are all valid for a given set of inputs.

                        +

                        9.8.1 Foundational: Writing requires-expressions

                        +

                        9.8.1.1 Background/Required Knowledge

                        +

                        A student is able to:

                        + +

                        It is helpful if:

                        +
                          +
                        • The student is aware that attempting to specialize the template with types or values which do not match otherwise unstated assumptions will cause errors within the template.
                        • +
                        +

                        9.8.1.2 Student outcomes

                        +

                        A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                        +

                        A student should be able to:

                        +
                          +
                        1. Write a simple-requirement to assert the validity of an expression
                        2. +
                        3. Write a type-requirement to check the existence of a type by its identifier
                        4. +
                        5. Write a compound-requirement to test the resulting type of an expression
                        6. +
                        7. Write a nested-requirement to test the constexpr value of an operation, as opposed to just the syntactic validity
                        8. +
                        9. Use a requires-expression within a concept, requires-clause, or if constexpr condition
                        10. +
                        +

                        9.8.1.3 Caveats

                        +

                        This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                        +

                        To require that expressions, which evaluate to a boolean value like sizeof(t) == 4, evaluate to true a nested-requirement is needed (e.g., requires sizeof(t) == 4;). Omitting the requires results in a simple-requirement, which is satisfied based purely on syntactic validity, not on the result of the operation.

                        +

                        9.8.1.4 Points to cover

                        +

                        This section lists important details for each point.

                        +
                          +
                        • All requires-expression requirements terminate with a semicolon.
                        • +
                        • simple-requirements are used to check that an expression is well-formed.
                        • +
                        • nested-requirements are introduced with requires and primarily used to check the result of an expression computable by the compiler, including concepts or other requires-expressions.
                        • +
                        • type-requirements are introduced with typename and used to verify the existence of a type with a particular identifier.
                        • +
                        • compound-requirements are enclosed in braces and can be used to check the resulting type of an expression.
                        • +
                        • Checks are performed by the compiler, not at run time.
                        • +
                        • If covering usage of requires-expression with requires-clause, [Compile-time programming: requires clause] demonstrate requires requires and show how to ever avoid writing it by using a concept. [Compile-time programming: concepts]
                        • +
                        +

                        9.8.2 Main: Advanced requirements

                        +

                        9.8.2.1 Background/Required Knowledge

                        +
                          +
                        • All of the above.
                        • +
                        • Knowledge of noexcept
                        • +
                        +

                        A student is able to:

                        + +

                        9.8.2.2 Student outcomes

                        +

                        A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                        +

                        A student should be able to:

                        +
                          +
                        1. Write compound-requirements which test the noexceptness of an expression.
                        2. +
                        3. Use a concept as the target of a compound-requirement.
                        4. +
                        +

                        9.8.2.3 Caveats

                        +

                        This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                        +

                        9.8.2.4 Points to cover

                        +

                        This section lists important details for each point.

                        +
                          +
                        • Compound-requirements allow the optional ability to test whether an expression is marked as noexcept, by using a trailing noexcept keyword.
                        • +
                        +
                        struct S
                        +{
                        +    void foo() noexcept {}
                        +    void bar() {}
                        +};
                        +
                        +static_assert(requires(S s) { { s.foo() } noexcept; } ); // Succeeds. s.foo() is noexcept
                        +static_assert(requires(S s) { { s.bar() } noexcept; } ); // Fails. s.bar() is not noexcept
                        +
                          +
                        • If the return-type-requirement of a compound-requirement is a concept, that concept is given the resulting type as the first parameter, followed by the specified parameters in the compound-requirement. { ++x } -> C<int> would substitute C<decltype((++x)), int> and check that concept C is satisfied for those parameters.
                        • +
                        +

                        9.8.3 Advanced

                        +

                        See user-defined-literals.

                        +

                        9.9 Meta-error handling: static_assert

                        +

                        Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                        +

                        9.9.1 Overview

                        +

                        Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                        + ++++ + + + + + + + + + + + + + + + + + + + + +
                        LevelObjectives
                        FoundationalCalling static_assert with a constant expression
                        MainUsing static_assert to detect contract violations and improve error messages
                        Advanced
                        +

                        9.9.2 Motivation

                        +

                        Why is this important? Why do we want to learn/teach this topic?

                        +

                        static_assert allows the developer to enforce that conditions which can be checked during compilation will force build errors when violated. Additionally, they are the best mechanism by which a developer can pass useful information to other developers regarding what violation occurred or what must be done, instead.

                        +

                        9.9.3 Topic introduction

                        +

                        Very brief introduction to the topic.

                        +

                        static_assert is a compile-time evaluated function that asserts the truth of a supplied predicate, issuing an optional user-supplied error message if the predicate is false.

                        +

                        9.9.4 Foundational: Calling static_assert with a constant expression

                        +

                        9.9.4.1 Background/Required Knowledge

                        +

                        A student:

                        +
                          +
                        • Should be able to explain the difference between code evaluated at compile-time and run-time
                        • +
                        • Should be able to cite some examples of compile-time known information, such as sizeof(T)
                        • +
                        +

                        9.9.4.2 Student outcomes

                        +

                        A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                        +

                        A student should be able to:

                        +
                          +
                        1. Assert the expected size of a structure using static_assert
                        2. +
                        +

                        9.9.4.3 Caveats

                        +

                        This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                        +

                        9.9.4.4 Points to cover

                        +

                        This section lists important details for each point.

                        +
                          +
                        • X
                        • +
                        • In addition to what is wrong, a good error message will inform the user of how to correct it
                        • +
                        +

                        9.9.5 Main: Contracts and static_assert

                        +

                        9.9.5.1 Background/Required Knowledge

                        +
                          +
                        • All of the above.
                        • +
                        • General understanding of compile-time requirements
                        • +
                        +

                        9.9.5.2 Student outcomes

                        +

                        A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                        +

                        A student should be able to:

                        +
                          +
                        1. Utilize static_assert to verify preconditions of a meta-function
                        2. +
                        3. Utilize static_assert to verify the results of meta-functions for known values
                        4. +
                        +

                        9.9.5.3 Caveats

                        +

                        This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                        +

                        9.9.5.4 Points to cover

                        +

                        This section lists important details for each point.

                        +
                          +
                        • When writing a meta-function, use static_assert to test the results
                        • +
                        • Write static_assert calls at the scope of the code they are guarding
                        • +
                        +
                        template<typename T>
                        +struct container {
                        +    std::map<int, T> vals;
                        +
                        +    // Test location #1
                        +    static_assert(
                        +        std::is_default_constructible_v<T>,
                        +        "container type T must be default constructible");i
                        +
                        +    void add(int key, T const& t) {
                        +        // Test location #2
                        +        static_assert(
                        +            std::is_default_constructible_v<T>,
                        +            "container type T must be default constructible");
                        +        // std::map::operator[] requires default constructible type for 
                        +        // the value. This will cause a build failure deep in the 
                        +        // implementation of std::map, when T is not default constructible
                        +        vals[key] = t;
                        +    }
                        +};
                        +
                        +struct NoDefCtor {
                        +    NoDefCtor() = delete;
                        +    NoDefCtor(double d) {}
                        +};
                        +
                        +container<NoDefCtor> c; // If Test #1 was omitted, this would succeed
                        +// This is ill-formed. Test #2 would catch this and provide a better 
                        +// error message for the user
                        +c.add(42, NoDefCtor(1.0)); 
                        +

                        9.9.6 Advanced

                        +

                        These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                        +

                        9.10 C++ object model: Declarations

                        +

                        Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                        +

                        9.10.1 Overview

                        +

                        Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                        + ++++ + + + + + + + + + + + + + + + + + + + + +
                        LevelObjective
                        FoundationalDeclaring variables
                        MainDeclaring for programs
                        AdvancedSpecial cases and peculiarities
                        +

                        9.10.2 Motivation

                        +

                        Why is this important? Why do we want to learn/teach this topic?

                        +
                          +
                        • Introduces a name and it’s type
                        • +
                        • int baz;
                        • +
                        • void bar();
                        • +
                        • class Foo;
                        • +
                        +

                        9.10.3 Topic introduction

                        +

                        Very brief introduction to the topic.

                        +

                        Introduce names and their associated type in a scope.

                        +

                        9.10.4 Foundational: Declaring variables

                        +

                        9.10.4.1 Background/Required Knowledge

                        +

                        A student:

                        +
                          +
                        • is familiar with the basic C++ types: +
                            +
                          • bool (Boolean type)
                          • +
                          • int (Integer type)
                          • +
                          • double (Floating-point type)
                          • +
                        • +
                        +

                        9.10.4.2 Student outcomes

                        +

                        A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                        +

                        A student should be able to:

                        +
                          +
                        1. declare a variable with a specific type ‘int baz;’
                        2. +
                        3. declare a function ‘void bar();’
                        4. +
                        5. declare a class ‘class Foo;’
                        6. +
                        7. forward declare a user-defined type or a function
                        8. +
                        9. explain the difference between a definition and a declaration
                        10. +
                        +

                        9.10.4.3 Caveats

                        +

                        This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                        +

                        No caveats at present.

                        +

                        9.10.4.4 Points to cover

                        +

                        This section lists important details for each point.

                        +

                        9.10.5 Main: Declarations for programs

                        +

                        9.10.5.1 Background/Required Knowledge

                        +
                          +
                        • All of the above.
                        • +
                        • Basic template syntax
                        • +
                        +

                        9.10.5.2 Student outcomes

                        +

                        A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                        +

                        A student should be able to:

                        +
                          +
                        1. create header and source files with a declaration in the former and definition of a variable/function in the latter
                        2. +
                        3. declare type aliases to introduce a type with an alternative name ‘using std::string;’
                        4. +
                        5. write a forward template declaration
                        6. +
                        +

                        9.10.5.3 Caveats

                        +

                        This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                        +
                          +
                        • Declaring aliases can introduce name clashes
                        • +
                        • Prefer using declaration’s over using directives in header files [link]
                        • +
                        • The order of declarations dictates the order of initialization
                        • +
                        +

                        9.10.5.4 Points to cover

                        +

                        This section lists important details for each point.

                        +

                        9.10.6 Advanced

                        +

                        These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                        +
                          +
                        • asm declaration
                        • +
                        • using-enum-declaration
                        • +
                        • extern “C” declarations
                        • +
                        +

                        9.11 C++ object model: Definitions

                        +

                        Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                        +

                        9.11.1 Overview

                        +

                        Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                        + ++++ + + + + + + + + + + + + + + + + + + + + +
                        LevelObjective
                        FoundationalDefining variables and ODR
                        MainDefining for programs
                        AdvancedSpecial cases and peculiarities
                        +

                        9.11.2 Motivation

                        +

                        Why is this important? Why do we want to learn/teach this topic?

                        +
                          +
                        • A definition is a declaration that supplies all that is needed for a complete entity
                        • +
                        • int baz = 42;
                        • +
                        • void bar() { /* implementation */ }
                        • +
                        • class Foo { /* class body */ };
                        • +
                        +

                        9.11.3 Topic introduction

                        +

                        Very brief introduction to the topic.

                        +

                        A definition extends a declaration, providing all that is needed for a complete entity, e.g., allocate memory for variables, provide the implementation for functions, complete definitions of data and function members of a class.

                        +

                        9.11.4 Foundational: Defining variables and ODR

                        +

                        9.11.4.1 Background/Required Knowledge

                        +

                        A student:

                        + +

                        9.11.4.2 Student outcomes

                        +

                        A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                        +

                        A student should be able to:

                        +
                          +
                        1. define a variable with a specific type int baz = 42;
                        2. +
                        3. define a function void bar() {}
                        4. +
                        5. define a class class Foo {};
                        6. +
                        7. explain the one definition rule
                        8. +
                        +

                        9.11.4.3 Caveats

                        +

                        This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                        +

                        No caveats at present.

                        +

                        9.11.4.4 Points to cover

                        +

                        This section lists important details for each point.

                        +
                          +
                        • One definition rule (ODR)
                        • +
                        +

                        9.11.5 Main: Defining for programs

                        +

                        9.11.5.1 Background/Required Knowledge

                        + +

                        9.11.5.2 Student outcomes

                        +

                        A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                        +

                        A student should be able to:

                        +
                          +
                        1. organize variables, functions, classes into multiple translation units, describing interface with declarations and providing the implementations with definitions without violating ODR.
                        2. +
                        3. distinguish between template declaration and definition
                        4. +
                        +

                        9.11.5.3 Caveats

                        +

                        This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                        +
                          +
                        • Putting a definition into a header file that is included more than once leads to ODR violations, possibly resulting in linker errors.
                        • +
                        +

                        9.11.5.4 Points to cover

                        +

                        This section lists important details for each point.

                        +

                        9.11.6 Advanced: Special cases and peculiarities

                        +

                        These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                        +
                          +
                        • ABI Incompatibilities: Different definitions of the same type in multiple object files can lead to subtle program errors.
                        • +
                        +

                        9.12 C++ object model: copy semantics

                        +

                        Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                        +

                        9.12.1 Overview

                        +

                        Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                        + ++++ + + + + + + + + + + + + + + + + + + + + +
                        LevelObjectives
                        Foundationalunderstanding how and when are copies made
                        Mainimplementing user-defined copy operations
                        Advancedspecial cases: copy elision
                        +

                        9.12.2 Motivation

                        +

                        Why is this important? Why do we want to learn/teach this topic?

                        +

                        Copy semantics allows the user to define how objects of a class get replicated and interact on a value level.

                        +

                        9.12.3 Topic introduction

                        +

                        Very brief introduction to the topic.

                        +

                        Explains when and how objects are copied.

                        +

                        9.12.4 Foundational: How and when are copies made

                        +

                        9.12.4.1 Background/Required Knowledge

                        +

                        A student is able to: * explain what a C++ type is? [C++ object model: types] * explain what an object is? [C++ object model: objects], [C++ object model: constant objects] * define and understand class invariants?

                        +

                        It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain special member functions [C++ object model: special member functions]

                        +

                        9.12.4.2 Student outcomes

                        +

                        A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                        +

                        A student should be able to:

                        +
                          +
                        1. explain what copy semantics accomplish
                        2. +
                        +
                          +
                        • establishing “equivalent” object state in another object
                        • +
                        +
                          +
                        1. explain difference between copying a reference and copying a value*
                        2. +
                        3. explain where copies are made
                        4. +
                        +

                        * In other languages these differences are sometimes referred to as shallow and deep copy.

                        +

                        9.12.4.3 Caveats

                        +

                        This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                        +
                          +
                        • Compiler-provided copy operations may result in ownership problems (e.g., char*). These ownership problems can generally be solved by using types whose copy operations have the appropriate semantics, e.g., std::string instead of char* to hold string values.
                        • +
                        +

                        9.12.4.4 Points to cover

                        +

                        This section lists important details for each point.

                        +
                          +
                        • Principle of copying +
                            +
                          • Copying of types, which follow the rule of zero
                          • +
                          • Copying of types, with user defined copy operations
                          • +
                          • Copying an object does not change the original
                          • +
                        • +
                        • Practical applications +
                            +
                          • std::unique_ptr (has no copy)
                          • +
                          • Strings (copies the value)
                          • +
                        • +
                        +

                        9.12.5 Main: Implementing user-defined copy operations

                        +

                        9.12.5.1 Background/Required Knowledge

                        +

                        A student is able to: * identify special member functions [C++ object model: special member functions]

                        +

                        It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain the rule of zero [C++ object model: rule-of-zero] * explain the rule of five [C++ object model: rule-of-five]

                        +

                        9.12.5.2 Student outcomes

                        +

                        A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                        +

                        A student should be able to: * explain when they have to implement the copy operations for their own type * Copy constructor * Copy assignment operator * implement copy operations for their own types * Optional: explain when copying with basic and strong exception guarantees is useful

                        +

                        9.12.5.3 Caveats

                        +

                        This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                        +
                          +
                        • Intricacies when implementing copy operations: +
                            +
                          • Examples of how not to write copy operations (e.g., C++03 std::auto_ptr)
                          • +
                        • +
                        +

                        9.12.5.4 Points to cover

                        +

                        This section lists important details for each point.

                        +
                          +
                        • Copy constructors and copy assignment operators +
                            +
                          • How compiler generates default copy operations
                          • +
                          • =default, =delete (No copy)
                          • +
                          • How-to write your own copy operations
                          • +
                          • Rule-of-five
                          • +
                          • Copy assignment operators can be ref-qualified to avoid assigning into temporary objects.
                          • +
                        • +
                        +

                        9.12.6 Advanced

                        +

                        These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                        +

                        When can copies be elided and when does the standard guarantee copy elision. References: * Abseil tip of the Week #166 * cppreference - Copy elision

                        +

                        See concepts.

                        +

                        10 License

                        +

                        [NOTE: This license is copied verbatim from the C++ Core Guidelines.]

                        +
                        Copyright (c) Standard C++ Foundation and its contributors
                        +
                        +Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
                        +perpetual license to copy, use, modify, and create derivative works from this
                        +project for your personal or internal business use only. The above copyright
                        +notice and this permission notice shall be included in all copies or
                        +substantial portions of the project. This license does not grant permission
                        +to use the trade names, trademarks, service marks, or product names of the
                        +licensor, except as required for reasonable and customary use in describing
                        +the origin of the project.
                        +
                        +Standard C++ Foundation reserves the right to accept contributions to the
                        +project at its discretion.
                        +
                        +By contributing material to this project, you grant Standard C++ Foundation,
                        +and those who receive the material directly or indirectly from Standard C++
                        +Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
                        +transferrable license to reproduce, prepare derivative works of, publicly
                        +display, publicly perform, and distribute your contributed material and such
                        +derivative works, and to sublicense any or all of the foregoing rights to third
                        +parties for commercial or non-commercial use.  You also grant Standard C++
                        +Foundation, and those who receive the material directly or indirectly from
                        +Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
                        +irrevocable license under your patent claims that directly read on your
                        +contributed material to make, have made, use, offer to sell, sell and import
                        +or otherwise dispose of the material. You warrant that your material is your
                        +original work, or that you have the right to grant the above licenses.
                        +
                        +THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
                        +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
                        +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
                        +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
                        +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
                        +OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
                        +PROJECT.
                        +
                        +If you believe that anything in the project infringes your copyright, please
                        +contact us at admin@isocpp.org with your contact information and a detailed
                        +description of your intellectual property, including a specific URL where you
                        +believe your intellectual property is being infringed.
                        +
                        +

                        11 Contributors

                        +
                        Christopher Di Bella
                        +Florian Sattler
                        +Michael Adams
                        +rwdougla
                        +

                        12 How To Contribute

                        +

                        Before attempting to contribute any content for consideration for inclusion in this document, please read the information below and and the referenced documents as appropriate.

                        +

                        All contributions to this project must be made in accordance with the license in section License. This teaching-guidelines document only offers guidance on teaching C++ as it is specified in the current version of the C++ standard. So, content should be presented relative to the most-recently ratified version of the standard. A detailed explanation of how to present the material for a topic is given in:

                        +
                          +
                        • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.
                        • +
                        +

                        Any potential contributors should ensure that they read this document. The following document may also be helpful in providing some general background on the modular approach to teaching followed herein:

                        + +

                        In order to prepare content, it is important to understand what learning outcomes are, and how to prepare good ones. Some information on learning outcomes can be found in the References section. The following document offers a concise introduction to learning outcomes:

                        + +

                        13 Glossary

                        +

                        Some possible terms to include in the glossary:

                        +
                          +
                        • learning objective
                        • +
                        • learning outcome
                        • +
                        +

                        14 References

                        +

                        14.1 References on Learning Outcomes

                        + + +
                          +
                        • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — Standing Document for SG20: Guidelines for Teaching C++ to Beginners. https://wg21.link/p1389.

                        • +
                        • Christopher Di Bella. P1725R0 — Modular Topic Design. https://wg21.link/p1725.

                        • +
                        • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to structure a teaching topic. https://wg21.link/p2193.

                        • +
                        • JC van Winkel and Christopher Di Bella. P1231 — Proposal for Study Group: C++ Education. https://wg21.link/p1231.

                        • +
                        • H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, and M. Wong. P2000 — Direction for ISO C++, Section 5.1. https://wg21.link/p2000r0.

                        • +
                        +
                        +
                        + + +
                        + + diff --git a/PR_0.0.20/html_split/Advanced-Exception_002dsafe-containers-and-edge-cases.html b/PR_0.0.20/html_split/Advanced-Exception_002dsafe-containers-and-edge-cases.html new file mode 100644 index 0000000..d0c6d6c --- /dev/null +++ b/PR_0.0.20/html_split/Advanced-Exception_002dsafe-containers-and-edge-cases.html @@ -0,0 +1,65 @@ + + + + + +Advanced Exception-safe containers and edge cases (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        7.1.12 Advanced: Exception-safe containers and edge cases

                        +

                        These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

                        +
                          +
                        • Rethrowing a modified exception +
                        • Writing exception safe containers +
                        + +
                        + + + + + diff --git a/PR_0.0.20/html_split/Advanced-Special-cases-and-peculiarities.html b/PR_0.0.20/html_split/Advanced-Special-cases-and-peculiarities.html new file mode 100644 index 0000000..ff2f69c --- /dev/null +++ b/PR_0.0.20/html_split/Advanced-Special-cases-and-peculiarities.html @@ -0,0 +1,65 @@ + + + + + +Advanced Special cases and peculiarities (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        9.11.6 Advanced: Special cases and peculiarities

                        +

                        These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

                        +
                          +
                        • ABI Incompatibilities: Different definitions of the same type in +multiple object files can lead to subtle program errors. +
                        + +
                        + + + + + diff --git a/PR_0.0.20/html_split/Advanced.html b/PR_0.0.20/html_split/Advanced.html new file mode 100644 index 0000000..b8211bc --- /dev/null +++ b/PR_0.0.20/html_split/Advanced.html @@ -0,0 +1,64 @@ + + + + + +Advanced (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        7.1.6 Advanced

                        +

                        These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

                        +
                          +
                        • implementing your own error_category +
                        + +
                        + + + + + diff --git a/PR_0.0.20/html_split/Background_002fRequired-Knowledge.html b/PR_0.0.20/html_split/Background_002fRequired-Knowledge.html new file mode 100644 index 0000000..82c12dc --- /dev/null +++ b/PR_0.0.20/html_split/Background_002fRequired-Knowledge.html @@ -0,0 +1,63 @@ + + + + + +Background/Required Knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        7.1.4.1 Background/Required Knowledge

                        +

                        A student: +

                        + + +
                        + + + + + diff --git a/PR_0.0.20/html_split/Background_002fRequired-knowledge.html b/PR_0.0.20/html_split/Background_002fRequired-knowledge.html new file mode 100644 index 0000000..3a48e1e --- /dev/null +++ b/PR_0.0.20/html_split/Background_002fRequired-knowledge.html @@ -0,0 +1,58 @@ + + + + + +Background/Required knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        7.4.5.1 Background/Required knowledge

                        +
                          +
                        • All of the above. +
                        + +
                        + + + + + diff --git a/PR_0.0.20/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html b/PR_0.0.20/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html new file mode 100644 index 0000000..fbe3431 --- /dev/null +++ b/PR_0.0.20/html_split/Basics-Types-Objects-Values-Expressions-Statements-and-Control_002dFlow-Constructs.html @@ -0,0 +1,66 @@ + + + + + +Basics Types Objects Values Expressions Statements and Control-Flow Constructs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        6.3 Basics Types, Objects, Values, Expressions, Statements, and

                        +

                        Control-Flow Constructs +

                        + + + + + + +
                        IDUnitFoundationalMainAdvanced
                        [‘?’]Constant Objects???
                        [‘?’]Declarations???
                        [def]Definitions‘✔️’✔️✔️
                        [‘?’]Selection Constructs (e.g., if, ternary)???
                        [‘?’]Looping Constructs (e.g., for, while, etc.)???
                        + +
                        + + + + + diff --git a/PR_0.0.20/html_split/Building.html b/PR_0.0.20/html_split/Building.html new file mode 100644 index 0000000..2429fdf --- /dev/null +++ b/PR_0.0.20/html_split/Building.html @@ -0,0 +1,62 @@ + + + + + +Building (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        6.12 Building

                        + + + + +
                        IDUnitFoundationalMainAdvanced
                        [‘?’]Software Build Tools???
                        [‘?’]Strategies for Handling Build Problems???
                        + +
                        + + + + + diff --git a/PR_0.0.20/html_split/C_002b_002b-object-model-Declarations.html b/PR_0.0.20/html_split/C_002b_002b-object-model-Declarations.html new file mode 100644 index 0000000..0bf0346 --- /dev/null +++ b/PR_0.0.20/html_split/C_002b_002b-object-model-Declarations.html @@ -0,0 +1,69 @@ + + + + + +C++ object model Declarations (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        9.10 C++ object model: Declarations

                        +

                        Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

                        + + +
                        + + + + + diff --git a/PR_0.0.20/html_split/C_002b_002b-object-model-Definitions.html b/PR_0.0.20/html_split/C_002b_002b-object-model-Definitions.html new file mode 100644 index 0000000..77b1abc --- /dev/null +++ b/PR_0.0.20/html_split/C_002b_002b-object-model-Definitions.html @@ -0,0 +1,69 @@ + + + + + +C++ object model Definitions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        9.11 C++ object model: Definitions

                        +

                        Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

                        + + +
                        + + + + + diff --git a/PR_0.0.20/html_split/C_002b_002b-object-model-copy-semantics.html b/PR_0.0.20/html_split/C_002b_002b-object-model-copy-semantics.html new file mode 100644 index 0000000..ba950b5 --- /dev/null +++ b/PR_0.0.20/html_split/C_002b_002b-object-model-copy-semantics.html @@ -0,0 +1,67 @@ + + + + + +C++ object model copy semantics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        9.12 C++ object model: copy semantics

                        +

                        Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

                        + + +
                        + + + + + diff --git a/PR_0.0.20/html_split/Caveats.html b/PR_0.0.20/html_split/Caveats.html new file mode 100644 index 0000000..8e93604 --- /dev/null +++ b/PR_0.0.20/html_split/Caveats.html @@ -0,0 +1,60 @@ + + + + + +Caveats (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        7.1.4.3 Caveats

                        +

                        This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                        +
                        + + + + + diff --git a/PR_0.0.20/html_split/Compilation-Model.html b/PR_0.0.20/html_split/Compilation-Model.html new file mode 100644 index 0000000..028e365 --- /dev/null +++ b/PR_0.0.20/html_split/Compilation-Model.html @@ -0,0 +1,66 @@ + + + + + +Compilation Model (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        6.1 Compilation Model

                        + + + + + + + + + +
                        IDUnitFoundationalMainAdvanced
                        [‘?’]Translation Units???
                        [‘?’]Headers???
                        [‘?’]Modules???
                        [‘?’]Name Mangling???
                        [‘?’]Phases of Translation???
                        [‘?’]Separate Compilation???
                        [‘?’]Linkage???
                        + +
                        + + + + + diff --git a/PR_0.0.20/html_split/Compile_002dTime-Computation.html b/PR_0.0.20/html_split/Compile_002dTime-Computation.html new file mode 100644 index 0000000..bd0e9b9 --- /dev/null +++ b/PR_0.0.20/html_split/Compile_002dTime-Computation.html @@ -0,0 +1,62 @@ + + + + + +Compile-Time Computation (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        6.7 Compile-Time Computation

                        + + + + +
                        IDUnitFoundationalMainAdvanced
                        [‘?’]Constant Expressions and Constant Evaluation???
                        [static-assert]static_assert✔️✔️
                        + +
                        + + + + + diff --git a/PR_0.0.20/html_split/Context-and-Aim-of-This-Guide.html b/PR_0.0.20/html_split/Context-and-Aim-of-This-Guide.html new file mode 100644 index 0000000..b8e16e5 --- /dev/null +++ b/PR_0.0.20/html_split/Context-and-Aim-of-This-Guide.html @@ -0,0 +1,81 @@ + + + + + +Context and Aim of This Guide (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        2 Context and Aim of This Guide

                        +

                        This document is intended to serve as a resource for instructors to +assist in the preparation of courses on C++ in a variety of settings, +including university, college, and industry environments. The main +objectives of this document are as follows: +

                        +
                          +
                        • to provide guidelines for content to be covered by courses of various +difficulty levels on C++ (e.g., topics and learning outcomes) +
                        • to note some common misunderstandings and problematic points that may be +encountered when teaching particular topics +
                        • to suggest resources useful for teaching C++ +
                        • to present examples of curriculum for specific courses +
                        + +

                        This document does not itself provide a curriculum for a single specific +course, but is rather a set of guidelines that can be used to prepare +curricula for a wide variety of courses that differ in focus and level +of sophistication. (This said, however, some links to other documents +with examples of curricula for specific courses may be included herein.) +This document only intends to target the teaching of the most recently +ratified version of the C++ standard. (This said, however, since older +versions of this document are also available, these older versions may +be of some use to those who need guidance in older versions of the +standard, at least versions that do not predate C++20.) +

                        +
                        + + + + + diff --git a/PR_0.0.20/html_split/Contributing-to-This-Document.html b/PR_0.0.20/html_split/Contributing-to-This-Document.html new file mode 100644 index 0000000..9eda97f --- /dev/null +++ b/PR_0.0.20/html_split/Contributing-to-This-Document.html @@ -0,0 +1,60 @@ + + + + + +Contributing to This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        4 Contributing to This Document

                        +

                        Contributions to this document are welcome. If you would like to help +with this project as a contributor, please read the section +How to Contribute. +

                        +
                        + + + + + diff --git a/PR_0.0.20/html_split/Contributors.html b/PR_0.0.20/html_split/Contributors.html new file mode 100644 index 0000000..93a2bab --- /dev/null +++ b/PR_0.0.20/html_split/Contributors.html @@ -0,0 +1,62 @@ + + + + + +Contributors (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        11 Contributors

                        + +
                        Christopher Di Bella
                        +Florian Sattler
                        +Michael Adams
                        +rwdougla
                        +
                        +
                        + + + + + diff --git a/PR_0.0.20/html_split/Detailed-Information-for-Modules-and-Topics.html b/PR_0.0.20/html_split/Detailed-Information-for-Modules-and-Topics.html new file mode 100644 index 0000000..2262186 --- /dev/null +++ b/PR_0.0.20/html_split/Detailed-Information-for-Modules-and-Topics.html @@ -0,0 +1,64 @@ + + + + + +Detailed Information for Modules and Topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PR_0.0.20/html_split/Error-Handling.html b/PR_0.0.20/html_split/Error-Handling.html new file mode 100644 index 0000000..1aa4d5b --- /dev/null +++ b/PR_0.0.20/html_split/Error-Handling.html @@ -0,0 +1,64 @@ + + + + + +Error Handling (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        6.9 Error Handling

                        + + + + + + +
                        IDUnitFoundationalMainAdvanced
                        [‘coe’]Categories of Errors‘✔️’✔️
                        [‘?’]errno???
                        [‘?’]Error Codes???
                        [‘eh’]Exception Handling‘✔️’✔️✔️
                        + +
                        + + + + + diff --git a/PR_0.0.20/html_split/Error-handling-Categories-of-errors.html b/PR_0.0.20/html_split/Error-handling-Categories-of-errors.html new file mode 100644 index 0000000..1722d58 --- /dev/null +++ b/PR_0.0.20/html_split/Error-handling-Categories-of-errors.html @@ -0,0 +1,68 @@ + + + + + +Error handling Categories of errors (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        7.2 Error handling: Categories of errors

                        +

                        Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

                        + + +
                        + + + + + diff --git a/PR_0.0.20/html_split/Error-handling-Error-codes.html b/PR_0.0.20/html_split/Error-handling-Error-codes.html new file mode 100644 index 0000000..af0939a --- /dev/null +++ b/PR_0.0.20/html_split/Error-handling-Error-codes.html @@ -0,0 +1,73 @@ + + + + + +Error handling Error codes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        7.1 Error handling: Error codes

                        +

                        Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

                        + + +
                        + + + + + diff --git a/PR_0.0.20/html_split/External-ie-Non-Standard-Libraries.html b/PR_0.0.20/html_split/External-ie-Non-Standard-Libraries.html new file mode 100644 index 0000000..3957305 --- /dev/null +++ b/PR_0.0.20/html_split/External-ie-Non-Standard-Libraries.html @@ -0,0 +1,61 @@ + + + + + +External ie Non Standard Libraries (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        6.11 External (i.e., Non Standard) Libraries

                        + + + +
                        IDUnitFoundationalMainAdvanced
                        [‘?’]Graphical User Interfaces???
                        + +
                        + + + + + diff --git a/PR_0.0.20/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html b/PR_0.0.20/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html new file mode 100644 index 0000000..90f73fa --- /dev/null +++ b/PR_0.0.20/html_split/Foundational-Calling-static_005fassert-with-a-constant-expression.html @@ -0,0 +1,65 @@ + + + + + +Foundational Calling static_assert with a constant expression (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        9.9.4 Foundational: Calling static_assert with a constant

                        +

                        expression +

                        + +
                          +
                        • Background/Required Knowledge
                        • +
                        • Student outcomes
                        • +
                        • Caveats
                        • +
                        • Points to cover
                        • +
                        +
                        + + + + + diff --git a/PR_0.0.20/html_split/Foundational-Categories-of-errors.html b/PR_0.0.20/html_split/Foundational-Categories-of-errors.html new file mode 100644 index 0000000..eace79e --- /dev/null +++ b/PR_0.0.20/html_split/Foundational-Categories-of-errors.html @@ -0,0 +1,64 @@ + + + + + +Foundational Categories of errors (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        7.2.4 Foundational: Categories of errors

                        + + +
                          +
                        • Background/Required Knowledge
                        • +
                        • Student outcomes
                        • +
                        • Caveats
                        • +
                        • Points to cover
                        • +
                        +
                        + + + + + diff --git a/PR_0.0.20/html_split/Foundational-Declaring-variables.html b/PR_0.0.20/html_split/Foundational-Declaring-variables.html new file mode 100644 index 0000000..a8d852b --- /dev/null +++ b/PR_0.0.20/html_split/Foundational-Declaring-variables.html @@ -0,0 +1,64 @@ + + + + + +Foundational Declaring variables (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        9.10.4 Foundational: Declaring variables

                        + + +
                          +
                        • Background/Required Knowledge
                        • +
                        • Student outcomes
                        • +
                        • Caveats
                        • +
                        • Points to cover
                        • +
                        +
                        + + + + + diff --git a/PR_0.0.20/html_split/Foundational-Defining-variables-and-ODR.html b/PR_0.0.20/html_split/Foundational-Defining-variables-and-ODR.html new file mode 100644 index 0000000..02c8338 --- /dev/null +++ b/PR_0.0.20/html_split/Foundational-Defining-variables-and-ODR.html @@ -0,0 +1,64 @@ + + + + + +Foundational Defining variables and ODR (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        9.11.4 Foundational: Defining variables and ODR

                        + + +
                          +
                        • Background/Required Knowledge
                        • +
                        • Student outcomes
                        • +
                        • Caveats
                        • +
                        • Points to cover
                        • +
                        +
                        + + + + + diff --git a/PR_0.0.20/html_split/Foundational-Handling-error-codes-with-stderror_005fcode.html b/PR_0.0.20/html_split/Foundational-Handling-error-codes-with-stderror_005fcode.html new file mode 100644 index 0000000..0a395b1 --- /dev/null +++ b/PR_0.0.20/html_split/Foundational-Handling-error-codes-with-stderror_005fcode.html @@ -0,0 +1,65 @@ + + + + + +Foundational Handling error codes with stderror_code (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        7.1.4 Foundational: Handling error codes with

                        +

                        std::error_code +

                        + + +
                        + + + + + diff --git a/PR_0.0.20/html_split/Foundational-How-and-when-are-copies-made.html b/PR_0.0.20/html_split/Foundational-How-and-when-are-copies-made.html new file mode 100644 index 0000000..5f3d66b --- /dev/null +++ b/PR_0.0.20/html_split/Foundational-How-and-when-are-copies-made.html @@ -0,0 +1,64 @@ + + + + + +Foundational How and when are copies made (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        9.12.4 Foundational: How and when are copies made

                        + + +
                          +
                        • Background/Required Knowledge
                        • +
                        • Student outcomes
                        • +
                        • Caveats
                        • +
                        • Points to cover
                        • +
                        +
                        + + + + + diff --git a/PR_0.0.20/html_split/Foundational-Standards-exception-hierarchy.html b/PR_0.0.20/html_split/Foundational-Standards-exception-hierarchy.html new file mode 100644 index 0000000..69ff57b --- /dev/null +++ b/PR_0.0.20/html_split/Foundational-Standards-exception-hierarchy.html @@ -0,0 +1,64 @@ + + + + + +Foundational Standards exception hierarchy (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        7.1.10 Foundational: Standards exception hierarchy

                        + + +
                          +
                        • Background/Required Knowledge
                        • +
                        • Student outcomes
                        • +
                        • Caveats
                        • +
                        • Points to cover
                        • +
                        +
                        + + + + + diff --git a/PR_0.0.20/html_split/Foundational-Using-UDLs.html b/PR_0.0.20/html_split/Foundational-Using-UDLs.html new file mode 100644 index 0000000..ef64742 --- /dev/null +++ b/PR_0.0.20/html_split/Foundational-Using-UDLs.html @@ -0,0 +1,64 @@ + + + + + +Foundational Using UDLs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        7.3.4 Foundational: Using UDLs

                        + + +
                          +
                        • Background/Required Knowledge
                        • +
                        • Student outcomes
                        • +
                        • Caveats
                        • +
                        • Points to cover
                        • +
                        +
                        + + + + + diff --git a/PR_0.0.20/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html b/PR_0.0.20/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html new file mode 100644 index 0000000..b2fe768 --- /dev/null +++ b/PR_0.0.20/html_split/Foundational-Using-and-defining-functions-with-default-arguments.html @@ -0,0 +1,65 @@ + + + + + +Foundational Using and defining functions with default arguments (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        7.4.4 Foundational: Using and defining functions with default

                        +

                        arguments +

                        + +
                          +
                        • Background/Required Knowledge
                        • +
                        • Student outcomes
                        • +
                        • Caveats
                        • +
                        • Points to cover
                        • +
                        +
                        + + + + + diff --git a/PR_0.0.20/html_split/Foundational-Using-reference-types-to-avoid-copies.html b/PR_0.0.20/html_split/Foundational-Using-reference-types-to-avoid-copies.html new file mode 100644 index 0000000..5ee570b --- /dev/null +++ b/PR_0.0.20/html_split/Foundational-Using-reference-types-to-avoid-copies.html @@ -0,0 +1,64 @@ + + + + + +Foundational Using reference types to avoid copies (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        8.4 Foundational: Using reference types to avoid copies

                        + + +
                          +
                        • Background/Required Knowledge
                        • +
                        • Student outcomes
                        • +
                        • Caveats
                        • +
                        • Points to cover
                        • +
                        +
                        + + + + + diff --git a/PR_0.0.20/html_split/Foundational-Writing-requires_002dexpressions.html b/PR_0.0.20/html_split/Foundational-Writing-requires_002dexpressions.html new file mode 100644 index 0000000..49a64f7 --- /dev/null +++ b/PR_0.0.20/html_split/Foundational-Writing-requires_002dexpressions.html @@ -0,0 +1,63 @@ + + + + + +Foundational Writing requires-expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        9.8.1 Foundational: Writing requires-expressions

                        + + +
                          +
                        • Background/Required Knowledge
                        • +
                        • Student outcomes
                        • +
                        • Caveats
                        • +
                        • Points to cover
                        • +
                        +
                        + + + + + + diff --git a/PR_0.0.20/html_split/Functions-default-argument.html b/PR_0.0.20/html_split/Functions-default-argument.html new file mode 100644 index 0000000..a9ef34a --- /dev/null +++ b/PR_0.0.20/html_split/Functions-default-argument.html @@ -0,0 +1,68 @@ + + + + + +Functions default argument (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        7.4 Functions: default argument

                        +

                        Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

                        + + +
                        + + + + + diff --git a/PR_0.0.20/html_split/Functions-user_002ddefined-literals.html b/PR_0.0.20/html_split/Functions-user_002ddefined-literals.html new file mode 100644 index 0000000..4475aca --- /dev/null +++ b/PR_0.0.20/html_split/Functions-user_002ddefined-literals.html @@ -0,0 +1,68 @@ + + + + + +Functions user-defined literals (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        7.3 Functions: user-defined literals

                        +

                        Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

                        + + +
                        + + + + + diff --git a/PR_0.0.20/html_split/Functions.html b/PR_0.0.20/html_split/Functions.html new file mode 100644 index 0000000..1d952be --- /dev/null +++ b/PR_0.0.20/html_split/Functions.html @@ -0,0 +1,66 @@ + + + + + +Functions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        6.4 Functions

                        + + + + + + + + +
                        IDUnitFoundationalMainAdvanced
                        [‘?’]Calling Functions???
                        [‘?’]Parameter Passing (e.g., Passing By Value and Reference)???
                        [func-args]Default Arguments✔️
                        [‘?’]Returning Multiple Values???
                        [‘?’]Overloading???
                        [udl]User-Defined Literals✔️✔️
                        + +
                        + + + + + diff --git a/PR_0.0.20/html_split/Generic-Programming-Templates.html b/PR_0.0.20/html_split/Generic-Programming-Templates.html new file mode 100644 index 0000000..645751c --- /dev/null +++ b/PR_0.0.20/html_split/Generic-Programming-Templates.html @@ -0,0 +1,66 @@ + + + + + +Generic Programming Templates (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        6.8 Generic Programming (Templates)

                        + + + + + + + + +
                        IDUnitFoundationalMainAdvanced
                        [‘?’]Concepts???
                        [‘?’]SFINAE???
                        [‘?’]Template Metaprogramming???
                        [‘?’]Function Templates???
                        [‘?’]Requires Clauses???
                        [req-expr]Requires Expressions✔️✔️
                        + +
                        + + + + + diff --git a/PR_0.0.20/html_split/Glossary.html b/PR_0.0.20/html_split/Glossary.html new file mode 100644 index 0000000..dc5d79d --- /dev/null +++ b/PR_0.0.20/html_split/Glossary.html @@ -0,0 +1,63 @@ + + + + + +Glossary (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        13 Glossary

                        +

                        Some possible terms to include in the glossary: +

                        +
                          +
                        • learning objective +
                        • learning outcome +
                        + +
                        + + + + + diff --git a/PR_0.0.20/html_split/How-To-Contribute.html b/PR_0.0.20/html_split/How-To-Contribute.html new file mode 100644 index 0000000..6c32cf6 --- /dev/null +++ b/PR_0.0.20/html_split/How-To-Contribute.html @@ -0,0 +1,94 @@ + + + + + +How To Contribute (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        12 How To Contribute

                        +

                        Before attempting to contribute any content for consideration for +inclusion in this document, please read the information below and and +the referenced documents as appropriate. +

                        +

                        All contributions to this project must be made in accordance with the +license in section License. This teaching-guidelines +document only offers guidance on teaching C++ as it is specified in the +current version of the C++ standard. So, content should be presented +relative to the most-recently ratified version of the standard. A +detailed explanation of how to present the material for a topic is given +in: +

                        +
                          +
                        • JC van Winkel, Bjarne Stroustrup, and Florian Sattler. P2193 — How to +structure a teaching topic. https://wg21.link/p2193. +
                        + +

                        Any potential contributors should ensure that they read this document. +The following document may also be helpful in providing some general +background on the modular approach to teaching followed herein: +

                        + + +

                        In order to prepare content, it is important to understand what learning +outcomes are, and how to prepare good ones. Some information on learning +outcomes can be found in the References section. The +following document offers a concise introduction to learning outcomes: +

                        + + +
                        + + + + + diff --git a/PR_0.0.20/html_split/Inheritance-and-Class-Hierarchies.html b/PR_0.0.20/html_split/Inheritance-and-Class-Hierarchies.html new file mode 100644 index 0000000..8eab74a --- /dev/null +++ b/PR_0.0.20/html_split/Inheritance-and-Class-Hierarchies.html @@ -0,0 +1,62 @@ + + + + + +Inheritance and Class Hierarchies (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        6.6 Inheritance and Class Hierarchies

                        + + + + +
                        IDUnitFoundationalMainAdvanced
                        [‘?’]Virtual Functions???
                        [‘?’]Run-Time Type Information???
                        + +
                        + + + + + diff --git a/PR_0.0.20/html_split/License.html b/PR_0.0.20/html_split/License.html new file mode 100644 index 0000000..5cfcecd --- /dev/null +++ b/PR_0.0.20/html_split/License.html @@ -0,0 +1,105 @@ + + + + + +License (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        10 License

                        +

                        [NOTE: This license is copied verbatim from the C++ Core +Guidelines.] +

                        +
                        Copyright (c) Standard C++ Foundation and its contributors
                        +
                        +Standard C++ Foundation grants you a worldwide, nonexclusive, royalty-free,
                        +perpetual license to copy, use, modify, and create derivative works from this
                        +project for your personal or internal business use only. The above copyright
                        +notice and this permission notice shall be included in all copies or
                        +substantial portions of the project. This license does not grant permission
                        +to use the trade names, trademarks, service marks, or product names of the
                        +licensor, except as required for reasonable and customary use in describing
                        +the origin of the project.
                        +
                        +Standard C++ Foundation reserves the right to accept contributions to the
                        +project at its discretion.
                        +
                        +By contributing material to this project, you grant Standard C++ Foundation,
                        +and those who receive the material directly or indirectly from Standard C++
                        +Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable,
                        +transferrable license to reproduce, prepare derivative works of, publicly
                        +display, publicly perform, and distribute your contributed material and such
                        +derivative works, and to sublicense any or all of the foregoing rights to third
                        +parties for commercial or non-commercial use.  You also grant Standard C++
                        +Foundation, and those who receive the material directly or indirectly from
                        +Standard C++ Foundation, a perpetual, worldwide, non-exclusive, royalty-free,
                        +irrevocable license under your patent claims that directly read on your
                        +contributed material to make, have made, use, offer to sell, sell and import
                        +or otherwise dispose of the material. You warrant that your material is your
                        +original work, or that you have the right to grant the above licenses.
                        +
                        +THE PROJECT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
                        +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
                        +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
                        +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
                        +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
                        +OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER DEALINGS IN THE
                        +PROJECT.
                        +
                        +If you believe that anything in the project infringes your copyright, please
                        +contact us at admin@isocpp.org with your contact information and a detailed
                        +description of your intellectual property, including a specific URL where you
                        +believe your intellectual property is being infringed.
                        +
                        +
                        +
                        + + + + + + diff --git a/PR_0.0.20/html_split/Main-Advanced-requirements.html b/PR_0.0.20/html_split/Main-Advanced-requirements.html new file mode 100644 index 0000000..1da3a0c --- /dev/null +++ b/PR_0.0.20/html_split/Main-Advanced-requirements.html @@ -0,0 +1,63 @@ + + + + + +Main Advanced requirements (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        9.8.2 Main: Advanced requirements

                        + + +
                          +
                        • Background/Required Knowledge
                        • +
                        • Student outcomes
                        • +
                        • Caveats
                        • +
                        • Points to cover
                        • +
                        +
                        + + + + + diff --git a/PR_0.0.20/html_split/Main-Contracts-and-static_005fassert.html b/PR_0.0.20/html_split/Main-Contracts-and-static_005fassert.html new file mode 100644 index 0000000..af13485 --- /dev/null +++ b/PR_0.0.20/html_split/Main-Contracts-and-static_005fassert.html @@ -0,0 +1,64 @@ + + + + + +Main Contracts and static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        9.9.5 Main: Contracts and static_assert

                        + + +
                          +
                        • Background/Required Knowledge
                        • +
                        • Student outcomes
                        • +
                        • Caveats
                        • +
                        • Points to cover
                        • +
                        +
                        + + + + + diff --git a/PR_0.0.20/html_split/Main-Declarations-for-programs.html b/PR_0.0.20/html_split/Main-Declarations-for-programs.html new file mode 100644 index 0000000..5de5646 --- /dev/null +++ b/PR_0.0.20/html_split/Main-Declarations-for-programs.html @@ -0,0 +1,64 @@ + + + + + +Main Declarations for programs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        9.10.5 Main: Declarations for programs

                        + + +
                          +
                        • Background/Required Knowledge
                        • +
                        • Student outcomes
                        • +
                        • Caveats
                        • +
                        • Points to cover
                        • +
                        +
                        + + + + + diff --git a/PR_0.0.20/html_split/Main-Defining-for-programs.html b/PR_0.0.20/html_split/Main-Defining-for-programs.html new file mode 100644 index 0000000..9f69b09 --- /dev/null +++ b/PR_0.0.20/html_split/Main-Defining-for-programs.html @@ -0,0 +1,65 @@ + + + + + +Main Defining for programs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        9.11.5 Main: Defining for programs

                        + + +
                          +
                        • Background/Required Knowledge
                        • +
                        • Student outcomes
                        • +
                        • Caveats
                        • +
                        • Points to cover
                        • +
                        +
                        + + + + + diff --git a/PR_0.0.20/html_split/Main-Designing-APIs-around-stderror_005fcode.html b/PR_0.0.20/html_split/Main-Designing-APIs-around-stderror_005fcode.html new file mode 100644 index 0000000..8aca8df --- /dev/null +++ b/PR_0.0.20/html_split/Main-Designing-APIs-around-stderror_005fcode.html @@ -0,0 +1,64 @@ + + + + + +Main Designing APIs around stderror_code (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        7.1.5 Main: Designing APIs around std::error_code

                        + + +
                          +
                        • Background/Required Knowledge
                        • +
                        • Student outcomes
                        • +
                        • Caveats
                        • +
                        • Points to cover
                        • +
                        +
                        + + + + + diff --git a/PR_0.0.20/html_split/Main-Exception-guarantees.html b/PR_0.0.20/html_split/Main-Exception-guarantees.html new file mode 100644 index 0000000..090c24f --- /dev/null +++ b/PR_0.0.20/html_split/Main-Exception-guarantees.html @@ -0,0 +1,65 @@ + + + + + +Main Exception guarantees (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        7.1.11 Main: Exception guarantees

                        + + +
                          +
                        • Background/Required Knowledge
                        • +
                        • Student outcomes
                        • +
                        • Caveats
                        • +
                        • Points to cover
                        • +
                        +
                        + + + + + diff --git a/PR_0.0.20/html_split/Main-Handling-different-categories-of-errors.html b/PR_0.0.20/html_split/Main-Handling-different-categories-of-errors.html new file mode 100644 index 0000000..f3eb695 --- /dev/null +++ b/PR_0.0.20/html_split/Main-Handling-different-categories-of-errors.html @@ -0,0 +1,64 @@ + + + + + +Main Handling different categories of errors (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        7.2.5 Main: Handling different categories of errors

                        + + +
                          +
                        • Background/Required Knowledge
                        • +
                        • Student outcomes
                        • +
                        • Caveats
                        • +
                        • Points to cover
                        • +
                        +
                        + + + + + diff --git a/PR_0.0.20/html_split/Main-Implementing-user_002ddefined-copy-operations.html b/PR_0.0.20/html_split/Main-Implementing-user_002ddefined-copy-operations.html new file mode 100644 index 0000000..f3c5713 --- /dev/null +++ b/PR_0.0.20/html_split/Main-Implementing-user_002ddefined-copy-operations.html @@ -0,0 +1,64 @@ + + + + + +Main Implementing user-defined copy operations (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        9.12.5 Main: Implementing user-defined copy operations

                        + + +
                          +
                        • Background/Required Knowledge
                        • +
                        • Student outcomes
                        • +
                        • Caveats
                        • +
                        • Points to cover
                        • +
                        +
                        + + + + + diff --git a/PR_0.0.20/html_split/Main-Using-references-to-modify-external-data.html b/PR_0.0.20/html_split/Main-Using-references-to-modify-external-data.html new file mode 100644 index 0000000..4a81b72 --- /dev/null +++ b/PR_0.0.20/html_split/Main-Using-references-to-modify-external-data.html @@ -0,0 +1,64 @@ + + + + + +Main Using references to modify external data (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        8.5 Main: Using references to modify external data

                        + + +
                          +
                        • Background/Required Knowledge
                        • +
                        • Student outcomes
                        • +
                        • Caveats
                        • +
                        • Points to cover
                        • +
                        +
                        + + + + + diff --git a/PR_0.0.20/html_split/Main-implementing-UDLs.html b/PR_0.0.20/html_split/Main-implementing-UDLs.html new file mode 100644 index 0000000..e35ea9b --- /dev/null +++ b/PR_0.0.20/html_split/Main-implementing-UDLs.html @@ -0,0 +1,63 @@ + + + + + +Main implementing UDLs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        7.3.5 Main: implementing UDLs

                        + + +
                          +
                        • Background/Required Knowledge
                        • +
                        • Student outcomes
                        • +
                        • Caveats
                        • +
                        +
                        + + + + + diff --git a/PR_0.0.20/html_split/Main-implementing-_002a.html b/PR_0.0.20/html_split/Main-implementing-_002a.html new file mode 100644 index 0000000..555d878 --- /dev/null +++ b/PR_0.0.20/html_split/Main-implementing-_002a.html @@ -0,0 +1,64 @@ + + + + + +Main implementing * (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        7.4.5 Main: implementing *

                        + + + +
                        + + + + + diff --git a/PR_0.0.20/html_split/Meta_002derror-handling-static_005fassert.html b/PR_0.0.20/html_split/Meta_002derror-handling-static_005fassert.html new file mode 100644 index 0000000..5624ed1 --- /dev/null +++ b/PR_0.0.20/html_split/Meta_002derror-handling-static_005fassert.html @@ -0,0 +1,68 @@ + + + + + +Meta-error handling static_assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        9.9 Meta-error handling: static_assert

                        +

                        Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

                        + + +
                        + + + + + diff --git a/PR_0.0.20/html_split/Module-name-Passing-Parameters-by-Reference.html b/PR_0.0.20/html_split/Module-name-Passing-Parameters-by-Reference.html new file mode 100644 index 0000000..33a7005 --- /dev/null +++ b/PR_0.0.20/html_split/Module-name-Passing-Parameters-by-Reference.html @@ -0,0 +1,75 @@ + + + + + +Module name Passing Parameters by Reference (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        9 Module name: Passing Parameters by Reference

                        +

                        Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

                        + + +
                        + + + + + diff --git a/PR_0.0.20/html_split/Module-name-Passing-Parameters-by-Value.html b/PR_0.0.20/html_split/Module-name-Passing-Parameters-by-Value.html new file mode 100644 index 0000000..58bf0e9 --- /dev/null +++ b/PR_0.0.20/html_split/Module-name-Passing-Parameters-by-Value.html @@ -0,0 +1,69 @@ + + + + + +Module name Passing Parameters by Value (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        8 Module name: Passing Parameters by Value

                        +

                        Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

                        + + +
                        + + + + + diff --git a/PR_0.0.20/html_split/Module-name-Requires-Expressions.html b/PR_0.0.20/html_split/Module-name-Requires-Expressions.html new file mode 100644 index 0000000..3adf589 --- /dev/null +++ b/PR_0.0.20/html_split/Module-name-Requires-Expressions.html @@ -0,0 +1,63 @@ + + + + + +Module name Requires Expressions (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        9.7 Module name: Requires Expressions

                        +

                        Skeleton descriptions are typeset in italic text, so please +don’t remove these descriptions when editing the topic. +

                        + +
                          +
                        • Overview
                        • +
                        • Motivation
                        • +
                        +
                        + + + + + diff --git a/PR_0.0.20/html_split/Motivation.html b/PR_0.0.20/html_split/Motivation.html new file mode 100644 index 0000000..e2ddfc7 --- /dev/null +++ b/PR_0.0.20/html_split/Motivation.html @@ -0,0 +1,66 @@ + + + + + +Motivation (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        7.1.2 Motivation

                        +

                        Why is this important? Why do we want to learn/teach this +topic? +

                        +

                        C++ offers a type safe way of passing around errors, contrary to the +C-style of error handling, by this, we prevent bugs when passing error +codes. Furthermore, error handling with error codes is more commonly +used than exception handling, which only should be used in exceptional +situations and in some environments is not feasible at all, e.g., in +embedded or performance critical software. +

                        +
                        + + + + + diff --git a/PR_0.0.20/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html b/PR_0.0.20/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html new file mode 100644 index 0000000..008e35c --- /dev/null +++ b/PR_0.0.20/html_split/Obtaining-This-Document-The-Most-Recent-Version-and-Alternate-Formats.html @@ -0,0 +1,83 @@ + + + + + +Obtaining This Document The Most Recent Version and Alternate Formats (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        1 Obtaining This Document: The Most Recent Version and Alternate

                        +

                        Formats +The most recent version of this document is available as an online HTML +document at: https://cplusplus.github.io/SG20/latest/. +

                        +

                        The version of the document that you are currently reading is available +in the following formats: +

                        +
                          +
                        1. online (HTML) format as a single large HTML document: +https://cplusplus.github.io/SG20/PR_0.0.20/html + +
                        2. EPUB format: +https://cplusplus.github.io/SG20/PR_0.0.20/guidelines.epub + +
                        3. online (HTML) format, split across multiple HTML documents: +https://cplusplus.github.io/SG20/PR_0.0.20/html_split/ +[Note: The support for this format needs more work (in order to +beautify and fix linking issues).] + +
                        + +

                        Older versions of this document are also available. In general version +ver is available at +https://cplusplus.github.io/SG20/ver/html. For example, version +0.1.0 (assuming that this version exists) would be available at +https://cplusplus.github.io/SG20/0.1.0/html. +

                        +
                        + + + + + diff --git a/PR_0.0.20/html_split/Organization-of-This-Document.html b/PR_0.0.20/html_split/Organization-of-This-Document.html new file mode 100644 index 0000000..2ff1d1a --- /dev/null +++ b/PR_0.0.20/html_split/Organization-of-This-Document.html @@ -0,0 +1,100 @@ + + + + + +Organization of This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        5 Organization of This Document

                        +

                        The various concepts (i.e., ideas) to potentially be covered are +partitioned into modules. A module is very broad in scope and consists +of numerous topics. +

                        +

                        For each module, topics related to the module are identified. Then, for +each topic, learning outcomes are specified. In order to address a wide +variety of courses on C++, each topic is addressed at three proficiency +levels. These proficiency levels allow each topic to be covered at more +than one level of detail. This allows target audiences with different +background and learning objectives to be accommodated. The three +proficiency levels are as follows: +

                        +
                          +
                        • foundational: This level gives the learner the idea that a facility +exists, what benefits it offers, and the basic ways of using it. + +
                        • main: This level shows mainstream uses and techniques. For abstraction +and organizational mechanisms it also demonstrates how to build them. +This level should also give the learner a basic (but not detailed) +understanding of how a facility might be implemented so that the learner +can have a first-order understanding of any costs involved. + +
                        • advanced: This level gives information suitable for an expert. For most +topics there is an expert level of knowledge that most programmers +rarely need and techniques that require detailed understanding of +language rules or library implementation. + +
                        + +

                        The remainder of this document is organized as follows. The various +topics are listed grouped by module. In cases where a topic might be +classified into more than one module, the topic is listed under the +module of most direct relevance. This is done in order to avoid +duplication of content. (In the case that a topic is equally relevant to +multiple modules, the decision of which to select is made by a +proverbial coin toss.) The order in which modules and topics are +presented is not meant to imply any order of coverage in a course. The +order in which items are listed is essentially arbitrary. +

                        +
                        +
                        + + + + + + diff --git a/PR_0.0.20/html_split/Overview.html b/PR_0.0.20/html_split/Overview.html new file mode 100644 index 0000000..d53904f --- /dev/null +++ b/PR_0.0.20/html_split/Overview.html @@ -0,0 +1,65 @@ + + + + + +Overview (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        7.1.1 Overview

                        +

                        Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

                        + + + + + +
                        LevelObjective
                        FoundationalHandling error codes with std::error_code
                        MainDesigning APIs around std::error_code
                        Advanced
                        + +
                        + + + + + diff --git a/PR_0.0.20/html_split/Points-to-cover.html b/PR_0.0.20/html_split/Points-to-cover.html new file mode 100644 index 0000000..813a5e6 --- /dev/null +++ b/PR_0.0.20/html_split/Points-to-cover.html @@ -0,0 +1,61 @@ + + + + + +Points to cover (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        7.1.4.4 Points to cover

                        +

                        This section lists important details for each point. +

                        +
                          +
                        • a brief overview of std::error_code and how to use it +
                        + +
                        + + + + + diff --git a/PR_0.0.20/html_split/Preprocessor.html b/PR_0.0.20/html_split/Preprocessor.html new file mode 100644 index 0000000..88f7608 --- /dev/null +++ b/PR_0.0.20/html_split/Preprocessor.html @@ -0,0 +1,63 @@ + + + + + +Preprocessor (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        6.2 Preprocessor

                        + + + + + +
                        IDUnitFoundationalMainAdvanced
                        [‘?’]Preprocessor Metaprogramming???
                        [‘?’]Inclusion???
                        [‘?’]Macros???
                        + +
                        + + + + + diff --git a/PR_0.0.20/html_split/References-on-Learning-Outcomes.html b/PR_0.0.20/html_split/References-on-Learning-Outcomes.html new file mode 100644 index 0000000..5d84082 --- /dev/null +++ b/PR_0.0.20/html_split/References-on-Learning-Outcomes.html @@ -0,0 +1,75 @@ + + + + + +References on Learning Outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        14.1 References on Learning Outcomes

                        + + +
                        + + + + + diff --git a/PR_0.0.20/html_split/References.html b/PR_0.0.20/html_split/References.html new file mode 100644 index 0000000..36fff4d --- /dev/null +++ b/PR_0.0.20/html_split/References.html @@ -0,0 +1,61 @@ + + + + + +References (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PR_0.0.20/html_split/Software-Design.html b/PR_0.0.20/html_split/Software-Design.html new file mode 100644 index 0000000..1243890 --- /dev/null +++ b/PR_0.0.20/html_split/Software-Design.html @@ -0,0 +1,60 @@ + + + + + +Software Design (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        6.15 Software Design

                        + + + +
                        IDUnitFoundationalMainAdvanced
                        [‘?’]Design by Contract???
                        + +
                        + + + + + diff --git a/PR_0.0.20/html_split/Standard-Library.html b/PR_0.0.20/html_split/Standard-Library.html new file mode 100644 index 0000000..fa758d0 --- /dev/null +++ b/PR_0.0.20/html_split/Standard-Library.html @@ -0,0 +1,62 @@ + + + + + +Standard Library (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        6.10 Standard Library

                        + + + + +
                        IDUnitFoundationalMainAdvanced
                        [‘?’]Input/Output (I/O)???
                        [‘?’]Containers, Iterators, and Algorithms???
                        + +
                        + + + + + diff --git a/PR_0.0.20/html_split/Student-outcomes.html b/PR_0.0.20/html_split/Student-outcomes.html new file mode 100644 index 0000000..acd902a --- /dev/null +++ b/PR_0.0.20/html_split/Student-outcomes.html @@ -0,0 +1,69 @@ + + + + + +Student outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        7.1.4.2 Student outcomes

                        +

                        A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                        +

                        A student should be able to: +

                        +
                          +
                        1. write code to handle errors with std::error_code, e.g., obtain +the message of the error code or check if an error occurred. +
                        2. distinguish between the different categories and make justified +decisions when to use which +
                        + +
                        + + + + + diff --git a/PR_0.0.20/html_split/Summary-of-Modules-and-Topics.html b/PR_0.0.20/html_split/Summary-of-Modules-and-Topics.html new file mode 100644 index 0000000..1fc0b8a --- /dev/null +++ b/PR_0.0.20/html_split/Summary-of-Modules-and-Topics.html @@ -0,0 +1,85 @@ + + + + + +Summary of Modules and Topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        6 Summary of Modules and Topics

                        +

                        In the sections that follow, the various modules and topics are +presented. There is one section per module. For each module, a table +listing the various topics in that module is provided. The ID for a +topic is linked to the detailed coverage of that topic that comes later +in the document. If a topic has any learning outcomes at a given +proficiency level, this is indicated by a checkmark (“✔️”). If a topic +has no learning outcomes (simply because there are not any, not because +the information is missing), this is indicated by an em dash (“—”). +In the case that the information for a topic is completely missing, a +question mark (“?”) symbol is used. +

                        + + +
                        + + + + + diff --git a/PR_0.0.20/html_split/Testing-and-Debugging.html b/PR_0.0.20/html_split/Testing-and-Debugging.html new file mode 100644 index 0000000..be4410f --- /dev/null +++ b/PR_0.0.20/html_split/Testing-and-Debugging.html @@ -0,0 +1,64 @@ + + + + + +Testing and Debugging (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        +
                        +

                        +Next: , Previous: , Up: Summary of Modules and Topics   [Contents]

                        +
                        +
                        +

                        6.13 Testing and Debugging

                        + + + + + + +
                        IDUnitFoundationalMainAdvanced
                        [‘?’]Source-Level Debuggers???
                        [‘?’]Code Sanitizers???
                        [‘?’]Test Frameworks???
                        [‘?’]Debugging Strategies???
                        + +
                        + + + + + diff --git a/PR_0.0.20/html_split/Tooling.html b/PR_0.0.20/html_split/Tooling.html new file mode 100644 index 0000000..561dbc7 --- /dev/null +++ b/PR_0.0.20/html_split/Tooling.html @@ -0,0 +1,62 @@ + + + + + +Tooling (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        6.14 Tooling

                        + + + + +
                        IDUnitFoundationalMainAdvanced
                        [‘?’]Compiler Toolchains???
                        [‘?’]IDEs???
                        + +
                        + + + + + diff --git a/PR_0.0.20/html_split/Topic-introduction.html b/PR_0.0.20/html_split/Topic-introduction.html new file mode 100644 index 0000000..3844c93 --- /dev/null +++ b/PR_0.0.20/html_split/Topic-introduction.html @@ -0,0 +1,61 @@ + + + + + +Topic introduction (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        7.1.3 Topic introduction

                        +

                        Very brief introduction to the topic. +

                        +

                        C++ offers std::error_code, which encapsulates error codes in a +type safe way. This topic describes how to use these error codes. +

                        +
                        + + + + + diff --git a/PR_0.0.20/html_split/Use-of-This-Document.html b/PR_0.0.20/html_split/Use-of-This-Document.html new file mode 100644 index 0000000..984129c --- /dev/null +++ b/PR_0.0.20/html_split/Use-of-This-Document.html @@ -0,0 +1,63 @@ + + + + + +Use of This Document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        3 Use of This Document

                        +

                        [NOTE: This document follows the same license model as the C++ +Core Guidelines. The LICENSE document is taken verbatim from the C++ +Core Guidelines.] This document is made available under a MIT-style +license. In simple terms, this license permits copying, use, +modification, and creation of derivative works. A copy of the license is +included in the section LICENSE. +

                        +
                        + + + + + diff --git a/PR_0.0.20/html_split/User_002dDefined-Types-Classes.html b/PR_0.0.20/html_split/User_002dDefined-Types-Classes.html new file mode 100644 index 0000000..f749c96 --- /dev/null +++ b/PR_0.0.20/html_split/User_002dDefined-Types-Classes.html @@ -0,0 +1,74 @@ + + + + + +User-Defined Types Classes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        6.5 User-Defined Types (Classes)

                        + + + + + + + + + + + + + + + +
                        IDUnitFoundationalMainAdvanced
                        [‘?’]Special Member Functions???
                        [‘?’]Types???
                        [‘?’]Conversions???
                        [‘?’]Constructors and Destructors???
                        [‘?’]Move/Copy Constructors and Assignment Operators???
                        [‘?’]Member Functions???
                        [‘?’]Sum Types???
                        [‘?’]User-Defined Literals???
                        [‘?’]Special Member Functions???
                        [‘?’]Guidelines for Special Member Functions (e.g., Rule of Five, Rule +of Zero)???
                        [copy]Copy Semantics✔️✔️
                        [‘?’]Moving and Copying???
                        [‘?’]Lambdas???
                        + +
                        + + + + + diff --git a/PR_0.0.20/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html b/PR_0.0.20/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html new file mode 100644 index 0000000..bd320ee --- /dev/null +++ b/PR_0.0.20/html_split/Working-Group-Documents-Related-to-C_002b_002b-Teaching-Guidelines.html @@ -0,0 +1,74 @@ + + + + + +Working Group Documents Related to C++ Teaching Guidelines (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PR_0.0.20/html_split/_0023B.html b/PR_0.0.20/html_split/_0023B.html new file mode 100644 index 0000000..9d91e2b --- /dev/null +++ b/PR_0.0.20/html_split/_0023B.html @@ -0,0 +1,42 @@ + + + + + + +#B (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #B.

                        + diff --git a/PR_0.0.20/html_split/_0023BLD.html b/PR_0.0.20/html_split/_0023BLD.html new file mode 100644 index 0000000..d3ebe52 --- /dev/null +++ b/PR_0.0.20/html_split/_0023BLD.html @@ -0,0 +1,42 @@ + + + + + + +#BLD (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #BLD.

                        + diff --git a/PR_0.0.20/html_split/_0023C.html b/PR_0.0.20/html_split/_0023C.html new file mode 100644 index 0000000..df37c62 --- /dev/null +++ b/PR_0.0.20/html_split/_0023C.html @@ -0,0 +1,42 @@ + + + + + + +#C (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #C.

                        + diff --git a/PR_0.0.20/html_split/_0023CM.html b/PR_0.0.20/html_split/_0023CM.html new file mode 100644 index 0000000..1699ba7 --- /dev/null +++ b/PR_0.0.20/html_split/_0023CM.html @@ -0,0 +1,42 @@ + + + + + + +#CM (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #CM.

                        + diff --git a/PR_0.0.20/html_split/_0023CT.html b/PR_0.0.20/html_split/_0023CT.html new file mode 100644 index 0000000..6312967 --- /dev/null +++ b/PR_0.0.20/html_split/_0023CT.html @@ -0,0 +1,42 @@ + + + + + + +#CT (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #CT.

                        + diff --git a/PR_0.0.20/html_split/_0023EH.html b/PR_0.0.20/html_split/_0023EH.html new file mode 100644 index 0000000..3c67699 --- /dev/null +++ b/PR_0.0.20/html_split/_0023EH.html @@ -0,0 +1,42 @@ + + + + + + +#EH (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #EH.

                        + diff --git a/PR_0.0.20/html_split/_0023EL.html b/PR_0.0.20/html_split/_0023EL.html new file mode 100644 index 0000000..45f6d36 --- /dev/null +++ b/PR_0.0.20/html_split/_0023EL.html @@ -0,0 +1,42 @@ + + + + + + +#EL (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #EL.

                        + diff --git a/PR_0.0.20/html_split/_0023F.html b/PR_0.0.20/html_split/_0023F.html new file mode 100644 index 0000000..7cf4dfe --- /dev/null +++ b/PR_0.0.20/html_split/_0023F.html @@ -0,0 +1,42 @@ + + + + + + +#F (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #F.

                        + diff --git a/PR_0.0.20/html_split/_0023I.html b/PR_0.0.20/html_split/_0023I.html new file mode 100644 index 0000000..d912afd --- /dev/null +++ b/PR_0.0.20/html_split/_0023I.html @@ -0,0 +1,42 @@ + + + + + + +#I (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #I.

                        + diff --git a/PR_0.0.20/html_split/_0023P.html b/PR_0.0.20/html_split/_0023P.html new file mode 100644 index 0000000..bd2bf30 --- /dev/null +++ b/PR_0.0.20/html_split/_0023P.html @@ -0,0 +1,42 @@ + + + + + + +#P (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #P.

                        + diff --git a/PR_0.0.20/html_split/_0023SD.html b/PR_0.0.20/html_split/_0023SD.html new file mode 100644 index 0000000..13a000e --- /dev/null +++ b/PR_0.0.20/html_split/_0023SD.html @@ -0,0 +1,42 @@ + + + + + + +#SD (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #SD.

                        + diff --git a/PR_0.0.20/html_split/_0023SL.html b/PR_0.0.20/html_split/_0023SL.html new file mode 100644 index 0000000..b198dd0 --- /dev/null +++ b/PR_0.0.20/html_split/_0023SL.html @@ -0,0 +1,42 @@ + + + + + + +#SL (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #SL.

                        + diff --git a/PR_0.0.20/html_split/_0023T.html b/PR_0.0.20/html_split/_0023T.html new file mode 100644 index 0000000..013fe87 --- /dev/null +++ b/PR_0.0.20/html_split/_0023T.html @@ -0,0 +1,42 @@ + + + + + + +#T (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #T.

                        + diff --git a/PR_0.0.20/html_split/_0023TD.html b/PR_0.0.20/html_split/_0023TD.html new file mode 100644 index 0000000..a11d325 --- /dev/null +++ b/PR_0.0.20/html_split/_0023TD.html @@ -0,0 +1,42 @@ + + + + + + +#TD (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #TD.

                        + diff --git a/PR_0.0.20/html_split/_0023TOOL.html b/PR_0.0.20/html_split/_0023TOOL.html new file mode 100644 index 0000000..39d1c10 --- /dev/null +++ b/PR_0.0.20/html_split/_0023TOOL.html @@ -0,0 +1,42 @@ + + + + + + +#TOOL (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #TOOL.

                        + diff --git a/PR_0.0.20/html_split/_0023advanced.html b/PR_0.0.20/html_split/_0023advanced.html new file mode 100644 index 0000000..e25198e --- /dev/null +++ b/PR_0.0.20/html_split/_0023advanced.html @@ -0,0 +1,42 @@ + + + + + + +#advanced (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #advanced.

                        + diff --git a/PR_0.0.20/html_split/_0023advanced_002d1.html b/PR_0.0.20/html_split/_0023advanced_002d1.html new file mode 100644 index 0000000..a6e0009 --- /dev/null +++ b/PR_0.0.20/html_split/_0023advanced_002d1.html @@ -0,0 +1,42 @@ + + + + + + +#advanced-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #advanced-1.

                        + diff --git a/PR_0.0.20/html_split/_0023advanced_002d2.html b/PR_0.0.20/html_split/_0023advanced_002d2.html new file mode 100644 index 0000000..5bbde17 --- /dev/null +++ b/PR_0.0.20/html_split/_0023advanced_002d2.html @@ -0,0 +1,42 @@ + + + + + + +#advanced-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #advanced-2.

                        + diff --git a/PR_0.0.20/html_split/_0023advanced_002d3.html b/PR_0.0.20/html_split/_0023advanced_002d3.html new file mode 100644 index 0000000..33c81f8 --- /dev/null +++ b/PR_0.0.20/html_split/_0023advanced_002d3.html @@ -0,0 +1,42 @@ + + + + + + +#advanced-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #advanced-3.

                        + diff --git a/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge.html b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge.html new file mode 100644 index 0000000..8ea66f8 --- /dev/null +++ b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge.html @@ -0,0 +1,42 @@ + + + + + + +#backgroundrequired-knowledge (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #backgroundrequired-knowledge.

                        + diff --git a/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d1.html b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d1.html new file mode 100644 index 0000000..c6d7d69 --- /dev/null +++ b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d1.html @@ -0,0 +1,42 @@ + + + + + + +#backgroundrequired-knowledge-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #backgroundrequired-knowledge-1.

                        + diff --git a/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d10.html b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d10.html new file mode 100644 index 0000000..2d0e781 --- /dev/null +++ b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d10.html @@ -0,0 +1,42 @@ + + + + + + +#backgroundrequired-knowledge-10 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #backgroundrequired-knowledge-10.

                        + diff --git a/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d11.html b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d11.html new file mode 100644 index 0000000..cffe3ca --- /dev/null +++ b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d11.html @@ -0,0 +1,42 @@ + + + + + + +#backgroundrequired-knowledge-11 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #backgroundrequired-knowledge-11.

                        + diff --git a/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d12.html b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d12.html new file mode 100644 index 0000000..fde383e --- /dev/null +++ b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d12.html @@ -0,0 +1,42 @@ + + + + + + +#backgroundrequired-knowledge-12 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #backgroundrequired-knowledge-12.

                        + diff --git a/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d13.html b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d13.html new file mode 100644 index 0000000..5779c1e --- /dev/null +++ b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d13.html @@ -0,0 +1,42 @@ + + + + + + +#backgroundrequired-knowledge-13 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #backgroundrequired-knowledge-13.

                        + diff --git a/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d14.html b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d14.html new file mode 100644 index 0000000..d6ff9f4 --- /dev/null +++ b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d14.html @@ -0,0 +1,42 @@ + + + + + + +#backgroundrequired-knowledge-14 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #backgroundrequired-knowledge-14.

                        + diff --git a/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d15.html b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d15.html new file mode 100644 index 0000000..442cda6 --- /dev/null +++ b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d15.html @@ -0,0 +1,42 @@ + + + + + + +#backgroundrequired-knowledge-15 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #backgroundrequired-knowledge-15.

                        + diff --git a/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d16.html b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d16.html new file mode 100644 index 0000000..41bc309 --- /dev/null +++ b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d16.html @@ -0,0 +1,42 @@ + + + + + + +#backgroundrequired-knowledge-16 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #backgroundrequired-knowledge-16.

                        + diff --git a/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d17.html b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d17.html new file mode 100644 index 0000000..6aaaf64 --- /dev/null +++ b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d17.html @@ -0,0 +1,42 @@ + + + + + + +#backgroundrequired-knowledge-17 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #backgroundrequired-knowledge-17.

                        + diff --git a/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d18.html b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d18.html new file mode 100644 index 0000000..f07d268 --- /dev/null +++ b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d18.html @@ -0,0 +1,42 @@ + + + + + + +#backgroundrequired-knowledge-18 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #backgroundrequired-knowledge-18.

                        + diff --git a/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d19.html b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d19.html new file mode 100644 index 0000000..3ec5e5c --- /dev/null +++ b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d19.html @@ -0,0 +1,42 @@ + + + + + + +#backgroundrequired-knowledge-19 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #backgroundrequired-knowledge-19.

                        + diff --git a/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d2.html b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d2.html new file mode 100644 index 0000000..5f97abe --- /dev/null +++ b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d2.html @@ -0,0 +1,42 @@ + + + + + + +#backgroundrequired-knowledge-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #backgroundrequired-knowledge-2.

                        + diff --git a/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d20.html b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d20.html new file mode 100644 index 0000000..f78da9f --- /dev/null +++ b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d20.html @@ -0,0 +1,42 @@ + + + + + + +#backgroundrequired-knowledge-20 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #backgroundrequired-knowledge-20.

                        + diff --git a/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d21.html b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d21.html new file mode 100644 index 0000000..9330561 --- /dev/null +++ b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d21.html @@ -0,0 +1,42 @@ + + + + + + +#backgroundrequired-knowledge-21 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #backgroundrequired-knowledge-21.

                        + diff --git a/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d22.html b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d22.html new file mode 100644 index 0000000..facaa97 --- /dev/null +++ b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d22.html @@ -0,0 +1,42 @@ + + + + + + +#backgroundrequired-knowledge-22 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #backgroundrequired-knowledge-22.

                        + diff --git a/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d23.html b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d23.html new file mode 100644 index 0000000..f54e636 --- /dev/null +++ b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d23.html @@ -0,0 +1,42 @@ + + + + + + +#backgroundrequired-knowledge-23 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #backgroundrequired-knowledge-23.

                        + diff --git a/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d3.html b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d3.html new file mode 100644 index 0000000..d91914d --- /dev/null +++ b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d3.html @@ -0,0 +1,42 @@ + + + + + + +#backgroundrequired-knowledge-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #backgroundrequired-knowledge-3.

                        + diff --git a/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d4.html b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d4.html new file mode 100644 index 0000000..534eac4 --- /dev/null +++ b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d4.html @@ -0,0 +1,42 @@ + + + + + + +#backgroundrequired-knowledge-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #backgroundrequired-knowledge-4.

                        + diff --git a/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d5.html b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d5.html new file mode 100644 index 0000000..ac39ea8 --- /dev/null +++ b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d5.html @@ -0,0 +1,42 @@ + + + + + + +#backgroundrequired-knowledge-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #backgroundrequired-knowledge-5.

                        + diff --git a/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d6.html b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d6.html new file mode 100644 index 0000000..1c2c983 --- /dev/null +++ b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d6.html @@ -0,0 +1,42 @@ + + + + + + +#backgroundrequired-knowledge-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #backgroundrequired-knowledge-6.

                        + diff --git a/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d7.html b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d7.html new file mode 100644 index 0000000..0078fb6 --- /dev/null +++ b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d7.html @@ -0,0 +1,42 @@ + + + + + + +#backgroundrequired-knowledge-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #backgroundrequired-knowledge-7.

                        + diff --git a/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d8.html b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d8.html new file mode 100644 index 0000000..ad7fd99 --- /dev/null +++ b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d8.html @@ -0,0 +1,42 @@ + + + + + + +#backgroundrequired-knowledge-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #backgroundrequired-knowledge-8.

                        + diff --git a/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d9.html b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d9.html new file mode 100644 index 0000000..288a76a --- /dev/null +++ b/PR_0.0.20/html_split/_0023backgroundrequired_002dknowledge_002d9.html @@ -0,0 +1,42 @@ + + + + + + +#backgroundrequired-knowledge-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #backgroundrequired-knowledge-9.

                        + diff --git a/PR_0.0.20/html_split/_0023c_002dobject_002dmodel_002ddeclarations.html b/PR_0.0.20/html_split/_0023c_002dobject_002dmodel_002ddeclarations.html new file mode 100644 index 0000000..d0ebbb9 --- /dev/null +++ b/PR_0.0.20/html_split/_0023c_002dobject_002dmodel_002ddeclarations.html @@ -0,0 +1,42 @@ + + + + + + +#c-object-model-declarations (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #c-object-model-declarations.

                        + diff --git a/PR_0.0.20/html_split/_0023caveats.html b/PR_0.0.20/html_split/_0023caveats.html new file mode 100644 index 0000000..958b234 --- /dev/null +++ b/PR_0.0.20/html_split/_0023caveats.html @@ -0,0 +1,42 @@ + + + + + + +#caveats (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #caveats.

                        + diff --git a/PR_0.0.20/html_split/_0023caveats_002d1.html b/PR_0.0.20/html_split/_0023caveats_002d1.html new file mode 100644 index 0000000..cea1d77 --- /dev/null +++ b/PR_0.0.20/html_split/_0023caveats_002d1.html @@ -0,0 +1,42 @@ + + + + + + +#caveats-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #caveats-1.

                        + diff --git a/PR_0.0.20/html_split/_0023caveats_002d10.html b/PR_0.0.20/html_split/_0023caveats_002d10.html new file mode 100644 index 0000000..3a6cb56 --- /dev/null +++ b/PR_0.0.20/html_split/_0023caveats_002d10.html @@ -0,0 +1,42 @@ + + + + + + +#caveats-10 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #caveats-10.

                        + diff --git a/PR_0.0.20/html_split/_0023caveats_002d11.html b/PR_0.0.20/html_split/_0023caveats_002d11.html new file mode 100644 index 0000000..08177ce --- /dev/null +++ b/PR_0.0.20/html_split/_0023caveats_002d11.html @@ -0,0 +1,42 @@ + + + + + + +#caveats-11 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #caveats-11.

                        + diff --git a/PR_0.0.20/html_split/_0023caveats_002d12.html b/PR_0.0.20/html_split/_0023caveats_002d12.html new file mode 100644 index 0000000..2ad1245 --- /dev/null +++ b/PR_0.0.20/html_split/_0023caveats_002d12.html @@ -0,0 +1,42 @@ + + + + + + +#caveats-12 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #caveats-12.

                        + diff --git a/PR_0.0.20/html_split/_0023caveats_002d13.html b/PR_0.0.20/html_split/_0023caveats_002d13.html new file mode 100644 index 0000000..44240cc --- /dev/null +++ b/PR_0.0.20/html_split/_0023caveats_002d13.html @@ -0,0 +1,42 @@ + + + + + + +#caveats-13 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #caveats-13.

                        + diff --git a/PR_0.0.20/html_split/_0023caveats_002d14.html b/PR_0.0.20/html_split/_0023caveats_002d14.html new file mode 100644 index 0000000..ac79de8 --- /dev/null +++ b/PR_0.0.20/html_split/_0023caveats_002d14.html @@ -0,0 +1,42 @@ + + + + + + +#caveats-14 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #caveats-14.

                        + diff --git a/PR_0.0.20/html_split/_0023caveats_002d15.html b/PR_0.0.20/html_split/_0023caveats_002d15.html new file mode 100644 index 0000000..7975a46 --- /dev/null +++ b/PR_0.0.20/html_split/_0023caveats_002d15.html @@ -0,0 +1,42 @@ + + + + + + +#caveats-15 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #caveats-15.

                        + diff --git a/PR_0.0.20/html_split/_0023caveats_002d16.html b/PR_0.0.20/html_split/_0023caveats_002d16.html new file mode 100644 index 0000000..fa0fc54 --- /dev/null +++ b/PR_0.0.20/html_split/_0023caveats_002d16.html @@ -0,0 +1,42 @@ + + + + + + +#caveats-16 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #caveats-16.

                        + diff --git a/PR_0.0.20/html_split/_0023caveats_002d17.html b/PR_0.0.20/html_split/_0023caveats_002d17.html new file mode 100644 index 0000000..4772dca --- /dev/null +++ b/PR_0.0.20/html_split/_0023caveats_002d17.html @@ -0,0 +1,42 @@ + + + + + + +#caveats-17 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #caveats-17.

                        + diff --git a/PR_0.0.20/html_split/_0023caveats_002d18.html b/PR_0.0.20/html_split/_0023caveats_002d18.html new file mode 100644 index 0000000..14c39ea --- /dev/null +++ b/PR_0.0.20/html_split/_0023caveats_002d18.html @@ -0,0 +1,42 @@ + + + + + + +#caveats-18 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #caveats-18.

                        + diff --git a/PR_0.0.20/html_split/_0023caveats_002d19.html b/PR_0.0.20/html_split/_0023caveats_002d19.html new file mode 100644 index 0000000..28b6166 --- /dev/null +++ b/PR_0.0.20/html_split/_0023caveats_002d19.html @@ -0,0 +1,42 @@ + + + + + + +#caveats-19 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #caveats-19.

                        + diff --git a/PR_0.0.20/html_split/_0023caveats_002d2.html b/PR_0.0.20/html_split/_0023caveats_002d2.html new file mode 100644 index 0000000..5a96c75 --- /dev/null +++ b/PR_0.0.20/html_split/_0023caveats_002d2.html @@ -0,0 +1,42 @@ + + + + + + +#caveats-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #caveats-2.

                        + diff --git a/PR_0.0.20/html_split/_0023caveats_002d20.html b/PR_0.0.20/html_split/_0023caveats_002d20.html new file mode 100644 index 0000000..a0b737a --- /dev/null +++ b/PR_0.0.20/html_split/_0023caveats_002d20.html @@ -0,0 +1,42 @@ + + + + + + +#caveats-20 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #caveats-20.

                        + diff --git a/PR_0.0.20/html_split/_0023caveats_002d21.html b/PR_0.0.20/html_split/_0023caveats_002d21.html new file mode 100644 index 0000000..fabcf64 --- /dev/null +++ b/PR_0.0.20/html_split/_0023caveats_002d21.html @@ -0,0 +1,42 @@ + + + + + + +#caveats-21 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #caveats-21.

                        + diff --git a/PR_0.0.20/html_split/_0023caveats_002d22.html b/PR_0.0.20/html_split/_0023caveats_002d22.html new file mode 100644 index 0000000..d7f6d00 --- /dev/null +++ b/PR_0.0.20/html_split/_0023caveats_002d22.html @@ -0,0 +1,42 @@ + + + + + + +#caveats-22 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #caveats-22.

                        + diff --git a/PR_0.0.20/html_split/_0023caveats_002d23.html b/PR_0.0.20/html_split/_0023caveats_002d23.html new file mode 100644 index 0000000..9ba3f28 --- /dev/null +++ b/PR_0.0.20/html_split/_0023caveats_002d23.html @@ -0,0 +1,42 @@ + + + + + + +#caveats-23 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #caveats-23.

                        + diff --git a/PR_0.0.20/html_split/_0023caveats_002d3.html b/PR_0.0.20/html_split/_0023caveats_002d3.html new file mode 100644 index 0000000..38544fd --- /dev/null +++ b/PR_0.0.20/html_split/_0023caveats_002d3.html @@ -0,0 +1,42 @@ + + + + + + +#caveats-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #caveats-3.

                        + diff --git a/PR_0.0.20/html_split/_0023caveats_002d4.html b/PR_0.0.20/html_split/_0023caveats_002d4.html new file mode 100644 index 0000000..9a0d75a --- /dev/null +++ b/PR_0.0.20/html_split/_0023caveats_002d4.html @@ -0,0 +1,42 @@ + + + + + + +#caveats-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #caveats-4.

                        + diff --git a/PR_0.0.20/html_split/_0023caveats_002d5.html b/PR_0.0.20/html_split/_0023caveats_002d5.html new file mode 100644 index 0000000..e69246d --- /dev/null +++ b/PR_0.0.20/html_split/_0023caveats_002d5.html @@ -0,0 +1,42 @@ + + + + + + +#caveats-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #caveats-5.

                        + diff --git a/PR_0.0.20/html_split/_0023caveats_002d6.html b/PR_0.0.20/html_split/_0023caveats_002d6.html new file mode 100644 index 0000000..eecca65 --- /dev/null +++ b/PR_0.0.20/html_split/_0023caveats_002d6.html @@ -0,0 +1,42 @@ + + + + + + +#caveats-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #caveats-6.

                        + diff --git a/PR_0.0.20/html_split/_0023caveats_002d7.html b/PR_0.0.20/html_split/_0023caveats_002d7.html new file mode 100644 index 0000000..3a3fa1c --- /dev/null +++ b/PR_0.0.20/html_split/_0023caveats_002d7.html @@ -0,0 +1,42 @@ + + + + + + +#caveats-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #caveats-7.

                        + diff --git a/PR_0.0.20/html_split/_0023caveats_002d8.html b/PR_0.0.20/html_split/_0023caveats_002d8.html new file mode 100644 index 0000000..885f1a1 --- /dev/null +++ b/PR_0.0.20/html_split/_0023caveats_002d8.html @@ -0,0 +1,42 @@ + + + + + + +#caveats-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #caveats-8.

                        + diff --git a/PR_0.0.20/html_split/_0023caveats_002d9.html b/PR_0.0.20/html_split/_0023caveats_002d9.html new file mode 100644 index 0000000..7a9cd86 --- /dev/null +++ b/PR_0.0.20/html_split/_0023caveats_002d9.html @@ -0,0 +1,42 @@ + + + + + + +#caveats-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #caveats-9.

                        + diff --git a/PR_0.0.20/html_split/_0023coe_002dadvanced.html b/PR_0.0.20/html_split/_0023coe_002dadvanced.html new file mode 100644 index 0000000..440aa9a --- /dev/null +++ b/PR_0.0.20/html_split/_0023coe_002dadvanced.html @@ -0,0 +1,42 @@ + + + + + + +#coe-advanced (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #coe-advanced.

                        + diff --git a/PR_0.0.20/html_split/_0023coe_002dfound.html b/PR_0.0.20/html_split/_0023coe_002dfound.html new file mode 100644 index 0000000..d721496 --- /dev/null +++ b/PR_0.0.20/html_split/_0023coe_002dfound.html @@ -0,0 +1,42 @@ + + + + + + +#coe-found (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #coe-found.

                        + diff --git a/PR_0.0.20/html_split/_0023coe_002dmain.html b/PR_0.0.20/html_split/_0023coe_002dmain.html new file mode 100644 index 0000000..c3e6698 --- /dev/null +++ b/PR_0.0.20/html_split/_0023coe_002dmain.html @@ -0,0 +1,42 @@ + + + + + + +#coe-main (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #coe-main.

                        + diff --git a/PR_0.0.20/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html b/PR_0.0.20/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html new file mode 100644 index 0000000..ebf4280 --- /dev/null +++ b/PR_0.0.20/html_split/_0023context_002dand_002daim_002dof_002dthis_002dguide.html @@ -0,0 +1,42 @@ + + + + + + +#context-and-aim-of-this-guide (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #context-and-aim-of-this-guide.

                        + diff --git a/PR_0.0.20/html_split/_0023contributing.html b/PR_0.0.20/html_split/_0023contributing.html new file mode 100644 index 0000000..1802b16 --- /dev/null +++ b/PR_0.0.20/html_split/_0023contributing.html @@ -0,0 +1,42 @@ + + + + + + +#contributing (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #contributing.

                        + diff --git a/PR_0.0.20/html_split/_0023contributing_002dto_002dthis_002ddocument.html b/PR_0.0.20/html_split/_0023contributing_002dto_002dthis_002ddocument.html new file mode 100644 index 0000000..ac4096b --- /dev/null +++ b/PR_0.0.20/html_split/_0023contributing_002dto_002dthis_002ddocument.html @@ -0,0 +1,42 @@ + + + + + + +#contributing-to-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #contributing-to-this-document.

                        + diff --git a/PR_0.0.20/html_split/_0023contributors.html b/PR_0.0.20/html_split/_0023contributors.html new file mode 100644 index 0000000..80517a5 --- /dev/null +++ b/PR_0.0.20/html_split/_0023contributors.html @@ -0,0 +1,42 @@ + + + + + + +#contributors (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #contributors.

                        + diff --git a/PR_0.0.20/html_split/_0023copy.html b/PR_0.0.20/html_split/_0023copy.html new file mode 100644 index 0000000..721eff5 --- /dev/null +++ b/PR_0.0.20/html_split/_0023copy.html @@ -0,0 +1,42 @@ + + + + + + +#copy (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #copy.

                        + diff --git a/PR_0.0.20/html_split/_0023copy_002dadvanced.html b/PR_0.0.20/html_split/_0023copy_002dadvanced.html new file mode 100644 index 0000000..d3f9d3f --- /dev/null +++ b/PR_0.0.20/html_split/_0023copy_002dadvanced.html @@ -0,0 +1,42 @@ + + + + + + +#copy-advanced (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #copy-advanced.

                        + diff --git a/PR_0.0.20/html_split/_0023copy_002dbasic.html b/PR_0.0.20/html_split/_0023copy_002dbasic.html new file mode 100644 index 0000000..a0e471e --- /dev/null +++ b/PR_0.0.20/html_split/_0023copy_002dbasic.html @@ -0,0 +1,42 @@ + + + + + + +#copy-basic (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #copy-basic.

                        + diff --git a/PR_0.0.20/html_split/_0023copy_002dmain.html b/PR_0.0.20/html_split/_0023copy_002dmain.html new file mode 100644 index 0000000..d73f6f8 --- /dev/null +++ b/PR_0.0.20/html_split/_0023copy_002dmain.html @@ -0,0 +1,42 @@ + + + + + + +#copy-main (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #copy-main.

                        + diff --git a/PR_0.0.20/html_split/_0023def.html b/PR_0.0.20/html_split/_0023def.html new file mode 100644 index 0000000..898c843 --- /dev/null +++ b/PR_0.0.20/html_split/_0023def.html @@ -0,0 +1,42 @@ + + + + + + +#def (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #def.

                        + diff --git a/PR_0.0.20/html_split/_0023def_002dadvanced.html b/PR_0.0.20/html_split/_0023def_002dadvanced.html new file mode 100644 index 0000000..67de68b --- /dev/null +++ b/PR_0.0.20/html_split/_0023def_002dadvanced.html @@ -0,0 +1,42 @@ + + + + + + +#def-advanced (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #def-advanced.

                        + diff --git a/PR_0.0.20/html_split/_0023def_002dfound.html b/PR_0.0.20/html_split/_0023def_002dfound.html new file mode 100644 index 0000000..eec7dda --- /dev/null +++ b/PR_0.0.20/html_split/_0023def_002dfound.html @@ -0,0 +1,42 @@ + + + + + + +#def-found (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #def-found.

                        + diff --git a/PR_0.0.20/html_split/_0023def_002dmain.html b/PR_0.0.20/html_split/_0023def_002dmain.html new file mode 100644 index 0000000..bf5b390 --- /dev/null +++ b/PR_0.0.20/html_split/_0023def_002dmain.html @@ -0,0 +1,42 @@ + + + + + + +#def-main (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #def-main.

                        + diff --git a/PR_0.0.20/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html b/PR_0.0.20/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html new file mode 100644 index 0000000..f1de373 --- /dev/null +++ b/PR_0.0.20/html_split/_0023detailed_002dinformation_002dfor_002dmodules_002dand_002dtopics.html @@ -0,0 +1,42 @@ + + + + + + +#detailed-information-for-modules-and-topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #detailed-information-for-modules-and-topics.

                        + diff --git a/PR_0.0.20/html_split/_0023ecodes.html b/PR_0.0.20/html_split/_0023ecodes.html new file mode 100644 index 0000000..d5f8028 --- /dev/null +++ b/PR_0.0.20/html_split/_0023ecodes.html @@ -0,0 +1,42 @@ + + + + + + +#ecodes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #ecodes.

                        + diff --git a/PR_0.0.20/html_split/_0023eh_002dadvanced.html b/PR_0.0.20/html_split/_0023eh_002dadvanced.html new file mode 100644 index 0000000..6b433b7 --- /dev/null +++ b/PR_0.0.20/html_split/_0023eh_002dadvanced.html @@ -0,0 +1,42 @@ + + + + + + +#eh-advanced (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #eh-advanced.

                        + diff --git a/PR_0.0.20/html_split/_0023eh_002dfound.html b/PR_0.0.20/html_split/_0023eh_002dfound.html new file mode 100644 index 0000000..2d7f747 --- /dev/null +++ b/PR_0.0.20/html_split/_0023eh_002dfound.html @@ -0,0 +1,42 @@ + + + + + + +#eh-found (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #eh-found.

                        + diff --git a/PR_0.0.20/html_split/_0023eh_002dmain.html b/PR_0.0.20/html_split/_0023eh_002dmain.html new file mode 100644 index 0000000..e624cc1 --- /dev/null +++ b/PR_0.0.20/html_split/_0023eh_002dmain.html @@ -0,0 +1,42 @@ + + + + + + +#eh-main (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #eh-main.

                        + diff --git a/PR_0.0.20/html_split/_0023error_002dhandling_002dcategories_002dof_002derrors.html b/PR_0.0.20/html_split/_0023error_002dhandling_002dcategories_002dof_002derrors.html new file mode 100644 index 0000000..02eb66c --- /dev/null +++ b/PR_0.0.20/html_split/_0023error_002dhandling_002dcategories_002dof_002derrors.html @@ -0,0 +1,42 @@ + + + + + + +#error-handling-categories-of-errors (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #error-handling-categories-of-errors.

                        + diff --git a/PR_0.0.20/html_split/_0023foundational_002ddeclaring_002dvariables.html b/PR_0.0.20/html_split/_0023foundational_002ddeclaring_002dvariables.html new file mode 100644 index 0000000..1599f45 --- /dev/null +++ b/PR_0.0.20/html_split/_0023foundational_002ddeclaring_002dvariables.html @@ -0,0 +1,42 @@ + + + + + + +#foundational-declaring-variables (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #foundational-declaring-variables.

                        + diff --git a/PR_0.0.20/html_split/_0023foundational_002dusing_002dreference_002dtypes_002dto_002davoid_002dcopies.html b/PR_0.0.20/html_split/_0023foundational_002dusing_002dreference_002dtypes_002dto_002davoid_002dcopies.html new file mode 100644 index 0000000..6e15d36 --- /dev/null +++ b/PR_0.0.20/html_split/_0023foundational_002dusing_002dreference_002dtypes_002dto_002davoid_002dcopies.html @@ -0,0 +1,42 @@ + + + + + + +#foundational-using-reference-types-to-avoid-copies (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #foundational-using-reference-types-to-avoid-copies.

                        + diff --git a/PR_0.0.20/html_split/_0023foundational_002dusing_002dreference_002dtypes_002dto_002davoid_002dcopies_002d1.html b/PR_0.0.20/html_split/_0023foundational_002dusing_002dreference_002dtypes_002dto_002davoid_002dcopies_002d1.html new file mode 100644 index 0000000..9669e6e --- /dev/null +++ b/PR_0.0.20/html_split/_0023foundational_002dusing_002dreference_002dtypes_002dto_002davoid_002dcopies_002d1.html @@ -0,0 +1,42 @@ + + + + + + +#foundational-using-reference-types-to-avoid-copies-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #foundational-using-reference-types-to-avoid-copies-1.

                        + diff --git a/PR_0.0.20/html_split/_0023func_002dargs.html b/PR_0.0.20/html_split/_0023func_002dargs.html new file mode 100644 index 0000000..5f58a9e --- /dev/null +++ b/PR_0.0.20/html_split/_0023func_002dargs.html @@ -0,0 +1,42 @@ + + + + + + +#func-args (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #func-args.

                        + diff --git a/PR_0.0.20/html_split/_0023func_002dargs_002dadvanced.html b/PR_0.0.20/html_split/_0023func_002dargs_002dadvanced.html new file mode 100644 index 0000000..eeb8c26 --- /dev/null +++ b/PR_0.0.20/html_split/_0023func_002dargs_002dadvanced.html @@ -0,0 +1,42 @@ + + + + + + +#func-args-advanced (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #func-args-advanced.

                        + diff --git a/PR_0.0.20/html_split/_0023func_002dargs_002dbasic.html b/PR_0.0.20/html_split/_0023func_002dargs_002dbasic.html new file mode 100644 index 0000000..bb7b70a --- /dev/null +++ b/PR_0.0.20/html_split/_0023func_002dargs_002dbasic.html @@ -0,0 +1,42 @@ + + + + + + +#func-args-basic (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #func-args-basic.

                        + diff --git a/PR_0.0.20/html_split/_0023func_002dargs_002dmain.html b/PR_0.0.20/html_split/_0023func_002dargs_002dmain.html new file mode 100644 index 0000000..7879cd1 --- /dev/null +++ b/PR_0.0.20/html_split/_0023func_002dargs_002dmain.html @@ -0,0 +1,42 @@ + + + + + + +#func-args-main (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #func-args-main.

                        + diff --git a/PR_0.0.20/html_split/_0023glossary.html b/PR_0.0.20/html_split/_0023glossary.html new file mode 100644 index 0000000..18f2735 --- /dev/null +++ b/PR_0.0.20/html_split/_0023glossary.html @@ -0,0 +1,42 @@ + + + + + + +#glossary (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #glossary.

                        + diff --git a/PR_0.0.20/html_split/_0023license.html b/PR_0.0.20/html_split/_0023license.html new file mode 100644 index 0000000..342cc9c --- /dev/null +++ b/PR_0.0.20/html_split/_0023license.html @@ -0,0 +1,42 @@ + + + + + + +#license (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #license.

                        + diff --git a/PR_0.0.20/html_split/_0023main_002ddeclarations_002dfor_002dprograms.html b/PR_0.0.20/html_split/_0023main_002ddeclarations_002dfor_002dprograms.html new file mode 100644 index 0000000..aca7d4b --- /dev/null +++ b/PR_0.0.20/html_split/_0023main_002ddeclarations_002dfor_002dprograms.html @@ -0,0 +1,42 @@ + + + + + + +#main-declarations-for-programs (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #main-declarations-for-programs.

                        + diff --git a/PR_0.0.20/html_split/_0023main_002dusing_002dreferences_002dto_002dmodify_002dexternal_002ddata.html b/PR_0.0.20/html_split/_0023main_002dusing_002dreferences_002dto_002dmodify_002dexternal_002ddata.html new file mode 100644 index 0000000..6c16cd1 --- /dev/null +++ b/PR_0.0.20/html_split/_0023main_002dusing_002dreferences_002dto_002dmodify_002dexternal_002ddata.html @@ -0,0 +1,42 @@ + + + + + + +#main-using-references-to-modify-external-data (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #main-using-references-to-modify-external-data.

                        + diff --git a/PR_0.0.20/html_split/_0023main_002dusing_002dreferences_002dto_002dmodify_002dexternal_002ddata_002d1.html b/PR_0.0.20/html_split/_0023main_002dusing_002dreferences_002dto_002dmodify_002dexternal_002ddata_002d1.html new file mode 100644 index 0000000..c4a9f42 --- /dev/null +++ b/PR_0.0.20/html_split/_0023main_002dusing_002dreferences_002dto_002dmodify_002dexternal_002ddata_002d1.html @@ -0,0 +1,42 @@ + + + + + + +#main-using-references-to-modify-external-data-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #main-using-references-to-modify-external-data-1.

                        + diff --git a/PR_0.0.20/html_split/_0023module_002dname_002dpassing_002dparameters_002dby_002dreference.html b/PR_0.0.20/html_split/_0023module_002dname_002dpassing_002dparameters_002dby_002dreference.html new file mode 100644 index 0000000..26eb13e --- /dev/null +++ b/PR_0.0.20/html_split/_0023module_002dname_002dpassing_002dparameters_002dby_002dreference.html @@ -0,0 +1,42 @@ + + + + + + +#module-name-passing-parameters-by-reference (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #module-name-passing-parameters-by-reference.

                        + diff --git a/PR_0.0.20/html_split/_0023module_002dname_002dpassing_002dparameters_002dby_002dvalue.html b/PR_0.0.20/html_split/_0023module_002dname_002dpassing_002dparameters_002dby_002dvalue.html new file mode 100644 index 0000000..80ac6e2 --- /dev/null +++ b/PR_0.0.20/html_split/_0023module_002dname_002dpassing_002dparameters_002dby_002dvalue.html @@ -0,0 +1,42 @@ + + + + + + +#module-name-passing-parameters-by-value (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #module-name-passing-parameters-by-value.

                        + diff --git a/PR_0.0.20/html_split/_0023motivation.html b/PR_0.0.20/html_split/_0023motivation.html new file mode 100644 index 0000000..768bddf --- /dev/null +++ b/PR_0.0.20/html_split/_0023motivation.html @@ -0,0 +1,42 @@ + + + + + + +#motivation (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #motivation.

                        + diff --git a/PR_0.0.20/html_split/_0023motivation_002d1.html b/PR_0.0.20/html_split/_0023motivation_002d1.html new file mode 100644 index 0000000..79e52d8 --- /dev/null +++ b/PR_0.0.20/html_split/_0023motivation_002d1.html @@ -0,0 +1,42 @@ + + + + + + +#motivation-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #motivation-1.

                        + diff --git a/PR_0.0.20/html_split/_0023motivation_002d10.html b/PR_0.0.20/html_split/_0023motivation_002d10.html new file mode 100644 index 0000000..f521dba --- /dev/null +++ b/PR_0.0.20/html_split/_0023motivation_002d10.html @@ -0,0 +1,42 @@ + + + + + + +#motivation-10 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #motivation-10.

                        + diff --git a/PR_0.0.20/html_split/_0023motivation_002d11.html b/PR_0.0.20/html_split/_0023motivation_002d11.html new file mode 100644 index 0000000..dd42fae --- /dev/null +++ b/PR_0.0.20/html_split/_0023motivation_002d11.html @@ -0,0 +1,42 @@ + + + + + + +#motivation-11 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #motivation-11.

                        + diff --git a/PR_0.0.20/html_split/_0023motivation_002d2.html b/PR_0.0.20/html_split/_0023motivation_002d2.html new file mode 100644 index 0000000..b587a3b --- /dev/null +++ b/PR_0.0.20/html_split/_0023motivation_002d2.html @@ -0,0 +1,42 @@ + + + + + + +#motivation-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #motivation-2.

                        + diff --git a/PR_0.0.20/html_split/_0023motivation_002d3.html b/PR_0.0.20/html_split/_0023motivation_002d3.html new file mode 100644 index 0000000..e4fdbea --- /dev/null +++ b/PR_0.0.20/html_split/_0023motivation_002d3.html @@ -0,0 +1,42 @@ + + + + + + +#motivation-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #motivation-3.

                        + diff --git a/PR_0.0.20/html_split/_0023motivation_002d4.html b/PR_0.0.20/html_split/_0023motivation_002d4.html new file mode 100644 index 0000000..0f5663b --- /dev/null +++ b/PR_0.0.20/html_split/_0023motivation_002d4.html @@ -0,0 +1,42 @@ + + + + + + +#motivation-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #motivation-4.

                        + diff --git a/PR_0.0.20/html_split/_0023motivation_002d5.html b/PR_0.0.20/html_split/_0023motivation_002d5.html new file mode 100644 index 0000000..f35c189 --- /dev/null +++ b/PR_0.0.20/html_split/_0023motivation_002d5.html @@ -0,0 +1,42 @@ + + + + + + +#motivation-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #motivation-5.

                        + diff --git a/PR_0.0.20/html_split/_0023motivation_002d6.html b/PR_0.0.20/html_split/_0023motivation_002d6.html new file mode 100644 index 0000000..7970b3f --- /dev/null +++ b/PR_0.0.20/html_split/_0023motivation_002d6.html @@ -0,0 +1,42 @@ + + + + + + +#motivation-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #motivation-6.

                        + diff --git a/PR_0.0.20/html_split/_0023motivation_002d7.html b/PR_0.0.20/html_split/_0023motivation_002d7.html new file mode 100644 index 0000000..3edee58 --- /dev/null +++ b/PR_0.0.20/html_split/_0023motivation_002d7.html @@ -0,0 +1,42 @@ + + + + + + +#motivation-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #motivation-7.

                        + diff --git a/PR_0.0.20/html_split/_0023motivation_002d8.html b/PR_0.0.20/html_split/_0023motivation_002d8.html new file mode 100644 index 0000000..7218bda --- /dev/null +++ b/PR_0.0.20/html_split/_0023motivation_002d8.html @@ -0,0 +1,42 @@ + + + + + + +#motivation-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #motivation-8.

                        + diff --git a/PR_0.0.20/html_split/_0023motivation_002d9.html b/PR_0.0.20/html_split/_0023motivation_002d9.html new file mode 100644 index 0000000..3c51ffc --- /dev/null +++ b/PR_0.0.20/html_split/_0023motivation_002d9.html @@ -0,0 +1,42 @@ + + + + + + +#motivation-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #motivation-9.

                        + diff --git a/PR_0.0.20/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html b/PR_0.0.20/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html new file mode 100644 index 0000000..6a93df8 --- /dev/null +++ b/PR_0.0.20/html_split/_0023obtaining_002dthis_002ddocument_002dthe_002dmost_002drecent_002dversion_002dand_002dalternate_002dformats.html @@ -0,0 +1,42 @@ + + + + + + +#obtaining-this-document-the-most-recent-version-and-alternate-formats (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #obtaining-this-document-the-most-recent-version-and-alternate-formats.

                        + diff --git a/PR_0.0.20/html_split/_0023organization_002dof_002dthis_002ddocument.html b/PR_0.0.20/html_split/_0023organization_002dof_002dthis_002ddocument.html new file mode 100644 index 0000000..37b335b --- /dev/null +++ b/PR_0.0.20/html_split/_0023organization_002dof_002dthis_002ddocument.html @@ -0,0 +1,42 @@ + + + + + + +#organization-of-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #organization-of-this-document.

                        + diff --git a/PR_0.0.20/html_split/_0023overview.html b/PR_0.0.20/html_split/_0023overview.html new file mode 100644 index 0000000..dec3ed6 --- /dev/null +++ b/PR_0.0.20/html_split/_0023overview.html @@ -0,0 +1,42 @@ + + + + + + +#overview (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #overview.

                        + diff --git a/PR_0.0.20/html_split/_0023overview_002d1.html b/PR_0.0.20/html_split/_0023overview_002d1.html new file mode 100644 index 0000000..2252d07 --- /dev/null +++ b/PR_0.0.20/html_split/_0023overview_002d1.html @@ -0,0 +1,42 @@ + + + + + + +#overview-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #overview-1.

                        + diff --git a/PR_0.0.20/html_split/_0023overview_002d10.html b/PR_0.0.20/html_split/_0023overview_002d10.html new file mode 100644 index 0000000..4932ea9 --- /dev/null +++ b/PR_0.0.20/html_split/_0023overview_002d10.html @@ -0,0 +1,42 @@ + + + + + + +#overview-10 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #overview-10.

                        + diff --git a/PR_0.0.20/html_split/_0023overview_002d11.html b/PR_0.0.20/html_split/_0023overview_002d11.html new file mode 100644 index 0000000..e46c65b --- /dev/null +++ b/PR_0.0.20/html_split/_0023overview_002d11.html @@ -0,0 +1,42 @@ + + + + + + +#overview-11 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #overview-11.

                        + diff --git a/PR_0.0.20/html_split/_0023overview_002d2.html b/PR_0.0.20/html_split/_0023overview_002d2.html new file mode 100644 index 0000000..18e8455 --- /dev/null +++ b/PR_0.0.20/html_split/_0023overview_002d2.html @@ -0,0 +1,42 @@ + + + + + + +#overview-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #overview-2.

                        + diff --git a/PR_0.0.20/html_split/_0023overview_002d3.html b/PR_0.0.20/html_split/_0023overview_002d3.html new file mode 100644 index 0000000..5c2e160 --- /dev/null +++ b/PR_0.0.20/html_split/_0023overview_002d3.html @@ -0,0 +1,42 @@ + + + + + + +#overview-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #overview-3.

                        + diff --git a/PR_0.0.20/html_split/_0023overview_002d4.html b/PR_0.0.20/html_split/_0023overview_002d4.html new file mode 100644 index 0000000..0da2664 --- /dev/null +++ b/PR_0.0.20/html_split/_0023overview_002d4.html @@ -0,0 +1,42 @@ + + + + + + +#overview-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #overview-4.

                        + diff --git a/PR_0.0.20/html_split/_0023overview_002d5.html b/PR_0.0.20/html_split/_0023overview_002d5.html new file mode 100644 index 0000000..161a7aa --- /dev/null +++ b/PR_0.0.20/html_split/_0023overview_002d5.html @@ -0,0 +1,42 @@ + + + + + + +#overview-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #overview-5.

                        + diff --git a/PR_0.0.20/html_split/_0023overview_002d6.html b/PR_0.0.20/html_split/_0023overview_002d6.html new file mode 100644 index 0000000..aca6058 --- /dev/null +++ b/PR_0.0.20/html_split/_0023overview_002d6.html @@ -0,0 +1,42 @@ + + + + + + +#overview-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #overview-6.

                        + diff --git a/PR_0.0.20/html_split/_0023overview_002d7.html b/PR_0.0.20/html_split/_0023overview_002d7.html new file mode 100644 index 0000000..df40b63 --- /dev/null +++ b/PR_0.0.20/html_split/_0023overview_002d7.html @@ -0,0 +1,42 @@ + + + + + + +#overview-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #overview-7.

                        + diff --git a/PR_0.0.20/html_split/_0023overview_002d8.html b/PR_0.0.20/html_split/_0023overview_002d8.html new file mode 100644 index 0000000..3fa08b3 --- /dev/null +++ b/PR_0.0.20/html_split/_0023overview_002d8.html @@ -0,0 +1,42 @@ + + + + + + +#overview-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #overview-8.

                        + diff --git a/PR_0.0.20/html_split/_0023overview_002d9.html b/PR_0.0.20/html_split/_0023overview_002d9.html new file mode 100644 index 0000000..7ef5c76 --- /dev/null +++ b/PR_0.0.20/html_split/_0023overview_002d9.html @@ -0,0 +1,42 @@ + + + + + + +#overview-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #overview-9.

                        + diff --git a/PR_0.0.20/html_split/_0023points_002dto_002dcover.html b/PR_0.0.20/html_split/_0023points_002dto_002dcover.html new file mode 100644 index 0000000..99dca3a --- /dev/null +++ b/PR_0.0.20/html_split/_0023points_002dto_002dcover.html @@ -0,0 +1,42 @@ + + + + + + +#points-to-cover (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #points-to-cover.

                        + diff --git a/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d1.html b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d1.html new file mode 100644 index 0000000..e4216ca --- /dev/null +++ b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d1.html @@ -0,0 +1,42 @@ + + + + + + +#points-to-cover-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #points-to-cover-1.

                        + diff --git a/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d10.html b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d10.html new file mode 100644 index 0000000..25b9fcc --- /dev/null +++ b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d10.html @@ -0,0 +1,42 @@ + + + + + + +#points-to-cover-10 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #points-to-cover-10.

                        + diff --git a/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d11.html b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d11.html new file mode 100644 index 0000000..f237b52 --- /dev/null +++ b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d11.html @@ -0,0 +1,42 @@ + + + + + + +#points-to-cover-11 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #points-to-cover-11.

                        + diff --git a/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d12.html b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d12.html new file mode 100644 index 0000000..47f334b --- /dev/null +++ b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d12.html @@ -0,0 +1,42 @@ + + + + + + +#points-to-cover-12 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #points-to-cover-12.

                        + diff --git a/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d13.html b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d13.html new file mode 100644 index 0000000..4d5a18c --- /dev/null +++ b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d13.html @@ -0,0 +1,42 @@ + + + + + + +#points-to-cover-13 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #points-to-cover-13.

                        + diff --git a/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d14.html b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d14.html new file mode 100644 index 0000000..9ac2710 --- /dev/null +++ b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d14.html @@ -0,0 +1,42 @@ + + + + + + +#points-to-cover-14 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #points-to-cover-14.

                        + diff --git a/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d15.html b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d15.html new file mode 100644 index 0000000..8e20e2c --- /dev/null +++ b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d15.html @@ -0,0 +1,42 @@ + + + + + + +#points-to-cover-15 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #points-to-cover-15.

                        + diff --git a/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d16.html b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d16.html new file mode 100644 index 0000000..31c6bc4 --- /dev/null +++ b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d16.html @@ -0,0 +1,42 @@ + + + + + + +#points-to-cover-16 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #points-to-cover-16.

                        + diff --git a/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d17.html b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d17.html new file mode 100644 index 0000000..16c1397 --- /dev/null +++ b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d17.html @@ -0,0 +1,42 @@ + + + + + + +#points-to-cover-17 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #points-to-cover-17.

                        + diff --git a/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d18.html b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d18.html new file mode 100644 index 0000000..496e25d --- /dev/null +++ b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d18.html @@ -0,0 +1,42 @@ + + + + + + +#points-to-cover-18 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #points-to-cover-18.

                        + diff --git a/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d19.html b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d19.html new file mode 100644 index 0000000..7f969a1 --- /dev/null +++ b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d19.html @@ -0,0 +1,42 @@ + + + + + + +#points-to-cover-19 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #points-to-cover-19.

                        + diff --git a/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d2.html b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d2.html new file mode 100644 index 0000000..754e299 --- /dev/null +++ b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d2.html @@ -0,0 +1,42 @@ + + + + + + +#points-to-cover-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #points-to-cover-2.

                        + diff --git a/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d20.html b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d20.html new file mode 100644 index 0000000..b5e35e4 --- /dev/null +++ b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d20.html @@ -0,0 +1,42 @@ + + + + + + +#points-to-cover-20 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #points-to-cover-20.

                        + diff --git a/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d21.html b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d21.html new file mode 100644 index 0000000..7986e05 --- /dev/null +++ b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d21.html @@ -0,0 +1,42 @@ + + + + + + +#points-to-cover-21 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #points-to-cover-21.

                        + diff --git a/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d22.html b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d22.html new file mode 100644 index 0000000..1b1761e --- /dev/null +++ b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d22.html @@ -0,0 +1,42 @@ + + + + + + +#points-to-cover-22 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #points-to-cover-22.

                        + diff --git a/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d3.html b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d3.html new file mode 100644 index 0000000..cc74591 --- /dev/null +++ b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d3.html @@ -0,0 +1,42 @@ + + + + + + +#points-to-cover-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #points-to-cover-3.

                        + diff --git a/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d4.html b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d4.html new file mode 100644 index 0000000..5b03c52 --- /dev/null +++ b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d4.html @@ -0,0 +1,42 @@ + + + + + + +#points-to-cover-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #points-to-cover-4.

                        + diff --git a/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d5.html b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d5.html new file mode 100644 index 0000000..42a4781 --- /dev/null +++ b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d5.html @@ -0,0 +1,42 @@ + + + + + + +#points-to-cover-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #points-to-cover-5.

                        + diff --git a/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d6.html b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d6.html new file mode 100644 index 0000000..aa172cc --- /dev/null +++ b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d6.html @@ -0,0 +1,42 @@ + + + + + + +#points-to-cover-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #points-to-cover-6.

                        + diff --git a/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d7.html b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d7.html new file mode 100644 index 0000000..5ba14e9 --- /dev/null +++ b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d7.html @@ -0,0 +1,42 @@ + + + + + + +#points-to-cover-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #points-to-cover-7.

                        + diff --git a/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d8.html b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d8.html new file mode 100644 index 0000000..20bb3b7 --- /dev/null +++ b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d8.html @@ -0,0 +1,42 @@ + + + + + + +#points-to-cover-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #points-to-cover-8.

                        + diff --git a/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d9.html b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d9.html new file mode 100644 index 0000000..df889e4 --- /dev/null +++ b/PR_0.0.20/html_split/_0023points_002dto_002dcover_002d9.html @@ -0,0 +1,42 @@ + + + + + + +#points-to-cover-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #points-to-cover-9.

                        + diff --git a/PR_0.0.20/html_split/_0023references.html b/PR_0.0.20/html_split/_0023references.html new file mode 100644 index 0000000..295f032 --- /dev/null +++ b/PR_0.0.20/html_split/_0023references.html @@ -0,0 +1,42 @@ + + + + + + +#references (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #references.

                        + diff --git a/PR_0.0.20/html_split/_0023references_002don_002dlearning_002doutcomes.html b/PR_0.0.20/html_split/_0023references_002don_002dlearning_002doutcomes.html new file mode 100644 index 0000000..afd7614 --- /dev/null +++ b/PR_0.0.20/html_split/_0023references_002don_002dlearning_002doutcomes.html @@ -0,0 +1,42 @@ + + + + + + +#references-on-learning-outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #references-on-learning-outcomes.

                        + diff --git a/PR_0.0.20/html_split/_0023req_002dexpr.html b/PR_0.0.20/html_split/_0023req_002dexpr.html new file mode 100644 index 0000000..be5fc39 --- /dev/null +++ b/PR_0.0.20/html_split/_0023req_002dexpr.html @@ -0,0 +1,42 @@ + + + + + + +#req-expr (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #req-expr.

                        + diff --git a/PR_0.0.20/html_split/_0023req_002dexpr_002dadvanced.html b/PR_0.0.20/html_split/_0023req_002dexpr_002dadvanced.html new file mode 100644 index 0000000..0c2f6eb --- /dev/null +++ b/PR_0.0.20/html_split/_0023req_002dexpr_002dadvanced.html @@ -0,0 +1,42 @@ + + + + + + +#req-expr-advanced (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #req-expr-advanced.

                        + diff --git a/PR_0.0.20/html_split/_0023req_002dexpr_002dbasic.html b/PR_0.0.20/html_split/_0023req_002dexpr_002dbasic.html new file mode 100644 index 0000000..e7b6e2b --- /dev/null +++ b/PR_0.0.20/html_split/_0023req_002dexpr_002dbasic.html @@ -0,0 +1,42 @@ + + + + + + +#req-expr-basic (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #req-expr-basic.

                        + diff --git a/PR_0.0.20/html_split/_0023req_002dexpr_002dmain.html b/PR_0.0.20/html_split/_0023req_002dexpr_002dmain.html new file mode 100644 index 0000000..ff5344d --- /dev/null +++ b/PR_0.0.20/html_split/_0023req_002dexpr_002dmain.html @@ -0,0 +1,42 @@ + + + + + + +#req-expr-main (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #req-expr-main.

                        + diff --git a/PR_0.0.20/html_split/_0023static_002dassert.html b/PR_0.0.20/html_split/_0023static_002dassert.html new file mode 100644 index 0000000..da36a13 --- /dev/null +++ b/PR_0.0.20/html_split/_0023static_002dassert.html @@ -0,0 +1,42 @@ + + + + + + +#static-assert (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #static-assert.

                        + diff --git a/PR_0.0.20/html_split/_0023static_002dassert_002dadvanced.html b/PR_0.0.20/html_split/_0023static_002dassert_002dadvanced.html new file mode 100644 index 0000000..edd65c0 --- /dev/null +++ b/PR_0.0.20/html_split/_0023static_002dassert_002dadvanced.html @@ -0,0 +1,42 @@ + + + + + + +#static-assert-advanced (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #static-assert-advanced.

                        + diff --git a/PR_0.0.20/html_split/_0023static_002dassert_002dbasic.html b/PR_0.0.20/html_split/_0023static_002dassert_002dbasic.html new file mode 100644 index 0000000..c56c4c4 --- /dev/null +++ b/PR_0.0.20/html_split/_0023static_002dassert_002dbasic.html @@ -0,0 +1,42 @@ + + + + + + +#static-assert-basic (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #static-assert-basic.

                        + diff --git a/PR_0.0.20/html_split/_0023static_002dassert_002dmain.html b/PR_0.0.20/html_split/_0023static_002dassert_002dmain.html new file mode 100644 index 0000000..6a543ab --- /dev/null +++ b/PR_0.0.20/html_split/_0023static_002dassert_002dmain.html @@ -0,0 +1,42 @@ + + + + + + +#static-assert-main (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #static-assert-main.

                        + diff --git a/PR_0.0.20/html_split/_0023student_002doutcomes.html b/PR_0.0.20/html_split/_0023student_002doutcomes.html new file mode 100644 index 0000000..708bfe9 --- /dev/null +++ b/PR_0.0.20/html_split/_0023student_002doutcomes.html @@ -0,0 +1,42 @@ + + + + + + +#student-outcomes (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #student-outcomes.

                        + diff --git a/PR_0.0.20/html_split/_0023student_002doutcomes_002d1.html b/PR_0.0.20/html_split/_0023student_002doutcomes_002d1.html new file mode 100644 index 0000000..3213402 --- /dev/null +++ b/PR_0.0.20/html_split/_0023student_002doutcomes_002d1.html @@ -0,0 +1,42 @@ + + + + + + +#student-outcomes-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #student-outcomes-1.

                        + diff --git a/PR_0.0.20/html_split/_0023student_002doutcomes_002d10.html b/PR_0.0.20/html_split/_0023student_002doutcomes_002d10.html new file mode 100644 index 0000000..b4c873b --- /dev/null +++ b/PR_0.0.20/html_split/_0023student_002doutcomes_002d10.html @@ -0,0 +1,42 @@ + + + + + + +#student-outcomes-10 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #student-outcomes-10.

                        + diff --git a/PR_0.0.20/html_split/_0023student_002doutcomes_002d11.html b/PR_0.0.20/html_split/_0023student_002doutcomes_002d11.html new file mode 100644 index 0000000..3a7942b --- /dev/null +++ b/PR_0.0.20/html_split/_0023student_002doutcomes_002d11.html @@ -0,0 +1,42 @@ + + + + + + +#student-outcomes-11 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #student-outcomes-11.

                        + diff --git a/PR_0.0.20/html_split/_0023student_002doutcomes_002d12.html b/PR_0.0.20/html_split/_0023student_002doutcomes_002d12.html new file mode 100644 index 0000000..f29e36d --- /dev/null +++ b/PR_0.0.20/html_split/_0023student_002doutcomes_002d12.html @@ -0,0 +1,42 @@ + + + + + + +#student-outcomes-12 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #student-outcomes-12.

                        + diff --git a/PR_0.0.20/html_split/_0023student_002doutcomes_002d13.html b/PR_0.0.20/html_split/_0023student_002doutcomes_002d13.html new file mode 100644 index 0000000..6150518 --- /dev/null +++ b/PR_0.0.20/html_split/_0023student_002doutcomes_002d13.html @@ -0,0 +1,42 @@ + + + + + + +#student-outcomes-13 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #student-outcomes-13.

                        + diff --git a/PR_0.0.20/html_split/_0023student_002doutcomes_002d14.html b/PR_0.0.20/html_split/_0023student_002doutcomes_002d14.html new file mode 100644 index 0000000..2e93535 --- /dev/null +++ b/PR_0.0.20/html_split/_0023student_002doutcomes_002d14.html @@ -0,0 +1,42 @@ + + + + + + +#student-outcomes-14 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #student-outcomes-14.

                        + diff --git a/PR_0.0.20/html_split/_0023student_002doutcomes_002d15.html b/PR_0.0.20/html_split/_0023student_002doutcomes_002d15.html new file mode 100644 index 0000000..301528c --- /dev/null +++ b/PR_0.0.20/html_split/_0023student_002doutcomes_002d15.html @@ -0,0 +1,42 @@ + + + + + + +#student-outcomes-15 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #student-outcomes-15.

                        + diff --git a/PR_0.0.20/html_split/_0023student_002doutcomes_002d16.html b/PR_0.0.20/html_split/_0023student_002doutcomes_002d16.html new file mode 100644 index 0000000..a46285f --- /dev/null +++ b/PR_0.0.20/html_split/_0023student_002doutcomes_002d16.html @@ -0,0 +1,42 @@ + + + + + + +#student-outcomes-16 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #student-outcomes-16.

                        + diff --git a/PR_0.0.20/html_split/_0023student_002doutcomes_002d17.html b/PR_0.0.20/html_split/_0023student_002doutcomes_002d17.html new file mode 100644 index 0000000..5d52134 --- /dev/null +++ b/PR_0.0.20/html_split/_0023student_002doutcomes_002d17.html @@ -0,0 +1,42 @@ + + + + + + +#student-outcomes-17 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #student-outcomes-17.

                        + diff --git a/PR_0.0.20/html_split/_0023student_002doutcomes_002d18.html b/PR_0.0.20/html_split/_0023student_002doutcomes_002d18.html new file mode 100644 index 0000000..17ae7fb --- /dev/null +++ b/PR_0.0.20/html_split/_0023student_002doutcomes_002d18.html @@ -0,0 +1,42 @@ + + + + + + +#student-outcomes-18 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #student-outcomes-18.

                        + diff --git a/PR_0.0.20/html_split/_0023student_002doutcomes_002d19.html b/PR_0.0.20/html_split/_0023student_002doutcomes_002d19.html new file mode 100644 index 0000000..6825f15 --- /dev/null +++ b/PR_0.0.20/html_split/_0023student_002doutcomes_002d19.html @@ -0,0 +1,42 @@ + + + + + + +#student-outcomes-19 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #student-outcomes-19.

                        + diff --git a/PR_0.0.20/html_split/_0023student_002doutcomes_002d2.html b/PR_0.0.20/html_split/_0023student_002doutcomes_002d2.html new file mode 100644 index 0000000..64d3027 --- /dev/null +++ b/PR_0.0.20/html_split/_0023student_002doutcomes_002d2.html @@ -0,0 +1,42 @@ + + + + + + +#student-outcomes-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #student-outcomes-2.

                        + diff --git a/PR_0.0.20/html_split/_0023student_002doutcomes_002d20.html b/PR_0.0.20/html_split/_0023student_002doutcomes_002d20.html new file mode 100644 index 0000000..1024fad --- /dev/null +++ b/PR_0.0.20/html_split/_0023student_002doutcomes_002d20.html @@ -0,0 +1,42 @@ + + + + + + +#student-outcomes-20 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #student-outcomes-20.

                        + diff --git a/PR_0.0.20/html_split/_0023student_002doutcomes_002d21.html b/PR_0.0.20/html_split/_0023student_002doutcomes_002d21.html new file mode 100644 index 0000000..5483b2b --- /dev/null +++ b/PR_0.0.20/html_split/_0023student_002doutcomes_002d21.html @@ -0,0 +1,42 @@ + + + + + + +#student-outcomes-21 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #student-outcomes-21.

                        + diff --git a/PR_0.0.20/html_split/_0023student_002doutcomes_002d22.html b/PR_0.0.20/html_split/_0023student_002doutcomes_002d22.html new file mode 100644 index 0000000..a76c590 --- /dev/null +++ b/PR_0.0.20/html_split/_0023student_002doutcomes_002d22.html @@ -0,0 +1,42 @@ + + + + + + +#student-outcomes-22 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #student-outcomes-22.

                        + diff --git a/PR_0.0.20/html_split/_0023student_002doutcomes_002d23.html b/PR_0.0.20/html_split/_0023student_002doutcomes_002d23.html new file mode 100644 index 0000000..4052cec --- /dev/null +++ b/PR_0.0.20/html_split/_0023student_002doutcomes_002d23.html @@ -0,0 +1,42 @@ + + + + + + +#student-outcomes-23 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #student-outcomes-23.

                        + diff --git a/PR_0.0.20/html_split/_0023student_002doutcomes_002d3.html b/PR_0.0.20/html_split/_0023student_002doutcomes_002d3.html new file mode 100644 index 0000000..ad2ab98 --- /dev/null +++ b/PR_0.0.20/html_split/_0023student_002doutcomes_002d3.html @@ -0,0 +1,42 @@ + + + + + + +#student-outcomes-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #student-outcomes-3.

                        + diff --git a/PR_0.0.20/html_split/_0023student_002doutcomes_002d4.html b/PR_0.0.20/html_split/_0023student_002doutcomes_002d4.html new file mode 100644 index 0000000..892f872 --- /dev/null +++ b/PR_0.0.20/html_split/_0023student_002doutcomes_002d4.html @@ -0,0 +1,42 @@ + + + + + + +#student-outcomes-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #student-outcomes-4.

                        + diff --git a/PR_0.0.20/html_split/_0023student_002doutcomes_002d5.html b/PR_0.0.20/html_split/_0023student_002doutcomes_002d5.html new file mode 100644 index 0000000..b186985 --- /dev/null +++ b/PR_0.0.20/html_split/_0023student_002doutcomes_002d5.html @@ -0,0 +1,42 @@ + + + + + + +#student-outcomes-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #student-outcomes-5.

                        + diff --git a/PR_0.0.20/html_split/_0023student_002doutcomes_002d6.html b/PR_0.0.20/html_split/_0023student_002doutcomes_002d6.html new file mode 100644 index 0000000..88cc2c2 --- /dev/null +++ b/PR_0.0.20/html_split/_0023student_002doutcomes_002d6.html @@ -0,0 +1,42 @@ + + + + + + +#student-outcomes-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #student-outcomes-6.

                        + diff --git a/PR_0.0.20/html_split/_0023student_002doutcomes_002d7.html b/PR_0.0.20/html_split/_0023student_002doutcomes_002d7.html new file mode 100644 index 0000000..f7d2c14 --- /dev/null +++ b/PR_0.0.20/html_split/_0023student_002doutcomes_002d7.html @@ -0,0 +1,42 @@ + + + + + + +#student-outcomes-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #student-outcomes-7.

                        + diff --git a/PR_0.0.20/html_split/_0023student_002doutcomes_002d8.html b/PR_0.0.20/html_split/_0023student_002doutcomes_002d8.html new file mode 100644 index 0000000..503399a --- /dev/null +++ b/PR_0.0.20/html_split/_0023student_002doutcomes_002d8.html @@ -0,0 +1,42 @@ + + + + + + +#student-outcomes-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #student-outcomes-8.

                        + diff --git a/PR_0.0.20/html_split/_0023student_002doutcomes_002d9.html b/PR_0.0.20/html_split/_0023student_002doutcomes_002d9.html new file mode 100644 index 0000000..7d04238 --- /dev/null +++ b/PR_0.0.20/html_split/_0023student_002doutcomes_002d9.html @@ -0,0 +1,42 @@ + + + + + + +#student-outcomes-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #student-outcomes-9.

                        + diff --git a/PR_0.0.20/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html b/PR_0.0.20/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html new file mode 100644 index 0000000..03031b1 --- /dev/null +++ b/PR_0.0.20/html_split/_0023summary_002dof_002dmodules_002dand_002dtopics.html @@ -0,0 +1,42 @@ + + + + + + +#summary-of-modules-and-topics (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #summary-of-modules-and-topics.

                        + diff --git a/PR_0.0.20/html_split/_0023topic_002dintroduction.html b/PR_0.0.20/html_split/_0023topic_002dintroduction.html new file mode 100644 index 0000000..761c29e --- /dev/null +++ b/PR_0.0.20/html_split/_0023topic_002dintroduction.html @@ -0,0 +1,42 @@ + + + + + + +#topic-introduction (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #topic-introduction.

                        + diff --git a/PR_0.0.20/html_split/_0023topic_002dintroduction_002d1.html b/PR_0.0.20/html_split/_0023topic_002dintroduction_002d1.html new file mode 100644 index 0000000..0608d32 --- /dev/null +++ b/PR_0.0.20/html_split/_0023topic_002dintroduction_002d1.html @@ -0,0 +1,42 @@ + + + + + + +#topic-introduction-1 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #topic-introduction-1.

                        + diff --git a/PR_0.0.20/html_split/_0023topic_002dintroduction_002d10.html b/PR_0.0.20/html_split/_0023topic_002dintroduction_002d10.html new file mode 100644 index 0000000..1316b50 --- /dev/null +++ b/PR_0.0.20/html_split/_0023topic_002dintroduction_002d10.html @@ -0,0 +1,42 @@ + + + + + + +#topic-introduction-10 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #topic-introduction-10.

                        + diff --git a/PR_0.0.20/html_split/_0023topic_002dintroduction_002d11.html b/PR_0.0.20/html_split/_0023topic_002dintroduction_002d11.html new file mode 100644 index 0000000..c243a02 --- /dev/null +++ b/PR_0.0.20/html_split/_0023topic_002dintroduction_002d11.html @@ -0,0 +1,42 @@ + + + + + + +#topic-introduction-11 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #topic-introduction-11.

                        + diff --git a/PR_0.0.20/html_split/_0023topic_002dintroduction_002d2.html b/PR_0.0.20/html_split/_0023topic_002dintroduction_002d2.html new file mode 100644 index 0000000..29e9174 --- /dev/null +++ b/PR_0.0.20/html_split/_0023topic_002dintroduction_002d2.html @@ -0,0 +1,42 @@ + + + + + + +#topic-introduction-2 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #topic-introduction-2.

                        + diff --git a/PR_0.0.20/html_split/_0023topic_002dintroduction_002d3.html b/PR_0.0.20/html_split/_0023topic_002dintroduction_002d3.html new file mode 100644 index 0000000..480fa32 --- /dev/null +++ b/PR_0.0.20/html_split/_0023topic_002dintroduction_002d3.html @@ -0,0 +1,42 @@ + + + + + + +#topic-introduction-3 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #topic-introduction-3.

                        + diff --git a/PR_0.0.20/html_split/_0023topic_002dintroduction_002d4.html b/PR_0.0.20/html_split/_0023topic_002dintroduction_002d4.html new file mode 100644 index 0000000..e99c6f1 --- /dev/null +++ b/PR_0.0.20/html_split/_0023topic_002dintroduction_002d4.html @@ -0,0 +1,42 @@ + + + + + + +#topic-introduction-4 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #topic-introduction-4.

                        + diff --git a/PR_0.0.20/html_split/_0023topic_002dintroduction_002d5.html b/PR_0.0.20/html_split/_0023topic_002dintroduction_002d5.html new file mode 100644 index 0000000..3e51900 --- /dev/null +++ b/PR_0.0.20/html_split/_0023topic_002dintroduction_002d5.html @@ -0,0 +1,42 @@ + + + + + + +#topic-introduction-5 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #topic-introduction-5.

                        + diff --git a/PR_0.0.20/html_split/_0023topic_002dintroduction_002d6.html b/PR_0.0.20/html_split/_0023topic_002dintroduction_002d6.html new file mode 100644 index 0000000..624436b --- /dev/null +++ b/PR_0.0.20/html_split/_0023topic_002dintroduction_002d6.html @@ -0,0 +1,42 @@ + + + + + + +#topic-introduction-6 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #topic-introduction-6.

                        + diff --git a/PR_0.0.20/html_split/_0023topic_002dintroduction_002d7.html b/PR_0.0.20/html_split/_0023topic_002dintroduction_002d7.html new file mode 100644 index 0000000..dbb2480 --- /dev/null +++ b/PR_0.0.20/html_split/_0023topic_002dintroduction_002d7.html @@ -0,0 +1,42 @@ + + + + + + +#topic-introduction-7 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #topic-introduction-7.

                        + diff --git a/PR_0.0.20/html_split/_0023topic_002dintroduction_002d8.html b/PR_0.0.20/html_split/_0023topic_002dintroduction_002d8.html new file mode 100644 index 0000000..221f0e0 --- /dev/null +++ b/PR_0.0.20/html_split/_0023topic_002dintroduction_002d8.html @@ -0,0 +1,42 @@ + + + + + + +#topic-introduction-8 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #topic-introduction-8.

                        + diff --git a/PR_0.0.20/html_split/_0023topic_002dintroduction_002d9.html b/PR_0.0.20/html_split/_0023topic_002dintroduction_002d9.html new file mode 100644 index 0000000..3947a1e --- /dev/null +++ b/PR_0.0.20/html_split/_0023topic_002dintroduction_002d9.html @@ -0,0 +1,42 @@ + + + + + + +#topic-introduction-9 (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #topic-introduction-9.

                        + diff --git a/PR_0.0.20/html_split/_0023udl.html b/PR_0.0.20/html_split/_0023udl.html new file mode 100644 index 0000000..4612eca --- /dev/null +++ b/PR_0.0.20/html_split/_0023udl.html @@ -0,0 +1,42 @@ + + + + + + +#udl (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #udl.

                        + diff --git a/PR_0.0.20/html_split/_0023udl_002dbasic.html b/PR_0.0.20/html_split/_0023udl_002dbasic.html new file mode 100644 index 0000000..bff1ed5 --- /dev/null +++ b/PR_0.0.20/html_split/_0023udl_002dbasic.html @@ -0,0 +1,42 @@ + + + + + + +#udl-basic (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #udl-basic.

                        + diff --git a/PR_0.0.20/html_split/_0023udl_002dmain.html b/PR_0.0.20/html_split/_0023udl_002dmain.html new file mode 100644 index 0000000..fa8fd25 --- /dev/null +++ b/PR_0.0.20/html_split/_0023udl_002dmain.html @@ -0,0 +1,42 @@ + + + + + + +#udl-main (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #udl-main.

                        + diff --git a/PR_0.0.20/html_split/_0023use_002dof_002dthis_002ddocument.html b/PR_0.0.20/html_split/_0023use_002dof_002dthis_002ddocument.html new file mode 100644 index 0000000..47a1182 --- /dev/null +++ b/PR_0.0.20/html_split/_0023use_002dof_002dthis_002ddocument.html @@ -0,0 +1,42 @@ + + + + + + +#use-of-this-document (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #use-of-this-document.

                        + diff --git a/PR_0.0.20/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html b/PR_0.0.20/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html new file mode 100644 index 0000000..ad40c81 --- /dev/null +++ b/PR_0.0.20/html_split/_0023working_002dgroup_002ddocuments_002drelated_002dto_002dc_002dteaching_002dguidelines.html @@ -0,0 +1,42 @@ + + + + + + +#working-group-documents-related-to-c-teaching-guidelines (Guidelines for Teaching C++) + + + + + + + + + + + + + + + +

                        The node you are looking for is at #working-group-documents-related-to-c-teaching-guidelines.

                        + diff --git a/PR_0.0.20/html_split/index.html b/PR_0.0.20/html_split/index.html new file mode 100644 index 0000000..120845b --- /dev/null +++ b/PR_0.0.20/html_split/index.html @@ -0,0 +1,357 @@ + + + + + +Top (Guidelines for Teaching C++) + + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        Guidelines for Teaching C++

                        + + +
                        +

                        Table of Contents

                        + +
                        + + +
                        +
                        +
                        +
                        + + + + + + diff --git a/PR_0.0.20/html_split/unknown_node.html b/PR_0.0.20/html_split/unknown_node.html new file mode 100644 index 0000000..3332b84 --- /dev/null +++ b/PR_0.0.20/html_split/unknown_node.html @@ -0,0 +1,2265 @@ + + + + + +Guidelines for Teaching C++ + + + + + + + + + + + + + + + + +
                        +
                        +

                        +   [Contents]

                        +
                        +
                        +

                        7.1.5.1 Background/Required Knowledge

                        +
                          +
                        • should know how to use reference parameters as an output parameter +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.1.5.2 Student outcomes

                        +

                        A student should be able to: +

                        +
                          +
                        1. create an error_code and design API that work with +std:error_code +
                        2. write code that utilizes std::error_category +
                        3. explain the difference between C-style error handling with errno and +std::error_code +
                        4. make effective use of the interface of std::error_code +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.1.5.3 Caveats

                        +
                          +
                        • reset errno before calling a function that might set errno (better pass +an input parameter std::error_code) +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.1.5.4 Points to cover

                        +
                          +
                        • provide a full picture of std::error_code and it’s APIs +
                        • std::error_category (explorative) +
                        + +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.1.7 Overview

                        +

                        Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

                        + + + + + +
                        LevelObjective
                        FoundationalStandards exception hierarchy
                        MainException guarantees
                        Advanced
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.1.8 Motivation

                        +

                        Why is this important? Why do we want to learn/teach this +topic? +

                        +

                        Exception handling is used to be able to continue the program in case of +exceptional situations (like requesting a ridiculous amount of memory: +bad_alloc). +

                        +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.1.9 Topic introduction

                        +

                        Very brief introduction to the topic. +

                        +

                        There are other forms of handling difficult situations, but here we +concentrate on exception handling and the peculiarities/characteristics +of it. Because there are different forms, we should know when to use +which type of handling special situations. +

                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.1.10.1 Background/Required Knowledge

                        +

                        A student: +

                        + + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.1.10.2 Student outcomes

                        +

                        A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                        +

                        A student should be able to: +

                        +
                          +
                        1. Explain how some std:: calls may cause an exception +
                        2. Discern the different standard exception types +
                        3. Write simple try … except code (e.g., out of memory, vector at +indexing) +
                        4. Explain on a “simplified” conceptual level what happens when an +exception is thrown and is bubbled up through the callers until it is +caught +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.1.10.3 Caveats

                        +

                        This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                        +
                          +
                        • Exceptions should be used for exceptional situations and should not be +used to manage normal control flow. +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.1.10.4 Points to cover

                        +

                        This section lists important details for each point. +

                        +
                          +
                        • Exception hierarchy from the standard library +
                        • Common library functions that may throw exceptions +
                        • Basic handling exceptions: try/catch/throw +
                        • How exceptions bubble up until caught +
                        + +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.1.11.1 Background/Required Knowledge

                        +
                          +
                        • RAII +
                        • Order of construction/destruction of class members +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.1.11.2 Student outcomes

                        +

                        A student should be able to: +

                        +
                          +
                        1. Explain the four different exception guarantees +
                        2. Explain the exception guarantees that the standard library containers +offer. +
                        3. Explain what happens when a exception is thrown in constructor +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.1.11.3 Caveats

                        +
                          +
                        • Make sure code is designed with RAII in mind to prevent resources +leaking during exception handling, when the stack is unwound. +
                        • Care should be taken in constructor design to make all fully constructed +members deleted when the stack unwinding mechanism is activated. +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.1.11.4 Points to cover

                        +
                          +
                        • Exception guarantees: Nothrow/Strong/Basic/No +
                        • Rethrowing an exception +
                        + +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.2.1 Overview

                        +

                        Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

                        + + + + + +
                        LevelObjective
                        FoundationalCategories of errors
                        MainHandling different categories of errors
                        Advanced
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.2.2 Motivation

                        +

                        Why is this important? Why do we want to learn/teach this +topic? +

                        +

                        Programs can run in a normal state or erroneous state. Students should +be able to identify different types of erroneous state and how to best +handle them. +

                        +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.2.3 Topic introduction

                        +

                        Very brief introduction to the topic. +

                        +

                        This topic is an umbrella topic that refers to the different topics for +types of errors and error handling. +

                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.2.4.1 Background/Required Knowledge

                        +

                        A student: +

                        + + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.2.4.2 Student outcomes

                        +

                        A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                        +

                        A student should be able to: +

                        +
                          +
                        1. Describe different kinds of errors and exceptional situations that +require different approaches of error handling. +
                        2. Provide some examples of the different error categories. +
                        3. Identify potential erroneous code sections and attribute them to +different error categories. +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.2.4.3 Caveats

                        +

                        This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                        +

                        No caveats at present. +

                        +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.2.4.4 Points to cover

                        +

                        This section lists important details for each point. +

                        +

                        Errors can happen at different times during software lifetime. +

                        +
                          +
                        • Compile-time errors +
                        • Link-time errors +
                        • Execution-time errors +
                        + +

                        There are different types of errors +

                        +
                          +
                        • Logic errors (violations of logical preconditions) +
                        • Run-time errors (errors during code execution due to causes that are +external to the program) +
                        + +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.2.5.1 Background/Required Knowledge

                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.2.5.2 Student outcomes

                        +

                        A student should be able to: +

                        +
                          +
                        1. pick the right error handling approach for a given problem. +
                        2. enumerate different error handling strategies. +
                        3. make a clear distinction between error-handling code and normal-case +handling code +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.2.5.3 Caveats

                        +
                          +
                        • The different error handling strategies have different trade-offs +(runtime performance, readability, …) +
                        • The trade-off space depends on the run-time context (embedded, …) +
                        • There also exist unhandleable errors (e.g., ODR violations, undefined +behavior) +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.2.5.4 Points to cover

                        + + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.2.6 Advanced

                        +

                        These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.3.1 Overview

                        +

                        Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

                        + + + + + +
                        LevelObjectives
                        Foundationalusing and understanding UDLs
                        Mainimplementing your own UDLs
                        AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.3.2 Motivation

                        +

                        Why is this important? Why do we want to learn/teach this +topic? +

                        +
                          +
                        • Allows clearer expression of intent in C++. +
                        • std::string: "Hello, world!"s +
                        • std::chrono: 3h + 10min + 5s +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.3.3 Topic introduction

                        +

                        Very brief introduction to the topic. +

                        +
                          +
                        • Explain the existence of user defined literals. Example: +12min + 17s is terse, expressive and type safe. +
                        + +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.3.4.1 Background/Required Knowledge

                        +

                        A student: * knows how to form numeric literals, e.g., 1.5f means +a float of value 1.5. * is familiar with the major C++ +types: * bool (Boolean type) * int (Integer type) * +double (Floating-point type) * std::string (Text type) * +std::vector (Collection type) * knows that namespaces exist, and +namespace std. * knows what using-declarations and +using-directives are. [C++ object +model: declarations] +

                        +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.3.4.2 Student outcomes

                        +

                        A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                        +

                        A student should be able to: +

                        +
                          +
                        1. use using namespace std::string_literals[1]. +
                        2. recognise UDLs in code that they are reading. +
                        3. figure out which UDL definitions for a used type exist. +
                        4. identify parts of the standard library that make use of UDLs. +
                        5. prevent the dangers of temporaries created with "blah"s as well +as with std::string{"blah"}. +
                        6. effectively selects the right set of namespaces in using-directives from +the sub-namespaces std::literals. +
                        + +

                        [1]: explain that it’s okay to use a using-directive to “activate” +UDLs. +

                        +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.3.4.3 Caveats

                        +

                        This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                        +
                          +
                        • A student gets confused by the similarities and differences between +built-in suffixes and UDLs and between UDLs from different namespaces. +
                        • A student “activates” two suffixes with the same signature from +different namespaces. +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.3.4.4 Points to cover

                        +

                        This section lists important details for each point. +

                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.3.5.1 Background/Required Knowledge

                        +
                          +
                        • All of the above. +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.3.5.2 Student outcomes

                        +

                        A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                        +

                        A student should be able to: +

                        +
                          +
                        1. write a UDL operator of their own. +
                        2. separate unrelated UDLs into distinct namespaces. +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.3.5.3 Caveats

                        +

                        This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                        +

                        No caveats at present. #### Points to cover +

                        +

                        This section lists important details for each point. +

                        +

                        No caveats at present. ### Advanced {#udl-advanced} +

                        +

                        These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.4.1 Overview

                        +

                        Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

                        +

                        Functions in C++ may be overloaded with different numbers and types of +parameters. It may be of value to specify default arguments for some +number of parameters, to allow a caller to avoid specifying arguments +that rarely change, or to enable expanding the set of parameters while +maintaining backward compatibility with existing callers. +

                        + + + + + +
                        LevelObjective
                        FoundationalDefine and use functions with default arguments
                        Main
                        Advancedrefinement of default arguments through multiple declarations
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.4.2 Motivation

                        +

                        Why is this important? Why do we want to learn/teach this +topic? +

                        +

                        Default arguments allow the omission of arguments with obvious or common +values. Also may be utilized to extend an existing function signature +without forcing changes to existing calling code. +

                        +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.4.3 Topic introduction

                        +

                        Very brief introduction to the topic. +

                        +

                        Explain how default arguments work and how to define them. +

                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.4.4.1 Background/Required Knowledge

                        +

                        A student is able to: +

                        + + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.4.4.2 Student outcomes

                        +

                        A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                        +

                        A student should be able to: +

                        +
                          +
                        1. Call to a function with a default argument with or without that argument +specified +
                        2. Declare a function with a default argument, and omit the default in the +definition’s signature +
                        3. Explain when the lifetime of a default argument begins and ends +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.4.4.3 Caveats

                        +

                        This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                        +
                          +
                        • When no forward-declaration exists, the definition serves as the +declaration +
                        • When multiple declarations exist, only one may specify the default for +any particular parameter, but multiple declarations may specify the +defaults for different parameters. +
                        • Additional default values may be specified for other parameters in +repeat declarations +
                        • Calling an overloaded function with fewer arguments may be ambiguous +with regard to an overload with default arguments +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.4.4.4 Points to cover

                        +

                        This section lists important details for each point. +

                        +
                          +
                        • Default value may only be specified once for each parameter among all +declarations +
                        • Default values must start from the rightmost parameter and continue +leftward without gaps +
                        • Considerations of when to use default arguments vs overload set +
                        + +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.4.5.2 Student outcomes

                        +

                        A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                        +

                        A student should be able to: +

                        +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.4.5.3 Caveats

                        +

                        This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                        +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.4.5.4 Points to cover

                        +

                        This section lists important details for each point. +

                        +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        7.4.6 Advanced

                        +

                        These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

                        +

                        Subsequent redeclarations of the same function may add default argument +values, which are then usable by callers. Though a single parameter +cannot be given a default argument twice in the same translation unit, +it is legal, though ill-advised, to give the same function different +default arguments in different translation units. +

                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        8.1 Overview

                        +

                        Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

                        +

                        Level +Objectives +Foundational +Defining and calling functions with values +Main +Advanced +

                        +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        8.2 Motivation

                        +

                        Why is this important? Why do we want to learn/teach this +topic? +

                        +

                        The fundamental element for code-reuse is a function. For functions to +be useful, we need to parameterize them. Understanding how to do such is +thus fundamental to programming in any language. +

                        +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        8.3 Topic introduction

                        +

                        Very brief introduction to the topic. +

                        +

                        Explain how to define functions with parameters and call them with +values. +

                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        8.4.1 Background/Required Knowledge

                        +

                        A student is able to: +

                        +
                          +
                        • Explain what a function is +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        8.4.2 Student outcomes

                        +

                        A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                        +

                        A student should be able to: +

                        +
                          +
                        1. Call a function with any number of parameters using the same number of +arguments +
                        2. Define a function with any number of parameters +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        8.4.3 Caveats

                        +

                        This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                        +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        8.4.4 Points to cover

                        +

                        This section lists important details for each point. +

                        +
                          +
                        • A function is called by invoking the name of the function, followed by +parentheses +
                        • For each parameter in the function signature, a value must be provided, +and in the same order +
                        • Multiple values passed to a function are comma-separated +
                        • When defining a function, you must list the parameters with the type +first, and parameter name second +
                        + +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        8.5.1 Background/Required Knowledge

                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        8.5.2 Student outcomes

                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        8.5.3 Caveats

                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        8.5.4 Points to cover

                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        8.6 Advanced

                        +

                        These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.1 Overview

                        +

                        Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

                        +

                        Level +Objectives +Foundational +Avoiding copies using const-reference modifiers +Main +Using references to modify external data +Advanced +

                        +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.2 Motivation

                        +

                        Why is this important? Why do we want to learn/teach this +topic? +

                        +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.3 Topic introduction

                        +

                        Very brief introduction to the topic. +

                        +

                        Explain what a reference type is and how it constrasts with a value +type. +

                        +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.4 Foundational: Using reference types to avoid copies

                        + + +
                          +
                        • Background/Required Knowledge
                        • +
                        • Student outcomes
                        • +
                        • Caveats
                        • +
                        • Points to cover
                        • +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.4.1 Background/Required Knowledge

                        +

                        A student is able to: +

                        +
                          +
                        • Define and call a function with parameters +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.4.2 Student outcomes

                        +

                        A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                        +

                        A student should be able to: +

                        +
                          +
                        1. Use const-refernce types for function arguments +
                        2. Explain what considerations to take when deciding whether or not to use +a const-reference type +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.4.3 Caveats

                        +

                        This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                        +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.4.4 Points to cover

                        +

                        This section lists important details for each point. +

                        +
                          +
                        • No copy of the data is made when taken by constant reference +
                        • A constant reference value cannot be modified +
                        • The lifetime of a constant reference cannot be expected to extend beyond +the lifetime of the function, so the reference should not be saved off +for future use. +
                        • Taking a reference is not always a time or space savings. Modern +machines may use 8-bytes to reference a 4-byte integer, for instance. +
                        + +
                        +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.5 Main: Using references to modify external data

                        + + +
                          +
                        • Background/Required Knowledge
                        • +
                        • Student outcomes
                        • +
                        • Caveats
                        • +
                        • Points to cover
                        • +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.5.1 Background/Required Knowledge

                        +
                          +
                        • All of the above +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.5.2 Student outcomes

                        +

                        A student should be able to: +

                        +
                          +
                        1. Define and utilize a non-const reference for passing values out of a +function +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.5.3 Caveats

                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.5.4 Points to cover

                        +
                          +
                        • If the function does not intend to modify the value, const-references +should be preferred +
                        • A reference value may be modified +
                        • The lifetime of a reference cannot be expected to extend beyond the +lifetime of the function, so the reference should not be saved off for +future use. +
                        • Taking a reference is not always a time or space savings. Modern +machines may use 8-bytes to reference a 4-byte integer, for instance. +
                        + +
                        +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.6 Advanced

                        +

                        These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.7.1 Overview

                        +

                        Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

                        + + + + + +
                        LevelObjectives
                        FoundationalDefine and use requires-expressions to check satisfaction of +expressions by given parameters
                        MainDefine and use requires-expressions to check properties of +expressions
                        Advanced
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.7.2 Motivation

                        +

                        Why is this important? Why do we want to learn/teach this +topic? +

                        +

                        Requires-expressions allow a developer to perform compile-time +evaluation on the validity of other expressions. These are fundamental +to the ability to write concepts. +[Compile-time programming: concepts] +

                        +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.8 Topic introduction

                        +

                        Very brief introduction to the topic. +

                        +

                        Requires-expressions are compile-time predicates which evaluate to true +when their specified set of expressions are all valid for a given set of +inputs. +

                        + + +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.8.1.1 Background/Required Knowledge

                        +

                        A student is able to: +

                        + + +

                        It is helpful if: +

                        +
                          +
                        • The student is aware that attempting to specialize the template with +types or values which do not match otherwise unstated assumptions will +cause errors within the template. +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.8.1.2 Student outcomes

                        +

                        A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                        +

                        A student should be able to: +

                        +
                          +
                        1. Write a simple-requirement to assert the validity of an expression +
                        2. Write a type-requirement to check the existence of a type by its +identifier +
                        3. Write a compound-requirement to test the resulting type of an expression +
                        4. Write a nested-requirement to test the constexpr value of an operation, +as opposed to just the syntactic validity +
                        5. Use a requires-expression within a concept, requires-clause, or +if constexpr condition +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.8.1.3 Caveats

                        +

                        This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                        +

                        To require that expressions, which evaluate to a boolean value like +sizeof(t) == 4, evaluate to true a nested-requirement is +needed (e.g., requires sizeof(t) == 4;). Omitting the +requires results in a simple-requirement, which is satisfied +based purely on syntactic validity, not on the result of the operation. +

                        +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.8.1.4 Points to cover

                        +

                        This section lists important details for each point. +

                        +
                          +
                        • All requires-expression requirements terminate with a semicolon. +
                        • simple-requirements are used to check that an expression is well-formed. +
                        • nested-requirements are introduced with requires and primarily +used to check the result of an expression computable by the compiler, +including concepts or other requires-expressions. +
                        • type-requirements are introduced with typename and used to verify +the existence of a type with a particular identifier. +
                        • compound-requirements are enclosed in braces and can be used to check +the resulting type of an expression. +
                        • Checks are performed by the compiler, not at run time. +
                        • If covering usage of requires-expression with requires-clause, +[Compile-time programming: +requires clause] demonstrate requires requires and show how to +ever avoid writing it by using a concept. +[Compile-time programming: concepts] +
                        + +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.8.2.1 Background/Required Knowledge

                        +
                          +
                        • All of the above. +
                        • Knowledge of noexcept +
                        + +

                        A student is able to: +

                        + + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.8.2.2 Student outcomes

                        +

                        A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                        +

                        A student should be able to: +

                        +
                          +
                        1. Write compound-requirements which test the noexceptness of an +expression. +
                        2. Use a concept as the target of a compound-requirement. +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.8.2.3 Caveats

                        +

                        This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                        +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.8.2.4 Points to cover

                        +

                        This section lists important details for each point. +

                        +
                          +
                        • Compound-requirements allow the optional ability to test whether an +expression is marked as noexcept, by using a trailing +noexcept keyword. +
                        + +
                        struct S
                        +{
                        +    void foo() noexcept {}
                        +    void bar() {}
                        +};
                        +
                        +static_assert(requires(S s) { { s.foo() } noexcept; } ); // Succeeds. s.foo() is noexcept
                        +static_assert(requires(S s) { { s.bar() } noexcept; } ); // Fails. s.bar() is not noexcept
                        +
                        +
                          +
                        • If the return-type-requirement of a compound-requirement is a concept, +that concept is given the resulting type as the first parameter, +followed by the specified parameters in the compound-requirement. +{ ++x } -> C<int> would substitute +C<decltype((++x)), int> and check that concept C is satisfied for +those parameters. +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.8.3 Advanced

                        +

                        See user-defined-literals. +

                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.9.1 Overview

                        +

                        Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

                        + + + + + +
                        LevelObjectives
                        FoundationalCalling static_assert with a constant expression
                        MainUsing static_assert to detect contract violations and +improve error messages
                        Advanced
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.9.2 Motivation

                        +

                        Why is this important? Why do we want to learn/teach this +topic? +

                        +

                        static_assert allows the developer to enforce that conditions +which can be checked during compilation will force build errors when +violated. Additionally, they are the best mechanism by which a developer +can pass useful information to other developers regarding what violation +occurred or what must be done, instead. +

                        +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.9.3 Topic introduction

                        +

                        Very brief introduction to the topic. +

                        +

                        static_assert is a compile-time evaluated function that asserts +the truth of a supplied predicate, issuing an optional user-supplied +error message if the predicate is false. +

                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.9.4.1 Background/Required Knowledge

                        +

                        A student: +

                        +
                          +
                        • Should be able to explain the difference between code evaluated at +compile-time and run-time +
                        • Should be able to cite some examples of compile-time known information, +such as sizeof(T) +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.9.4.2 Student outcomes

                        +

                        A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                        +

                        A student should be able to: +

                        +
                          +
                        1. Assert the expected size of a structure using static_assert +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.9.4.3 Caveats

                        +

                        This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                        +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.9.4.4 Points to cover

                        +

                        This section lists important details for each point. +

                        +
                          +
                        • X +
                        • In addition to what is wrong, a good error message will inform the user +of how to correct it +
                        + +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.9.5.1 Background/Required Knowledge

                        +
                          +
                        • All of the above. +
                        • General understanding of compile-time requirements +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.9.5.2 Student outcomes

                        +

                        A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                        +

                        A student should be able to: +

                        +
                          +
                        1. Utilize static_assert to verify preconditions of a meta-function +
                        2. Utilize static_assert to verify the results of meta-functions for +known values +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.9.5.3 Caveats

                        +

                        This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                        +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.9.5.4 Points to cover

                        +

                        This section lists important details for each point. +

                        +
                          +
                        • When writing a meta-function, use static_assert to test the +results +
                        • Write static_assert calls at the scope of the code they are +guarding +
                        + +
                        template<typename T>
                        +struct container {
                        +    std::map<int, T> vals;
                        +
                        +    // Test location #1
                        +    static_assert(
                        +        std::is_default_constructible_v<T>,
                        +        "container type T must be default constructible");i
                        +
                        +    void add(int key, T const& t) {
                        +        // Test location #2
                        +        static_assert(
                        +            std::is_default_constructible_v<T>,
                        +            "container type T must be default constructible");
                        +        // std::map::operator[] requires default constructible type for 
                        +        // the value. This will cause a build failure deep in the 
                        +        // implementation of std::map, when T is not default constructible
                        +        vals[key] = t;
                        +    }
                        +};
                        +
                        +struct NoDefCtor {
                        +    NoDefCtor() = delete;
                        +    NoDefCtor(double d) {}
                        +};
                        +
                        +container<NoDefCtor> c; // If Test #1 was omitted, this would succeed
                        +// This is ill-formed. Test #2 would catch this and provide a better 
                        +// error message for the user
                        +c.add(42, NoDefCtor(1.0)); 
                        +
                        +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.9.6 Advanced

                        +

                        These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.10.1 Overview

                        +

                        Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

                        + + + + + +
                        LevelObjective
                        FoundationalDeclaring variables
                        MainDeclaring for programs
                        AdvancedSpecial cases and peculiarities
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.10.2 Motivation

                        +

                        Why is this important? Why do we want to learn/teach this +topic? +

                        +
                          +
                        • Introduces a name and it’s type +
                        • int baz; +
                        • void bar(); +
                        • class Foo; +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.10.3 Topic introduction

                        +

                        Very brief introduction to the topic. +

                        +

                        Introduce names and their associated type in a scope. +

                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.10.4.1 Background/Required Knowledge

                        +

                        A student: +

                        +
                          +
                        • is familiar with the basic C++ types: +
                            +
                          • bool (Boolean type) +
                          • int (Integer type) +
                          • double (Floating-point type) +
                          + +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.10.4.2 Student outcomes

                        +

                        A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                        +

                        A student should be able to: +

                        +
                          +
                        1. declare a variable with a specific type ‘int baz;’ +
                        2. declare a function ‘void bar();’ +
                        3. declare a class ‘class Foo;’ +
                        4. forward declare a user-defined type or a function +
                        5. explain the difference between a definition and a declaration +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.10.4.3 Caveats

                        +

                        This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                        +

                        No caveats at present. +

                        +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.10.4.4 Points to cover

                        +

                        This section lists important details for each point. +

                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.10.5.1 Background/Required Knowledge

                        +
                          +
                        • All of the above. +
                        • Basic template syntax +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.10.5.2 Student outcomes

                        +

                        A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                        +

                        A student should be able to: +

                        +
                          +
                        1. create header and source files with a declaration in the former and +definition of a variable/function in the latter +
                        2. declare type aliases to introduce a type with an alternative name ‘using +std::string;’ +
                        3. write a forward template declaration +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.10.5.3 Caveats

                        +

                        This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                        +
                          +
                        • Declaring aliases can introduce name clashes +
                        • Prefer using declaration’s over using directives in header files [link] +
                        • The order of declarations dictates the order of initialization +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.10.5.4 Points to cover

                        +

                        This section lists important details for each point. +

                        +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.10.6 Advanced

                        +

                        These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

                        +
                          +
                        • asm declaration +
                        • using-enum-declaration +
                        • extern “C” declarations +
                        + +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.11.1 Overview

                        +

                        Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

                        + + + + + +
                        LevelObjective
                        FoundationalDefining variables and ODR
                        MainDefining for programs
                        AdvancedSpecial cases and peculiarities
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.11.2 Motivation

                        +

                        Why is this important? Why do we want to learn/teach this +topic? +

                        +
                          +
                        • A definition is a declaration that supplies all that is needed for a +complete entity +
                        • int baz = 42; +
                        • void bar() { /* implementation */ } +
                        • class Foo { /* class body */ }; +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.11.3 Topic introduction

                        +

                        Very brief introduction to the topic. +

                        +

                        A definition extends a declaration, providing all that is needed for a +complete entity, e.g., allocate memory for variables, provide the +implementation for functions, complete definitions of data and function +members of a class. +

                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.11.4.1 Background/Required Knowledge

                        +

                        A student: +

                        + + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.11.4.2 Student outcomes

                        +

                        A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                        +

                        A student should be able to: +

                        +
                          +
                        1. define a variable with a specific type int baz = 42; +
                        2. define a function void bar() {} +
                        3. define a class class Foo {}; +
                        4. explain the one definition rule +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.11.4.3 Caveats

                        +

                        This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                        +

                        No caveats at present. +

                        +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.11.4.4 Points to cover

                        +

                        This section lists important details for each point. +

                        +
                          +
                        • One definition rule (ODR) +
                        + +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.11.5.1 Background/Required Knowledge

                        + + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.11.5.2 Student outcomes

                        +

                        A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                        +

                        A student should be able to: +

                        +
                          +
                        1. organize variables, functions, classes into multiple translation units, +describing interface with declarations and providing the implementations +with definitions without violating ODR. +
                        2. distinguish between template declaration and definition +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.11.5.3 Caveats

                        +

                        This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                        +
                          +
                        • Putting a definition into a header file that is included more than once +leads to ODR violations, possibly resulting in linker errors. +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.11.5.4 Points to cover

                        +

                        This section lists important details for each point. +

                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.12.1 Overview

                        +

                        Provides a short natural language abstract of the module’s +contents. Specifies the different levels of teaching. +

                        + + + + + +
                        LevelObjectives
                        Foundationalunderstanding how and when are copies made
                        Mainimplementing user-defined copy operations
                        Advancedspecial cases: copy elision
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.12.2 Motivation

                        +

                        Why is this important? Why do we want to learn/teach this +topic? +

                        +

                        Copy semantics allows the user to define how objects of a class get +replicated and interact on a value level. +

                        +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.12.3 Topic introduction

                        +

                        Very brief introduction to the topic. +

                        +

                        Explains when and how objects are copied. +

                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.12.4.1 Background/Required Knowledge

                        +

                        A student is able to: * explain what a C++ type is? +[C++ object model: types] * explain what +an object is? [C++ object model: +objects], [C++ object model: +constant objects] * define and understand class invariants? +

                        +

                        It helps when a student is able to: * use move semantics +[C++ object model: move +semantics] * explain special member functions +[C++ object model: +special member functions] +

                        +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.12.4.2 Student outcomes

                        +

                        A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                        +

                        A student should be able to: +

                        +
                          +
                        1. explain what copy semantics accomplish +
                        + +
                          +
                        • establishing “equivalent” object state in another object +
                        + +
                          +
                        1. explain difference between copying a reference and copying a value* +
                        2. explain where copies are made +
                        + +

                        * In other languages these differences are sometimes referred to as +shallow and deep copy. +

                        +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.12.4.3 Caveats

                        +

                        This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                        +
                          +
                        • Compiler-provided copy operations may result in ownership problems +(e.g., char*). These ownership problems can generally be solved +by using types whose copy operations have the appropriate semantics, +e.g., std::string instead of char* to hold string values. +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.12.4.4 Points to cover

                        +

                        This section lists important details for each point. +

                        +
                          +
                        • Principle of copying +
                            +
                          • Copying of types, which follow the rule of zero +
                          • Copying of types, with user defined copy operations +
                          • Copying an object does not change the original +
                          + +
                        • Practical applications +
                            +
                          • std::unique_ptr (has no copy) +
                          • Strings (copies the value) +
                          + +
                        + +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.12.5.1 Background/Required Knowledge

                        +

                        A student is able to: * identify special member functions +[C++ object model: +special member functions] +

                        +

                        It helps when a student is able to: * use move semantics +[C++ object model: move +semantics] * explain the rule of zero +[C++ object model: rule-of-zero] +* explain the rule of five [C++ +object model: rule-of-five] +

                        +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.12.5.2 Student outcomes

                        +

                        A list of things “a student should be able to” after the +curriculum. The next word should be an action word and testable +in an exam. Max 5 items. +

                        +

                        A student should be able to: * explain when they have to implement the +copy operations for their own type * Copy constructor * Copy assignment +operator * implement copy operations for their own types * +Optional: explain when copying with basic and strong exception +guarantees is useful +

                        +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.12.5.3 Caveats

                        +

                        This section mentions subtle points to understand, like anything +resulting in implementation-defined, unspecified, or undefined +behavior. +

                        +
                          +
                        • Intricacies when implementing copy operations: +
                            +
                          • Examples of how not to write copy operations (e.g., C++03 +std::auto_ptr) +
                          + +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.12.5.4 Points to cover

                        +

                        This section lists important details for each point. +

                        +
                          +
                        • Copy constructors and copy assignment operators +
                            +
                          • How compiler generates default copy operations +
                          • =default, =delete (No copy) +
                          • How-to write your own copy operations +
                          • Rule-of-five +
                          • Copy assignment operators can be ref-qualified to avoid assigning into +temporary objects. +
                          + +
                        + +
                        +
                        +
                        +
                        +

                        +   [Contents]

                        +
                        +

                        9.12.6 Advanced

                        +

                        These are important topics that are not expected to be covered but +provide guidance where one can continue to investigate this topic in +more depth. +

                        +

                        When can copies be elided and when does the standard guarantee copy +elision. References: * Abseil tip of +the Week #166 * +cppreference +- Copy elision +

                        +

                        See concepts. +

                        +
                        + + + + + diff --git a/latest/index.html b/latest/index.html index 7529a94..743eaba 100644 --- a/latest/index.html +++ b/latest/index.html @@ -28,26 +28,27 @@ Guidelines for Teaching C++ - + + @@ -106,7 +108,7 @@

                        Guidelines for Teaching C++

                        -

                        Version 0.0.19

                        +

                        Version PR_0.0.20

                        SG20 (ISO C++ Study Group on Education)

                        @@ -118,133 +120,188 @@

                        Version 0.0.19

                      -

                      1 Obtaining This Document: The Most Recent Version and Alternate Formats

                      +

                      1 Obtaining This Document: The Most Recent Version and Alternate Formats

                      The most recent version of this document is available as an online HTML document at: https://cplusplus.github.io/SG20/latest/.

                      The version of the document that you are currently reading is available in the following formats:

                        -
                      1. online (HTML) format as a single large HTML document: https://cplusplus.github.io/SG20/0.0.19/html

                      2. -
                      3. EPUB format: https://cplusplus.github.io/SG20/0.0.19/guidelines.epub

                      4. -
                      5. online (HTML) format, split across multiple HTML documents: https://cplusplus.github.io/SG20/0.0.19/html_split/ [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

                      6. +
                      7. online (HTML) format as a single large HTML document: https://cplusplus.github.io/SG20/PR_0.0.20/html

                      8. +
                      9. EPUB format: https://cplusplus.github.io/SG20/PR_0.0.20/guidelines.epub

                      10. +
                      11. online (HTML) format, split across multiple HTML documents: https://cplusplus.github.io/SG20/PR_0.0.20/html_split/ [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

                      Older versions of this document are also available. In general version ver is available at https://cplusplus.github.io/SG20/ver/html. For example, version 0.1.0 (assuming that this version exists) would be available at https://cplusplus.github.io/SG20/0.1.0/html.

                      -

                      2 Context and Aim of This Guide

                      +

                      2 Context and Aim of This Guide

                      This document is intended to serve as a resource for instructors to assist in the preparation of courses on C++ in a variety of settings, including university, college, and industry environments. The main objectives of this document are as follows:

                      • to provide guidelines for content to be covered by courses of various difficulty levels on C++ (e.g., topics and learning outcomes)
                      • @@ -253,11 +310,11 @@

                        2to present examples of curriculum for specific courses

                      This document does not itself provide a curriculum for a single specific course, but is rather a set of guidelines that can be used to prepare curricula for a wide variety of courses that differ in focus and level of sophistication. (This said, however, some links to other documents with examples of curricula for specific courses may be included herein.) This document only intends to target the teaching of the most recently ratified version of the C++ standard. (This said, however, since older versions of this document are also available, these older versions may be of some use to those who need guidance in older versions of the standard, at least versions that do not predate C++20.)

                      -

                      3 Use of This Document

                      +

                      3 Use of This Document

                      [NOTE: This document follows the same license model as the C++ Core Guidelines. The LICENSE document is taken verbatim from the C++ Core Guidelines.] This document is made available under a MIT-style license. In simple terms, this license permits copying, use, modification, and creation of derivative works. A copy of the license is included in the section LICENSE.

                      -

                      4 Contributing to This Document

                      +

                      4 Contributing to This Document

                      Contributions to this document are welcome. If you would like to help with this project as a contributor, please read the section How to Contribute.

                      -

                      5 Organization of This Document

                      +

                      5 Organization of This Document

                      The various concepts (i.e., ideas) to potentially be covered are partitioned into modules. A module is very broad in scope and consists of numerous topics.

                      For each module, topics related to the module are identified. Then, for each topic, learning outcomes are specified. In order to address a wide variety of courses on C++, each topic is addressed at three proficiency levels. These proficiency levels allow each topic to be covered at more than one level of detail. This allows target audiences with different background and learning objectives to be accommodated. The three proficiency levels are as follows:

                        @@ -266,9 +323,9 @@

                        5

                        advanced: This level gives information suitable for an expert. For most topics there is an expert level of knowledge that most programmers rarely need and techniques that require detailed understanding of language rules or library implementation.

                      The remainder of this document is organized as follows. The various topics are listed grouped by module. In cases where a topic might be classified into more than one module, the topic is listed under the module of most direct relevance. This is done in order to avoid duplication of content. (In the case that a topic is equally relevant to multiple modules, the decision of which to select is made by a proverbial coin toss.) The order in which modules and topics are presented is not meant to imply any order of coverage in a course. The order in which items are listed is essentially arbitrary.

                      -

                      6 Summary of Modules and Topics

                      +

                      6 Summary of Modules and Topics

                      In the sections that follow, the various modules and topics are presented. There is one section per module. For each module, a table listing the various topics in that module is provided. The ID for a topic is linked to the detailed coverage of that topic that comes later in the document. If a topic has any learning outcomes at a given proficiency level, this is indicated by a checkmark (“✔️”). If a topic has no learning outcomes (simply because there are not any, not because the information is missing), this is indicated by an em dash (“—”). In the case that the information for a topic is completely missing, a question mark (“?”) symbol is used.

                      -

                      6.1 Compilation Model

                      +

                      6.1 Compilation Model

                      @@ -331,7 +388,7 @@

                      6.1 Compilation Model

                      -

                      6.2 Preprocessor

                      +

                      6.2 Preprocessor

                      @@ -366,7 +423,7 @@

                      6.2 Preprocessor

                      -

                      6.3 Basics Types, Objects, Values, Expressions, Statements, and Control-Flow Constructs

                      +

                      6.3 Basics Types, Objects, Values, Expressions, Statements, and Control-Flow Constructs

                      @@ -415,7 +472,7 @@

                      6.3 Basics Types, Objects,

                      -

                      6.4 Functions

                      +

                      6.4 Functions

                      @@ -471,7 +528,7 @@

                      6.4 Functions

                      -

                      6.5 User-Defined Types (Classes)

                      +

                      6.5 User-Defined Types (Classes)

                      @@ -583,7 +640,7 @@

                      6.5 User-Defined Types (Cl

                      -

                      6.6 Inheritance and Class Hierarchies

                      +

                      6.6 Inheritance and Class Hierarchies

                      @@ -611,7 +668,7 @@

                      6.6 Inheritance and Class

                      -

                      6.7 Compile-Time Computation

                      +

                      6.7 Compile-Time Computation

                      @@ -639,7 +696,7 @@

                      6.7 Compile-Time Computat

                      -

                      6.8 Generic Programming (Templates)

                      +

                      6.8 Generic Programming (Templates)

                      @@ -695,7 +752,7 @@

                      6.8 Generic Programming (T

                      -

                      6.9 Error Handling

                      +

                      6.9 Error Handling

                      @@ -737,7 +794,7 @@

                      6.9 Error Handling

                      -

                      6.10 Standard Library

                      +

                      6.10 Standard Library

                      @@ -765,7 +822,7 @@

                      6.10 Standard Library

                      -

                      6.11 External (i.e., Non Standard) Libraries

                      +

                      6.11 External (i.e., Non Standard) Libraries

                      @@ -786,7 +843,7 @@

                      6.11 External (i.e., Non

                      -

                      6.12 Building

                      +

                      6.12 Building

                      @@ -814,7 +871,7 @@

                      6.12 Building

                      -

                      6.13 Testing and Debugging

                      +

                      6.13 Testing and Debugging

                      @@ -856,7 +913,7 @@

                      6.13 Testing and Debuggin

                      -

                      6.14 Tooling

                      +

                      6.14 Tooling

                      @@ -884,7 +941,7 @@

                      6.14 Tooling

                      -

                      6.15 Software Design

                      +

                      6.15 Software Design

                      @@ -905,114 +962,92 @@

                      6.15 Software Design

                      -

                      7 Detailed Information for Modules and Topics

                      -

                      7.1 C++ object model: copy semantics

                      +

                      7 Detailed Information for Modules and Topics

                      +

                      7.1 Error handling: Error codes

                      Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                      -

                      7.1.1 Overview

                      +

                      7.1.1 Overview

                      Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                      - +
                      --++ - + - + - + - +
                      LevelObjectivesObjective
                      Foundationalunderstanding how and when are copies madeHandling error codes with std::error_code
                      Mainimplementing user-defined copy operationsDesigning APIs around std::error_code
                      Advancedspecial cases: copy elision
                      -

                      7.1.2 Motivation

                      +

                      7.1.2 Motivation

                      Why is this important? Why do we want to learn/teach this topic?

                      -

                      Copy semantics allows the user to define how objects of a class get replicated and interact on a value level.

                      -

                      7.1.3 Topic introduction

                      +

                      C++ offers a type safe way of passing around errors, contrary to the C-style of error handling, by this, we prevent bugs when passing error codes. Furthermore, error handling with error codes is more commonly used than exception handling, which only should be used in exceptional situations and in some environments is not feasible at all, e.g., in embedded or performance critical software.

                      +

                      7.1.3 Topic introduction

                      Very brief introduction to the topic.

                      -

                      Explains when and how objects are copied.

                      -

                      7.1.4 Foundational: How and when are copies made

                      -

                      7.1.4.1 Background/Required Knowledge

                      -

                      A student is able to: * explain what a C++ type is? [C++ object model: types] * explain what an object is? [C++ object model: objects], [C++ object model: constant objects] * define and understand class invariants?

                      -

                      It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain special member functions [C++ object model: special member functions]

                      -

                      7.1.4.2 Student outcomes

                      +

                      C++ offers std::error_code, which encapsulates error codes in a type safe way. This topic describes how to use these error codes.

                      +

                      7.1.4 Foundational: Handling error codes with std::error_code

                      +

                      7.1.4.1 Background/Required Knowledge

                      +

                      A student:

                      + +

                      7.1.4.2 Student outcomes

                      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                      A student should be able to:

                        -
                      1. explain what copy semantics accomplish
                      2. -
                      -
                        -
                      • establishing “equivalent” object state in another object
                      • -
                      -
                        -
                      1. explain difference between copying a reference and copying a value*
                      2. -
                      3. explain where copies are made
                      4. +
                      5. write code to handle errors with std::error_code, e.g., obtain the message of the error code or check if an error occurred.
                      6. +
                      7. distinguish between the different categories and make justified decisions when to use which
                      -

                      * In other languages these differences are sometimes referred to as shallow and deep copy.

                      -

                      7.1.4.3 Caveats

                      +

                      7.1.4.3 Caveats

                      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                      -
                        -
                      • Compiler-provided copy operations may result in ownership problems (e.g., char*). These ownership problems can generally be solved by using types whose copy operations have the appropriate semantics, e.g., std::string instead of char* to hold string values.
                      • -
                      -

                      7.1.4.4 Points to cover

                      +

                      7.1.4.4 Points to cover

                      This section lists important details for each point.

                        -
                      • Principle of copying -
                          -
                        • Copying of types, which follow the rule of zero
                        • -
                        • Copying of types, with user defined copy operations
                        • -
                        • Copying an object does not change the original
                        • -
                      • -
                      • Practical applications -
                          -
                        • std::unique_ptr (has no copy)
                        • -
                        • Strings (copies the value)
                        • -
                      • +
                      • a brief overview of std::error_code and how to use it
                      -

                      7.1.5 Main: Implementing user-defined copy operations

                      -

                      7.1.5.1 Background/Required Knowledge

                      -

                      A student is able to: * identify special member functions [C++ object model: special member functions]

                      -

                      It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain the rule of zero [C++ object model: rule-of-zero] * explain the rule of five [C++ object model: rule-of-five]

                      -

                      7.1.5.2 Student outcomes

                      -

                      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                      -

                      A student should be able to: * explain when they have to implement the copy operations for their own type * Copy constructor * Copy assignment operator * implement copy operations for their own types * Optional: explain when copying with basic and strong exception guarantees is useful

                      -

                      7.1.5.3 Caveats

                      -

                      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                      -
                        -
                      • Intricacies when implementing copy operations: +

                        7.1.5 Main: Designing APIs around std::error_code

                        +

                        7.1.5.1 Background/Required Knowledge

                          -
                        • Examples of how not to write copy operations (e.g., C++03 std::auto_ptr)
                        • -
                      • +
                      • should know how to use reference parameters as an output parameter
                      -

                      7.1.5.4 Points to cover

                      -

                      This section lists important details for each point.

                      +

                      7.1.5.2 Student outcomes

                      +

                      A student should be able to:

                      +
                        +
                      1. create an error_code and design API that work with std:error_code
                      2. +
                      3. write code that utilizes std::error_category
                      4. +
                      5. explain the difference between C-style error handling with errno and std::error_code
                      6. +
                      7. make effective use of the interface of std::error_code
                      8. +
                      +

                      7.1.5.3 Caveats

                        -
                      • Copy constructors and copy assignment operators +
                      • reset errno before calling a function that might set errno (better pass an input parameter std::error_code)
                      • +
                      +

                      7.1.5.4 Points to cover

                        -
                      • How compiler generates default copy operations
                      • -
                      • =default, =delete (No copy)
                      • -
                      • How-to write your own copy operations
                      • -
                      • Rule-of-five
                      • -
                      • Copy assignment operators can be ref-qualified to avoid assigning into temporary objects.
                      • -
                    • +
                    • provide a full picture of std::error_code and it’s APIs
                    • +
                    • std::error_category (explorative)
                    -

                    7.1.6 Advanced

                    +

                    7.1.6 Advanced

                    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                    -

                    When can copies be elided and when does the standard guarantee copy elision. References: * Abseil tip of the Week #166 * cppreference - Copy elision

                    -

                    7.2 C++ object model: Definitions

                    -

                    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                    -

                    7.2.1 Overview

                    +
                      +
                    • implementing your own error_category
                    • +
                    +

                    7.1.7 Overview

                    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                    @@ -1028,80 +1063,86 @@

                    7.2.1 Overview

                    - + - + - +
                    FoundationalDefining variables and ODRStandards exception hierarchy
                    MainDefining for programsException guarantees
                    AdvancedSpecial cases and peculiarities
                    -

                    7.2.2 Motivation

                    +

                    7.1.8 Motivation

                    Why is this important? Why do we want to learn/teach this topic?

                    -
                      -
                    • A definition is a declaration that supplies all that is needed for a complete entity
                    • -
                    • int baz = 42;
                    • -
                    • void bar() { /* implementation */ }
                    • -
                    • class Foo { /* class body */ };
                    • -
                    -

                    7.2.3 Topic introduction

                    +

                    Exception handling is used to be able to continue the program in case of exceptional situations (like requesting a ridiculous amount of memory: bad_alloc).

                    +

                    7.1.9 Topic introduction

                    Very brief introduction to the topic.

                    -

                    A definition extends a declaration, providing all that is needed for a complete entity, e.g., allocate memory for variables, provide the implementation for functions, complete definitions of data and function members of a class.

                    -

                    7.2.4 Foundational: Defining variables and ODR

                    -

                    7.2.4.1 Background/Required Knowledge

                    +

                    There are other forms of handling difficult situations, but here we concentrate on exception handling and the peculiarities/characteristics of it. Because there are different forms, we should know when to use which type of handling special situations.

                    +

                    7.1.10 Foundational: Standards exception hierarchy

                    +

                    7.1.10.1 Background/Required Knowledge

                    A student:

                    -

                    7.2.4.2 Student outcomes

                    +

                    7.1.10.2 Student outcomes

                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                    A student should be able to:

                      -
                    1. define a variable with a specific type int baz = 42;
                    2. -
                    3. define a function void bar() {}
                    4. -
                    5. define a class class Foo {};
                    6. -
                    7. explain the one definition rule
                    8. +
                    9. Explain how some std:: calls may cause an exception
                    10. +
                    11. Discern the different standard exception types
                    12. +
                    13. Write simple try … except code (e.g., out of memory, vector at indexing)
                    14. +
                    15. Explain on a “simplified” conceptual level what happens when an exception is thrown and is bubbled up through the callers until it is caught
                    -

                    7.2.4.3 Caveats

                    +

                    7.1.10.3 Caveats

                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                    -

                    No caveats at present.

                    -

                    7.2.4.4 Points to cover

                    +
                      +
                    • Exceptions should be used for exceptional situations and should not be used to manage normal control flow.
                    • +
                    +

                    7.1.10.4 Points to cover

                    This section lists important details for each point.

                      -
                    • One definition rule (ODR)
                    • +
                    • Exception hierarchy from the standard library
                    • +
                    • Common library functions that may throw exceptions
                    • +
                    • Basic handling exceptions: try/catch/throw
                    • +
                    • How exceptions bubble up until caught
                    -

                    7.2.5 Main: Defining for programs

                    -

                    7.2.5.1 Background/Required Knowledge

                    +

                    7.1.11 Main: Exception guarantees

                    +

                    7.1.11.1 Background/Required Knowledge

                    -

                    7.2.5.2 Student outcomes

                    -

                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                    +

                    7.1.11.2 Student outcomes

                    A student should be able to:

                      -
                    1. organize variables, functions, classes into multiple translation units, describing interface with declarations and providing the implementations with definitions without violating ODR.
                    2. -
                    3. distinguish between template declaration and definition
                    4. +
                    5. Explain the four different exception guarantees
                    6. +
                    7. Explain the exception guarantees that the standard library containers offer.
                    8. +
                    9. Explain what happens when a exception is thrown in constructor
                    -

                    7.2.5.3 Caveats

                    -

                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                    +

                    7.1.11.3 Caveats

                      -
                    • Putting a definition into a header file that is included more than once leads to ODR violations, possibly resulting in linker errors.
                    • +
                    • Make sure code is designed with RAII in mind to prevent resources leaking during exception handling, when the stack is unwound.
                    • +
                    • Care should be taken in constructor design to make all fully constructed members deleted when the stack unwinding mechanism is activated.
                    -

                    7.2.5.4 Points to cover

                    -

                    This section lists important details for each point.

                    -

                    7.2.6 Advanced: Special cases and peculiarities

                    +

                    7.1.11.4 Points to cover

                    +
                      +
                    • Exception guarantees: Nothrow/Strong/Basic/No
                    • +
                    • Rethrowing an exception
                    • +
                    +

                    7.1.12 Advanced: Exception-safe containers and edge cases

                    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                      -
                    • ABI Incompatibilities: Different definitions of the same type in multiple object files can lead to subtle program errors.
                    • +
                    • Rethrowing a modified exception
                    • +
                    • Writing exception safe containers
                    -

                    7.3 C++ object model: Declarations

                    +

                    7.2 Error handling: Categories of errors

                    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                    -

                    7.3.1 Overview

                    +

                    7.2.1 Overview

                    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                    @@ -1117,90 +1158,81 @@

                    7.3.1 Overview

                    - + - + - +
                    FoundationalDeclaring variablesCategories of errors
                    MainDeclaring for programsHandling different categories of errors
                    AdvancedSpecial cases and peculiarities
                    -

                    7.3.2 Motivation

                    +

                    7.2.2 Motivation

                    Why is this important? Why do we want to learn/teach this topic?

                    -
                      -
                    • Introduces a name and it’s type
                    • -
                    • int baz;
                    • -
                    • void bar();
                    • -
                    • class Foo;
                    • -
                    -

                    7.3.3 Topic introduction

                    +

                    Programs can run in a normal state or erroneous state. Students should be able to identify different types of erroneous state and how to best handle them.

                    +

                    7.2.3 Topic introduction

                    Very brief introduction to the topic.

                    -

                    Introduce names and their associated type in a scope.

                    -

                    7.3.4 Foundational: Declaring variables

                    -

                    7.3.4.1 Background/Required Knowledge

                    +

                    This topic is an umbrella topic that refers to the different topics for types of errors and error handling.

                    +

                    7.2.4 Foundational: Categories of errors

                    +

                    7.2.4.1 Background/Required Knowledge

                    A student:

                    -

                    7.3.4.2 Student outcomes

                    +

                    7.2.4.2 Student outcomes

                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                    A student should be able to:

                      -
                    1. declare a variable with a specific type ‘int baz;’
                    2. -
                    3. declare a function ‘void bar();’
                    4. -
                    5. declare a class ‘class Foo;’
                    6. -
                    7. forward declare a user-defined type or a function
                    8. -
                    9. explain the difference between a definition and a declaration
                    10. +
                    11. Describe different kinds of errors and exceptional situations that require different approaches of error handling.
                    12. +
                    13. Provide some examples of the different error categories.
                    14. +
                    15. Identify potential erroneous code sections and attribute them to different error categories.
                    -

                    7.3.4.3 Caveats

                    +

                    7.2.4.3 Caveats

                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                    No caveats at present.

                    -

                    7.3.4.4 Points to cover

                    +

                    7.2.4.4 Points to cover

                    This section lists important details for each point.

                    -

                    7.3.5 Main: Declarations for programs

                    -

                    7.3.5.1 Background/Required Knowledge

                    +

                    Errors can happen at different times during software lifetime.

                      -
                    • All of the above.
                    • -
                    • Basic template syntax
                    • +
                    • Compile-time errors
                    • +
                    • Link-time errors
                    • +
                    • Execution-time errors
                    -

                    7.3.5.2 Student outcomes

                    -

                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                    +

                    There are different types of errors

                    +
                      +
                    • Logic errors (violations of logical preconditions)
                    • +
                    • Run-time errors (errors during code execution due to causes that are external to the program)
                    • +
                    +

                    7.2.5 Main: Handling different categories of errors

                    +

                    7.2.5.1 Background/Required Knowledge

                    +

                    7.2.5.2 Student outcomes

                    A student should be able to:

                      -
                    1. create header and source files with a declaration in the former and definition of a variable/function in the latter
                    2. -
                    3. declare type aliases to introduce a type with an alternative name ‘using std::string;’
                    4. -
                    5. write a forward template declaration
                    6. +
                    7. pick the right error handling approach for a given problem.
                    8. +
                    9. enumerate different error handling strategies.
                    10. +
                    11. make a clear distinction between error-handling code and normal-case handling code
                    -

                    7.3.5.3 Caveats

                    -

                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                    +

                    7.2.5.3 Caveats

                      -
                    • Declaring aliases can introduce name clashes
                    • -
                    • Prefer using declaration’s over using directives in header files [link]
                    • -
                    • The order of declarations dictates the order of initialization
                    • +
                    • The different error handling strategies have different trade-offs (runtime performance, readability, …)
                    • +
                    • The trade-off space depends on the run-time context (embedded, …)
                    • +
                    • There also exist unhandleable errors (e.g., ODR violations, undefined behavior)
                    -

                    7.3.5.4 Points to cover

                    -

                    This section lists important details for each point.

                    -

                    7.3.6 Advanced

                    -

                    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                    +

                    7.2.5.4 Points to cover

                    -

                    See concepts.

                    -

                    See user-defined-literals.

                    -

                    7.4 Meta-error handling: static_assert

                    +

                    7.2.6 Advanced

                    +

                    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                    +

                    7.3 Functions: user-defined literals

                    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                    -

                    7.4.1 Overview

                    +

                    7.3.1 Overview

                    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                    @@ -1216,268 +1248,315 @@

                    7.4.1 Overview

                    - + - + - +
                    FoundationalCalling static_assert with a constant expressionusing and understanding UDLs
                    MainUsing static_assert to detect contract violations and improve error messagesimplementing your own UDLs
                    AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
                    -

                    7.4.2 Motivation

                    +

                    7.3.2 Motivation

                    Why is this important? Why do we want to learn/teach this topic?

                    -

                    static_assert allows the developer to enforce that conditions which can be checked during compilation will force build errors when violated. Additionally, they are the best mechanism by which a developer can pass useful information to other developers regarding what violation occurred or what must be done, instead.

                    -

                    7.4.3 Topic introduction

                    +
                      +
                    • Allows clearer expression of intent in C++.
                    • +
                    • std::string: "Hello, world!"s
                    • +
                    • std::chrono: 3h + 10min + 5s
                    • +
                    +

                    7.3.3 Topic introduction

                    Very brief introduction to the topic.

                    -

                    static_assert is a compile-time evaluated function that asserts the truth of a supplied predicate, issuing an optional user-supplied error message if the predicate is false.

                    -

                    7.4.4 Foundational: Calling static_assert with a constant expression

                    -

                    7.4.4.1 Background/Required Knowledge

                    -

                    A student:

                      -
                    • Should be able to explain the difference between code evaluated at compile-time and run-time
                    • -
                    • Should be able to cite some examples of compile-time known information, such as sizeof(T)
                    • +
                    • Explain the existence of user defined literals. Example: 12min + 17s is terse, expressive and type safe.
                    -

                    7.4.4.2 Student outcomes

                    +

                    7.3.4 Foundational: Using UDLs

                    +

                    7.3.4.1 Background/Required Knowledge

                    +

                    A student: * knows how to form numeric literals, e.g., 1.5f means a float of value 1.5. * is familiar with the major C++ types: * bool (Boolean type) * int (Integer type) * double (Floating-point type) * std::string (Text type) * std::vector (Collection type) * knows that namespaces exist, and namespace std. * knows what using-declarations and using-directives are. [C++ object model: declarations]

                    +

                    7.3.4.2 Student outcomes

                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                    A student should be able to:

                      -
                    1. Assert the expected size of a structure using static_assert
                    2. +
                    3. use using namespace std::string_literals[1].
                    4. +
                    5. recognise UDLs in code that they are reading.
                    6. +
                    7. figure out which UDL definitions for a used type exist.
                    8. +
                    9. identify parts of the standard library that make use of UDLs.
                    10. +
                    11. prevent the dangers of temporaries created with "blah"s as well as with std::string{"blah"}.
                    12. +
                    13. effectively selects the right set of namespaces in using-directives from the sub-namespaces std::literals.
                    -

                    7.4.4.3 Caveats

                    +

                    [1]: explain that it’s okay to use a using-directive to “activate” UDLs.

                    +

                    7.3.4.3 Caveats

                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                    -

                    7.4.4.4 Points to cover

                    -

                    This section lists important details for each point.

                      -
                    • X
                    • -
                    • In addition to what is wrong, a good error message will inform the user of how to correct it
                    • +
                    • A student gets confused by the similarities and differences between built-in suffixes and UDLs and between UDLs from different namespaces.
                    • +
                    • A student “activates” two suffixes with the same signature from different namespaces.
                    -

                    7.4.5 Main: Contracts and static_assert

                    -

                    7.4.5.1 Background/Required Knowledge

                    +

                    7.3.4.4 Points to cover

                    +

                    This section lists important details for each point.

                    +

                    7.3.5 Main: implementing UDLs

                    +

                    7.3.5.1 Background/Required Knowledge

                    • All of the above.
                    • -
                    • General understanding of compile-time requirements
                    -

                    7.4.5.2 Student outcomes

                    +

                    7.3.5.2 Student outcomes

                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                    A student should be able to:

                      -
                    1. Utilize static_assert to verify preconditions of a meta-function
                    2. -
                    3. Utilize static_assert to verify the results of meta-functions for known values
                    4. +
                    5. write a UDL operator of their own.
                    6. +
                    7. separate unrelated UDLs into distinct namespaces.
                    -

                    7.4.5.3 Caveats

                    +

                    7.3.5.3 Caveats

                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                    -

                    7.4.5.4 Points to cover

                    +

                    No caveats at present. #### Points to cover

                    This section lists important details for each point.

                    -
                      -
                    • When writing a meta-function, use static_assert to test the results
                    • -
                    • Write static_assert calls at the scope of the code they are guarding
                    • -
                    - -

                    7.4.6 Advanced

                    +

                    No caveats at present. ### Advanced {#udl-advanced}

                    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                    -

                    7.5 Functions: user-defined literals

                    +

                    7.4 Functions: default argument

                    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                    -

                    7.5.1 Overview

                    +

                    7.4.1 Overview

                    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                    +

                    Functions in C++ may be overloaded with different numbers and types of parameters. It may be of value to specify default arguments for some number of parameters, to allow a caller to avoid specifying arguments that rarely change, or to enable expanding the set of parameters while maintaining backward compatibility with existing callers.

                    --++ - + - + - + - +
                    LevelObjectivesObjective
                    Foundationalusing and understanding UDLsDefine and use functions with default arguments
                    Mainimplementing your own UDLs
                    AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))refinement of default arguments through multiple declarations
                    -

                    7.5.2 Motivation

                    +

                    7.4.2 Motivation

                    Why is this important? Why do we want to learn/teach this topic?

                    -
                      -
                    • Allows clearer expression of intent in C++.
                    • -
                    • std::string: "Hello, world!"s
                    • -
                    • std::chrono: 3h + 10min + 5s
                    • -
                    -

                    7.5.3 Topic introduction

                    +

                    Default arguments allow the omission of arguments with obvious or common values. Also may be utilized to extend an existing function signature without forcing changes to existing calling code.

                    +

                    7.4.3 Topic introduction

                    Very brief introduction to the topic.

                    +

                    Explain how default arguments work and how to define them.

                    +

                    7.4.4 Foundational: Using and defining functions with default arguments

                    +

                    7.4.4.1 Background/Required Knowledge

                    +

                    A student is able to:

                    -

                    7.5.4 Foundational: Using UDLs

                    -

                    7.5.4.1 Background/Required Knowledge

                    -

                    A student: * knows how to form numeric literals, e.g., 1.5f means a float of value 1.5. * is familiar with the major C++ types: * bool (Boolean type) * int (Integer type) * double (Floating-point type) * std::string (Text type) * std::vector (Collection type) * knows that namespaces exist, and namespace std. * knows what using-declarations and using-directives are. [C++ object model: declarations]

                    -

                    7.5.4.2 Student outcomes

                    +

                    7.4.4.2 Student outcomes

                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                    A student should be able to:

                      -
                    1. use using namespace std::string_literals[1].
                    2. -
                    3. recognise UDLs in code that they are reading.
                    4. -
                    5. figure out which UDL definitions for a used type exist.
                    6. -
                    7. identify parts of the standard library that make use of UDLs.
                    8. -
                    9. prevent the dangers of temporaries created with "blah"s as well as with std::string{"blah"}.
                    10. -
                    11. effectively selects the right set of namespaces in using-directives from the sub-namespaces std::literals.
                    12. +
                    13. Call to a function with a default argument with or without that argument specified
                    14. +
                    15. Declare a function with a default argument, and omit the default in the definition’s signature
                    16. +
                    17. Explain when the lifetime of a default argument begins and ends
                    -

                    [1]: explain that it’s okay to use a using-directive to “activate” UDLs.

                    -

                    7.5.4.3 Caveats

                    +

                    7.4.4.3 Caveats

                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                      -
                    • A student gets confused by the similarities and differences between built-in suffixes and UDLs and between UDLs from different namespaces.
                    • -
                    • A student “activates” two suffixes with the same signature from different namespaces.
                    • +
                    • When no forward-declaration exists, the definition serves as the declaration
                    • +
                    • When multiple declarations exist, only one may specify the default for any particular parameter, but multiple declarations may specify the defaults for different parameters.
                    • +
                    • Additional default values may be specified for other parameters in repeat declarations
                    • +
                    • Calling an overloaded function with fewer arguments may be ambiguous with regard to an overload with default arguments
                    -

                    7.5.4.4 Points to cover

                    +

                    7.4.4.4 Points to cover

                    This section lists important details for each point.

                    -

                    7.5.5 Main: implementing UDLs

                    -

                    7.5.5.1 Background/Required Knowledge

                    +
                      +
                    • Default value may only be specified once for each parameter among all declarations
                    • +
                    • Default values must start from the rightmost parameter and continue leftward without gaps
                    • +
                    • Considerations of when to use default arguments vs overload set
                    • +
                    +

                    7.4.5 Main: implementing *

                    +

                    7.4.5.1 Background/Required knowledge

                    • All of the above.
                    -

                    7.5.5.2 Student outcomes

                    +

                    7.4.5.2 Student outcomes

                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                    A student should be able to:

                    -
                      -
                    1. write a UDL operator of their own.
                    2. -
                    3. separate unrelated UDLs into distinct namespaces.
                    4. -
                    -

                    7.5.5.3 Caveats

                    +

                    7.4.5.3 Caveats

                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                    -

                    No caveats at present. #### Points to cover

                    +

                    7.4.5.4 Points to cover

                    This section lists important details for each point.

                    -

                    No caveats at present. ### Advanced {#udl-advanced}

                    +

                    7.4.6 Advanced

                    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                    -

                    7.6 Functions: default argument

                    +

                    Subsequent redeclarations of the same function may add default argument values, which are then usable by callers. Though a single parameter cannot be given a default argument twice in the same translation unit, it is legal, though ill-advised, to give the same function different default arguments in different translation units.

                    +

                    8 Module name: Passing Parameters by Value

                    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                    -

                    7.6.1 Overview

                    +

                    8.1 Overview

                    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                    -

                    Functions in C++ may be overloaded with different numbers and types of parameters. It may be of value to specify default arguments for some number of parameters, to allow a caller to avoid specifying arguments that rarely change, or to enable expanding the set of parameters while maintaining backward compatibility with existing callers.

                    ---- - - - - + + - - - - - - - - - - - - + + + + + + + + + + + -
                    LevelObjective
                    +Level + +Objectives +
                    FoundationalDefine and use functions with default arguments
                    Main
                    Advancedrefinement of default arguments through multiple declarations
                    +Foundational + +Defining and calling functions with values +
                    +Main + +
                    +Advanced + +
                    -

                    7.6.2 Motivation

                    +

                    8.2 Motivation

                    Why is this important? Why do we want to learn/teach this topic?

                    -

                    Default arguments allow the omission of arguments with obvious or common values. Also may be utilized to extend an existing function signature without forcing changes to existing calling code.

                    -

                    7.6.3 Topic introduction

                    +

                    The fundamental element for code-reuse is a function. For functions to be useful, we need to parameterize them. Understanding how to do such is thus fundamental to programming in any language.

                    +

                    8.3 Topic introduction

                    Very brief introduction to the topic.

                    -

                    Explain how default arguments work and how to define them.

                    -

                    7.6.4 Foundational: Using and defining functions with default arguments

                    -

                    7.6.4.1 Background/Required Knowledge

                    +

                    Explain how to define functions with parameters and call them with values.

                    +

                    8.4 Foundational: Using reference types to avoid copies

                    +

                    8.4.1 Background/Required Knowledge

                    A student is able to:

                    -

                    7.6.4.2 Student outcomes

                    +

                    8.4.2 Student outcomes

                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                    A student should be able to:

                      -
                    1. Call to a function with a default argument with or without that argument specified
                    2. -
                    3. Declare a function with a default argument, and omit the default in the definition’s signature
                    4. -
                    5. Explain when the lifetime of a default argument begins and ends
                    6. +
                    7. Call a function with any number of parameters using the same number of arguments
                    8. +
                    9. Define a function with any number of parameters
                    -

                    7.6.4.3 Caveats

                    +

                    8.4.3 Caveats

                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                    -
                      -
                    • When no forward-declaration exists, the definition serves as the declaration
                    • -
                    • When multiple declarations exist, only one may specify the default for any particular parameter, but multiple declarations may specify the defaults for different parameters.
                    • -
                    • Additional default values may be specified for other parameters in repeat declarations
                    • -
                    • Calling an overloaded function with fewer arguments may be ambiguous with regard to an overload with default arguments
                    • -
                    -

                    7.6.4.4 Points to cover

                    +

                    8.4.4 Points to cover

                    This section lists important details for each point.

                      -
                    • Default value may only be specified once for each parameter among all declarations
                    • -
                    • Default values must start from the rightmost parameter and continue leftward without gaps
                    • -
                    • Considerations of when to use default arguments vs overload set
                    • +
                    • A function is called by invoking the name of the function, followed by parentheses
                    • +
                    • For each parameter in the function signature, a value must be provided, and in the same order
                    • +
                    • Multiple values passed to a function are comma-separated
                    • +
                    • When defining a function, you must list the parameters with the type first, and parameter name second
                    -

                    7.6.5 Main: implementing *

                    -

                    7.6.5.1 Background/Required knowledge

                    +

                    8.5 Main: Using references to modify external data

                    +

                    8.5.1 Background/Required Knowledge

                    +

                    8.5.2 Student outcomes

                    +

                    8.5.3 Caveats

                    +

                    8.5.4 Points to cover

                    +

                    8.6 Advanced

                    +

                    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                    +

                    9 Module name: Passing Parameters by Reference

                    +

                    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                    +

                    9.1 Overview

                    +

                    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                    + + + + + + + + + + + + + + + + + +
                    +Level + +Objectives +
                    +Foundational + +Avoiding copies using const-reference modifiers +
                    +Main + +Using references to modify external data +
                    +Advanced + +
                    +

                    9.2 Motivation

                    +

                    Why is this important? Why do we want to learn/teach this topic?

                    +

                    9.3 Topic introduction

                    +

                    Very brief introduction to the topic.

                    +

                    Explain what a reference type is and how it constrasts with a value type.

                    +

                    9.4 Foundational: Using reference types to avoid copies

                    +

                    9.4.1 Background/Required Knowledge

                    +

                    A student is able to:

                      -
                    • All of the above.
                    • +
                    • Define and call a function with parameters
                    -

                    7.6.5.2 Student outcomes

                    +

                    9.4.2 Student outcomes

                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                    A student should be able to:

                    -

                    7.6.5.3 Caveats

                    +
                      +
                    1. Use const-refernce types for function arguments
                    2. +
                    3. Explain what considerations to take when deciding whether or not to use a const-reference type
                    4. +
                    +

                    9.4.3 Caveats

                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                    -

                    7.6.5.4 Points to cover

                    +

                    9.4.4 Points to cover

                    This section lists important details for each point.

                    -

                    7.6.6 Advanced

                    +
                      +
                    • No copy of the data is made when taken by constant reference
                    • +
                    • A constant reference value cannot be modified
                    • +
                    • The lifetime of a constant reference cannot be expected to extend beyond the lifetime of the function, so the reference should not be saved off for future use.
                    • +
                    • Taking a reference is not always a time or space savings. Modern machines may use 8-bytes to reference a 4-byte integer, for instance.
                    • +
                    +

                    9.5 Main: Using references to modify external data

                    +

                    9.5.1 Background/Required Knowledge

                    +
                      +
                    • All of the above
                    • +
                    +

                    9.5.2 Student outcomes

                    +

                    A student should be able to:

                    +
                      +
                    1. Define and utilize a non-const reference for passing values out of a function
                    2. +
                    +

                    9.5.3 Caveats

                    +

                    9.5.4 Points to cover

                    +
                      +
                    • If the function does not intend to modify the value, const-references should be preferred
                    • +
                    • A reference value may be modified
                    • +
                    • The lifetime of a reference cannot be expected to extend beyond the lifetime of the function, so the reference should not be saved off for future use.
                    • +
                    • Taking a reference is not always a time or space savings. Modern machines may use 8-bytes to reference a 4-byte integer, for instance.
                    • +
                    +

                    9.6 Advanced

                    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                    -

                    Subsequent redeclarations of the same function may add default argument values, which are then usable by callers. Though a single parameter cannot be given a default argument twice in the same translation unit, it is legal, though ill-advised, to give the same function different default arguments in different translation units.

                    -

                    7.7 Module name: Requires Expressions

                    +

                    9.7 Module name: Requires Expressions

                    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                    -

                    7.7.1 Overview

                    +

                    9.7.1 Overview

                    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                    @@ -1505,24 +1584,24 @@

                    7.7.1 Overview

                    -

                    7.7.2 Motivation

                    +

                    9.7.2 Motivation

                    Why is this important? Why do we want to learn/teach this topic?

                    -

                    Requires-expressions allow a developer to perform compile-time evaluation on the validity of other expressions. These are fundamental to the ability to write concepts. [Compile-time programming: concepts]

                    -

                    7.8 Topic introduction

                    +

                    Requires-expressions allow a developer to perform compile-time evaluation on the validity of other expressions. These are fundamental to the ability to write concepts. [Compile-time programming: concepts]

                    +

                    9.8 Topic introduction

                    Very brief introduction to the topic.

                    Requires-expressions are compile-time predicates which evaluate to true when their specified set of expressions are all valid for a given set of inputs.

                    -

                    7.8.1 Foundational: Writing requires-expressions

                    -

                    7.8.1.1 Background/Required Knowledge

                    +

                    9.8.1 Foundational: Writing requires-expressions

                    +

                    9.8.1.1 Background/Required Knowledge

                    A student is able to:

                    It is helpful if:

                    • The student is aware that attempting to specialize the template with types or values which do not match otherwise unstated assumptions will cause errors within the template.
                    -

                    7.8.1.2 Student outcomes

                    +

                    9.8.1.2 Student outcomes

                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                    A student should be able to:

                      @@ -1532,10 +1611,10 @@

                      7.8.1.2
                    1. Write a nested-requirement to test the constexpr value of an operation, as opposed to just the syntactic validity
                    2. Use a requires-expression within a concept, requires-clause, or if constexpr condition
                    -

                    7.8.1.3 Caveats

                    +

                    9.8.1.3 Caveats

                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                    To require that expressions, which evaluate to a boolean value like sizeof(t) == 4, evaluate to true a nested-requirement is needed (e.g., requires sizeof(t) == 4;). Omitting the requires results in a simple-requirement, which is satisfied based purely on syntactic validity, not on the result of the operation.

                    -

                    7.8.1.4 Points to cover

                    +

                    9.8.1.4 Points to cover

                    This section lists important details for each point.

                    • All requires-expression requirements terminate with a semicolon.
                    • @@ -1544,67 +1623,68 @@

                      7.8.1.4 P
                    • type-requirements are introduced with typename and used to verify the existence of a type with a particular identifier.
                    • compound-requirements are enclosed in braces and can be used to check the resulting type of an expression.
                    • Checks are performed by the compiler, not at run time.
                    • -
                    • If covering usage of requires-expression with requires-clause, [Compile-time programming: requires clause] demonstrate requires requires and show how to ever avoid writing it by using a concept. [Compile-time programming: concepts]
                    • +
                    • If covering usage of requires-expression with requires-clause, [Compile-time programming: requires clause] demonstrate requires requires and show how to ever avoid writing it by using a concept. [Compile-time programming: concepts]
                    -

                    7.8.2 Main: Advanced requirements

                    -

                    7.8.2.1 Background/Required Knowledge

                    +

                    9.8.2 Main: Advanced requirements

                    +

                    9.8.2.1 Background/Required Knowledge

                    • All of the above.
                    • Knowledge of noexcept

                    A student is able to:

                    -

                    7.8.2.2 Student outcomes

                    +

                    9.8.2.2 Student outcomes

                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                    A student should be able to:

                    1. Write compound-requirements which test the noexceptness of an expression.
                    2. Use a concept as the target of a compound-requirement.
                    -

                    7.8.2.3 Caveats

                    +

                    9.8.2.3 Caveats

                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                    -

                    7.8.2.4 Points to cover

                    +

                    9.8.2.4 Points to cover

                    This section lists important details for each point.

                    • Compound-requirements allow the optional ability to test whether an expression is marked as noexcept, by using a trailing noexcept keyword.
                    - +
                    struct S
                    +{
                    +    void foo() noexcept {}
                    +    void bar() {}
                    +};
                    +
                    +static_assert(requires(S s) { { s.foo() } noexcept; } ); // Succeeds. s.foo() is noexcept
                    +static_assert(requires(S s) { { s.bar() } noexcept; } ); // Fails. s.bar() is not noexcept
                    • If the return-type-requirement of a compound-requirement is a concept, that concept is given the resulting type as the first parameter, followed by the specified parameters in the compound-requirement. { ++x } -> C<int> would substitute C<decltype((++x)), int> and check that concept C is satisfied for those parameters.
                    -

                    7.8.3 Advanced

                    -

                    7.9 Error handling: Error codes

                    +

                    9.8.3 Advanced

                    +

                    See user-defined-literals.

                    +

                    9.9 Meta-error handling: static_assert

                    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                    -

                    7.9.1 Overview

                    +

                    9.9.1 Overview

                    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                    --++ - + - + - + @@ -1612,61 +1692,89 @@

                    7.9.1 Overview

                    LevelObjectiveObjectives
                    FoundationalHandling error codes with std::error_codeCalling static_assert with a constant expression
                    MainDesigning APIs around std::error_codeUsing static_assert to detect contract violations and improve error messages
                    Advanced
                    -

                    7.9.2 Motivation

                    +

                    9.9.2 Motivation

                    Why is this important? Why do we want to learn/teach this topic?

                    -

                    C++ offers a type safe way of passing around errors, contrary to the C-style of error handling, by this, we prevent bugs when passing error codes. Furthermore, error handling with error codes is more commonly used than exception handling, which only should be used in exceptional situations and in some environments is not feasible at all, e.g., in embedded or performance critical software.

                    -

                    7.9.3 Topic introduction

                    +

                    static_assert allows the developer to enforce that conditions which can be checked during compilation will force build errors when violated. Additionally, they are the best mechanism by which a developer can pass useful information to other developers regarding what violation occurred or what must be done, instead.

                    +

                    9.9.3 Topic introduction

                    Very brief introduction to the topic.

                    -

                    C++ offers std::error_code, which encapsulates error codes in a type safe way. This topic describes how to use these error codes.

                    -

                    7.9.4 Foundational: Handling error codes with std::error_code

                    -

                    7.9.4.1 Background/Required Knowledge

                    +

                    static_assert is a compile-time evaluated function that asserts the truth of a supplied predicate, issuing an optional user-supplied error message if the predicate is false.

                    +

                    9.9.4 Foundational: Calling static_assert with a constant expression

                    +

                    9.9.4.1 Background/Required Knowledge

                    A student:

                      -
                    • should know that there are different ways of error handling [Error handling: Categories of errors]
                    • -
                    • should know function return values
                    • +
                    • Should be able to explain the difference between code evaluated at compile-time and run-time
                    • +
                    • Should be able to cite some examples of compile-time known information, such as sizeof(T)
                    -

                    7.9.4.2 Student outcomes

                    +

                    9.9.4.2 Student outcomes

                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                    A student should be able to:

                      -
                    1. write code to handle errors with std::error_code, e.g., obtain the message of the error code or check if an error occurred.
                    2. -
                    3. distinguish between the different categories and make justified decisions when to use which
                    4. +
                    5. Assert the expected size of a structure using static_assert
                    -

                    7.9.4.3 Caveats

                    +

                    9.9.4.3 Caveats

                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                    -

                    7.9.4.4 Points to cover

                    +

                    9.9.4.4 Points to cover

                    This section lists important details for each point.

                      -
                    • a brief overview of std::error_code and how to use it
                    • +
                    • X
                    • +
                    • In addition to what is wrong, a good error message will inform the user of how to correct it
                    -

                    7.9.5 Main: Designing APIs around std::error_code

                    -

                    7.9.5.1 Background/Required Knowledge

                    +

                    9.9.5 Main: Contracts and static_assert

                    +

                    9.9.5.1 Background/Required Knowledge

                      -
                    • should know how to use reference parameters as an output parameter
                    • +
                    • All of the above.
                    • +
                    • General understanding of compile-time requirements
                    -

                    7.9.5.2 Student outcomes

                    +

                    9.9.5.2 Student outcomes

                    +

                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                    A student should be able to:

                      -
                    1. create an error_code and design API that work with std:error_code
                    2. -
                    3. write code that utilizes std::error_category
                    4. -
                    5. explain the difference between C-style error handling with errno and std::error_code
                    6. -
                    7. make effective use of the interface of std::error_code
                    8. +
                    9. Utilize static_assert to verify preconditions of a meta-function
                    10. +
                    11. Utilize static_assert to verify the results of meta-functions for known values
                    -

                    7.9.5.3 Caveats

                    -
                      -
                    • reset errno before calling a function that might set errno (better pass an input parameter std::error_code)
                    • -
                    -

                    7.9.5.4 Points to cover

                    +

                    9.9.5.3 Caveats

                    +

                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                    +

                    9.9.5.4 Points to cover

                    +

                    This section lists important details for each point.

                      -
                    • provide a full picture of std::error_code and it’s APIs
                    • -
                    • std::error_category (explorative)
                    • +
                    • When writing a meta-function, use static_assert to test the results
                    • +
                    • Write static_assert calls at the scope of the code they are guarding
                    -

                    7.9.6 Advanced

                    +
                    template<typename T>
                    +struct container {
                    +    std::map<int, T> vals;
                    +
                    +    // Test location #1
                    +    static_assert(
                    +        std::is_default_constructible_v<T>,
                    +        "container type T must be default constructible");i
                    +
                    +    void add(int key, T const& t) {
                    +        // Test location #2
                    +        static_assert(
                    +            std::is_default_constructible_v<T>,
                    +            "container type T must be default constructible");
                    +        // std::map::operator[] requires default constructible type for 
                    +        // the value. This will cause a build failure deep in the 
                    +        // implementation of std::map, when T is not default constructible
                    +        vals[key] = t;
                    +    }
                    +};
                    +
                    +struct NoDefCtor {
                    +    NoDefCtor() = delete;
                    +    NoDefCtor(double d) {}
                    +};
                    +
                    +container<NoDefCtor> c; // If Test #1 was omitted, this would succeed
                    +// This is ill-formed. Test #2 would catch this and provide a better 
                    +// error message for the user
                    +c.add(42, NoDefCtor(1.0)); 
                    +

                    9.9.6 Advanced

                    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                    -
                      -
                    • implementing your own error_category
                    • -
                    -

                    7.9.7 Overview

                    +

                    9.10 C++ object model: Declarations

                    +

                    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                    +

                    9.10.1 Overview

                    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                    @@ -1682,86 +1790,88 @@

                    7.9.7 Overview

                    - + - + - +
                    FoundationalStandards exception hierarchyDeclaring variables
                    MainException guaranteesDeclaring for programs
                    AdvancedSpecial cases and peculiarities
                    -

                    7.9.8 Motivation

                    +

                    9.10.2 Motivation

                    Why is this important? Why do we want to learn/teach this topic?

                    -

                    Exception handling is used to be able to continue the program in case of exceptional situations (like requesting a ridiculous amount of memory: bad_alloc).

                    -

                    7.9.9 Topic introduction

                    +
                      +
                    • Introduces a name and it’s type
                    • +
                    • int baz;
                    • +
                    • void bar();
                    • +
                    • class Foo;
                    • +
                    +

                    9.10.3 Topic introduction

                    Very brief introduction to the topic.

                    -

                    There are other forms of handling difficult situations, but here we concentrate on exception handling and the peculiarities/characteristics of it. Because there are different forms, we should know when to use which type of handling special situations.

                    -

                    7.9.10 Foundational: Standards exception hierarchy

                    -

                    7.9.10.1 Background/Required Knowledge

                    +

                    Introduce names and their associated type in a scope.

                    +

                    9.10.4 Foundational: Declaring variables

                    +

                    9.10.4.1 Background/Required Knowledge

                    A student:

                    -

                    7.9.10.2 Student outcomes

                    +

                    9.10.4.2 Student outcomes

                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                    A student should be able to:

                      -
                    1. Explain how some std:: calls may cause an exception
                    2. -
                    3. Discern the different standard exception types
                    4. -
                    5. Write simple try … except code (e.g., out of memory, vector at indexing)
                    6. -
                    7. Explain on a “simplified” conceptual level what happens when an exception is thrown and is bubbled up through the callers until it is caught
                    8. +
                    9. declare a variable with a specific type ‘int baz;’
                    10. +
                    11. declare a function ‘void bar();’
                    12. +
                    13. declare a class ‘class Foo;’
                    14. +
                    15. forward declare a user-defined type or a function
                    16. +
                    17. explain the difference between a definition and a declaration
                    -

                    7.9.10.3 Caveats

                    +

                    9.10.4.3 Caveats

                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                    -
                      -
                    • Exceptions should be used for exceptional situations and should not be used to manage normal control flow.
                    • -
                    -

                    7.9.10.4 Points to cover

                    +

                    No caveats at present.

                    +

                    9.10.4.4 Points to cover

                    This section lists important details for each point.

                    +

                    9.10.5 Main: Declarations for programs

                    +

                    9.10.5.1 Background/Required Knowledge

                      -
                    • Exception hierarchy from the standard library
                    • -
                    • Common library functions that may throw exceptions
                    • -
                    • Basic handling exceptions: try/catch/throw
                    • -
                    • How exceptions bubble up until caught
                    • -
                    -

                    7.9.11 Main: Exception guarantees

                    -

                    7.9.11.1 Background/Required Knowledge

                    -
                      -
                    • RAII
                    • -
                    • Order of construction/destruction of class members
                    • +
                    • All of the above.
                    • +
                    • Basic template syntax
                    -

                    7.9.11.2 Student outcomes

                    +

                    9.10.5.2 Student outcomes

                    +

                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                    A student should be able to:

                      -
                    1. Explain the four different exception guarantees
                    2. -
                    3. Explain the exception guarantees that the standard library containers offer.
                    4. -
                    5. Explain what happens when a exception is thrown in constructor
                    6. +
                    7. create header and source files with a declaration in the former and definition of a variable/function in the latter
                    8. +
                    9. declare type aliases to introduce a type with an alternative name ‘using std::string;’
                    10. +
                    11. write a forward template declaration
                    -

                    7.9.11.3 Caveats

                    -
                      -
                    • Make sure code is designed with RAII in mind to prevent resources leaking during exception handling, when the stack is unwound.
                    • -
                    • Care should be taken in constructor design to make all fully constructed members deleted when the stack unwinding mechanism is activated.
                    • -
                    -

                    7.9.11.4 Points to cover

                    +

                    9.10.5.3 Caveats

                    +

                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                      -
                    • Exception guarantees: Nothrow/Strong/Basic/No
                    • -
                    • Rethrowing an exception
                    • +
                    • Declaring aliases can introduce name clashes
                    • +
                    • Prefer using declaration’s over using directives in header files [link]
                    • +
                    • The order of declarations dictates the order of initialization
                    -

                    7.9.12 Advanced: Exception-safe containers and edge cases

                    +

                    9.10.5.4 Points to cover

                    +

                    This section lists important details for each point.

                    +

                    9.10.6 Advanced

                    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                      -
                    • Rethrowing a modified exception
                    • -
                    • Writing exception safe containers
                    • +
                    • asm declaration
                    • +
                    • using-enum-declaration
                    • +
                    • extern “C” declarations
                    -

                    7.10 Error handling: Categories of errors

                    +

                    9.11 C++ object model: Definitions

                    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                    -

                    7.10.1 Overview

                    +

                    9.11.1 Overview

                    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                    @@ -1777,79 +1887,183 @@

                    7.10.1 Overview

                    - + - + - +
                    FoundationalCategories of errorsDefining variables and ODR
                    MainHandling different categories of errorsDefining for programs
                    AdvancedSpecial cases and peculiarities
                    -

                    7.10.2 Motivation

                    +

                    9.11.2 Motivation

                    Why is this important? Why do we want to learn/teach this topic?

                    -

                    Programs can run in a normal state or erroneous state. Students should be able to identify different types of erroneous state and how to best handle them.

                    -

                    7.10.3 Topic introduction

                    +
                      +
                    • A definition is a declaration that supplies all that is needed for a complete entity
                    • +
                    • int baz = 42;
                    • +
                    • void bar() { /* implementation */ }
                    • +
                    • class Foo { /* class body */ };
                    • +
                    +

                    9.11.3 Topic introduction

                    Very brief introduction to the topic.

                    -

                    This topic is an umbrella topic that refers to the different topics for types of errors and error handling.

                    -

                    7.10.4 Foundational: Categories of errors

                    -

                    7.10.4.1 Background/Required Knowledge

                    +

                    A definition extends a declaration, providing all that is needed for a complete entity, e.g., allocate memory for variables, provide the implementation for functions, complete definitions of data and function members of a class.

                    +

                    9.11.4 Foundational: Defining variables and ODR

                    +

                    9.11.4.1 Background/Required Knowledge

                    A student:

                    -

                    7.10.4.2 Student outcomes

                    +

                    9.11.4.2 Student outcomes

                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                    A student should be able to:

                      -
                    1. Describe different kinds of errors and exceptional situations that require different approaches of error handling.
                    2. -
                    3. Provide some examples of the different error categories.
                    4. -
                    5. Identify potential erroneous code sections and attribute them to different error categories.
                    6. +
                    7. define a variable with a specific type int baz = 42;
                    8. +
                    9. define a function void bar() {}
                    10. +
                    11. define a class class Foo {};
                    12. +
                    13. explain the one definition rule
                    -

                    7.10.4.3 Caveats

                    +

                    9.11.4.3 Caveats

                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                    No caveats at present.

                    -

                    7.10.4.4 Points to cover

                    +

                    9.11.4.4 Points to cover

                    This section lists important details for each point.

                    -

                    Errors can happen at different times during software lifetime.

                      -
                    • Compile-time errors
                    • -
                    • Link-time errors
                    • -
                    • Execution-time errors
                    • +
                    • One definition rule (ODR)
                    -

                    There are different types of errors

                    +

                    9.11.5 Main: Defining for programs

                    +

                    9.11.5.1 Background/Required Knowledge

                      -
                    • Logic errors (violations of logical preconditions)
                    • -
                    • Run-time errors (errors during code execution due to causes that are external to the program)
                    • +
                    • All of the above.
                    • +
                    • is familiar with declarations [C++ object model: declarations]
                    -

                    7.10.5 Main: Handling different categories of errors

                    -

                    7.10.5.1 Background/Required Knowledge

                    -

                    7.10.5.2 Student outcomes

                    +

                    9.11.5.2 Student outcomes

                    +

                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                    A student should be able to:

                      -
                    1. pick the right error handling approach for a given problem.
                    2. -
                    3. enumerate different error handling strategies.
                    4. -
                    5. make a clear distinction between error-handling code and normal-case handling code
                    6. +
                    7. organize variables, functions, classes into multiple translation units, describing interface with declarations and providing the implementations with definitions without violating ODR.
                    8. +
                    9. distinguish between template declaration and definition
                    -

                    7.10.5.3 Caveats

                    +

                    9.11.5.3 Caveats

                    +

                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                      -
                    • The different error handling strategies have different trade-offs (runtime performance, readability, …)
                    • -
                    • The trade-off space depends on the run-time context (embedded, …)
                    • -
                    • There also exist unhandleable errors (e.g., ODR violations, undefined behavior)
                    • +
                    • Putting a definition into a header file that is included more than once leads to ODR violations, possibly resulting in linker errors.
                    -

                    7.10.5.4 Points to cover

                    +

                    9.11.5.4 Points to cover

                    +

                    This section lists important details for each point.

                    +

                    9.11.6 Advanced: Special cases and peculiarities

                    +

                    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                    +

                    9.12 C++ object model: copy semantics

                    +

                    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                    +

                    9.12.1 Overview

                    +

                    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                    + ++++ + + + + + + + + + + + + + + + + + + + + +
                    LevelObjectives
                    Foundationalunderstanding how and when are copies made
                    Mainimplementing user-defined copy operations
                    Advancedspecial cases: copy elision
                    +

                    9.12.2 Motivation

                    +

                    Why is this important? Why do we want to learn/teach this topic?

                    +

                    Copy semantics allows the user to define how objects of a class get replicated and interact on a value level.

                    +

                    9.12.3 Topic introduction

                    +

                    Very brief introduction to the topic.

                    +

                    Explains when and how objects are copied.

                    +

                    9.12.4 Foundational: How and when are copies made

                    +

                    9.12.4.1 Background/Required Knowledge

                    +

                    A student is able to: * explain what a C++ type is? [C++ object model: types] * explain what an object is? [C++ object model: objects], [C++ object model: constant objects] * define and understand class invariants?

                    +

                    It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain special member functions [C++ object model: special member functions]

                    +

                    9.12.4.2 Student outcomes

                    +

                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                    +

                    A student should be able to:

                    +
                      +
                    1. explain what copy semantics accomplish
                    2. +
                    +
                      +
                    • establishing “equivalent” object state in another object
                    -

                    7.10.6 Advanced

                    +
                      +
                    1. explain difference between copying a reference and copying a value*
                    2. +
                    3. explain where copies are made
                    4. +
                    +

                    * In other languages these differences are sometimes referred to as shallow and deep copy.

                    +

                    9.12.4.3 Caveats

                    +

                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                    +
                      +
                    • Compiler-provided copy operations may result in ownership problems (e.g., char*). These ownership problems can generally be solved by using types whose copy operations have the appropriate semantics, e.g., std::string instead of char* to hold string values.
                    • +
                    +

                    9.12.4.4 Points to cover

                    +

                    This section lists important details for each point.

                    +
                      +
                    • Principle of copying +
                        +
                      • Copying of types, which follow the rule of zero
                      • +
                      • Copying of types, with user defined copy operations
                      • +
                      • Copying an object does not change the original
                      • +
                    • +
                    • Practical applications +
                        +
                      • std::unique_ptr (has no copy)
                      • +
                      • Strings (copies the value)
                      • +
                    • +
                    +

                    9.12.5 Main: Implementing user-defined copy operations

                    +

                    9.12.5.1 Background/Required Knowledge

                    +

                    A student is able to: * identify special member functions [C++ object model: special member functions]

                    +

                    It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain the rule of zero [C++ object model: rule-of-zero] * explain the rule of five [C++ object model: rule-of-five]

                    +

                    9.12.5.2 Student outcomes

                    +

                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                    +

                    A student should be able to: * explain when they have to implement the copy operations for their own type * Copy constructor * Copy assignment operator * implement copy operations for their own types * Optional: explain when copying with basic and strong exception guarantees is useful

                    +

                    9.12.5.3 Caveats

                    +

                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                    +
                      +
                    • Intricacies when implementing copy operations: +
                        +
                      • Examples of how not to write copy operations (e.g., C++03 std::auto_ptr)
                      • +
                    • +
                    +

                    9.12.5.4 Points to cover

                    +

                    This section lists important details for each point.

                    +
                      +
                    • Copy constructors and copy assignment operators +
                        +
                      • How compiler generates default copy operations
                      • +
                      • =default, =delete (No copy)
                      • +
                      • How-to write your own copy operations
                      • +
                      • Rule-of-five
                      • +
                      • Copy assignment operators can be ref-qualified to avoid assigning into temporary objects.
                      • +
                    • +
                    +

                    9.12.6 Advanced

                    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                    -

                    8 License

                    +

                    When can copies be elided and when does the standard guarantee copy elision. References: * Abseil tip of the Week #166 * cppreference - Copy elision

                    +

                    See concepts.

                    +

                    10 License

                    [NOTE: This license is copied verbatim from the C++ Core Guidelines.]

                    Copyright (c) Standard C++ Foundation and its contributors
                     
                    @@ -1892,12 +2106,12 @@ 

                    8 License

                    description of your intellectual property, including a specific URL where you believe your intellectual property is being infringed.
                    -

                    9 Contributors

                    +

                    11 Contributors

                    Christopher Di Bella
                     Florian Sattler
                     Michael Adams
                     rwdougla
                    -

                    10 How To Contribute

                    +

                    12 How To Contribute

                    Before attempting to contribute any content for consideration for inclusion in this document, please read the information below and and the referenced documents as appropriate.

                    All contributions to this project must be made in accordance with the license in section License. This teaching-guidelines document only offers guidance on teaching C++ as it is specified in the current version of the C++ standard. So, content should be presented relative to the most-recently ratified version of the standard. A detailed explanation of how to present the material for a topic is given in:

                      @@ -1911,21 +2125,21 @@

                      10 How To Contr -

                      11 Glossary

                      +

                      13 Glossary

                      Some possible terms to include in the glossary:

                      • learning objective
                      • learning outcome
                      -

                      12 References

                      -

                      12.1 References on Learning Outcomes

                      +

                      14 References

                      +

                      14.1 References on Learning Outcomes

                      - +
                      • Christopher Di Bella, Simon Brand, and Michael Adams. P1389R0 — Standing Document for SG20: Guidelines for Teaching C++ to Beginners. https://wg21.link/p1389.

                      • Christopher Di Bella. P1725R0 — Modular Topic Design. https://wg21.link/p1725.

                      • @@ -1935,6 +2149,7 @@
                    • 7 Detailed Information for Modules and Topics
                    • 8 Module name: Passing Parameters by Value
                    • 9 Module name: Passing Parameters by Reference
                    • 10 License
                    • @@ -296,9 +305,9 @@

                      https://cplusplus.github.io/SG20/latest/.

                      The version of the document that you are currently reading is available in the following formats:

                        -
                      1. online (HTML) format as a single large HTML document: https://cplusplus.github.io/SG20/PR_0.0.20/html

                      2. -
                      3. EPUB format: https://cplusplus.github.io/SG20/PR_0.0.20/guidelines.epub

                      4. -
                      5. online (HTML) format, split across multiple HTML documents: https://cplusplus.github.io/SG20/PR_0.0.20/html_split/ [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

                      6. +
                      7. online (HTML) format as a single large HTML document: https://cplusplus.github.io/SG20/PR_0.0.21/html

                      8. +
                      9. EPUB format: https://cplusplus.github.io/SG20/PR_0.0.21/guidelines.epub

                      10. +
                      11. online (HTML) format, split across multiple HTML documents: https://cplusplus.github.io/SG20/PR_0.0.21/html_split/ [Note: The support for this format needs more work (in order to beautify and fix linking issues).]

                      Older versions of this document are also available. In general version ver is available at https://cplusplus.github.io/SG20/ver/html. For example, version 0.1.0 (assuming that this version exists) would be available at https://cplusplus.github.io/SG20/0.1.0/html.

                      2 Context and Aim of This Guide

                      @@ -963,29 +972,29 @@

                      6.15 S

                      7 Detailed Information for Modules and Topics

                      -

                      7.1 Error handling: Error codes

                      +

                      7.1 Meta-error handling: static_assert

                      Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                      7.1.1 Overview

                      Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                      --++ - + - + - + @@ -995,59 +1004,87 @@

                      7.1.1<

                      LevelObjectiveObjectives
                      FoundationalHandling error codes with std::error_codeCalling static_assert with a constant expression
                      MainDesigning APIs around std::error_codeUsing static_assert to detect contract violations and improve error messages
                      Advanced

                      7.1.2 Motivation

                      Why is this important? Why do we want to learn/teach this topic?

                      -

                      C++ offers a type safe way of passing around errors, contrary to the C-style of error handling, by this, we prevent bugs when passing error codes. Furthermore, error handling with error codes is more commonly used than exception handling, which only should be used in exceptional situations and in some environments is not feasible at all, e.g., in embedded or performance critical software.

                      +

                      static_assert allows the developer to enforce that conditions which can be checked during compilation will force build errors when violated. Additionally, they are the best mechanism by which a developer can pass useful information to other developers regarding what violation occurred or what must be done, instead.

                      7.1.3 Topic introduction

                      Very brief introduction to the topic.

                      -

                      C++ offers std::error_code, which encapsulates error codes in a type safe way. This topic describes how to use these error codes.

                      -

                      7.1.4 Foundational: Handling error codes with std::error_code

                      +

                      static_assert is a compile-time evaluated function that asserts the truth of a supplied predicate, issuing an optional user-supplied error message if the predicate is false.

                      +

                      7.1.4 Foundational: Calling static_assert with a constant expression

                      7.1.4.1 Background/Required Knowledge

                      A student:

                        -
                      • should know that there are different ways of error handling [Error handling: Categories of errors]
                      • -
                      • should know function return values
                      • +
                      • Should be able to explain the difference between code evaluated at compile-time and run-time
                      • +
                      • Should be able to cite some examples of compile-time known information, such as sizeof(T)

                      7.1.4.2 Student outcomes

                      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                      A student should be able to:

                        -
                      1. write code to handle errors with std::error_code, e.g., obtain the message of the error code or check if an error occurred.
                      2. -
                      3. distinguish between the different categories and make justified decisions when to use which
                      4. +
                      5. Assert the expected size of a structure using static_assert

                      7.1.4.3 Caveats

                      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                      7.1.4.4 Points to cover

                      This section lists important details for each point.

                        -
                      • a brief overview of std::error_code and how to use it
                      • +
                      • X
                      • +
                      • In addition to what is wrong, a good error message will inform the user of how to correct it
                      -

                      7.1.5 Main: Designing APIs around std::error_code

                      +

                      7.1.5 Main: Contracts and static_assert

                      7.1.5.1 Background/Required Knowledge

                        -
                      • should know how to use reference parameters as an output parameter
                      • +
                      • All of the above.
                      • +
                      • General understanding of compile-time requirements

                      7.1.5.2 Student outcomes

                      +

                      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                      A student should be able to:

                        -
                      1. create an error_code and design API that work with std:error_code
                      2. -
                      3. write code that utilizes std::error_category
                      4. -
                      5. explain the difference between C-style error handling with errno and std::error_code
                      6. -
                      7. make effective use of the interface of std::error_code
                      8. +
                      9. Utilize static_assert to verify preconditions of a meta-function
                      10. +
                      11. Utilize static_assert to verify the results of meta-functions for known values

                      7.1.5.3 Caveats

                      -
                        -
                      • reset errno before calling a function that might set errno (better pass an input parameter std::error_code)
                      • -
                      +

                      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                      7.1.5.4 Points to cover

                      +

                      This section lists important details for each point.

                        -
                      • provide a full picture of std::error_code and it’s APIs
                      • -
                      • std::error_category (explorative)
                      • +
                      • When writing a meta-function, use static_assert to test the results
                      • +
                      • Write static_assert calls at the scope of the code they are guarding
                      -

                      7.1.6 Advanced

                      +
                      template<typename T>
                      +struct container {
                      +    std::map<int, T> vals;
                      +
                      +    // Test location #1
                      +    static_assert(
                      +        std::is_default_constructible_v<T>,
                      +        "container type T must be default constructible");i
                      +
                      +    void add(int key, T const& t) {
                      +        // Test location #2
                      +        static_assert(
                      +            std::is_default_constructible_v<T>,
                      +            "container type T must be default constructible");
                      +        // std::map::operator[] requires default constructible type for 
                      +        // the value. This will cause a build failure deep in the 
                      +        // implementation of std::map, when T is not default constructible
                      +        vals[key] = t;
                      +    }
                      +};
                      +
                      +struct NoDefCtor {
                      +    NoDefCtor() = delete;
                      +    NoDefCtor(double d) {}
                      +};
                      +
                      +container<NoDefCtor> c; // If Test #1 was omitted, this would succeed
                      +// This is ill-formed. Test #2 would catch this and provide a better 
                      +// error message for the user
                      +c.add(42, NoDefCtor(1.0)); 
                      +

                      7.1.6 Advanced

                      These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                      -
                        -
                      • implementing your own error_category
                      • -
                      -

                      7.1.7 Overview

                      +

                      7.2 Error handling: Error codes

                      +

                      Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                      +

                      7.2.1 Overview

                      Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                      @@ -1063,11 +1100,11 @@

                      7.1.

                      - + - + @@ -1075,74 +1112,63 @@

                      7.1.

                      FoundationalStandards exception hierarchyHandling error codes with std::error_code
                      MainException guaranteesDesigning APIs around std::error_code
                      Advanced
                      -

                      7.1.8 Motivation

                      +

                      7.2.2 Motivation

                      Why is this important? Why do we want to learn/teach this topic?

                      -

                      Exception handling is used to be able to continue the program in case of exceptional situations (like requesting a ridiculous amount of memory: bad_alloc).

                      -

                      7.1.9 Topic introduction

                      +

                      C++ offers a type safe way of passing around errors, contrary to the C-style of error handling, by this, we prevent bugs when passing error codes. Furthermore, error handling with error codes is more commonly used than exception handling, which only should be used in exceptional situations and in some environments is not feasible at all, e.g., in embedded or performance critical software.

                      +

                      7.2.3 Topic introduction

                      Very brief introduction to the topic.

                      -

                      There are other forms of handling difficult situations, but here we concentrate on exception handling and the peculiarities/characteristics of it. Because there are different forms, we should know when to use which type of handling special situations.

                      -

                      7.1.10 Foundational: Standards exception hierarchy

                      -

                      7.1.10.1 Background/Required Knowledge

                      +

                      C++ offers std::error_code, which encapsulates error codes in a type safe way. This topic describes how to use these error codes.

                      +

                      7.2.4 Foundational: Handling error codes with std::error_code

                      +

                      7.2.4.1 Background/Required Knowledge

                      A student:

                      -

                      7.1.10.2 Student outcomes

                      +

                      7.2.4.2 Student outcomes

                      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                      A student should be able to:

                        -
                      1. Explain how some std:: calls may cause an exception
                      2. -
                      3. Discern the different standard exception types
                      4. -
                      5. Write simple try … except code (e.g., out of memory, vector at indexing)
                      6. -
                      7. Explain on a “simplified” conceptual level what happens when an exception is thrown and is bubbled up through the callers until it is caught
                      8. +
                      9. write code to handle errors with std::error_code, e.g., obtain the message of the error code or check if an error occurred.
                      10. +
                      11. distinguish between the different categories and make justified decisions when to use which
                      -

                      7.1.10.3 Caveats

                      +

                      7.2.4.3 Caveats

                      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                      -
                        -
                      • Exceptions should be used for exceptional situations and should not be used to manage normal control flow.
                      • -
                      -

                      7.1.10.4 Points to cover

                      +

                      7.2.4.4 Points to cover

                      This section lists important details for each point.

                        -
                      • Exception hierarchy from the standard library
                      • -
                      • Common library functions that may throw exceptions
                      • -
                      • Basic handling exceptions: try/catch/throw
                      • -
                      • How exceptions bubble up until caught
                      • +
                      • a brief overview of std::error_code and how to use it
                      -

                      7.1.11 Main: Exception guarantees

                      -

                      7.1.11.1 Background/Required Knowledge

                      +

                      7.2.5 Main: Designing APIs around std::error_code

                      +

                      7.2.5.1 Background/Required Knowledge

                        -
                      • RAII
                      • -
                      • Order of construction/destruction of class members
                      • +
                      • should know how to use reference parameters as an output parameter
                      -

                      7.1.11.2 Student outcomes

                      +

                      7.2.5.2 Student outcomes

                      A student should be able to:

                        -
                      1. Explain the four different exception guarantees
                      2. -
                      3. Explain the exception guarantees that the standard library containers offer.
                      4. -
                      5. Explain what happens when a exception is thrown in constructor
                      6. +
                      7. create an error_code and design API that work with std:error_code
                      8. +
                      9. write code that utilizes std::error_category
                      10. +
                      11. explain the difference between C-style error handling with errno and std::error_code
                      12. +
                      13. make effective use of the interface of std::error_code
                      -

                      7.1.11.3 Caveats

                      +

                      7.2.5.3 Caveats

                        -
                      • Make sure code is designed with RAII in mind to prevent resources leaking during exception handling, when the stack is unwound.
                      • -
                      • Care should be taken in constructor design to make all fully constructed members deleted when the stack unwinding mechanism is activated.
                      • +
                      • reset errno before calling a function that might set errno (better pass an input parameter std::error_code)
                      -

                      7.1.11.4 Points to cover

                      +

                      7.2.5.4 Points to cover

                        -
                      • Exception guarantees: Nothrow/Strong/Basic/No
                      • -
                      • Rethrowing an exception
                      • +
                      • provide a full picture of std::error_code and it’s APIs
                      • +
                      • std::error_category (explorative)
                      -

                      7.1.12 Advanced: Exception-safe containers and edge cases

                      +

                      7.2.6 Advanced

                      These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                        -
                      • Rethrowing a modified exception
                      • -
                      • Writing exception safe containers
                      • +
                      • implementing your own error_category
                      -

                      7.2 Error handling: Categories of errors

                      +

                      7.3 Error handling: Categories of errors

                      Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                      -

                      7.2.1 Overview

                      +

                      7.3.1 Overview

                      Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                      @@ -1170,19 +1196,19 @@

                      7.2.

                      -

                      7.2.2 Motivation

                      +

                      7.3.2 Motivation

                      Why is this important? Why do we want to learn/teach this topic?

                      Programs can run in a normal state or erroneous state. Students should be able to identify different types of erroneous state and how to best handle them.

                      -

                      7.2.3 Topic introduction

                      +

                      7.3.3 Topic introduction

                      Very brief introduction to the topic.

                      This topic is an umbrella topic that refers to the different topics for types of errors and error handling.

                      -

                      7.2.4 Foundational: Categories of errors

                      -

                      7.2.4.1 Background/Required Knowledge

                      +

                      7.3.4 Foundational: Categories of errors

                      +

                      7.3.4.1 Background/Required Knowledge

                      A student:

                      -

                      7.2.4.2 Student outcomes

                      +

                      7.3.4.2 Student outcomes

                      A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                      A student should be able to:

                        @@ -1190,10 +1216,10 @@

                        7.2.4.3 Caveats

                        +

                        7.3.4.3 Caveats

                        This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                        No caveats at present.

                        -

                        7.2.4.4 Points to cover

                        +

                        7.3.4.4 Points to cover

                        This section lists important details for each point.

                        Errors can happen at different times during software lifetime.

                          @@ -1206,38 +1232,131 @@

                          7.2.5 Main: Handling different categories of errors

                          -

                          7.2.5.1 Background/Required Knowledge

                          -

                          7.2.5.2 Student outcomes

                          +

                          7.3.5 Main: Handling different categories of errors

                          +

                          7.3.5.1 Background/Required Knowledge

                          +

                          7.3.5.2 Student outcomes

                          A student should be able to:

                          1. pick the right error handling approach for a given problem.
                          2. enumerate different error handling strategies.
                          3. make a clear distinction between error-handling code and normal-case handling code
                          -

                          7.2.5.3 Caveats

                          +

                          7.3.5.3 Caveats

                          • The different error handling strategies have different trade-offs (runtime performance, readability, …)
                          • The trade-off space depends on the run-time context (embedded, …)
                          • There also exist unhandleable errors (e.g., ODR violations, undefined behavior)
                          -

                          7.2.5.4 Points to cover

                          +

                          7.3.5.4 Points to cover

                          -

                          7.2.6 Advanced

                          +

                          7.3.6 Advanced

                          +

                          These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                          +

                          7.3.7 Overview

                          +

                          Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                          + ++++ + + + + + + + + + + + + + + + + + + + + +
                          LevelObjective
                          FoundationalStandards exception hierarchy
                          MainException guarantees
                          Advanced
                          +

                          7.3.8 Motivation

                          +

                          Why is this important? Why do we want to learn/teach this topic?

                          +

                          Exception handling is used to be able to continue the program in case of exceptional situations (like requesting a ridiculous amount of memory: bad_alloc).

                          +

                          7.3.9 Topic introduction

                          +

                          Very brief introduction to the topic.

                          +

                          There are other forms of handling difficult situations, but here we concentrate on exception handling and the peculiarities/characteristics of it. Because there are different forms, we should know when to use which type of handling special situations.

                          +

                          7.3.10 Foundational: Standards exception hierarchy

                          +

                          7.3.10.1 Background/Required Knowledge

                          +

                          A student:

                          + +

                          7.3.10.2 Student outcomes

                          +

                          A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                          +

                          A student should be able to:

                          +
                            +
                          1. Explain how some std:: calls may cause an exception
                          2. +
                          3. Discern the different standard exception types
                          4. +
                          5. Write simple try … except code (e.g., out of memory, vector at indexing)
                          6. +
                          7. Explain on a “simplified” conceptual level what happens when an exception is thrown and is bubbled up through the callers until it is caught
                          8. +
                          +

                          7.3.10.3 Caveats

                          +

                          This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                          +
                            +
                          • Exceptions should be used for exceptional situations and should not be used to manage normal control flow.
                          • +
                          +

                          7.3.10.4 Points to cover

                          +

                          This section lists important details for each point.

                          +
                            +
                          • Exception hierarchy from the standard library
                          • +
                          • Common library functions that may throw exceptions
                          • +
                          • Basic handling exceptions: try/catch/throw
                          • +
                          • How exceptions bubble up until caught
                          • +
                          +

                          7.3.11 Main: Exception guarantees

                          +

                          7.3.11.1 Background/Required Knowledge

                          +
                            +
                          • RAII
                          • +
                          • Order of construction/destruction of class members
                          • +
                          +

                          7.3.11.2 Student outcomes

                          +

                          A student should be able to:

                          +
                            +
                          1. Explain the four different exception guarantees
                          2. +
                          3. Explain the exception guarantees that the standard library containers offer.
                          4. +
                          5. Explain what happens when a exception is thrown in constructor
                          6. +
                          +

                          7.3.11.3 Caveats

                          +
                            +
                          • Make sure code is designed with RAII in mind to prevent resources leaking during exception handling, when the stack is unwound.
                          • +
                          • Care should be taken in constructor design to make all fully constructed members deleted when the stack unwinding mechanism is activated.
                          • +
                          +

                          7.3.11.4 Points to cover

                          +
                            +
                          • Exception guarantees: Nothrow/Strong/Basic/No
                          • +
                          • Rethrowing an exception
                          • +
                          +

                          7.3.12 Advanced: Exception-safe containers and edge cases

                          These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                          -

                          7.3 Functions: user-defined literals

                          +
                            +
                          • Rethrowing a modified exception
                          • +
                          • Writing exception safe containers
                          • +
                          +

                          7.4 Module name: Requires Expressions

                          Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                          -

                          7.3.1 Overview

                          +

                          7.4.1 Overview

                          Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                          --++ @@ -1248,74 +1367,98 @@

                          7.3.

                          - + - + - +
                          Foundationalusing and understanding UDLsDefine and use requires-expressions to check satisfaction of expressions by given parameters
                          Mainimplementing your own UDLsDefine and use requires-expressions to check properties of expressions
                          AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
                          -

                          7.3.2 Motivation

                          +

                          7.4.2 Motivation

                          Why is this important? Why do we want to learn/teach this topic?

                          +

                          Requires-expressions allow a developer to perform compile-time evaluation on the validity of other expressions. These are fundamental to the ability to write concepts. [Compile-time programming: concepts]

                          +

                          7.5 Topic introduction

                          +

                          Very brief introduction to the topic.

                          +

                          Requires-expressions are compile-time predicates which evaluate to true when their specified set of expressions are all valid for a given set of inputs.

                          +

                          7.5.1 Foundational: Writing requires-expressions

                          +

                          7.5.1.1 Background/Required Knowledge

                          +

                          A student is able to:

                            -
                          • Allows clearer expression of intent in C++.
                          • -
                          • std::string: "Hello, world!"s
                          • -
                          • std::chrono: 3h + 10min + 5s
                          • +
                          • Write and use a function template [Compile-time programming: function templates]
                          • +
                          • Differentiate between expressions and statements
                          -

                          7.3.3 Topic introduction

                          -

                          Very brief introduction to the topic.

                          +

                          It is helpful if:

                            -
                          • Explain the existence of user defined literals. Example: 12min + 17s is terse, expressive and type safe.
                          • +
                          • The student is aware that attempting to specialize the template with types or values which do not match otherwise unstated assumptions will cause errors within the template.
                          -

                          7.3.4 Foundational: Using UDLs

                          -

                          7.3.4.1 Background/Required Knowledge

                          -

                          A student: * knows how to form numeric literals, e.g., 1.5f means a float of value 1.5. * is familiar with the major C++ types: * bool (Boolean type) * int (Integer type) * double (Floating-point type) * std::string (Text type) * std::vector (Collection type) * knows that namespaces exist, and namespace std. * knows what using-declarations and using-directives are. [C++ object model: declarations]

                          -

                          7.3.4.2 Student outcomes

                          +

                          7.5.1.2 Student outcomes

                          A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                          A student should be able to:

                            -
                          1. use using namespace std::string_literals[1].
                          2. -
                          3. recognise UDLs in code that they are reading.
                          4. -
                          5. figure out which UDL definitions for a used type exist.
                          6. -
                          7. identify parts of the standard library that make use of UDLs.
                          8. -
                          9. prevent the dangers of temporaries created with "blah"s as well as with std::string{"blah"}.
                          10. -
                          11. effectively selects the right set of namespaces in using-directives from the sub-namespaces std::literals.
                          12. +
                          13. Write a simple-requirement to assert the validity of an expression
                          14. +
                          15. Write a type-requirement to check the existence of a type by its identifier
                          16. +
                          17. Write a compound-requirement to test the resulting type of an expression
                          18. +
                          19. Write a nested-requirement to test the constexpr value of an operation, as opposed to just the syntactic validity
                          20. +
                          21. Use a requires-expression within a concept, requires-clause, or if constexpr condition
                          -

                          [1]: explain that it’s okay to use a using-directive to “activate” UDLs.

                          -

                          7.3.4.3 Caveats

                          +

                          7.5.1.3 Caveats

                          This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                          +

                          To require that expressions, which evaluate to a boolean value like sizeof(t) == 4, evaluate to true a nested-requirement is needed (e.g., requires sizeof(t) == 4;). Omitting the requires results in a simple-requirement, which is satisfied based purely on syntactic validity, not on the result of the operation.

                          +

                          7.5.1.4 Points to cover

                          +

                          This section lists important details for each point.

                            -
                          • A student gets confused by the similarities and differences between built-in suffixes and UDLs and between UDLs from different namespaces.
                          • -
                          • A student “activates” two suffixes with the same signature from different namespaces.
                          • +
                          • All requires-expression requirements terminate with a semicolon.
                          • +
                          • simple-requirements are used to check that an expression is well-formed.
                          • +
                          • nested-requirements are introduced with requires and primarily used to check the result of an expression computable by the compiler, including concepts or other requires-expressions.
                          • +
                          • type-requirements are introduced with typename and used to verify the existence of a type with a particular identifier.
                          • +
                          • compound-requirements are enclosed in braces and can be used to check the resulting type of an expression.
                          • +
                          • Checks are performed by the compiler, not at run time.
                          • +
                          • If covering usage of requires-expression with requires-clause, [Compile-time programming: requires clause] demonstrate requires requires and show how to ever avoid writing it by using a concept. [Compile-time programming: concepts]
                          -

                          7.3.4.4 Points to cover

                          -

                          This section lists important details for each point.

                          -

                          7.3.5 Main: implementing UDLs

                          -

                          7.3.5.1 Background/Required Knowledge

                          +

                          7.5.2 Main: Advanced requirements

                          +

                          7.5.2.1 Background/Required Knowledge

                          • All of the above.
                          • +
                          • Knowledge of noexcept
                          • +
                          +

                          A student is able to:

                          + -

                          7.3.5.2 Student outcomes

                          +

                          7.5.2.2 Student outcomes

                          A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                          A student should be able to:

                            -
                          1. write a UDL operator of their own.
                          2. -
                          3. separate unrelated UDLs into distinct namespaces.
                          4. +
                          5. Write compound-requirements which test the noexceptness of an expression.
                          6. +
                          7. Use a concept as the target of a compound-requirement.
                          -

                          7.3.5.3 Caveats

                          +

                          7.5.2.3 Caveats

                          This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                          -

                          No caveats at present. #### Points to cover

                          +

                          7.5.2.4 Points to cover

                          This section lists important details for each point.

                          -

                          No caveats at present. ### Advanced {#udl-advanced}

                          -

                          These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                          -

                          7.4 Functions: default argument

                          +
                            +
                          • Compound-requirements allow the optional ability to test whether an expression is marked as noexcept, by using a trailing noexcept keyword.
                          • +
                          +
                          struct S
                          +{
                          +    void foo() noexcept {}
                          +    void bar() {}
                          +};
                          +
                          +static_assert(requires(S s) { { s.foo() } noexcept; } ); // Succeeds. s.foo() is noexcept
                          +static_assert(requires(S s) { { s.bar() } noexcept; } ); // Fails. s.bar() is not noexcept
                          +
                            +
                          • If the return-type-requirement of a compound-requirement is a concept, that concept is given the resulting type as the first parameter, followed by the specified parameters in the compound-requirement. { ++x } -> C<int> would substitute C<decltype((++x)), int> and check that concept C is satisfied for those parameters.
                          • +
                          +

                          7.5.3 Advanced

                          +

                          7.6 Functions: default argument

                          Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                          -

                          7.4.1 Overview

                          +

                          7.6.1 Overview

                          Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                          Functions in C++ may be overloaded with different numbers and types of parameters. It may be of value to specify default arguments for some number of parameters, to allow a caller to avoid specifying arguments that rarely change, or to enable expanding the set of parameters while maintaining backward compatibility with existing callers.

                          @@ -1344,14 +1487,14 @@

                          7.4.

                          -

                          7.4.2 Motivation

                          +

                          7.6.2 Motivation

                          Why is this important? Why do we want to learn/teach this topic?

                          Default arguments allow the omission of arguments with obvious or common values. Also may be utilized to extend an existing function signature without forcing changes to existing calling code.

                          -

                          7.4.3 Topic introduction

                          +

                          7.6.3 Topic introduction

                          Very brief introduction to the topic.

                          Explain how default arguments work and how to define them.

                          -

                          7.4.4 Foundational: Using and defining functions with default arguments

                          -

                          7.4.4.1 Background/Required Knowledge

                          +

                          7.6.4 Foundational: Using and defining functions with default arguments

                          +

                          7.6.4.1 Background/Required Knowledge

                          A student is able to:

                          -

                          7.4.4.2 Student outcomes

                          +

                          7.6.4.2 Student outcomes

                          A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                          A student should be able to:

                            @@ -1367,7 +1510,7 @@

                            7.4.4.3 Caveats

                            +

                            7.6.4.3 Caveats

                            This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                            • When no forward-declaration exists, the definition serves as the declaration
                            • @@ -1375,35 +1518,119 @@

                              7.4
                            • Additional default values may be specified for other parameters in repeat declarations
                            • Calling an overloaded function with fewer arguments may be ambiguous with regard to an overload with default arguments
                            -

                            7.4.4.4 Points to cover

                            +

                            7.6.4.4 Points to cover

                            This section lists important details for each point.

                            • Default value may only be specified once for each parameter among all declarations
                            • Default values must start from the rightmost parameter and continue leftward without gaps
                            • Considerations of when to use default arguments vs overload set
                            -

                            7.4.5 Main: implementing *

                            -

                            7.4.5.1 Background/Required knowledge

                            +

                            7.6.5 Main: implementing *

                            +

                            7.6.5.1 Background/Required knowledge

                            • All of the above.
                            -

                            7.4.5.2 Student outcomes

                            +

                            7.6.5.2 Student outcomes

                            A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                            A student should be able to:

                            -

                            7.4.5.3 Caveats

                            +

                            7.6.5.3 Caveats

                            This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                            -

                            7.4.5.4 Points to cover

                            +

                            7.6.5.4 Points to cover

                            This section lists important details for each point.

                            -

                            7.4.6 Advanced

                            +

                            7.6.6 Advanced

                            These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                            Subsequent redeclarations of the same function may add default argument values, which are then usable by callers. Though a single parameter cannot be given a default argument twice in the same translation unit, it is legal, though ill-advised, to give the same function different default arguments in different translation units.

                            -

                            8 Module name: Passing Parameters by Value

                            +

                            7.7 Functions: user-defined literals (UDL)

                            Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                            -

                            8.1 Overview

                            +

                            7.7.1 Overview

                            Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                            +

                            Literals are a way to write values in the code, such as strings and numbers. User-defined literals (UDL) allow to add a suffix to a string or number to change the meaning. The suffix selects a function (an operator) that can alter the value and type of the literal. The C++ library provides certain operators already and a user can add more by providing such operators.

                            - -+++ + + + + + + + + + + + + + + + + + + + + +
                            +
                            LevelObjectives
                            Foundationalusing and understanding UDLs
                            Mainimplementing your own UDLs
                            AdvancedAdvanced use ("{}, {}!"_fmt("Hello", "World"))
                            +

                            7.7.2 Motivation

                            +

                            Why is this important? Why do we want to learn/teach this topic?

                            +
                              +
                            • Allows clearer expression of intent in C++.
                            • +
                            • std::string: "Hello, world!"s
                            • +
                            • std::chrono: 3h + 10min + 5s
                            • +
                            +

                            7.7.3 Topic introduction

                            +

                            Very brief introduction to the topic.

                            +
                              +
                            • Explain the existence of user defined literals. Example: 12min + 17s is terse, expressive and type safe.
                            • +
                            +

                            7.7.4 Foundational: Using UDLs

                            +

                            7.7.4.1 Background/Required Knowledge

                            +

                            A student: * knows how to form numeric literals, e.g., 1.5f means a float of value 1.5. * is familiar with the major C++ types: * bool (Boolean type) * int (Integer type) * double (Floating-point type) * std::string (Text type) * std::vector (Collection type) * knows that namespaces exist, and namespace std. * knows what using-declarations and using-directives are. [C++ object model: declarations]

                            +

                            7.7.4.2 Student outcomes

                            +

                            A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                            +

                            A student should be able to:

                            +
                              +
                            1. use using namespace std::string_literals[1].
                            2. +
                            3. recognise UDLs in code that they are reading.
                            4. +
                            5. figure out which UDL definitions for a used type exist.
                            6. +
                            7. identify parts of the standard library that make use of UDLs.
                            8. +
                            9. prevent the dangers of temporaries created with "blah"s as well as with std::string{"blah"}.
                            10. +
                            11. effectively selects the right set of namespaces in using-directives from the sub-namespaces std::literals.
                            12. +
                            +

                            [1]: explain that it’s okay to use a using-directive to “activate” UDLs.

                            +

                            7.7.4.3 Caveats

                            +

                            This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                            +
                              +
                            • A student gets confused by the similarities and differences between built-in suffixes and UDLs and between UDLs from different namespaces.
                            • +
                            • A student “activates” two suffixes with the same signature from different namespaces.
                            • +
                            +

                            7.7.4.4 Points to cover

                            +

                            This section lists important details for each point.

                            +

                            7.7.5 Main: implementing UDLs

                            +

                            7.7.5.1 Background/Required Knowledge

                            +
                              +
                            • All of the above.
                            • +
                            +

                            7.7.5.2 Student outcomes

                            +

                            A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                            +

                            A student should be able to:

                            +
                              +
                            1. write a UDL operator of their own.
                            2. +
                            3. separate unrelated UDLs into distinct namespaces.
                            4. +
                            +

                            7.7.5.3 Caveats

                            +

                            This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                            +

                            No caveats at present. #### Points to cover

                            +

                            This section lists important details for each point.

                            +

                            No caveats at present. ### Advanced {#udl-advanced}

                            +

                            These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                            +

                            8 Module name: Passing Parameters by Value

                            +

                            Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                            +

                            8.1 Overview

                            +

                            Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                            + + +
                            Level @@ -1433,28 +1660,28 @@

                            8.1

                            -

                            8.2 Motivation

                            +

                            8.2 Motivation

                            Why is this important? Why do we want to learn/teach this topic?

                            The fundamental element for code-reuse is a function. For functions to be useful, we need to parameterize them. Understanding how to do such is thus fundamental to programming in any language.

                            -

                            8.3 Topic introduction

                            +

                            8.3 Topic introduction

                            Very brief introduction to the topic.

                            Explain how to define functions with parameters and call them with values.

                            8.4 Foundational: Using reference types to avoid copies

                            -

                            8.4.1 Background/Required Knowledge

                            +

                            8.4.1 Background/Required Knowledge

                            A student is able to:

                            • Explain what a function is
                            -

                            8.4.2 Student outcomes

                            +

                            8.4.2 Student outcomes

                            A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                            A student should be able to:

                            1. Call a function with any number of parameters using the same number of arguments
                            2. Define a function with any number of parameters
                            -

                            8.4.3 Caveats

                            +

                            8.4.3 Caveats

                            This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                            -

                            8.4.4 Points to cover

                            +

                            8.4.4 Points to cover

                            This section lists important details for each point.

                            • A function is called by invoking the name of the function, followed by parentheses
                            • @@ -1463,15 +1690,15 @@

                              8.5 Main: Using references to modify external data

                              -

                              8.5.1 Background/Required Knowledge

                              -

                              8.5.2 Student outcomes

                              -

                              8.5.3 Caveats

                              -

                              8.5.4 Points to cover

                              +

                              8.5.1 Background/Required Knowledge

                              +

                              8.5.2 Student outcomes

                              +

                              8.5.3 Caveats

                              +

                              8.5.4 Points to cover

                              8.6 Advanced

                              These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                              9 Module name: Passing Parameters by Reference

                              Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                              -

                              9.1 Overview

                              +

                              9.1 Overview

                              Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                              @@ -1506,27 +1733,27 @@

                              9.1

                              -

                              9.2 Motivation

                              +

                              9.2 Motivation

                              Why is this important? Why do we want to learn/teach this topic?

                              -

                              9.3 Topic introduction

                              +

                              9.3 Topic introduction

                              Very brief introduction to the topic.

                              Explain what a reference type is and how it constrasts with a value type.

                              9.4 Foundational: Using reference types to avoid copies

                              -

                              9.4.1 Background/Required Knowledge

                              +

                              9.4.1 Background/Required Knowledge

                              A student is able to:

                              • Define and call a function with parameters
                              -

                              9.4.2 Student outcomes

                              +

                              9.4.2 Student outcomes

                              A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                              A student should be able to:

                              1. Use const-refernce types for function arguments
                              2. Explain what considerations to take when deciding whether or not to use a const-reference type
                              -

                              9.4.3 Caveats

                              +

                              9.4.3 Caveats

                              This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                              -

                              9.4.4 Points to cover

                              +

                              9.4.4 Points to cover

                              This section lists important details for each point.

                              • No copy of the data is made when taken by constant reference
                              • @@ -1535,17 +1762,17 @@

                                9.5 Main: Using references to modify external data

                                -

                                9.5.1 Background/Required Knowledge

                                +

                                9.5.1 Background/Required Knowledge

                                • All of the above
                                -

                                9.5.2 Student outcomes

                                +

                                9.5.2 Student outcomes

                                A student should be able to:

                                1. Define and utilize a non-const reference for passing values out of a function
                                -

                                9.5.3 Caveats

                                -

                                9.5.4 Points to cover

                                +

                                9.5.3 Caveats

                                +

                                9.5.4 Points to cover

                                • If the function does not intend to modify the value, const-references should be preferred
                                • A reference value may be modified
                                • @@ -1554,227 +1781,9 @@

                                  9.6 Advanced

                                  These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                                  -

                                  9.7 Module name: Requires Expressions

                                  -

                                  Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                                  -

                                  9.7.1 Overview

                                  -

                                  Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                                  - ---- - - - - - - - - - - - - - - - - - - - - -
                                  LevelObjectives
                                  FoundationalDefine and use requires-expressions to check satisfaction of expressions by given parameters
                                  MainDefine and use requires-expressions to check properties of expressions
                                  Advanced
                                  -

                                  9.7.2 Motivation

                                  -

                                  Why is this important? Why do we want to learn/teach this topic?

                                  -

                                  Requires-expressions allow a developer to perform compile-time evaluation on the validity of other expressions. These are fundamental to the ability to write concepts. [Compile-time programming: concepts]

                                  -

                                  9.8 Topic introduction

                                  -

                                  Very brief introduction to the topic.

                                  -

                                  Requires-expressions are compile-time predicates which evaluate to true when their specified set of expressions are all valid for a given set of inputs.

                                  -

                                  9.8.1 Foundational: Writing requires-expressions

                                  -

                                  9.8.1.1 Background/Required Knowledge

                                  -

                                  A student is able to:

                                  - -

                                  It is helpful if:

                                  -
                                    -
                                  • The student is aware that attempting to specialize the template with types or values which do not match otherwise unstated assumptions will cause errors within the template.
                                  • -
                                  -

                                  9.8.1.2 Student outcomes

                                  -

                                  A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                  -

                                  A student should be able to:

                                  -
                                    -
                                  1. Write a simple-requirement to assert the validity of an expression
                                  2. -
                                  3. Write a type-requirement to check the existence of a type by its identifier
                                  4. -
                                  5. Write a compound-requirement to test the resulting type of an expression
                                  6. -
                                  7. Write a nested-requirement to test the constexpr value of an operation, as opposed to just the syntactic validity
                                  8. -
                                  9. Use a requires-expression within a concept, requires-clause, or if constexpr condition
                                  10. -
                                  -

                                  9.8.1.3 Caveats

                                  -

                                  This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                  -

                                  To require that expressions, which evaluate to a boolean value like sizeof(t) == 4, evaluate to true a nested-requirement is needed (e.g., requires sizeof(t) == 4;). Omitting the requires results in a simple-requirement, which is satisfied based purely on syntactic validity, not on the result of the operation.

                                  -

                                  9.8.1.4 Points to cover

                                  -

                                  This section lists important details for each point.

                                  -
                                    -
                                  • All requires-expression requirements terminate with a semicolon.
                                  • -
                                  • simple-requirements are used to check that an expression is well-formed.
                                  • -
                                  • nested-requirements are introduced with requires and primarily used to check the result of an expression computable by the compiler, including concepts or other requires-expressions.
                                  • -
                                  • type-requirements are introduced with typename and used to verify the existence of a type with a particular identifier.
                                  • -
                                  • compound-requirements are enclosed in braces and can be used to check the resulting type of an expression.
                                  • -
                                  • Checks are performed by the compiler, not at run time.
                                  • -
                                  • If covering usage of requires-expression with requires-clause, [Compile-time programming: requires clause] demonstrate requires requires and show how to ever avoid writing it by using a concept. [Compile-time programming: concepts]
                                  • -
                                  -

                                  9.8.2 Main: Advanced requirements

                                  -

                                  9.8.2.1 Background/Required Knowledge

                                  -
                                    -
                                  • All of the above.
                                  • -
                                  • Knowledge of noexcept
                                  • -
                                  -

                                  A student is able to:

                                  - -

                                  9.8.2.2 Student outcomes

                                  -

                                  A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                  -

                                  A student should be able to:

                                  -
                                    -
                                  1. Write compound-requirements which test the noexceptness of an expression.
                                  2. -
                                  3. Use a concept as the target of a compound-requirement.
                                  4. -
                                  -

                                  9.8.2.3 Caveats

                                  -

                                  This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                  -

                                  9.8.2.4 Points to cover

                                  -

                                  This section lists important details for each point.

                                  -
                                    -
                                  • Compound-requirements allow the optional ability to test whether an expression is marked as noexcept, by using a trailing noexcept keyword.
                                  • -
                                  -
                                  struct S
                                  -{
                                  -    void foo() noexcept {}
                                  -    void bar() {}
                                  -};
                                  -
                                  -static_assert(requires(S s) { { s.foo() } noexcept; } ); // Succeeds. s.foo() is noexcept
                                  -static_assert(requires(S s) { { s.bar() } noexcept; } ); // Fails. s.bar() is not noexcept
                                  -
                                    -
                                  • If the return-type-requirement of a compound-requirement is a concept, that concept is given the resulting type as the first parameter, followed by the specified parameters in the compound-requirement. { ++x } -> C<int> would substitute C<decltype((++x)), int> and check that concept C is satisfied for those parameters.
                                  • -
                                  -

                                  9.8.3 Advanced

                                  -

                                  See user-defined-literals.

                                  -

                                  9.9 Meta-error handling: static_assert

                                  -

                                  Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                                  -

                                  9.9.1 Overview

                                  -

                                  Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                                  - ---- - - - - - - - - - - - - - - - - - - - - -
                                  LevelObjectives
                                  FoundationalCalling static_assert with a constant expression
                                  MainUsing static_assert to detect contract violations and improve error messages
                                  Advanced
                                  -

                                  9.9.2 Motivation

                                  -

                                  Why is this important? Why do we want to learn/teach this topic?

                                  -

                                  static_assert allows the developer to enforce that conditions which can be checked during compilation will force build errors when violated. Additionally, they are the best mechanism by which a developer can pass useful information to other developers regarding what violation occurred or what must be done, instead.

                                  -

                                  9.9.3 Topic introduction

                                  -

                                  Very brief introduction to the topic.

                                  -

                                  static_assert is a compile-time evaluated function that asserts the truth of a supplied predicate, issuing an optional user-supplied error message if the predicate is false.

                                  -

                                  9.9.4 Foundational: Calling static_assert with a constant expression

                                  -

                                  9.9.4.1 Background/Required Knowledge

                                  -

                                  A student:

                                  -
                                    -
                                  • Should be able to explain the difference between code evaluated at compile-time and run-time
                                  • -
                                  • Should be able to cite some examples of compile-time known information, such as sizeof(T)
                                  • -
                                  -

                                  9.9.4.2 Student outcomes

                                  -

                                  A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                  -

                                  A student should be able to:

                                  -
                                    -
                                  1. Assert the expected size of a structure using static_assert
                                  2. -
                                  -

                                  9.9.4.3 Caveats

                                  -

                                  This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                  -

                                  9.9.4.4 Points to cover

                                  -

                                  This section lists important details for each point.

                                  -
                                    -
                                  • X
                                  • -
                                  • In addition to what is wrong, a good error message will inform the user of how to correct it
                                  • -
                                  -

                                  9.9.5 Main: Contracts and static_assert

                                  -

                                  9.9.5.1 Background/Required Knowledge

                                  -
                                    -
                                  • All of the above.
                                  • -
                                  • General understanding of compile-time requirements
                                  • -
                                  -

                                  9.9.5.2 Student outcomes

                                  -

                                  A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                  -

                                  A student should be able to:

                                  -
                                    -
                                  1. Utilize static_assert to verify preconditions of a meta-function
                                  2. -
                                  3. Utilize static_assert to verify the results of meta-functions for known values
                                  4. -
                                  -

                                  9.9.5.3 Caveats

                                  -

                                  This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                  -

                                  9.9.5.4 Points to cover

                                  -

                                  This section lists important details for each point.

                                  -
                                    -
                                  • When writing a meta-function, use static_assert to test the results
                                  • -
                                  • Write static_assert calls at the scope of the code they are guarding
                                  • -
                                  -
                                  template<typename T>
                                  -struct container {
                                  -    std::map<int, T> vals;
                                  -
                                  -    // Test location #1
                                  -    static_assert(
                                  -        std::is_default_constructible_v<T>,
                                  -        "container type T must be default constructible");i
                                  -
                                  -    void add(int key, T const& t) {
                                  -        // Test location #2
                                  -        static_assert(
                                  -            std::is_default_constructible_v<T>,
                                  -            "container type T must be default constructible");
                                  -        // std::map::operator[] requires default constructible type for 
                                  -        // the value. This will cause a build failure deep in the 
                                  -        // implementation of std::map, when T is not default constructible
                                  -        vals[key] = t;
                                  -    }
                                  -};
                                  -
                                  -struct NoDefCtor {
                                  -    NoDefCtor() = delete;
                                  -    NoDefCtor(double d) {}
                                  -};
                                  -
                                  -container<NoDefCtor> c; // If Test #1 was omitted, this would succeed
                                  -// This is ill-formed. Test #2 would catch this and provide a better 
                                  -// error message for the user
                                  -c.add(42, NoDefCtor(1.0)); 
                                  -

                                  9.9.6 Advanced

                                  -

                                  These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                                  -

                                  9.10 C++ object model: Declarations

                                  +

                                  9.7 Module name: Build systems

                                  Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                                  -

                                  9.10.1 Overview

                                  +

                                  9.7.1 Overview

                                  Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                                  @@ -1790,88 +1799,87 @@

                                  9.1

                                  - + - + - +
                                  FoundationalDeclaring variables— Knowledge about build systems
                                  MainDeclaring for programs— Usage of build system to compile a executable
                                  AdvancedSpecial cases and peculiarities— Add external libraries as a dependencies
                                  -

                                  9.10.2 Motivation

                                  +

                                  9.7.2 Motivation

                                  Why is this important? Why do we want to learn/teach this topic?

                                    -
                                  • Introduces a name and it’s type
                                  • -
                                  • int baz;
                                  • -
                                  • void bar();
                                  • -
                                  • class Foo;
                                  • +
                                  • Building complex C++ projects by hand is tricky
                                  • +
                                  • Build systems can help to resolve dependencies
                                  • +
                                  • Build systems can help do distribute C++ code and help other to compile the code
                                  • +
                                  • Build systems can help to find and include libraries as dependencies
                                  • +
                                  • Build systems faciliate project management
                                  • +
                                  • All major C++ projects are distributed with build systems
                                  -

                                  9.10.3 Topic introduction

                                  +

                                  9.7.3 Topic introduction

                                  Very brief introduction to the topic.

                                  -

                                  Introduce names and their associated type in a scope.

                                  -

                                  9.10.4 Foundational: Declaring variables

                                  -

                                  9.10.4.1 Background/Required Knowledge

                                  -

                                  A student:

                                  -
                                    -
                                  • is familiar with the basic C++ types: -
                                      -
                                    • bool (Boolean type)
                                    • -
                                    • int (Integer type)
                                    • -
                                    • double (Floating-point type)
                                    • -
                                  • -
                                  -

                                  9.10.4.2 Student outcomes

                                  +

                                  Build systems are used to configure, build, and install complex C++ projects.

                                  +

                                  9.7.4 Foundational: Knowledge about build systems

                                  +

                                  9.7.4.1 Background/Required Knowledge

                                  +

                                  A student: * Should know how to compile and link C++ programs

                                  +

                                  9.7.4.2 Student outcomes

                                  A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                  A student should be able to:

                                    -
                                  1. declare a variable with a specific type ‘int baz;’
                                  2. -
                                  3. declare a function ‘void bar();’
                                  4. -
                                  5. declare a class ‘class Foo;’
                                  6. -
                                  7. forward declare a user-defined type or a function
                                  8. -
                                  9. explain the difference between a definition and a declaration
                                  10. +
                                  11. To explain what a build system is
                                  12. +
                                  13. To explain that a build systems resolves dependencies
                                  14. +
                                  15. To explain that a build system supports compilation for different operating systems and architectures
                                  -

                                  9.10.4.3 Caveats

                                  +

                                  9.7.4.3 Caveats

                                  This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                  -

                                  No caveats at present.

                                  -

                                  9.10.4.4 Points to cover

                                  +

                                  None

                                  +

                                  9.7.4.4 Points to cover

                                  This section lists important details for each point.

                                  -

                                  9.10.5 Main: Declarations for programs

                                  -

                                  9.10.5.1 Background/Required Knowledge

                                  +
                                    +
                                  • Mention that many build systems are available for C++
                                  • +
                                  • Mention benefits and challenges
                                  • +
                                  • Build system help to only compile the C++ files with code changes and not the complete project
                                  • +
                                  +

                                  9.7.5 Main: Usage of build system to compile a executable

                                  +

                                  9.7.5.1 Background/Required Knowledge

                                  • All of the above.
                                  • -
                                  • Basic template syntax
                                  -

                                  9.10.5.2 Student outcomes

                                  -

                                  A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                  +

                                  9.7.5.2 Student outcomes

                                  A student should be able to:

                                    -
                                  1. create header and source files with a declaration in the former and definition of a variable/function in the latter
                                  2. -
                                  3. declare type aliases to introduce a type with an alternative name ‘using std::string;’
                                  4. -
                                  5. write a forward template declaration
                                  6. +
                                  7. Download a C++ package and build the package
                                  8. +
                                  9. Write a configuration file to compile a C++ executable
                                  10. +
                                  11. Pass compiler options via the build system
                                  12. +
                                  13. Use the build system to generate the executable
                                  14. +
                                  15. Write a configuration file to compile a library and link the library to a C++ executable
                                  -

                                  9.10.5.3 Caveats

                                  -

                                  This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                  +

                                  9.7.5.3 Caveats

                                  +

                                  The instructions are restricted to the chosen build system and not easily transferable.

                                  +

                                  9.7.5.4 Points to cover

                                    -
                                  • Declaring aliases can introduce name clashes
                                  • -
                                  • Prefer using declaration’s over using directives in header files [link]
                                  • -
                                  • The order of declarations dictates the order of initialization
                                  • +
                                  • Include paths to header files to the configuration
                                  • +
                                  • Adding compiler flags
                                  • +
                                  • How to build Release and Debug builds
                                  • +
                                  • Linking external libraries to the C++ project
                                  • +
                                  • Support compilation on different operating systems, compilers, and architectures
                                  -

                                  9.10.5.4 Points to cover

                                  -

                                  This section lists important details for each point.

                                  -

                                  9.10.6 Advanced

                                  +

                                  9.7.6 Advanced

                                  These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                                    -
                                  • asm declaration
                                  • -
                                  • using-enum-declaration
                                  • -
                                  • extern “C” declarations
                                  • +
                                  • How to build libraries
                                  • +
                                  • How to have external libraries be downloaded during the build process
                                  • +
                                  • Mention that build systems provide support for unit testing
                                  -

                                  9.11 C++ object model: Definitions

                                  +

                                  See user-defined-literals.

                                  +

                                  9.8 C++ object model: Definitions

                                  Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                                  -

                                  9.11.1 Overview

                                  +

                                  9.8.1 Overview

                                  Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                                  @@ -1899,7 +1907,7 @@

                                  9.

                                  -

                                  9.11.2 Motivation

                                  +

                                  9.8.2 Motivation

                                  Why is this important? Why do we want to learn/teach this topic?

                                  • A definition is a declaration that supplies all that is needed for a complete entity
                                  • @@ -1907,16 +1915,16 @@

                                  • void bar() { /* implementation */ }
                                  • class Foo { /* class body */ };
                                  -

                                  9.11.3 Topic introduction

                                  +

                                  9.8.3 Topic introduction

                                  Very brief introduction to the topic.

                                  A definition extends a declaration, providing all that is needed for a complete entity, e.g., allocate memory for variables, provide the implementation for functions, complete definitions of data and function members of a class.

                                  -

                                  9.11.4 Foundational: Defining variables and ODR

                                  -

                                  9.11.4.1 Background/Required Knowledge

                                  +

                                  9.8.4 Foundational: Defining variables and ODR

                                  +

                                  9.8.4.1 Background/Required Knowledge

                                  A student:

                                  -

                                  9.11.4.2 Student outcomes

                                  +

                                  9.8.4.2 Student outcomes

                                  A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                  A student should be able to:

                                    @@ -1925,42 +1933,42 @@

                                    9.11.4.3 Caveats

                                    +

                                    9.8.4.3 Caveats

                                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                    No caveats at present.

                                    -

                                    9.11.4.4 Points to cover

                                    +

                                    9.8.4.4 Points to cover

                                    This section lists important details for each point.

                                    • One definition rule (ODR)
                                    -

                                    9.11.5 Main: Defining for programs

                                    -

                                    9.11.5.1 Background/Required Knowledge

                                    +

                                    9.8.5 Main: Defining for programs

                                    +

                                    9.8.5.1 Background/Required Knowledge

                                    -

                                    9.11.5.2 Student outcomes

                                    +

                                    9.8.5.2 Student outcomes

                                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                    A student should be able to:

                                    1. organize variables, functions, classes into multiple translation units, describing interface with declarations and providing the implementations with definitions without violating ODR.
                                    2. distinguish between template declaration and definition
                                    -

                                    9.11.5.3 Caveats

                                    +

                                    9.8.5.3 Caveats

                                    This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                    • Putting a definition into a header file that is included more than once leads to ODR violations, possibly resulting in linker errors.
                                    -

                                    9.11.5.4 Points to cover

                                    +

                                    9.8.5.4 Points to cover

                                    This section lists important details for each point.

                                    -

                                    9.11.6 Advanced: Special cases and peculiarities

                                    +

                                    9.8.6 Advanced: Special cases and peculiarities

                                    These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                                    • ABI Incompatibilities: Different definitions of the same type in multiple object files can lead to subtle program errors.
                                    -

                                    9.12 C++ object model: copy semantics

                                    +

                                    9.9 C++ object model: copy semantics

                                    Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                                    -

                                    9.12.1 Overview

                                    +

                                    9.9.1 Overview

                                    Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                                    @@ -1988,17 +1996,17 @@

                                    9.

                                    -

                                    9.12.2 Motivation

                                    +

                                    9.9.2 Motivation

                                    Why is this important? Why do we want to learn/teach this topic?

                                    Copy semantics allows the user to define how objects of a class get replicated and interact on a value level.

                                    -

                                    9.12.3 Topic introduction

                                    +

                                    9.9.3 Topic introduction

                                    Very brief introduction to the topic.

                                    Explains when and how objects are copied.

                                    -

                                    9.12.4 Foundational: How and when are copies made

                                    -

                                    9.12.4.1 Background/Required Knowledge

                                    +

                                    9.9.4 Foundational: How and when are copies made

                                    +

                                    9.9.4.1 Background/Required Knowledge

                                    A student is able to: * explain what a C++ type is? [C++ object model: types] * explain what an object is? [C++ object model: objects], [C++ object model: constant objects] * define and understand class invariants?

                                    It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain special member functions [C++ object model: special member functions]

                                    -

                                    9.12.4.2 Student outcomes

                                    +

                                    9.9.4.2 Student outcomes

                                    A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                    A student should be able to:

                                      @@ -2012,12 +2020,12 @@

                                      9.12.4.3 Caveats

                                      +

                                      9.9.4.3 Caveats

                                      This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                      • Compiler-provided copy operations may result in ownership problems (e.g., char*). These ownership problems can generally be solved by using types whose copy operations have the appropriate semantics, e.g., std::string instead of char* to hold string values.
                                      -

                                      9.12.4.4 Points to cover

                                      +

                                      9.9.4.4 Points to cover

                                      This section lists important details for each point.

                                      • Principle of copying @@ -2032,14 +2040,14 @@

                                        9.12.5 Main: Implementing user-defined copy operations

                                        -

                                        9.12.5.1 Background/Required Knowledge

                                        +

                                        9.9.5 Main: Implementing user-defined copy operations

                                        +

                                        9.9.5.1 Background/Required Knowledge

                                        A student is able to: * identify special member functions [C++ object model: special member functions]

                                        It helps when a student is able to: * use move semantics [C++ object model: move semantics] * explain the rule of zero [C++ object model: rule-of-zero] * explain the rule of five [C++ object model: rule-of-five]

                                        -

                                        9.12.5.2 Student outcomes

                                        +

                                        9.9.5.2 Student outcomes

                                        A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                        A student should be able to: * explain when they have to implement the copy operations for their own type * Copy constructor * Copy assignment operator * implement copy operations for their own types * Optional: explain when copying with basic and strong exception guarantees is useful

                                        -

                                        9.12.5.3 Caveats

                                        +

                                        9.9.5.3 Caveats

                                        This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                        • Intricacies when implementing copy operations: @@ -2047,7 +2055,7 @@

                                          9
                                        • Examples of how not to write copy operations (e.g., C++03 std::auto_ptr)
                                      -

                                      9.12.5.4 Points to cover

                                      +

                                      9.9.5.4 Points to cover

                                      This section lists important details for each point.

                                      • Copy constructors and copy assignment operators @@ -2059,9 +2067,106 @@

                                        9.12.6 Advanced

                                        +

                                        9.9.6 Advanced

                                        These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                                        When can copies be elided and when does the standard guarantee copy elision. References: * Abseil tip of the Week #166 * cppreference - Copy elision

                                        +

                                        9.10 C++ object model: Declarations

                                        +

                                        Skeleton descriptions are typeset in italic text, so please don’t remove these descriptions when editing the topic.

                                        +

                                        9.10.1 Overview

                                        +

                                        Provides a short natural language abstract of the module’s contents. Specifies the different levels of teaching.

                                        + ++++ + + + + + + + + + + + + + + + + + + + + +
                                        LevelObjective
                                        FoundationalDeclaring variables
                                        MainDeclaring for programs
                                        AdvancedSpecial cases and peculiarities
                                        +

                                        9.10.2 Motivation

                                        +

                                        Why is this important? Why do we want to learn/teach this topic?

                                        +
                                          +
                                        • Introduces a name and it’s type
                                        • +
                                        • int baz;
                                        • +
                                        • void bar();
                                        • +
                                        • class Foo;
                                        • +
                                        +

                                        9.10.3 Topic introduction

                                        +

                                        Very brief introduction to the topic.

                                        +

                                        Introduce names and their associated type in a scope.

                                        +

                                        9.10.4 Foundational: Declaring variables

                                        +

                                        9.10.4.1 Background/Required Knowledge

                                        +

                                        A student:

                                        +
                                          +
                                        • is familiar with the basic C++ types: +
                                            +
                                          • bool (Boolean type)
                                          • +
                                          • int (Integer type)
                                          • +
                                          • double (Floating-point type)
                                          • +
                                        • +
                                        +

                                        9.10.4.2 Student outcomes

                                        +

                                        A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                        +

                                        A student should be able to:

                                        +
                                          +
                                        1. declare a variable with a specific type ‘int baz;’
                                        2. +
                                        3. declare a function ‘void bar();’
                                        4. +
                                        5. declare a class ‘class Foo;’
                                        6. +
                                        7. forward declare a user-defined type or a function
                                        8. +
                                        9. explain the difference between a definition and a declaration
                                        10. +
                                        +

                                        9.10.4.3 Caveats

                                        +

                                        This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                        +

                                        No caveats at present.

                                        +

                                        9.10.4.4 Points to cover

                                        +

                                        This section lists important details for each point.

                                        +

                                        9.10.5 Main: Declarations for programs

                                        +

                                        9.10.5.1 Background/Required Knowledge

                                        +
                                          +
                                        • All of the above.
                                        • +
                                        • Basic template syntax
                                        • +
                                        +

                                        9.10.5.2 Student outcomes

                                        +

                                        A list of things “a student should be able to” after the curriculum. The next word should be an action word and testable in an exam. Max 5 items.

                                        +

                                        A student should be able to:

                                        +
                                          +
                                        1. create header and source files with a declaration in the former and definition of a variable/function in the latter
                                        2. +
                                        3. declare type aliases to introduce a type with an alternative name ‘using std::string;’
                                        4. +
                                        5. write a forward template declaration
                                        6. +
                                        +

                                        9.10.5.3 Caveats

                                        +

                                        This section mentions subtle points to understand, like anything resulting in implementation-defined, unspecified, or undefined behavior.

                                        +
                                          +
                                        • Declaring aliases can introduce name clashes
                                        • +
                                        • Prefer using declaration’s over using directives in header files [link]
                                        • +
                                        • The order of declarations dictates the order of initialization
                                        • +
                                        +

                                        9.10.5.4 Points to cover

                                        +

                                        This section lists important details for each point.

                                        +

                                        9.10.6 Advanced

                                        +

                                        These are important topics that are not expected to be covered but provide guidance where one can continue to investigate this topic in more depth.

                                        +
                                          +
                                        • asm declaration
                                        • +
                                        • using-enum-declaration
                                        • +
                                        • extern “C” declarations
                                        • +

                                        See concepts.

                                        10 License

                                        [NOTE: This license is copied verbatim from the C++ Core Guidelines.]

                                        @@ -2109,7 +2214,9 @@

                                        10

                                        11 Contributors

                                        Christopher Di Bella
                                         Florian Sattler
                                        +Frank Birbacher
                                         Michael Adams
                                        +Patrick Diehl
                                         rwdougla

                                        12 How To Contribute

                                        Before attempting to contribute any content for consideration for inclusion in this document, please read the information below and and the referenced documents as appropriate.