【发布时间】:2020-08-17 17:39:11
【问题描述】:
我想问题的标题没有多大意义,但我希望问题描述能传播开来。
有人可以解释一下这是如何通过编译的吗?
template<typename Cont, typename = std::enable_if<std::is_integral_v<std::string>>>
void print(const Cont& cont)
{
for (const auto it : cont) {
cout << it << " ";
}
cout << endl;
}
int main()
{
std::vector<string> V;
print(V);
}
原来的版本是:template<typename Cont, typename = std::enable_if<std::is_integral_v<typename Cont::value_type>>>
我只是明确地把 std::string 确定了。
我猜 enable_if 应该禁止这个函数被实例化吧??
我在这里错过了什么?
【问题讨论】:
-
如果
print的重载仅支持整数类型,似乎没有必要通过引用来获取其参数。 -
错字,
std::enable_if->std::enable_if_t