Difference between revisions of "CPlusPlus"
From Lost In Wonderlands
(→See also) |
(→C++ Testing) |
||
(110 intermediate revisions by the same user not shown) | |||
Line 10: | Line 10: | ||
* https://en.wikipedia.org/wiki/C%2B%2B | * https://en.wikipedia.org/wiki/C%2B%2B | ||
* http://www.open-std.org/jtc1/sc22/wg21/ | * http://www.open-std.org/jtc1/sc22/wg21/ | ||
+ | * https://isocpp.org/get-started | ||
+ | |||
+ | |||
+ | * C and C++ compatibility, https://en.wikipedia.org/wiki/Compatibility_of_C_and_C%2B%2B | ||
+ | |||
C++ Builder | C++ Builder | ||
Line 16: | Line 21: | ||
C++ Standard Library | C++ Standard Library | ||
* https://fr.wikipedia.org/wiki/Biblioth%C3%A8que_standard_du_C%2B%2B | * https://fr.wikipedia.org/wiki/Biblioth%C3%A8que_standard_du_C%2B%2B | ||
+ | === C++ Topics === | ||
+ | |||
+ | * [http://thbecker.net/articles/rvalue_references/section_01.html rValue] | ||
+ | * [https://accu.org/index.php/journals/227 lValue and rValue] | ||
+ | * [https://isocpp.org/blog/2012/11/universal-references-in-c11-scott-meyers &&] | ||
+ | * [https://en.wikipedia.org/wiki/Decltype Decltype] | ||
+ | * [https://boost-experimental.github.io/sml/cppnow-2019/#/ StateMachine] | ||
+ | * [https://www.moderncplusplus.com/why-you-should-always-use-a-virtual-destructor/ why-you-should-always-use-a-virtual-destructor] | ||
+ | |||
+ | ====Cpp Acronisms ==== | ||
+ | * [https://quuxplusone.github.io/blog/2019/08/02/the-tough-guide-to-cpp-acronyms/ list of acronyms ] | ||
+ | * [https://en.cppreference.com/w/cpp/language/acronyms cppreference acronyms] | ||
+ | |||
+ | ==== [https://www.fluentcpp.com/posts/ Fluent Cpp Topics] ==== | ||
+ | |||
+ | ==== auto ==== | ||
+ | * [https://docs.microsoft.com/en-us/cpp/cpp/welcome-back-to-cpp-modern-cpp?view=vs-2019$ auto in modern C++] | ||
+ | * [https://stackoverflow.com/questions/16949016/how-to-declare-array-with-auto how-to-declare-array-with-auto] | ||
+ | |||
+ | ==== Ranges ==== | ||
+ | * [https://docs.microsoft.com/en-us/cpp/cpp/range-based-for-statement-cpp?view=vs-2019 Range-based for Statement (C++)] | ||
+ | * [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0184r0.html range based statement for loops] | ||
+ | * [https://github.com/ericniebler/range-v3 a range library v3] | ||
+ | |||
+ | ==== SmartPointers ==== | ||
+ | * auto_ptr, deprecated since c++11, it was replaced by unique ptr | ||
+ | ** [https://stackoverflow.com/questions/3697686/why-is-auto-ptr-being-deprecated why-is-auto-ptr-being-deprecated] | ||
+ | |||
+ | |||
+ | *[https://www.internalpointers.com/post/beginner-s-look-smart-pointers-modern-c beginner-s-look-smart-pointers-modern-c++] | ||
+ | |||
+ | |||
+ | *[https://www.fluentcpp.com/2017/08/22/smart-developers-use-smart-pointers-smart-pointers-basics / knowing-your-smart-pointers series] | ||
+ | |||
+ | |||
+ | *[https://docs.microsoft.com/en-us/cpp/cpp/smart-pointers-modern-cpp?view=vs-2019 smart-pointers-modern-cpp] | ||
+ | **https://docs.microsoft.com/en-us/cpp/cpp/how-to-create-and-use-unique-ptr-instances?view=vs-2019 | ||
+ | *** https://docs.microsoft.com/en-us/cpp/standard-library/unique-ptr-class?view=vs-2019 | ||
+ | *[https://www.boost.org/doc/libs/1_36_0/libs/smart_ptr/smart_ptr.htm boost smart pointers] | ||
+ | ** https://docs.microsoft.com/en-us/cpp/cpp/how-to-create-and-use-shared-ptr-instances?view=vs-2019 | ||
+ | *** https://docs.microsoft.com/en-us/cpp/standard-library/shared-ptr-class?view=vs-2019 | ||
+ | ** https://docs.microsoft.com/en-us/cpp/cpp/how-to-create-and-use-weak-ptr-instances?view=vs-2019 | ||
+ | *** https://docs.microsoft.com/en-us/cpp/standard-library/weak-ptr-class?view=vs-2019 | ||
+ | |||
+ | ==== [https://en.wikipedia.org/wiki/Resource_acquisition_is_initialization RAII, Resource Acquisition is initialization Pattern] ==== | ||
+ | * [https://www.moderncplusplus.com/category/raii/ RAII and exceptions] | ||
+ | |||
+ | ==== Perfect Forwarding C++ Patterns ==== | ||
+ | * https://cpppatterns.com/patterns/perfect-forwarding.html | ||
+ | |||
+ | ==== Swap Values C++ Pattern ==== | ||
+ | * https://cpppatterns.com/patterns/swap-values.html | ||
+ | |||
+ | ==== more C++ Patterns ==== | ||
+ | * https://cpppatterns.com | ||
+ | |||
+ | ==== Exceptions ==== | ||
+ | * [https://www.fluentcpp.com/2017/07/04/multiple-error-handling-with-the-optional-monad-in-c/ multiple-error-handling-with-the-optional-monad-in-c] | ||
+ | * Why doesn't C++ provide a "finally" construct? | ||
+ | ** [https://stackoverflow.com/questions/161177/does-c-support-finally-blocks-and-whats-this-raii-i-keep-hearing-about, No, C++ does not support 'finally' blocks ] | ||
+ | ** [http://www.stroustrup.com/bs_faq2.html#finally Why doesn't C++ provide a "finally" construct? by Bjarne Stroustrup] | ||
+ | * cppreferences | ||
+ | ** https://en.cppreference.com/w/cpp/language/exceptions | ||
+ | ** https://en.cppreference.com/w/cpp/language/exceptions#cite_ref-1 | ||
+ | ** https://en.cppreference.com/w/cpp/language/exceptions#cite_ref-2 | ||
+ | ** https://en.cppreference.com/w/cpp/language/exceptions#cite_ref-3 | ||
+ | ** https://en.cppreference.com/w/cpp/language/exceptions#cite_ref-4 | ||
+ | ** https://en.cppreference.com/w/cpp/language/exceptions#cite_ref-5 | ||
+ | ** https://en.cppreference.com/w/cpp/language/exceptions#cite_ref-6 | ||
+ | ** https://en.cppreference.com/w/cpp/language/exceptions#cite_ref-7 | ||
+ | ** https://en.cppreference.com/w/cpp/language/exceptions#cite_ref-8 | ||
+ | ** https://en.cppreference.com/w/cpp/language/exceptions#cite_ref-9 | ||
+ | ** https://en.cppreference.com/w/cpp/language/exceptions#cite_ref-10 | ||
+ | ** https://en.cppreference.com/w/cpp/language/exceptions#cite_ref-11 | ||
+ | ** https://en.cppreference.com/w/cpp/language/exceptions#cite_ref-12 | ||
+ | ** https://en.cppreference.com/w/cpp/language/exceptions#cite_ref-13 | ||
+ | * isocpp.org | ||
+ | ** [https://isocpp.org/wiki/faq/exceptions exceptions] | ||
+ | *** [https://isocpp.org/wiki/faq/exceptions#what-to-catch what-to-catch] | ||
+ | *** [https://isocpp.org/wiki/faq/exceptions#what-to-throw what-to-throw] | ||
+ | *** [https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#e14-use-purpose-designed-user-defined-types-as-exceptions-not-built-in-types e14-use-purpose-designed-user-defined-types-as-exceptions-not-built-in-types] | ||
+ | *** [https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#e15-catch-exceptions-from-a-hierarchy-by-reference e15-catch-exceptions-from-a-hierarchy-by-reference] | ||
+ | *** [https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#i10-use-exceptions-to-signal-a-failure-to-perform-a-required-task i10-use-exceptions-to-signal-a-failure-to-perform-a-required-task] | ||
+ | * boost | ||
+ | ** [https://www.boost.org/community/error_handling.html error_handling] | ||
+ | ** [https://www.boost.org/community/exception_safety.html exception_safety] | ||
+ | *stdlib | ||
+ | ** [http://stroustrup.com/3rd_safe.pdf safe exceptions in stdlib] | ||
+ | * DrDobb's | ||
+ | ** [http://www.drdobbs.com/when-and-how-to-use-exceptions/184401836 Herb answers the question, "When, for what, and how should you use exceptions?] | ||
+ | *microsoft | ||
+ | ** [https://docs.microsoft.com/en-us/cpp/cpp/welcome-back-to-cpp-modern-cpp?view=vs-2019 welcome-back-to-cpp-modern-cpp] | ||
+ | ** [https://docs.microsoft.com/en-us/cpp/cpp/try-throw-and-catch-statements-cpp?view=vs-2019 try-throw-and-catch-statements-cpp] | ||
+ | ** [https://docs.microsoft.com/en-us/cpp/cpp/errors-and-exception-handling-modern-cpp?view=vs-2019 errors-and-exception-handling-modern-cp?] | ||
+ | ** [https://docs.microsoft.com/en-us/cpp/cpp/how-to-design-for-exception-safety?view=vs-2019 how-to-design-for-exception-safety] | ||
+ | ** [https://docs.microsoft.com/en-us/cpp/standard-library/thread-safety-in-the-cpp-standard-library?view=vs-2019 thread-safety-in-the-cpp-standard-library] | ||
+ | ** [https://docs.microsoft.com/en-us/cpp/cpp/exceptions-and-stack-unwinding-in-cpp?view=vs-2019 exceptions-and-stack-unwinding-in-cpp] | ||
+ | ** [https://docs.microsoft.com/en-us/cpp/cpp/how-to-interface-between-exceptional-and-non-exceptional-code?view=vs-2019 how-to-interface-between-exceptional-and-non-exceptional-code] | ||
+ | ** [https://docs.microsoft.com/en-us/cpp/cpp/lambda-expressions-in-cpp?view=vs-2019 lambda-expressions-in-cpp] | ||
+ | ** [https://docs.microsoft.com/en-us/cpp/standard-library/exception-class?view=vs-2019 exception-class] | ||
+ | ** [https://docs.microsoft.com/en-us/cpp/standard-library/stdexcept?view=vs-2019 stdexcept] | ||
+ | ** [https://docs.microsoft.com/en-us/cpp/cpp/cpp-language-reference?view=vs-2019 cpp-language-reference] | ||
+ | ** [https://docs.microsoft.com/en-us/cpp/standard-library/cpp-standard-library-reference?view=vs-2019 cpp-standard-library-reference] | ||
+ | |||
+ | ==== curried Objects ==== | ||
+ | * [https://www.fluentcpp.com/2019/05/03/curried-objects-in-cpp/ curried-objects-in-cpp] | ||
+ | * [http://www.laputan.org/pub/patterns/noble/noble.pdf curried objects] | ||
+ | |||
+ | ==== C++ templates ==== | ||
+ | * https://www.geeksforgeeks.org/templates-cpp/ | ||
+ | |||
+ | ==== C++ traits ==== | ||
+ | * [https://en.wikipedia.org/wiki/Trait_(computer_programming) traits] | ||
+ | * [https://accu.org/index.php/journals/442 c++ traits] | ||
+ | * [https://www.developpez.net/forums/d1864075/c-cpp/cpp/traits-cpp/ developpez.net] | ||
− | === C++ type Casting === | + | ==== C++ type Casting ==== |
* https://en.wikipedia.org/wiki/Type_conversion | * https://en.wikipedia.org/wiki/Type_conversion | ||
* https://en.wikipedia.org/wiki/Static_cast | * https://en.wikipedia.org/wiki/Static_cast | ||
Line 25: | Line 145: | ||
* https://stackoverflow.com/questions/28002/regular-cast-vs-static-cast-vs-dynamic-cast | * https://stackoverflow.com/questions/28002/regular-cast-vs-static-cast-vs-dynamic-cast | ||
− | ==== Qt Type Casting ==== | + | ===== Qt Type Casting ===== |
* https://stackoverflow.com/questions/4518163/how-does-qobject-cast-work | * https://stackoverflow.com/questions/4518163/how-does-qobject-cast-work | ||
+ | |||
+ | ==== [http://www.fluentcpp.com/STL/ Learning STL] ==== | ||
+ | |||
+ | |||
+ | ==== Ranges in C++ and STL ==== | ||
+ | * [https://www.fluentcpp.com/2018/04/13/moving-ranges-stl/ moving-ranges-stl} | ||
+ | * [https://www.fluentcpp.com/2019/05/31/the-difference-between-stdcopy_backward-and-stdcopy-with-reverse-iterators/ the-difference-between-stdcopy_backward-and-stdcopy-with-reverse-iterators] | ||
+ | * [https://www.fluentcpp.com/2017/03/28/inserting-several-elements-into-an-stl-container/ inserting-several-elements-into-an-stl-container] | ||
+ | *[https://www.fluentcpp.com/2017/04/21/how-to-split-a-string-in-c/ how-to-split-a-string-in-c] | ||
+ | |||
+ | ==== Maker functions in STL ==== | ||
+ | |||
+ | * make_ functiona re facility stl foos | ||
+ | ** [https://en.cppreference.com/mwiki/index.php?title=Special%3ASearch&search=make_ make_] | ||
+ | * https://docs.microsoft.com/en-us/cpp/standard-library/memory-functions?view=vs-2019#make_unique | ||
+ | * [https://en.cppreference.com/w/cpp/memory/unique_ptr/make_unique make_unique] | ||
+ | * [https://en.cppreference.com/w/cpp/memory/shared_ptr/make_shared make_shared] | ||
+ | |||
+ | |||
+ | ==== More C++ Idoms ==== | ||
+ | * https://en.wikibooks.org/wiki/More_C++_Idioms | ||
+ | * https://herbsutter.com/elements-of-modern-c-style/ | ||
+ | * https://cpptruths.blogspot.com/2007/08/new-book-on-c-idioms.html | ||
+ | |||
+ | === Boost === | ||
+ | * https://www.boost.org | ||
+ | |||
+ | |||
+ | === C++ API Design === | ||
+ | * [https://www.acodersjourney.com/top-25-cplusplus-api-design-mistakes-and-how-to-avoid-them/ top-25-cplusplus-api-design-mistakes-and-how-to-avoid-them] | ||
+ | |||
+ | ==== Qt API Design ==== | ||
+ | * [https://wiki.qt.io/API_Design_Principles Qt API_Design_Principles] | ||
+ | * [https://doc.qt.io/archives/qq/qq13-apis.html Qt archives qq13-apis.html] | ||
+ | * [https://people.mpi-inf.mpg.de/~jblanche/api-design.pdf jblanche/api-design.pdf] | ||
=== C++ Evolutions === | === C++ Evolutions === | ||
− | C++ 11 | + | ==== Support in compilers ==== |
+ | * [https://gcc.gnu.org/projects/cxx-status.html support in GCC] | ||
+ | * [http://clang.llvm.org/cxx_status.html support in Clang] | ||
+ | * [https://docs.microsoft.com/fr-fr/cpp/overview/visual-cpp-language-conformance?view=vs-2019 support in Visual C++] | ||
+ | |||
+ | ==== Static code analyzer tools ==== | ||
+ | * integrated in Visual Studio C++ | ||
+ | * clang power tools for visual studio | ||
+ | ** [https://marketplace.visualstudio.com/items?itemName=caphyon.ClangPowerTools ClangPowerTools] | ||
+ | * Clang in xCode | ||
+ | * http://cppcheck.net/ | ||
+ | |||
+ | ====ISOCPP==== | ||
+ | * https://isocpp.org/std/status | ||
+ | |||
+ | ====C++ 03==== | ||
+ | * https://en.wikipedia.org/wiki/C%2B%2B03 | ||
+ | |||
+ | ====C++ 11==== | ||
* https://fr.wikipedia.org/wiki/C%2B%2B11 | * https://fr.wikipedia.org/wiki/C%2B%2B11 | ||
+ | *https://herbsutter.com/elements-of-modern-c-style/ | ||
− | C++ 14 | + | ====C++ 14==== |
* https://fr.wikipedia.org/wiki/C%2B%2B14 | * https://fr.wikipedia.org/wiki/C%2B%2B14 | ||
− | C++ 17 | + | ====C++ 17==== |
+ | * https://en.wikipedia.org/wiki/C%2B%2B17 | ||
+ | * [ https://www.cppindetail.com c++ in details] | ||
+ | ====C++ 20==== | ||
+ | * https://en.wikipedia.org/wiki/C%2B%2B20 | ||
=== C++ Coding Styles === | === C++ Coding Styles === | ||
− | Iso C++ Coding Style | + | ==== [http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines Iso C++ Coding Style ] ==== |
− | + | ==== https://github.com/isocpp/CppCoreGuidelines Iso C++ Coding Style on Github ] ==== | |
− | + | ==== [https://github.com/cplusplus/draft C++ Coding Style on Github ] ==== | |
+ | ==== [https://isocpp.org/wiki/faq/coding-standards coding-standards] ==== | ||
+ | ==== [https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md c++ coding styles by Bjarne and Herb] ==== | ||
+ | ==== [https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Coding_Style Mozilla C++ Coding Style] ==== | ||
+ | ==== [https://google.github.io/styleguide/cppguide.html Google C++ Coding style] ==== | ||
+ | ==== [https://www.perforce.com/resources/qac/high-integrity-cpp-coding-standard high-integrity-cpp-coding-standard] ==== | ||
− | + | === C++ Portability === | |
− | + | ||
− | + | ====[https://developer.mozilla.org/en-US/docs/Mozilla/Using_CXX_in_Mozilla_code Using_CXX_in_Mozilla_code]==== | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
=== C++ Testing === | === C++ Testing === | ||
Line 64: | Line 242: | ||
* https://en.wikipedia.org/wiki/Google_Test | * https://en.wikipedia.org/wiki/Google_Test | ||
* https://github.com/google/googletest | * https://github.com/google/googletest | ||
+ | |||
+ | |||
+ | [[boost test]] | ||
+ | * https://www.boost.org/doc/libs/1_70_0/libs/test/doc/html/index.html | ||
+ | |||
+ | [[Catch2]] | ||
+ | *https://github.com/catchorg/Catch2 | ||
+ | |||
+ | == Improving your C++ == | ||
+ | * https://www.acodersjourney.com/top-10-c-header-file-mistakes-and-how-to-fix-them/ | ||
+ | * https://www.acodersjourney.com/6-tips-supercharge-cpp-11-vector-performance/ | ||
+ | https://www.acodersjourney.com/boost-c11-vector-performance/ | ||
+ | * https://www.acodersjourney.com/c-11-auto/ | ||
+ | * https://www.acodersjourney.com/top-10-dumb-mistakes-avoid-c-11-smart-pointers/ | ||
+ | * https://www.acodersjourney.com/top-15-c-exception-handling-mistakes-avoid/ | ||
+ | * https://www.acodersjourney.com/top-20-c-pointer-mistakes/ | ||
+ | * https://www.acodersjourney.com/top-20-cplusplus-multithreading-mistakes/ | ||
+ | * https://www.acodersjourney.com/insertion-sort/ | ||
+ | * https://www.acodersjourney.com/top-25-cplusplus-api-design-mistakes-and-how-to-avoid-them/ | ||
+ | |||
+ | |||
+ | * http://www.hlsl.co.uk/blog/2017/12/1/c-noexcept-and-move-constructors-effect-on-performance-in-stl-containers | ||
+ | |||
+ | == FAQ == | ||
+ | * [https://isocpp.org/faq isocpp FAQ] | ||
+ | * [https://www.toptal.com/c-plus-plus/top-10-common-c-plus-plus-developer-mistakes common c++ mistakes] | ||
== Tools == | == Tools == | ||
Line 72: | Line 276: | ||
** https://embed.cs.utah.edu/creduce/using/ | ** https://embed.cs.utah.edu/creduce/using/ | ||
** https://github.com/csmith-project/creduce | ** https://github.com/csmith-project/creduce | ||
+ | |||
+ | === compilers === | ||
+ | * https://clang.llvm.org | ||
+ | * https://llvm.org | ||
+ | * https://gcc.gnu.org | ||
=== IDE === | === IDE === | ||
* https://www.jetbrains.com/cpp/?gclid=CJblnPaN0dQCFcEp0wod50IDwA&gclsrc=aw.ds.ds&dclid=CIr4_faN0dQCFZc-GwodAhYCWg | * https://www.jetbrains.com/cpp/?gclid=CJblnPaN0dQCFcEp0wod50IDwA&gclsrc=aw.ds.ds&dclid=CIr4_faN0dQCFZc-GwodAhYCWg | ||
+ | * http://www.codeblocks.org | ||
+ | * https://www.kdevelop.org | ||
+ | * https://www.monodevelop.com | ||
+ | * https://visualstudio.microsoft.com/fr/ | ||
+ | * https://developer.apple.com/xcode/ | ||
=== on line compilers === | === on line compilers === | ||
* C++ Shell, http://www.cpp.sh | * C++ Shell, http://www.cpp.sh | ||
+ | * Compiler explorer, https://godbolt.org/z/e_Wfrd | ||
+ | |||
+ | == Articles == | ||
+ | * [https://weblog.rogueamoeba.com/2008/07/14/the-clang-static-analyzer/ the-clang-static-analyzer] | ||
== blogs == | == blogs == | ||
− | * [http:// | + | * [https://isocpp.org/get-started isocpp] |
+ | * [http://www.cplusplus.com/ cplusplus.com] | ||
* [http://en.cppreference.com/w/ cppReferences] | * [http://en.cppreference.com/w/ cppReferences] | ||
+ | * [https://www.acodersjourney.com/ a coders journey] | ||
+ | * [https://www.geeksforgeeks.org/ geeks for geeks] | ||
+ | * [https://codescracker.com/index.htm codescracker] | ||
+ | * [ http://www.cppforschool.com/projects.html cpp for school] | ||
+ | * [http://meetingcpp.com/index.php/books.html Meeting C++, a news site on C++ , new specifications] | ||
* [http://kdab.developpez.com/tutoriels/clazy/cpp-static-analysis/ cpp optimizing with static analysis tools] | * [http://kdab.developpez.com/tutoriels/clazy/cpp-static-analysis/ cpp optimizing with static analysis tools] | ||
* [http://guillaume.belz.free.fr/doku.php C++, Qt, OpenGL, CUDA] | * [http://guillaume.belz.free.fr/doku.php C++, Qt, OpenGL, CUDA] | ||
* [http://cppcast.com/2019/02/john-regehr/ cppcast john-regehr] | * [http://cppcast.com/2019/02/john-regehr/ cppcast john-regehr] | ||
+ | * [https://arne-mertz.de/2019/03/macro-evil/ Simplify C++] | ||
* [https://www.fluentcpp.com Fluent{C++}] | * [https://www.fluentcpp.com Fluent{C++}] | ||
Line 94: | Line 319: | ||
* [https://twitter.com/mvorbrodt/ Vorbrodt's C++ Blog] | * [https://twitter.com/mvorbrodt/ Vorbrodt's C++ Blog] | ||
* [https://www.aristeia.com/ Scott Meyer blog] | * [https://www.aristeia.com/ Scott Meyer blog] | ||
+ | * [https://interestingengineering.com/11-free-resources-for-learning-c-c-programming? 11 free resources for learning c++ programming] | ||
+ | * [https://philippegroarke.com/posts/2018/c++_ui_solutions/ philippegroarke solutions] | ||
+ | * [https://accu.org/index.php/journals/442https://accu.org/index.php/journals/442 accu.org] | ||
+ | * [https://solarianprogrammer.com solarian programmers' blog] | ||
+ | |||
+ | * [https://cplusplus.awesome-programming.com/en/awesome/cplusplus-02/community awesome-programming community] | ||
+ | * [https://awesomecpp.com/ awesome cpp] | ||
+ | ** [https://github.com/rigtorp/awesome-modern-cpp awesome cpp github] | ||
+ | * [https://baptiste-wicht.com/ Baptiste Wicht blog] | ||
+ | |||
+ | == Libraries == | ||
+ | * https://en.cppreference.com/w/cpp/links/libs | ||
+ | |||
+ | == source code == | ||
+ | |||
+ | === Gang Of Four Patterns === | ||
+ | * https://en.wikipedia.org/wiki/Design_Patterns | ||
+ | |||
+ | Several implementation of Above design patterns in C++ | ||
+ | * https://github.com/BartVandewoestyne/Design-Patterns-GoF | ||
+ | * https://github.com/zebmason/GoFRefactored/blob/master/README.md | ||
+ | * http://www.informit.com/articles/article.aspx?p=1404056 | ||
+ | * https://www.infoq.com/presentations/gof-patterns-c-plus-plus-boost/ | ||
+ | * http://www.c-jump.com/CIS75/Week11/ | ||
+ | * http://www.c-jump.com/Download/Patterns/Prototype/html/ | ||
+ | * https://github.com/wangqiang8511/C---Design-Patterns-Examples/ | ||
+ | * https://cpppatterns.com/ | ||
+ | |||
+ | === modern C++ === | ||
+ | * github search, https://github.com/search?q=modern+c%2B%2B | ||
+ | * JSON, https://github.com/nlohmann/json/releases/tag/v3.6.0 | ||
== tutorials == | == tutorials == | ||
* http://www.tutswing.com/cplusplus-home | * http://www.tutswing.com/cplusplus-home | ||
* http://www.dreamincode.net/forums/forum/48-c-tutorials/ | * http://www.dreamincode.net/forums/forum/48-c-tutorials/ | ||
+ | * https://cplusplus.awesome-programming.com/en/awesome/cplusplus-04/tutorial | ||
+ | * http://www.cppforschool.com/projects.html | ||
+ | * https://www.programiz.com/cpp-programming/examples | ||
+ | |||
+ | === awesome-programming.com === | ||
+ | * https://cplusplus.awesome-programming.com/en/awesome/cplusplus-03/course | ||
+ | * https://cplusplus.awesome-programming.com/en/awesome/cplusplus-04/tutorial | ||
+ | * https://cplusplus.awesome-programming.com/en/awesome/cplusplus-02/community | ||
+ | * https://cplusplus.awesome-programming.com/en/awesome/cplusplus-05/youtube | ||
== Books == | == Books == | ||
+ | * [https://www.wiley.com/en-us/Professional+C%2B%2B%2C+4th+Edition-p-9781119421306 Professional C++, Marc Gregroire, 4ieme Edition] | ||
+ | * [https://www.amazon.fr/17-Quick-Syntax-Reference-Language/dp/1484235991/ref=sr_1_1?__mk_fr_FR=%C3%85M%C3%85%C5%BD%C3%95%C3%91&keywords=syntax+C%2B%2B17&qid=1565180628&s=english-books&sr=1-1 C++17 Quick Syntax Reference, Mikael Olsson, APress] | ||
+ | * [http://www.allitebooks.org/c17-standard-library-quick-reference-2nd-edition/ C++17 Standard Library Quick Reference, , Peter Van Weert, Marc Gregroire, Apress] | ||
+ | * [http://www.allitebooks.org/safe-c/ Safe c++] | ||
+ | * [http://www.allitebooks.org/optimized-c/ Optimized C++] | ||
+ | * [http://www.allitebooks.com/clean-c/ Clean c++] | ||
+ | * [https://www.amazon.fr/High-Performance-Boost-optimize-performance/dp/1787120953/ref=sr_1_3?__mk_fr_FR=%C3%85M%C3%85%C5%BD%C3%95%C3%91&keywords=C%2B%2B17&qid=1565180548&s=english-books&sr=1-3 C++ High Performance: Boost and optimize the performance of your C++17 code, Viktor Sehr, Bjorn Andrist, Packt] | ||
+ | * [http://www.allitebooks.com/beginning-c17-5th-edition/ beginning c++17-5th-edition] | ||
+ | * Effective Modern C++ | ||
* Effective C++ | * Effective C++ | ||
* More Effective c++ | * More Effective c++ | ||
* [https://www.amazon.com/Effective-Modern-Specific-Ways-Improve/dp/1491903996 Effective Modern C++] | * [https://www.amazon.com/Effective-Modern-Specific-Ways-Improve/dp/1491903996 Effective Modern C++] | ||
* [https://www.artima.com/shop/effective_cpp_in_an_embedded_environment effective_cpp_in_an_embedded_environment] | * [https://www.artima.com/shop/effective_cpp_in_an_embedded_environment effective_cpp_in_an_embedded_environment] | ||
− | |||
* Exceptional C++ | * Exceptional C++ | ||
− | * More | + | * More Exceptional C++ |
− | + | ||
* Modern C++ | * Modern C++ | ||
− | * | + | * [http://www.allitebooks.org/exploring-c-11-2nd-edition/ Exploring c++11] |
* [https://nostarch.com/cppcrashcourse c++ crash course (no starch press)] | * [https://nostarch.com/cppcrashcourse c++ crash course (no starch press)] | ||
* [http://www.allitebooks.com/c-concurrency-in-action-2nd-edition/ c++ concurrency in action-2nd-edition] | * [http://www.allitebooks.com/c-concurrency-in-action-2nd-edition/ c++ concurrency in action-2nd-edition] | ||
− | |||
− | |||
* [http://www.allitebooks.com/modern-c-programming-with-test-driven-development/ modern c programming with test driven development] | * [http://www.allitebooks.com/modern-c-programming-with-test-driven-development/ modern c programming with test driven development] | ||
* [http://www.allitebooks.com/exploring-c/ exploring c++] | * [http://www.allitebooks.com/exploring-c/ exploring c++] | ||
* [http://www.allitebooks.com/options-and-derivatives-programming-in-c/ options-and-derivatives-programming-in-c++] | * [http://www.allitebooks.com/options-and-derivatives-programming-in-c/ options-and-derivatives-programming-in-c++] |
Latest revision as of 13:15, 22 March 2021
Contents
- 1 C++ programming Language
- 1.1 See also
- 1.2 C++
- 1.2.1 C++ Topics
- 1.2.1.1 Cpp Acronisms
- 1.2.1.2 Fluent Cpp Topics
- 1.2.1.3 auto
- 1.2.1.4 Ranges
- 1.2.1.5 SmartPointers
- 1.2.1.6 RAII, Resource Acquisition is initialization Pattern
- 1.2.1.7 Perfect Forwarding C++ Patterns
- 1.2.1.8 Swap Values C++ Pattern
- 1.2.1.9 more C++ Patterns
- 1.2.1.10 Exceptions
- 1.2.1.11 curried Objects
- 1.2.1.12 C++ templates
- 1.2.1.13 C++ traits
- 1.2.1.14 C++ type Casting
- 1.2.1.15 Learning STL
- 1.2.1.16 Ranges in C++ and STL
- 1.2.1.17 Maker functions in STL
- 1.2.1.18 More C++ Idoms
- 1.2.2 Boost
- 1.2.3 C++ API Design
- 1.2.4 C++ Evolutions
- 1.2.5 C++ Coding Styles
- 1.2.5.1 Iso C++ Coding Style
- 1.2.5.2 https://github.com/isocpp/CppCoreGuidelines Iso C++ Coding Style on Github ]
- 1.2.5.3 C++ Coding Style on Github
- 1.2.5.4 coding-standards
- 1.2.5.5 c++ coding styles by Bjarne and Herb
- 1.2.5.6 Mozilla C++ Coding Style
- 1.2.5.7 Google C++ Coding style
- 1.2.5.8 high-integrity-cpp-coding-standard
- 1.2.6 C++ Portability
- 1.2.7 C++ Testing
- 1.2.1 C++ Topics
- 1.3 Improving your C++
- 1.4 FAQ
- 1.5 Tools
- 1.6 Articles
- 1.7 blogs
- 1.8 Libraries
- 1.9 source code
- 1.10 tutorials
- 1.11 Books
C++ programming Language
See also
C++
- http://www.cplusplus.com/
- https://en.wikipedia.org/wiki/C%2B%2B
- http://www.open-std.org/jtc1/sc22/wg21/
- https://isocpp.org/get-started
- C and C++ compatibility, https://en.wikipedia.org/wiki/Compatibility_of_C_and_C%2B%2B
C++ Builder
C++ Standard Library
C++ Topics
Cpp Acronisms
Fluent Cpp Topics
auto
Ranges
SmartPointers
- auto_ptr, deprecated since c++11, it was replaced by unique ptr
- smart-pointers-modern-cpp
- boost smart pointers
RAII, Resource Acquisition is initialization Pattern
Perfect Forwarding C++ Patterns
Swap Values C++ Pattern
more C++ Patterns
Exceptions
- multiple-error-handling-with-the-optional-monad-in-c
- Why doesn't C++ provide a "finally" construct?
- cppreferences
- https://en.cppreference.com/w/cpp/language/exceptions
- https://en.cppreference.com/w/cpp/language/exceptions#cite_ref-1
- https://en.cppreference.com/w/cpp/language/exceptions#cite_ref-2
- https://en.cppreference.com/w/cpp/language/exceptions#cite_ref-3
- https://en.cppreference.com/w/cpp/language/exceptions#cite_ref-4
- https://en.cppreference.com/w/cpp/language/exceptions#cite_ref-5
- https://en.cppreference.com/w/cpp/language/exceptions#cite_ref-6
- https://en.cppreference.com/w/cpp/language/exceptions#cite_ref-7
- https://en.cppreference.com/w/cpp/language/exceptions#cite_ref-8
- https://en.cppreference.com/w/cpp/language/exceptions#cite_ref-9
- https://en.cppreference.com/w/cpp/language/exceptions#cite_ref-10
- https://en.cppreference.com/w/cpp/language/exceptions#cite_ref-11
- https://en.cppreference.com/w/cpp/language/exceptions#cite_ref-12
- https://en.cppreference.com/w/cpp/language/exceptions#cite_ref-13
- isocpp.org
- boost
- stdlib
- DrDobb's
- microsoft
- welcome-back-to-cpp-modern-cpp
- try-throw-and-catch-statements-cpp
- errors-and-exception-handling-modern-cp?
- how-to-design-for-exception-safety
- thread-safety-in-the-cpp-standard-library
- exceptions-and-stack-unwinding-in-cpp
- how-to-interface-between-exceptional-and-non-exceptional-code
- lambda-expressions-in-cpp
- exception-class
- stdexcept
- cpp-language-reference
- cpp-standard-library-reference
curried Objects
C++ templates
C++ traits
C++ type Casting
- https://en.wikipedia.org/wiki/Type_conversion
- https://en.wikipedia.org/wiki/Static_cast
- https://en.wikipedia.org/wiki/Type_punning
- https://fr.wikipedia.org/wiki/Dynamic_cast
- https://openclassrooms.com/courses/c-les-conversions-de-types
- https://stackoverflow.com/questions/28002/regular-cast-vs-static-cast-vs-dynamic-cast
Qt Type Casting
Learning STL
Ranges in C++ and STL
- [https://www.fluentcpp.com/2018/04/13/moving-ranges-stl/ moving-ranges-stl}
- the-difference-between-stdcopy_backward-and-stdcopy-with-reverse-iterators
- inserting-several-elements-into-an-stl-container
- how-to-split-a-string-in-c
Maker functions in STL
- make_ functiona re facility stl foos
- https://docs.microsoft.com/en-us/cpp/standard-library/memory-functions?view=vs-2019#make_unique
- make_unique
- make_shared
More C++ Idoms
- https://en.wikibooks.org/wiki/More_C++_Idioms
- https://herbsutter.com/elements-of-modern-c-style/
- https://cpptruths.blogspot.com/2007/08/new-book-on-c-idioms.html
Boost
C++ API Design
Qt API Design
C++ Evolutions
Support in compilers
Static code analyzer tools
- integrated in Visual Studio C++
- clang power tools for visual studio
- Clang in xCode
- http://cppcheck.net/
ISOCPP
C++ 03
C++ 11
C++ 14
C++ 17
- https://en.wikipedia.org/wiki/C%2B%2B17
- [ https://www.cppindetail.com c++ in details]
C++ 20
C++ Coding Styles
Iso C++ Coding Style
https://github.com/isocpp/CppCoreGuidelines Iso C++ Coding Style on Github ]
C++ Coding Style on Github
coding-standards
c++ coding styles by Bjarne and Herb
Mozilla C++ Coding Style
Google C++ Coding style
high-integrity-cpp-coding-standard
C++ Portability
Using_CXX_in_Mozilla_code
C++ Testing
- https://en.wikipedia.org/wiki/CppUnit
- https://sourceforge.net/projects/cppunit/
- https://freedesktop.org/wiki/Software/cppunit/
- https://freedesktop.org/wiki/Software/cppunit/
Improving your C++
- https://www.acodersjourney.com/top-10-c-header-file-mistakes-and-how-to-fix-them/
- https://www.acodersjourney.com/6-tips-supercharge-cpp-11-vector-performance/
https://www.acodersjourney.com/boost-c11-vector-performance/
- https://www.acodersjourney.com/c-11-auto/
- https://www.acodersjourney.com/top-10-dumb-mistakes-avoid-c-11-smart-pointers/
- https://www.acodersjourney.com/top-15-c-exception-handling-mistakes-avoid/
- https://www.acodersjourney.com/top-20-c-pointer-mistakes/
- https://www.acodersjourney.com/top-20-cplusplus-multithreading-mistakes/
- https://www.acodersjourney.com/insertion-sort/
- https://www.acodersjourney.com/top-25-cplusplus-api-design-mistakes-and-how-to-avoid-them/
FAQ
Tools
Others
- C Reduce
compilers
IDE
- https://www.jetbrains.com/cpp/?gclid=CJblnPaN0dQCFcEp0wod50IDwA&gclsrc=aw.ds.ds&dclid=CIr4_faN0dQCFZc-GwodAhYCWg
- http://www.codeblocks.org
- https://www.kdevelop.org
- https://www.monodevelop.com
- https://visualstudio.microsoft.com/fr/
- https://developer.apple.com/xcode/
on line compilers
- C++ Shell, http://www.cpp.sh
- Compiler explorer, https://godbolt.org/z/e_Wfrd
Articles
blogs
- isocpp
- cplusplus.com
- cppReferences
- a coders journey
- geeks for geeks
- codescracker
- [ http://www.cppforschool.com/projects.html cpp for school]
- Meeting C++, a news site on C++ , new specifications
- cpp optimizing with static analysis tools
- C++, Qt, OpenGL, CUDA
- cppcast john-regehr
- Simplify C++
- comp.lang.c++
- cpp_questions
- Vorbrodt's C++ Blog
- Scott Meyer blog
- 11 free resources for learning c++ programming
- philippegroarke solutions
- accu.org
- solarian programmers' blog
Libraries
source code
Gang Of Four Patterns
Several implementation of Above design patterns in C++
- https://github.com/BartVandewoestyne/Design-Patterns-GoF
- https://github.com/zebmason/GoFRefactored/blob/master/README.md
- http://www.informit.com/articles/article.aspx?p=1404056
- https://www.infoq.com/presentations/gof-patterns-c-plus-plus-boost/
- http://www.c-jump.com/CIS75/Week11/
- http://www.c-jump.com/Download/Patterns/Prototype/html/
- https://github.com/wangqiang8511/C---Design-Patterns-Examples/
- https://cpppatterns.com/
modern C++
- github search, https://github.com/search?q=modern+c%2B%2B
- JSON, https://github.com/nlohmann/json/releases/tag/v3.6.0
tutorials
- http://www.tutswing.com/cplusplus-home
- http://www.dreamincode.net/forums/forum/48-c-tutorials/
- https://cplusplus.awesome-programming.com/en/awesome/cplusplus-04/tutorial
- http://www.cppforschool.com/projects.html
- https://www.programiz.com/cpp-programming/examples
awesome-programming.com
- https://cplusplus.awesome-programming.com/en/awesome/cplusplus-03/course
- https://cplusplus.awesome-programming.com/en/awesome/cplusplus-04/tutorial
- https://cplusplus.awesome-programming.com/en/awesome/cplusplus-02/community
- https://cplusplus.awesome-programming.com/en/awesome/cplusplus-05/youtube
Books
- Professional C++, Marc Gregroire, 4ieme Edition
- C++17 Quick Syntax Reference, Mikael Olsson, APress
- C++17 Standard Library Quick Reference, , Peter Van Weert, Marc Gregroire, Apress
- Safe c++
- Optimized C++
- Clean c++
- C++ High Performance: Boost and optimize the performance of your C++17 code, Viktor Sehr, Bjorn Andrist, Packt
- beginning c++17-5th-edition
- Effective Modern C++
- Effective C++
- More Effective c++
- Effective Modern C++
- effective_cpp_in_an_embedded_environment
- Exceptional C++
- More Exceptional C++
- Modern C++
- Exploring c++11
- c++ crash course (no starch press)
- c++ concurrency in action-2nd-edition
- modern c programming with test driven development
- exploring c++
- options-and-derivatives-programming-in-c++