对于冗长或复杂的标识符,如果能够创建其别名将很方便。以前c++为此提供了typedef:
typedef std::vector<std::string>::iterator itType;
C++11提供了另一种创建别名的语法 using=
using itType=std::vector<std::string>::iterator itType;
差别在于新语法也可以用于模板部分具体化,但是typedef不能:
template<class T>
using mystring = std::array<T, 12>;
int main()
{
typedef std::array<std::string,10> itType;
itType a();
mystring<int> b();
return 0;
}
上述语句具体化模板array<T,int>将参数设置为12)。例如下面声明:
std::array<std::string,12> a1;
std::array<std::string,12> a2;
可以替换为如下:
arr12<double>a1;
arr12<std::string>a2;