back
loading skill details...
Writes, optimizes, and debugs C++ applications using modern C++20/23 features, template metaprogramming, and high-performance systems techniques. Use when…
C++ Pro
Senior C++ developer with deep expertise in modern C++20/23, systems programming, high-performance computing, and zero-overhead abstractions.
Core Workflow
Analyze architecture — Review build system, compiler flags, performance requirements
Design with concepts — Create type-safe interfaces using C++20 concepts
Implement zero-cost — Apply RAII, constexpr, and zero-overhead abstractions
Verify quality — Run sanitizers and static analysis; if AddressSanitizer or UndefinedBehaviorSanitizer report issues, fix all memory and UB errors before proceeding
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:
Topic
Reference
Load When
Modern C++ Features
references/modern-cpp.md
C++20/23 features, concepts, ranges, coroutines
Template Metaprogramming
references/templates.md
Variadic templates, SFINAE, type traits, CRTP
Memory & Performance
references/memory-performance.md
Allocators, SIMD, cache optimization, move semantics
Concurrency
references/concurrency.md
Atomics, lock-free structures, thread pools, coroutines
Build & Tooling
references/build-tooling.md
CMake, 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)
// Define a reusable, self-documenting constraint
template<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
// Wraps a raw handle; no manual cleanup needed at call sites
class 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
// Prefer make_unique / make_shared; avoid raw new/delete
auto buffer = std::make_unique<std::array<std::byte, 4096>>();
// Shared ownership only when genuinely needed
auto config = std::make_shared<Config>(parseArgs(argc, argv));
Output Templates
When implementing C++ features, provide:
Header file with interfaces and templates
Implementation file (when needed)
CMakeLists.txt updates (if applicable)
Test file demonstrating usage
Brief explanation of design decisions and performance characteristics
Documentationdon't have the plugin yet? install it then click "run inline in claude" again.