Cpp Pro

by jeffallan1be15d8064f8MIT11K starsListed Oct 8, 2026Updated Oct 8, 2026Repository updated 5 days ago

Writes, optimizes, and debugs C++ applications using modern C++20/23 features, template metaprogramming, and high-performance systems techniques. Use when building or refactoring C++ code requiring concepts, ranges, coroutines, SIMD optimization, or careful memory management — or when addressing performance bottlenecks, concurrency issues, and build system configuration with CMake.

Instructions onlySoftware Development
AI-generated overview

Guides writing, optimizing, and debugging modern C++20/23 code with concepts, RAII, SIMD, concurrency, and CMake.

What it does
This skill provides senior-level C++ guidance covering modern C++20/23 features, template metaprogramming, memory and performance optimization, concurrency, and build tooling. It defines a workflow from architecture analysis through concept-based design, implementation, sanitizer verification, and benchmarking. It also supplies coding constraints, key patterns such as concepts, RAII wrappers, and smart pointer ownership, plus output templates for headers, implementation files, CMake updates, and tests. Reference documents on modern C++, templates, memory/performance, concurrency, and build tooling are loaded by context.
When to use it
Use it when building or refactoring C++ code that needs concepts, ranges, coroutines, SIMD optimization, or careful memory management. It also fits work on performance bottlenecks, concurrency issues, and CMake build configuration.
Requirements
No scripts are included; it is instructions and reference documents only. It assumes a C++ toolchain with a C++20/23-capable compiler, CMake, sanitizers such as AddressSanitizer and UndefinedBehaviorSanitizer, static analysis tools, and benchmarking/profiling tools.

C++ Pro

Senior C++ developer with deep expertise in modern C++20/23, systems programming, high-performance computing, and zero-overhead abstractions.

Core Workflow

  1. Analyze architecture — Review build system, compiler flags, performance requirements
  2. Design with concepts — Create type-safe interfaces using C++20 concepts
  3. Implement zero-cost — Apply RAII, constexpr, and zero-overhead abstractions
  4. Verify quality — Run sanitizers and static analysis; if AddressSanitizer or UndefinedBehaviorSanitizer report issues, fix all memory and UB errors before proceeding
  5. Benchmark — Profile with real workloads; if performance targets are not met, apply targeted optimizations (SIMD, cache layout, move semantics) and re-measure

Reference Guide

Load detailed guidance based on context:

TopicReferenceLoad When
Modern C++ Featuresreferences/modern-cpp.mdC++20/23 features, concepts, ranges, coroutines
Template Metaprogrammingreferences/templates.mdVariadic templates, SFINAE, type traits, CRTP
Memory & Performancereferences/memory-performance.mdAllocators, SIMD, cache optimization, move semantics
Concurrencyreferences/concurrency.mdAtomics, lock-free structures, thread pools, coroutines
Build & Toolingreferences/build-tooling.mdCMake, sanitizers, static analysis, testing

Constraints

MUST DO

  • Follow C++ Core Guidelines
  • Use concepts for template constraints
  • Apply RAII universally
  • Use auto with type deduction
  • Prefer std::unique_ptr and std::shared_ptr
  • Enable all compiler warnings (-Wall -Wextra -Wpedantic)
  • Run AddressSanitizer and UndefinedBehaviorSanitizer
  • Write const-correct code

MUST NOT DO

  • Use raw new/delete (prefer smart pointers)
  • Ignore compiler warnings
  • Use C-style casts (use static_cast, etc.)
  • Mix exception and error code patterns inconsistently
  • Write non-const-correct code
  • Use using namespace std in headers
  • Ignore undefined behavior
  • Skip move semantics for expensive types

Key Patterns

Concept Definition (C++20)

cpp
// Define a reusable, self-documenting constrainttemplate<typename T>concept Numeric = std::integral<T> || std::floating_point<T>;
template<Numeric T>T clamp(T value, T lo, T hi) {    return std::clamp(value, lo, hi);}

RAII Resource Wrapper

cpp
// Wraps a raw handle; no manual cleanup needed at call sitesclass FileHandle {public:    explicit FileHandle(const char* path)        : handle_(std::fopen(path, "r")) {        if (!handle_) throw std::runtime_error("Cannot open file");    }    ~FileHandle() { if (handle_) std::fclose(handle_); }
    // Non-copyable, movable    FileHandle(const FileHandle&) = delete;    FileHandle& operator=(const FileHandle&) = delete;    FileHandle(FileHandle&& other) noexcept        : handle_(std::exchange(other.handle_, nullptr)) {}
    std::FILE* get() const noexcept { return handle_; }private:    std::FILE* handle_;};

Smart Pointer Ownership

cpp
// Prefer make_unique / make_shared; avoid raw new/deleteauto buffer = std::make_unique<std::array<std::byte, 4096>>();
// Shared ownership only when genuinely neededauto config = std::make_shared<Config>(parseArgs(argc, argv));

Output Templates

When implementing C++ features, provide:

  1. Header file with interfaces and templates
  2. Implementation file (when needed)
  3. CMakeLists.txt updates (if applicable)
  4. Test file demonstrating usage
  5. Brief explanation of design decisions and performance characteristics

Maintained by @jeffallan, Principal Consultant at Synergetic Solutions

Documentation

Source and attribution

Source:jeffallan/claude-skillsinskills/cpp-proat commit1be15d8

License: MIT

Content belongs to its original authors. SourceWeft indexes it from a public repository.

Report or request removal