课堂上的模板专业化

时间:2017-09-19 03:47:18

标签: c++ templates

在特定课程中,

它正在运作..

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

它不起作用。

你可以解释一下吗?我不知道为什么..

1 个答案:

答案 0 :(得分:0)

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