根据类型特征更改函数定义?
change function defination based on type trait?
我想使用 enable_if_t
更改基于类型的函数定义。类似这样的事情:
#include<type_traits>
template<typename T> struct A;
template<typename T>
struct A{
std::enable_if_t<std::is_arithmetic<T>::value, bool>
test()
{
return true;
}
std::enable_if_t<!std::is_arithmetic<T>::value, bool>
test()
{
return false;
}
};
你可以试试
template <typename U = T>
std::enable_if_t<std::is_arithmetic<U>::value, bool>
test()
{ return true; }
template <typename U = T>
std::enable_if_t<!std::is_arithmetic<U>::value, bool>
test()
{ return false; }
我的意思是...SFINAE 处理 functions/methods 的模板参数,而不是包含这些方法的 class 的模板参数。
使用 typename U = T
,您将 T
、class 模板参数转换为 U
方法模板参数。
我想使用 enable_if_t
更改基于类型的函数定义。类似这样的事情:
#include<type_traits>
template<typename T> struct A;
template<typename T>
struct A{
std::enable_if_t<std::is_arithmetic<T>::value, bool>
test()
{
return true;
}
std::enable_if_t<!std::is_arithmetic<T>::value, bool>
test()
{
return false;
}
};
你可以试试
template <typename U = T>
std::enable_if_t<std::is_arithmetic<U>::value, bool>
test()
{ return true; }
template <typename U = T>
std::enable_if_t<!std::is_arithmetic<U>::value, bool>
test()
{ return false; }
我的意思是...SFINAE 处理 functions/methods 的模板参数,而不是包含这些方法的 class 的模板参数。
使用 typename U = T
,您将 T
、class 模板参数转换为 U
方法模板参数。