11 September 2023

C++ 核心指南目录

“Prefer using over typedef for defining aliases”

理由

可读性:用 using 的话,新的别名出现在最前面,而不是嵌入到声明的某个地方。

通用性: using 可以用于模板别名,而 typedef 很难称为模板。

统一性: usingauto 的语法差不多。

例子

typedef int (*PFI)(int);   // OK, but convoluted

using PFI2 = int (*)(int);   // OK, preferred

template<typename T>
typedef int (*PFT)(T);      // error

template<typename T>
using PFT2 = int (*)(T);   // OK

强化

  • 标记出现 typedef 的地方。或许能给出不少“提示”。