类中的模板专业化[重复]
Posted
技术标签:
【中文标题】类中的模板专业化[重复]【英文标题】:Template specialization in class [duplicate] 【发布时间】:2017-09-19 03:47:17 【问题描述】:在特定的类中,
它正在工作..
private:
template <typename U>
int64_t parseValue(const std::string& str
, typename std::enable_if<std::is_signed<T>::value, U>::type* = 0
) const
return stoll(str, 0, base_);
template <typename U>
uint64_t parseValue(const std::string& str
, typename std::enable_if<std::is_unsigned<T>::value, U>::type* = 0
) const
但下面的代码不起作用。我不知道为什么。不知道是缺少专业化概念还是其他问题。
private:
template <typename U>
int64_t parseValue(const std::string& str
, typename std::enable_if<std::is_signed<T>::value>::type* = 0
) const
return stoll(str, 0, base_);
template <typename U>
uint64_t parseValue(const std::string& str
, typename std::enable_if<std::is_unsigned<T>::value>::type* = 0
) const
它不工作。
你能解释一下吗?不知道为什么。。
【问题讨论】:
你能发一个minimal reproducible example吗?我可以猜到为什么它不起作用,但如果没有完整的例子,这只是一个猜测。 【参考方案1】:在第二种情况下,您没有在 enable_if
语句中使用 U
。 SFINAE 仅在表达式依赖于 推导 模板参数之一时才有效。
【讨论】:
我不太明白。谢谢。以上是关于类中的模板专业化[重复]的主要内容,如果未能解决你的问题,请参考以下文章