plugins/languages/cpp/skills/core/SKILL.md
C++ language core conventions covering C++17/20/23 standard features, C++26 progress, modern idioms, coding style, RAII basics, and build defaults. Use when writing, reviewing, refactoring, or debugging any C++ source. Also triggers on "C++ 标准", "C++20", "C++23", "C++26 reflection", "deducing this", "std::expected", "std::print", "std::generator", "ranges", "concepts", "modules", "三向比较", "auto operator<=>", "C++ 编译警告".
npx skillsauth add lazygophers/ccplugin cpp-coreInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
C++17 / C++20 / C++23 强制基线,并跟踪 C++26(2026 年定稿)。所有其它 cpp skill 在本文之上做领域细化。
| 主题 | 跳转 |
|------|------|
| 内存所有权 / RAII / 智能指针 | cpp-memory |
| 线程 / 协程 / 原子 | cpp-concurrency |
| 模板 / concepts / 元编程 | cpp-template |
| 缓存 / SIMD / 零拷贝 | cpp-performance |
| CMake / Conan / vcpkg / 静态分析 | cpp-tooling |
-std=c++23;C++26 实验特性走编译器 feature-test 宏保护(__cpp_impl_reflection, __cpp_contracts 等)。-Wall -Wextra -Werror -Wpedantic -Wshadow -Wconversion -Wnon-virtual-dtor -Wold-style-cast -Wcast-align -Woverloaded-virtual。std::unique_ptr 默认所有权;std::shared_ptr 仅共享;裸 new/delete、malloc/free、裸 owning 指针一律禁止。enable_if。std::expected<T, E>(C++23)或 std::optional<T>,例外情形才用 exception。std::print / std::println / std::format(C++23),禁 printf 与 iostream 格式化。std::span / std::string_view / std::mdspan,零拷贝传参。auto operator<=>(const T&) const = default; 实现三向比较。static_cast / const_cast / reinterpret_cast / std::bit_cast。constexpr / consteval / inline / concept。.cpp/.h/.hpp ≤ 600 行(推荐 200–400)。| 特性 | 语法 | 用途 |
|------|------|------|
| 结构化绑定 | auto [k, v] = *it; | 多返回值解构 |
| std::optional / std::variant | std::optional<T> | 可空与和类型 |
| std::string_view | void f(std::string_view s) | 零拷贝字符串参数 |
| if constexpr | if constexpr (cond) ... | 模板分支 |
| 折叠表达式 | (args + ...) | 变长模板归约 |
| 类模板实参推导 (CTAD) | std::pair p{1, 3.14}; | 省略模板参数 |
| 并行算法 | std::sort(std::execution::par, ...) | 标准并行 |
| 特性 | 语法 | 用途 |
|------|------|------|
| Concepts | template<std::integral T> | 模板约束、清晰错误 |
| Ranges / Views | data \| views::filter(p) \| views::transform(f) | 函数式管道 |
| Coroutines | co_await, co_yield, co_return | 异步与生成器 |
| Modules | import std; / export module mylib; | 替代头文件 |
| 三向比较 | auto operator<=>(const T&) const = default; | 自动生成全部关系运算 |
| std::format | std::format("{:.2f}", 3.14) | 类型安全格式化 |
| std::span | void process(std::span<const int>) | 非所有权连续视图 |
| std::jthread | std::jthread t(fn); | 自动 join + stop_token |
| std::latch / std::barrier | std::latch done(n); | 一次性 / 可复用同步 |
| consteval | consteval int f(int) | 强制编译期 |
| [[likely]] / [[unlikely]] | 分支提示 | 减少误预测 |
| [[no_unique_address]] | 空成员压缩 | 减小布局 |
| 特性 | 语法 | 用途 |
|------|------|------|
| std::expected<T, E> | std::expected<int, Error> parse(str); | 可预期错误 |
| std::print / std::println | std::print("Hello {}\n", name) | 直接输出 |
| std::mdspan | std::mdspan<float, std::extents<size_t, 3, 3>> m(d); | 多维视图 |
| std::generator | std::generator<int> | 协程生成器 |
| Deducing this | void f(this auto&& self) | 显式 self、替代 CRTP、递归 lambda |
| if consteval | if consteval { ... } else { ... } | 编译/运行期双路径 |
| std::flat_map / std::flat_set | std::flat_map<K, V> m; | 缓存友好关联容器 |
| [[assume(expr)]] | 假设提示 | 优化前提 |
| static operator() / static operator[] | 无状态可调用对象 | 零开销函子 |
| auto(x) 衰退拷贝 | auto y = auto(x); | 显式拷贝 |
| 特性 | 语法草案 | 编译器(最早实验) |
|------|----------|-------------------|
| 静态反射 | constexpr auto m = std::meta::members_of(^MyClass); | Clang 19+ / GCC 15+(实验) |
| Contracts | int f(int x) pre(x > 0) post(r: r >= 0); | Clang 19+ / GCC 15+(实验) |
| std::execution(P2300) | auto s = on(sched, then(work, fn)); sync_wait(s); | stdexec 库 / GCC 15 部分 |
| std::simd<T, N> | std::simd<float, 4> v{1,2,3,4}; | Clang 19+ / GCC 15+ |
| Parallel ranges | std::ranges::sort(std::execution::par_unseq, data); | 实验 |
| Pattern matching(P1371) | inspect (x) { ... } | 提案 |
C++26 特性使用前必查 feature-test 宏(如 __cpp_lib_reflection, __cpp_lib_simd, __cpp_impl_contracts),不可裸用。
struct Version {
int major, minor, patch;
auto operator<=>(const Version&) const = default;
};
// 自动生成 ==, !=, <, <=, >, >=
#include <expected>
enum class ParseError { invalid_format, overflow };
std::expected<int, ParseError> parse_int(std::string_view s) {
int value{};
auto [ptr, ec] = std::from_chars(s.data(), s.data() + s.size(), value);
if (ec == std::errc::invalid_argument) return std::unexpected(ParseError::invalid_format);
if (ec == std::errc::result_out_of_range) return std::unexpected(ParseError::overflow);
return value;
}
// 调用方
if (auto r = parse_int("42"); r) std::println("got {}", *r);
else std::println("error code {}", static_cast<int>(r.error()));
#include <ranges>
namespace views = std::views;
auto evens_squared = data
| views::filter([](int x) { return x % 2 == 0; })
| views::transform([](int x) { return x * x; })
| views::take(10);
for (int x : evens_squared) std::println("{}", x);
// math.cppm
export module math;
export int square(int x) { return x * x; }
// main.cpp
import math;
import std;
int main() { std::println("{}", square(7)); }
| 标准 | GCC | Clang | MSVC | |------|-----|-------|------| | C++17 完全 | 9+ | 7+ | 19.20+ | | C++20 完全 | 13+ | 16+ | 19.30+ | | C++23 完全 | 14+ | 18+ | 19.39+ | | C++26 实验 | 15+ | 19+ | 19.40+ |
| 借口 | 检查项 |
|------|--------|
| "裸指针更快" | std::unique_ptr 零开销,是否真测过? |
| "SFINAE 够用" | 是否替换为 concepts 提升可读性与错误信息? |
| "printf 简单" | 是否换 std::print / std::format? |
| "不需要 ranges" | 原始循环是否替换为 ranges 管道? |
| "C cast 简短" | 是否使用 static_cast / bit_cast? |
| "宏方便" | 是否换 constexpr / consteval? |
| "异常慢" | 可预期错误是否走 std::expected? |
| "三向比较手写更灵活" | 是否 = default 默认生成? |
-std=c++23 通过,C++26 特性有 feature-test 宏保护-Werror 通过enable_if)std::expected 用于可预期错误std::print / std::format 用于输出tools
UI/UX 与布局设计——做界面布局/结构/导航/组件/交互的设计决策。触发:做UI/UX/布局/排版/导航/组件/交互/栅格/响应式/图表选型/字体配对。按媒介路由 HTML/Web、原生 App(iOS/Android/桌面)、CLI、TUI。需后端动态系统不适用;配色/主题/色板走姊妹 skill design-color。
tools
主题与配色设计——做颜色搭配/调色板/主题/品牌色阶/暗模式的设计决策。触发:选配色/调色/主题/色板/品牌色/暗模式/对比度/色盲/UI风格。按媒介路由 HTML/Web(CSS变量)、原生App(平台token)、CLI(ANSI)、TUI(真彩/256/16降级)。保证可访问性(对比度/色盲安全)。需后端动态系统不适用;UI/UX 布局/组件/交互走姊妹 skill design-uiux。
tools
跨任意组件(plugin/skill/agent/command)的验证驱动优化循环纪律 skill。当用户要优化某个已有组件却无明确方向、或要防止改了反而更差(自评乐观偏差 / 多维同改归因失效 / 为凑分加废话膨胀)、或要把一套通用「评分→单变量改→改后验证严格更好才留否则回滚→触顶停」的纪律套到任意组件上时使用。管优化过程本身的纪律(validation gate / ratchet / 独立验证 / 触顶停),不评单组件深度(交 skill-dev),不查插件接线(交 plugin-dev)。仅手动 /optimize-any 触发。
data-ai
两层规则记忆 (基于 .skein/spec)。planning 时 recall 召回相关规则、task finish 后 sediment 沉淀学习 + prune 自动精简过期/重复/断链规则。core 常驻硬规 + recall 按需召回, 经判定门自动写盘 (不逐次问用户)。产出 .skein/spec 下 core/recall 规则文件 + index。另支持空仓 bootstrap 播种规则基线、记忆大面积失效 (大重构/换栈) 时 reconstruct 可逆归档后按项目类型分型重建、maintain 手动体检 (超预算/stale/断链/重复/废弃, --apply 自动修复)、auto-fix (Stop hook 写 .pending-fix 标记 → main 派 skein-specer bg 跑 maintain --apply 全自动修, 断链只报告)。