在所有情况下都可以"使用"完全替换"typedef"吗?

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

我知道using可以做一些事情typedef做不到.

我只是想知道在所有情况下是否using可以完全取代typedef

Tem*_*Rex 7

是的,它可以引用标准草案(大胆强调我的)

7.1.3 typedef规范[dcl.typedef]

2别名声明也可以引入typedef-name.using关键字后面的标识符变为typedef-name,可选属性-peci-er-seq跟随该typedef-name的标识符.它具有与typedef规范引入的语义相同的语义.

  • 理由可以在n1489.pdf中找到:`但是,它也显示了一些不利之处,其中混淆使用已知的关键字在别名未指定类型的上下文中为类型名称引入别名,但是模板; Vec不是类型的别名,不应该用于typedef-name.名称Vec是家庭std :: vector <T,MyAllocator <T >>的名称.因此,我们不建议使用typedef语法 (4认同)