在C和C++中,我们常见的是值函数(value function),即函数接收的参数是某些值,而且函数的返回结果也是值。
至于类型函数(type function),即函数接收某些类型的实参,并生成一个类型作为函数的返回结果。
例子:
1、内建函数sizeof就是一个类型函数,它返回一个描述给定类型实参大小的常量。
2、类模板也可以作为类型函数。类型函数的参数可以是模板的参数,类型函数的返回结果可以是类模板的成员类型或者成员变量。
#include <stddef.h>
#include <iostream>
using namespace std;
template<typename T>
struct TypeSize
{
static size_t const value = sizeof(T);
};
int main(int argc, char **argv)
{
cout << "TypeSize<int>::value = " << TypeSize<int>::value << endl;
return 0;
}
输出结果:
TypeSize<int>::value = 4