1.auto
auto maton=112; //maton is type int
auto pt=&maton //pt is type int*
typedef double (*Fp)(double,int);
Fb fm=0;
auto pf=fm; //pf is type double(*)(double ,int)
2.decltype
double x(0);
int n(0);
decltype (x*n) q=0; //q is same type as x*n,i.e.,double
decltype (&x)pd=&x; //pd same type as &x,double*
int &i=n;
const int& ic=n;
decltype(i) i1=n; //i1 same type as int&
decltype(ic) i2=n; //i2 same type as const int&
3 using=
typedef std::vector<double>::iterator itTyped1;
using itTyped2=std::vector<double>::iterator;
itTyped1 it1;
itTyped it2;