我发现ProtoBuf中已定义typename Enable = void
,
template<typename T, typename Enable = void>
struct RefTypeTraits;
但是,我找不到此header file中使用的Enable
,这让我感到困惑。 typename Enable = void
在模板中的含义是什么?
答案 0 :(得分:5)
允许SFINAE使用模板专业化,如
template<typename T>
struct RefTypeTraits<T, std::enable_if_t<some_condition<T>::value>> {
// ... specialization for T which respects condition
};
答案 1 :(得分:3)
您的模板只有两个模板参数。第二个名为“Enabled”,默认类型为“void”。这是后来允许SFINAE的一个技巧。