c++ - nullptr 可以用作类型吗?
问题描述
我正在学习的用法,enable_if
我偶然发现了以下代码。
template <class T,
typename std::enable_if<std::is_integral<T>::value,
T>::type* = nullptr>
void do_stuff(T& t) {
std::cout << "do_stuff integral\n";
// an implementation for integral types (int, char, unsigned, etc.)
}
困扰我的是,在模板参数中,nullptr 被用作默认参数,std::enable_if<std::is_integral<T>::value, T>::type*
它也是一种类型。
我不确定我们如何为类型分配文字。不应该nullptr_t
取而代之吗?
解决方案
此模板接受非类型的第二个参数,即一个指针typename std::enable_if<std::is_integral<T>::value, T>::type *
,因此nullptr
用作此指针的默认值。请注意,typename
在这第二个参数中,用于使编译器确定::type
作为一种类型,它不是通常类型模板参数的开头,例如typename T
推荐阅读
- amazon-web-services - 在 Amazon Redshift 中创建具有变量名称的表
- javascript - 平移/缩放画布时 getImageData() 返回错误数据(仅限物理移动设备问题)
- regex - Prometheus - relabel_configs,正则表达式,从目标 url 获取数据
- latex - r markdown longtable + Landscape kable标题宽度缩小(不再是页面宽度)
- python - 每次查询后 Django 表单选择字段更新
- python - 网页抓取 - 找不到元素文本数据擦除名称
- javascript - 如何显示由逗号分隔的数组没有Jquery
- javascript - 按部分键名删除对象项
- tensorflow - 如何训练编码器-解码器模型?
- pygame - 为屏幕pygame创建寄宿生