这是一个简短的问题,涉及到一个函数,我想返回一个enum class
底层类型:
为什么这个版本可以正常工作?
template<typename T>
constexpr inline
typename std::enable_if_t<
std::is_enum<T>::value,
typename std::underlying_type_t<T>
>
enumValue(T p_rVal) noexcept
{
return static_cast<typename std::underlying_type_t<T>>(p_rVal);
}
if (enumValue(myEnumClass) == 0) {}
而这个则会出现"未找到匹配的重载函数"错误(VS 2015):
template<
typename T,
typename std::enable_if_t<
std::is_enum<T>::value,
typename std::underlying_type_t<T>
>
>
constexpr inline
typename std::underlying_type_t<T>
enumValue(T p_rVal) noexcept
{
return static_cast<typename std::underlying_type_t<T>>(p_rVal);
}
非常感谢您的帮助!
std::underlying_type_t<T>
之前不需要使用typename
。 - Oktalist