CppCoreGuidelines T.48 如果你的编译器不支持 concept 那么就用 enable_if 来假装 concept
16 September 2023
“If your compiler does not support concepts, fake them with enable_if
”
理由
在没有 concept 的情况下,这是目前最好的方式了。 enable_if
可以用来选择性的定义函数,选择函数集中的某个特定函数。
例子
template<typename T> enable_if_t<is_integral_v<T>> f(T v) { // ... } // Equivalent to: template<Integral T> void f(T v) { // ... }
注意
小心互补限定条件。用 enable_if
假装 concept
有时候会强制我们使用容易出错的设计技术。