C++ std::is_function 模板及示例
C++ STL中的 std::is_function 用于检查给定类型T是否为函数。它返回布尔值 true 或 false。 以下是相同的语法:
头文件:
include < type_traits >
语法:
template
**<** class T **>**
struct is_function;
参数: 该模板 std::is_function 接受一个参数T(特征类)来检查T是否是函数。
返回值:
- 如果T是函数类型,则为True。
- 如果T不是函数类型,则为False。
下面的程序演示了C++ STL中的 std::is_function 模板:
示例 1:
// C++ program to illustrate
// is_function template
#include <bits/stdc++.h>
#include <type_traits>
using namespace std;
struct GeeksforGeeks {
int func() const&;
};
template <typename>
struct Computer {
};
template <class A, class B>
struct Computer<B A::*> {
using member_type = B;
};
int GFG();
int main()
{
cout << boolalpha;
cout << is_function<GeeksforGeeks>::value
<< endl;
cout << is_function<int(int)>::value
<< endl;
cout << is_function<decltype(GFG)>::value
<< endl;
cout << is_function<int>::value
<< endl;
using A = Computer<decltype(
&GeeksforGeeks::func)>::member_type;
cout << is_function<A>::value
<< endl;
return 0;
}
false
true
true
false
true
示例 2:
// C++ program to illustrate
// is_function template
#include <bits/stdc++.h>
#include <type_traits>
using namespace std;
struct GeeksforGeeks {
int func() const&;
};
template <typename>
struct Computer {
};
template <class A, class B>
struct Computer<B A::*> {
using member_type = B;
};
int GFG();
int main()
{
cout << boolalpha;
cout << is_function<int(int)>::value
<< endl;
cout << is_function<GeeksforGeeks>::value
<< endl;
cout << is_function<int>::value
<< endl;
cout << is_function<decltype(GFG)>::value
<< endl;
using A = Computer<decltype(
&GeeksforGeeks::func)>::member_type;
cout << is_function<A>::value
<< endl;
return 0;
}
输出:
true
false
false
true
true
Reference:
http://www.cplusplus.com/reference/type_traits/is_function/