c++ - 'typename Enable = void' 是什么意思?

标签 c++ templates

我发现 typename Enable = void 定义在 ProtoBuf 中,

template<typename T, typename Enable = void>
struct RefTypeTraits;

但是,我找不到 Enable 用于此 header file ,这让我很困惑。 typename Enable = void 在模板中是什么意思?

最佳答案

是允许SFINAE具有模板特化,例如:

template <typename T>
struct RefTypeTraits<T, std::enable_if_t<some_condition<T>::value>>
{
    // ... specialization for T which respects condition
};

从 C++20 开始,我们可以特化 concepts以避免这个需要额外的模板参数。

关于c++ - 'typename Enable = void' 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34459640/

相关文章:

c++ - 整数可以类型转换为指向整数的指针吗?

java - 通过java API进行elasticsearch的纯字符串模板查询?

c++ - 模板特化,Windows 与 gcc 上的不同行为?

c++ - 为什么我的输出流段错误并且我的虚拟析构函数不起作用但是当我杀死虚拟时它会起作用

c++ - 如何转发声明应该属于一个类的模板化类型?

c++ - 省略号出现在模板函数的参数声明中

c++ - 带有 std::enable_if 和 std::is_default_constructible 的 SFINAE 用于 libc++ 中的不完整类型

c++ - 头文件中的代码会增加二进制大小吗?

c++ - 虚拟 HID(人机接口(interface)设备)的代码示例

c++ - 将仿函数作为函数指针传递