use-style和typedef-style有什么区别?

xml*_*lmx 2 c++ types typedef using c++11

using IntegerType1 = int;
typedef int IntegerType2;

int main()
{
    IntegerType1 n1 = 1; // OK
    IntegerType2 n2 = 2; // OK
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. use-style和typedef-style有什么区别?

  2. 由于我们已经有了typedef风格,使用-style成为C++标准的动机是什么?

Dan*_*rey 5

引入了"using-style"以允许模板化的typedef:

template< typename T >
using int_map = std::map< int, T >;
Run Code Online (Sandbox Code Playgroud)

你不能这样做typedef.我发现自己很奇怪它决定使用using而不是typedef作为关键字,但我想委员会必须在扩展typedef语法方面遇到一些问题.

  • 使用`using`,新定义类型的名称始终位于表达式的左侧.使用`typedef`,名称可以位于表达式的中间.所以`使用'提高了可读性,恕我直言. (5认同)