C++0x decltype vs2010

#include <iostream>
#include <typeinfo>
using namespace std;

template<class T1,class T2>
auto product(T1 v1[],T2 v2[], size_t count) -> decltype(v1[0]* v2[0])
{
	decltype(v1[0] * v2[0]) sum(0);
	for(size_t i=0;i<count;i++) sum +=v1[i] * v2[i];
	return sum;
}

int main(){
	double x[] = {100.5,99.5,88.7,77.8};
	short y[] = {3,4,5,6};
	long z[]={11L,12L,13L,14L};
	size_t n=4;

	cout<< product(x,y,n)<<endl;
	cout<< typeid(product(x,y,n)).name()<<endl;
	cout<< product(x,z,n)<<endl;
	cout<< typeid(product(x,z,n)).name()<<endl;
	cout<< product(y,z,n)<<endl;
	cout<< typeid(product(y,z,n)).name()<<endl;
	getchar();
	return 0;
}

  

posted @ 2012-02-13 16:29  庚武  Views(302)  Comments(0Edit  收藏  举报