{"id":13419412,"url":"https://github.com/utilForever/modern-cpp-tutorial","last_synced_at":"2025-03-15T05:31:13.047Z","repository":{"id":27327172,"uuid":"30801678","full_name":"utilForever/modern-cpp-tutorial","owner":"utilForever","description":"A curated list of Modern C++ articles, examples, tutorials, frameworks, libraries, and shiny things.","archived":false,"fork":false,"pushed_at":"2017-03-30T09:24:45.000Z","size":7507,"stargazers_count":324,"open_issues_count":1,"forks_count":47,"subscribers_count":48,"default_branch":"master","last_synced_at":"2024-08-05T02:01:23.343Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/utilForever.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-02-14T16:28:42.000Z","updated_at":"2024-07-23T03:59:22.000Z","dependencies_parsed_at":"2022-08-05T04:30:49.771Z","dependency_job_id":null,"html_url":"https://github.com/utilForever/modern-cpp-tutorial","commit_stats":null,"previous_names":["utilforever/moderncpp"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/utilForever%2Fmodern-cpp-tutorial","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/utilForever%2Fmodern-cpp-tutorial/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/utilForever%2Fmodern-cpp-tutorial/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/utilForever%2Fmodern-cpp-tutorial/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/utilForever","download_url":"https://codeload.github.com/utilForever/modern-cpp-tutorial/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221541872,"owners_count":16840114,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-30T22:01:15.658Z","updated_at":"2024-10-26T14:31:45.386Z","avatar_url":"https://github.com/utilForever.png","language":"C++","readme":"\u003cimg src=\"https://github.com/utilForever/ModernCpp/blob/master/Logo.png\" align=\"right\" width=\"144\" height=\"144\" /\u003e\n\n# Modern C++\n\nA curated list of Modern C++ articles, examples, tutorials, frameworks, libraries, and shiny things.\n\n## Notice\n\n2017/03/01 - I'll add examples for C++17 features.\n\n## Articles\n\n### English → Korean\n\n[The Four Polymorphisms in C++](https://github.com/utilForever/ModernCpp/blob/master/Articles/The%20Four%20Polymorphisms%20in%20C%2B%2B.md)\n\n## Examples\n\n### Classes\n\n[polymorphism.cpp]() -  \n\n### Declaration\n\n[scoped_enum.cpp]() - \n\n### Exceptions\n\n[stack_unwinding1.cpp]() - \n\n[stack_unwinding2.cpp]() - \n\n[try_catch_throw1.cpp]() -\n\n[try_catch_throw2.cpp]() - \n\n### Expressions\n\n[operator_overloading.cpp]() - \n\n### Keywords\n\n[alignas.cpp]() - \n\n[const_cast.cpp]() - \n\n[default.cpp]() -\n\n[delete.cpp]() - \n\n[dynamic_cast.cpp]() - \n\n[nullptr.cpp]() - \n\n[reinterpret_cast.cpp]() - \n\n[static_cast.cpp]() - \n\n[typeid.cpp]() - \n\n### Libraries\n\n#### Thread support\n\n[async.cpp]() - \n\n[future.cpp]() -\n\n[promise.cpp]() - \n\n### Miscellaneous\n\n[RAII-rule_of_five.cpp]() - \n\n[RAII-rule_of_zero.cpp]() - \n\n### Templates\n\n[class_template.cpp]() - \n\n[function_template.cpp]() - \n\n## Tutorials\n\n### C++ Programming Basic Course Slides (presented by Korean)\n\n[1st Study: From C to C++ (1/4)](http://www.slideshare.net/utilforever/c-programming-1s-study)\n  - printf, scanf → cin, cout\n  - bool type\n  - auto keyword\n\n[2nd Study: From C to C++ (2/4)](http://www.slideshare.net/utilforever/c-programming-2nd-study)\n  - Range-based for\n  - malloc, free → new, delete\n  - NULL → nullptr\n  - static_cast\n\n[3rd Study: From C to C++ (3/4)](http://www.slideshare.net/utilforever/c-programming-3rd-study)\n  - Scoped enum\n  - Binary literal, separator\n  - std::string\n\n[4th Study: From C to C++ (4/4)](http://www.slideshare.net/utilforever/c-programming-4th-study)\n  - Reference\n  - Function overloading\n  - Namespace\n\n[5th Study: Object-Oriented Programming (1/8)](http://www.slideshare.net/utilforever/c-programming-5th-study)\n  - Class and object\n  - Access modifier: public, protected, private\n  - Information hiding, Encapsulation\n\n[6th Study: Object-Oriented Programming (2/8)](http://www.slideshare.net/utilforever/c-programming-6th-study)\n  - Constructor\n  - Destructor\n  - this pointer\n\n[7th Study: Object-Oriented Programming (3/8)](http://www.slideshare.net/utilforever/c-programming-7th-study)\n  - Copy constructor\n  - Copy assignment operator\n  - Shallow copy / deep copy\n  - Rule of zero / rule of three\n\n[8th Study: Object-Oriented Programming (4/8)](http://www.slideshare.net/utilforever/c-programming-8th-study)\n  - Member variable\n    - static\n    - const\n    - reference\n    - const reference\n  - Member function\n    - static\n    - const\n    - default parameter\n\n[9th Study: Object-Oriented Programming (5/8)](http://www.slideshare.net/utilforever/c-programming-9th-study)\n  - Inheritance\n  - Method overriding\n  - Something about superclasses\n  - Up / down casting\n\n[10th Study: Object-Oriented Programming (6/8)](http://www.slideshare.net/utilforever/c-programming-10th-study)\n  - Polymorphism\n  - Pure virtual method\n\n[11th Study: Object-Oriented Programming (7/8)](http://www.slideshare.net/utilforever/c-programming-11th-study)\n  - Operator Overloading\n\n[12th Study: Object-Oriented Programming (8/8)](http://www.slideshare.net/utilforever/c-programming-12th-study)\n  - Multiple inheritance\n  - vtable (virtual function table)\n  - RTTI(Run-Time Type Information)\n\n[13th Study: Exception Handling](http://www.slideshare.net/utilforever/c-programming-13th-study)\n  - Exception handling in C++\n  - try ~ catch ~ throw\n  - Standard exception classes\n  - Stack unwinding\n\n[14th Study: Generic Programming](http://www.slideshare.net/utilforever/c-programming-14th-study)\n  - Generic programming in C++\n  - Function template\n  - Class template\n\n[15th Study: TBA](...)\n\n### Basic Curriculum\n\n1. From C To C++\n  - (1st) printf, scanf -\u003e std::cin, std::cout\n  - (1st) bool type\n  - (1st) auto\n  - (2nd) Range-based for\n  - (2nd) malloc, free -\u003e new, delete\n  - (2nd) NULL -\u003e nullptr\n  - (2nd) Casting 1: static_cast \n  - (3rd) Scoped enum\n  - (3rd) Binary literal, Separator\n  - (3rd) std::string \n  - (4th) Reference\n  - (4th) Function overloading\n  - (4th) Namespace\n  - (TBD) decltype\n  - (TBD) Casting 2: dynamic_cast, const_cast, reinterpret_cast\n  - (TBD) typedef -\u003e type alias\n  - (TBD) Uniform initialization\n  - (TBD) Initializer list\n  - (TBD) Lambda expression\n  - (TBD) Lvalue / Rvalue reference\n  - (TBD) Move semantics\n  - (TBD) Perfect forwarding\n  - (TBD) Smart pointer: unique_ptr, shared_ptr, weak_ptr\n2. OOP: Object-Oriented Programming\n  - (5th) Class and Object\n  - (5th) Access modifier: public, protected, private\n  - (5th) Information hiding, Encapsulation\n  - (6th) Constructor\n  - (6th) Destructor\n  - (6th) this pointer\n  - (7th) Copy constructor\n  - (7th) Copy assignment operator\n  - (7th) Shallow copy, Deep copy\n  - (7th) Rule of zero, Rule of three\n  - (8th) Member variable: static / const / reference / const reference\n  - (8th) Method: static / const / method overloading / default parameter / inline\n  - (9th) Inheritance\n  - (9th) Method Overriding\n  - (9th) Something about superclasses\n  - (9th) Up / Down casting\n  - (10th) Polymorphism\n  - (10th) Pure virtual method\n  - (11th) Operator overloading\n  - (12th) Multiple inheritance\n  - (12th) vtable, RTTI\n  - (TBD) Special functions 3: Move constructor, Move assignment operator\n  - (TBD) Special functions 4: std::initializer_list constructor, Inheriting constructor\n  - (TBD) Rule of five\n  - (TBD) =default, =delete \n  - (TBD) explicit keyword\n  - (TBD) friend keyword\n  - (TBD) mutable\n  - (TBD) overriding keyword\n  - (TBD) final keyword\n  - (TBD) PIMPL\n3. Exception Handling\n  - (13th) Exception handling in C++\n  - (13th) try ~ catch ~ throw / throw list (noexcept)\n  - (13th) Standard exception classes\n  - (13th) Stack unwinding\n  - (TBD) Nested exception\n  - (TBD) Function-try-block\n4. Generic Programming: Template\n  - (14th) Generic programming in C++\n  - (14th) Function template\n  - (14th) Class template\n  - (TBD) Template specialization\n  - (TBD) Partial specialization\n  - (TBD) Template inheritance vs template specialization\n  - (TBD) Template aliases\n  - (TBD) decltype + auto\n  - (TBD) Function template\n  - (TBD) Template recursion\n  - (TBD) Variadic template\n  - (TBD) Variable template\n  - (TBD) Type inference\n  - (TBD) SFINAE\n  - (TBD) Template metaprogramming\n  - (TBD) Type traits\n  - (TBD) constexpr\n5. Concurrency: Multithreading Programming\n  - (TBD) Race condition, Deadlock\n  - (TBD) Atomic task\n  - (TBD) thread\n  - (TBD) mutex, lock, call_once\n  - (TBD) condition_variable\n  - (TBD) async\n  - (TBD) future, promise\n  - (TBD) Thread pool\n6. STL: Standard Library\n  - (TBD) vector, deque, list, array\n  - (TBD) queue, priority_queue, stack\n  - (TBD) pair, tuple, map, multimap, set, multiset\n  - (TBD) algorithm\n  - (TBD) function\n  - (TBD) forward_list\n  - (TBD) unordered_map, unordered_multimap, unordered_set, unordered_multiset\n  - (TBD) bitset\n  - (TBD) ratio\n  - (TBD) chrono\n  - (TBD) random\n  - (TBD) regular expression\n","funding_links":[],"categories":["TODO scan for Android support in followings","Awesome-Game","Awesome","C++"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FutilForever%2Fmodern-cpp-tutorial","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FutilForever%2Fmodern-cpp-tutorial","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FutilForever%2Fmodern-cpp-tutorial/lists"}