16 September 2023

C++ 核心指南目录

“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 有时候会强制我们使用容易出错的设计技术。