文档目录
对比维度 SFINAE Concepts
报错信息 几十行库内部模板实例化堆栈 一行"不满足 XXX 约束"
代码可读性 enable_if<is_integral_v<T> && !is_same_v<T, char>> requires Integral<T> && !SameAs<T, char>
复用性 每次写一次条件表达式 定义一次 Concept,到处用
编译时间 长(大量模板实例化尝试) 短(约束在模板实例化前检查)
重载优先级 靠 SFINAE 的"最匹配"规则 自然支持 Concept 偏序(更特化的优先)

结论:C++20 项目优先用 Concepts。只有需要兼容 C++17 时才保留 SFINAE。