//头文件
template< class T >
struct is_arithmetic;
(since C++11)
功能:如果 T 是算术类型(即整数类型或浮点类型)或其 cv 限定版本(cv-qualified
version thereof),则提供等于 true 的成员常量值。 对于任何其他类型,值为 false。
拓展定义:
template< class T >
inline constexpr bool is_arithmetic_v = is_arithmetic::value;
(since C++17)
一种实现方法:
template< class T >
struct is_arithmetic : std::integral_constant::value ||
std::is_floating_point::value> {};
示例代码:
#include
#include
class A {};
int main()
{
std::cout << std::boolalpha
<< "A: " << std::is_arithmetic_v << '\n' // false
<< "bool: " << std::is_arithmetic_v << '\n' // true
<< "int: " << std::is_arithmetic_v << '\n' // true
<< "int const: " << std::is_arithmetic_v << '\n' // true
<< "int &: " << std::is_arithmetic_v << '\n' // false
<< "int *: " << std::is_arithmetic_v << '\n' // false
<< "float: " << std::is_arithmetic_v << '\n' // true
<< "float const: " << std::is_arithmetic_v << '\n' // true
<< "float &: " << std::is_arithmetic_v << '\n' // false
<< "float *: " << std::is_arithmetic_v << '\n' // false
<< "char: " << std::is_arithmetic_v << '\n' // true
<< "char const: " << std::is_arithmetic_v << '\n' // true
<< "char &: " << std::is_arithmetic_v << '\n' // false
<< "char *: " << std::is_arithmetic_v << '\n' // false
;
}
@meng
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)