【问题标题】: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吗?我可以猜到为什么它不起作用,但如果没有完整的例子,这只是一个猜测。

标签: c++ templates


【解决方案1】:

在第二种情况下,您没有在 enable_if 语句中使用 U。 SFINAE 仅在表达式依赖于 推导 模板参数之一时才有效。

【讨论】:

  • 我不太明白。谢谢。
猜你喜欢
  • 2020-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-27
  • 1970-01-01
  • 1970-01-01
  • 2020-07-18
相关资源
最近更新 更多