测试 c++ 之 is_function_v

测试 c++ 之 is_function_v_第1张图片
如图,给 is_function_v 传入一个类,为假,传入一个函数对象则为真 。
(2)以下是文心一言的解释,真好:
在 C++ 中,std::is_function_v 是一个类型特征(type trait),用于检查给定的类型是否为函数类型。它是 C++17 中引入的一个模板元函数,返回一个布尔值,表示给定的类型是否为函数类型。

以下是使用 std::is_function_v 的示例:

#include   
#include   
  
 template <class _Ty> // only function types and reference types can't be const qualified
constexpr bool is_function_v = !is_const_v<const _Ty> && !is_reference_v<_Ty>; 
  
int main() {  
    std::cout << std::boolalpha;  
    std::cout << "Is int a function type? " << std::is_function_v<int> << std::endl;  
    std::cout << "Is void(*)() a function type? " << std::is_function_v<void(*)()> << std::endl;  
    std::cout << "Is void(*)(int) a function type? " << std::is_function_v<void(*)(int)> << std::endl;  
    std::cout << "Is void(*)() const a function type? " << std::is_function_v<void(*)() const> << std::endl;  
    std::cout << "Is void(*)() & a function type? " << std::is_function_v<void(*)() &> << std::endl;  
    std::cout << "Is void(*)() && a function type? " << std::is_function_v<void(*)() &&> << std::endl;  
    return 0;  
}

测试结果如下:
Is int a function type? false
Is void()() a function type? true
Is void(
)(int) a function type? true
Is void()() const a function type? true
Is void(
)() & a function type? true
Is void(*)() && a function type? true

其实在vs2019上的测试结果不一致。再附上一图:
测试 c++ 之 is_function_v_第2张图片

你可能感兴趣的:(c++学习总结,c++,开发语言)