如何在is_integral_v中使用bool成员函数?
How to use bool member function in is_integral_v?
从 this cppreference link 开始,is_integral
有 bool
作为成员函数。如何使用它?我可以理解其他成员,并且能够编写一个简单的示例如下。但是如何使用bool
成员函数呢?
#include <iostream>
#include <type_traits>
using namespace std;
int main(){
cout << boolalpha;
// member constants
cout << is_integral_v<int> << endl; // prints true
// member functions
// operator bool ?
// operator()
cout << is_integral<float>() << endl; // prints false
return 0;
}
当您调用 is_integral<float>()
时,您实际上是在调用 operator bool
。下面调用 operator()
代替:
is_integral<float>()()
在下面的代码中可以看得更清楚:
std::is_integral<int> x;
if (x) { // operator bool
std::cout << "true" << std::endl;
}
std::cout << x << std::endl; // operator bool
std::cout << x() << std::endl; // operator()
std::cout << std::is_integral<int>()() << std::endl; // operator()
std::is_integral<float>()
实际上是std::is_integral<float>
.
类型的匿名对象
从 this cppreference link 开始,is_integral
有 bool
作为成员函数。如何使用它?我可以理解其他成员,并且能够编写一个简单的示例如下。但是如何使用bool
成员函数呢?
#include <iostream>
#include <type_traits>
using namespace std;
int main(){
cout << boolalpha;
// member constants
cout << is_integral_v<int> << endl; // prints true
// member functions
// operator bool ?
// operator()
cout << is_integral<float>() << endl; // prints false
return 0;
}
当您调用 is_integral<float>()
时,您实际上是在调用 operator bool
。下面调用 operator()
代替:
is_integral<float>()()
在下面的代码中可以看得更清楚:
std::is_integral<int> x;
if (x) { // operator bool
std::cout << "true" << std::endl;
}
std::cout << x << std::endl; // operator bool
std::cout << x() << std::endl; // operator()
std::cout << std::is_integral<int>()() << std::endl; // operator()
std::is_integral<float>()
实际上是std::is_integral<float>
.