触发条件
上游 Clang(非 Bloomberg fork)落地 C++26 反射 P2996。截至 2026-07:上游 Clang 22/23 均无(cxx_status 反射行全 No,Clang 23 仅 expansion statements partial);已落地的只有 GCC 16(-freflection)与 bloomberg/clang-p2996 fork(-freflection/-freflection-latest)。
触发后要做的(即"加一行")
src/toolchain/cppfly.cppm 的 kReflectionRules 表加一行:
constexpr GateRule kReflectionRules[] = {
{ CompilerId::GCC, 16, "-freflection" },
{ CompilerId::Clang, <落地的主版本>, "<clang 的实际旗标拼写>" }, // ← 新行
};
随后:test_cppfly.cpp 的 ResolveClangLibcxx 断言改为反射 enabled;e2e 101_cppfly_llvm_soft.sh 的 skipped: reflection 断言按 llvm payload 版本条件化。全生态即通过 standard = "c++fly" 在 Clang 上获得反射,用户 manifest 零改动。
注意:版本号与旗标拼写必须落地后实机核实(本仓惯例:-fsyntax-only + 特性宏探测,参考 GCC16 契约定案过程,设计文档 §11-Q3),不要提前臆测入表。
替代/并行路径(独立决策)
把 clang-p2996 fork 打包进 mcpp 工具链生态(如 llvm-p2996@x),表里即可加该族行,不必等上游。属独立打包工作,不阻塞本 issue。
关联:#214、.agents/docs/2026-07-14-std-features-experimental-gate-design.md §10。
触发条件
上游 Clang(非 Bloomberg fork)落地 C++26 反射 P2996。截至 2026-07:上游 Clang 22/23 均无(cxx_status 反射行全 No,Clang 23 仅 expansion statements partial);已落地的只有 GCC 16(
-freflection)与 bloomberg/clang-p2996 fork(-freflection/-freflection-latest)。触发后要做的(即"加一行")
src/toolchain/cppfly.cppm的kReflectionRules表加一行:随后:
test_cppfly.cpp的ResolveClangLibcxx断言改为反射 enabled;e2e101_cppfly_llvm_soft.sh的skipped: reflection断言按 llvm payload 版本条件化。全生态即通过standard = "c++fly"在 Clang 上获得反射,用户 manifest 零改动。注意:版本号与旗标拼写必须落地后实机核实(本仓惯例:
-fsyntax-only+ 特性宏探测,参考 GCC16 契约定案过程,设计文档 §11-Q3),不要提前臆测入表。替代/并行路径(独立决策)
把 clang-p2996 fork 打包进 mcpp 工具链生态(如
llvm-p2996@x),表里即可加该族行,不必等上游。属独立打包工作,不阻塞本 issue。关联:#214、
.agents/docs/2026-07-14-std-features-experimental-gate-design.md§10。