'typename Enable = void'是什么意思?
What does 'typename Enable = void' mean?
我发现在ProtoBuf、中定义了typename Enable = void
template<typename T, typename Enable = void>
struct RefTypeTraits;
但是,我找不到这个头文件中使用了Enable
,这让我很困惑。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以来,我们可以专门处理概念,以避免这个所需的额外模板参数。
您的模板只有两个模板参数。第二个名为"已启用",默认类型为"无效"。这是一个稍后允许SFINAE的技巧。
相关文章:
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- "类模板示例<int>;"语句对 C++11 是什么意思?
- 线应该是什么意思
- "CID"在AT+HTTPPARA= "CID" ,1中是什么意思
- 表达式"b=(b-x)&x"是什么意思?
- 这个表达是什么意思?
- 此代码验证公式是什么意思?
- 跟踪日志中的T.11803()是什么意思?
- 这个额外的关键字在这个 c++ 类声明中是什么意思?
- * 和 ** 在 C++ 函数声明中是什么意思?
- _T("xyz")是什么意思?
- #define Dbg(fmt,..) (0) 是什么意思? 警告:表达式无效
- 这行代码到底是什么意思?
- 当我们说在执行程序时将操作系统的控制权传递给main()函数时,我们的意思是什么
- 这句话在c++中的意思是什么
- 这个typedef的意思是什么
- 这句话的意思是什么
- 意思是什么
- 这个句法的意思是什么?