类中的模板专业化[重复]

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 仅在表达式依赖于 推导 模板参数之一时才有效。

【讨论】:

我不太明白。谢谢。

以上是关于类中的模板专业化[重复]的主要内容,如果未能解决你的问题,请参考以下文章

模板特化和继承

单独的 .cpp 文件中的模板类专业化

g ++中的显式模板专业化导致麻烦

解决 VC++12 中的模板专业化错误?

由于标头中的专业化初始化而避免重复的符号?

派生类中纯虚拟基方法的专业化