如何在is_integral_v中使用bool成员函数?

How to use bool member function in is_integral_v?

this cppreference link 开始,is_integralbool 作为成员函数。如何使用它?我可以理解其他成员,并且能够编写一个简单的示例如下。但是如何使用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>.

类型的匿名对象