【发布时间】:2019-01-05 12:13:19
【问题描述】:
我在学习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吗?
【问题讨论】:
-
默认参数呢?
void foo(int = 0)?是不是很像? -
@Fureeish 我明白了。我从没想过为模板参数分配默认“值”也是可能的。谢谢
-
由于
templates 可以同时包含类型和值,这非常方便:>
标签: c++ c++11 templates nullptr