C++ Decision Trees
Not sure which tool or technique to use? These guides walk you through the decision.
Which C++ build system should I use?
Decision guide for choosing between CMake, Meson, Bazel, xmake, and other C++ build systems.
Which C++ compiler should I use?
Decision guide for choosing between GCC, Clang, MSVC, Intel icx, and AppleClang based on platform, features, and performance needs.
Which Container?
Decision guide for choosing between vector, deque, list, array, map, unordered_map, set, and other STL containers.
Which C++ debugger should I use?
Decision guide for choosing between GDB, LLDB, rr, WinDbg, and IDE-integrated debuggers based on platform, use case, and features.
Which Error Handling Strategy?
Decision guide for choosing between exceptions, std::expected, std::optional, error codes, and outcome/result types in C++.
Which C++ IDE Should I Use?
Decision guide for choosing a C++ IDE or editor — VS Code + clangd, CLion, Visual Studio, Qt Creator, Vim/Neovim, and Emacs with LSP.
Which C++ package manager should I use?
Decision guide for choosing between vcpkg, Conan, Hunter, CPM, and other C++ dependency managers.
Which Profiler Should I Use?
Choose the right C++ profiler — Tracy vs perf vs Valgrind Callgrind vs gprof vs VTune, based on platform, workload type, and what you're measuring.
Which sanitizer should I use?
Decision guide for choosing between AddressSanitizer, UBSan, ThreadSanitizer, MemorySanitizer, and LeakSanitizer.
Which Smart Pointer?
Decision guide for choosing between unique_ptr, shared_ptr, weak_ptr, and raw pointers in C++.
Which Static Analyzer Should I Use?
Choose the right C++ static analyzer — clang-tidy, cppcheck, PVS-Studio, Coverity, Infer, SonarQube — based on budget, CI integration, and what you're finding.
Which String Type to Use?
Decision guide for choosing between std::string, std::string_view, const char*, std::string_view literals, and owning vs non-owning string types in C++.
Which C++ test framework should I use?
Decision guide for choosing between Google Test, Catch2, doctest, Boost.Test, and other C++ testing frameworks.