#include< iostream >
using namespace std;
template< typename T, int size >  //定义函数模板，接受类型参数T，非类型参数size
int bubble_sort( T (&ary)[size] )
{
	for( int i=1; i< =size; i++ )  //用起泡法对size个数按由小到大排序
	{
		for( int j=0; j< =size - i; j++ )
		{
			if( ary[j] > ary[j+1] )  //如果前一个数比后一个数大，就交换两个数的位置
			{
				T temp;
				temp = ary[j];
				ary[j] = ary[j+1];
				ary[j+1] = temp;
			}
		}
}
	for (int i=1; i< =size; i++ ) //输出排序后的数组的值
	{
		cout<<ary[i];
		cout<<endl;       //输出换行符
	}
	return 0;
}
int main( )
{
	int (*p) ( int (&)[6] ); //定义一个函数指针类型，接受含6个整数的数组，返回int型值
	p = bubble_sort;    //取函数模板地址
	int ary[6] = {12,2,6,4,8,14};   //定义并初始化数组
	cout<<"the sorted numbers:"<<endl;
	p(ary);     //间接调用函数模板bubble_sort
	return 0;
}
