using IntegerType1 = int;
typedef int IntegerType2;
int main()
{
IntegerType1 n1 = 1; // OK
IntegerType2 n2 = 2; // OK
}
我的问题是:
using-style和typedef-style有什么区别?
由于我们已经有了typedef风格,使用样式的动机是什么才能成为C ++标准?
答案 0 :(得分:5)
引入了“using-style”以允许模板化的typedef:
template< typename T >
using int_map = std::map< int, T >;
您无法使用typedef
执行此操作。我发现自己很奇怪,决定使用using
而不是typedef
作为关键字,但我想委员会必须在扩展typedef
语法时遇到一些问题。 / p>
答案 1 :(得分:3)
我发现即使对于非模板,可读性也会大大提高:
typedef void (*FunctionPtr)(); // right-to-left, identifier in the middle of the definition
using FunctionPtr = void (*)(); // left-to-right, same as variables
它可能很小,但在模板元编程中,这种语法优势使程序更易于阅读,并使模板元函数更容易重构为constexpr
函数。基本上取代
using T = type_expression;
constexpr auto v = value_expression;
此外(诉诸权威),它也在draft Effective C++11/14 guidelines。