C++ Can";使用;完全取代;typedef";在所有情况下?
我知道使用C++ Can";使用;完全取代;typedef";在所有情况下?,c++,c++11,types,typedef,using,C++,C++11,Types,Typedef,Using,我知道使用可以做一些typedef做不到的事情 我只是想知道使用是否能在所有情况下完全取代typedef?是的,可以,引用(粗体强调) 7.1.3类型定义规范[dcl.typedef] 2还可以通过别名声明引入typedef名称。这个 using关键字后面的标识符将成为typedef名称和 标识后的可选属性说明顺序 那是我的名字它的语义与被引入时的语义相同 根据typedef规格。 @juanchopanza:举例?@juanchopanza:如果这就是例子,你误解了这个问题。问题是“可以使用替
可以做一些typedef
做不到的事情
我只是想知道使用是否能在所有情况下完全取代typedef
?是的,可以,引用(粗体强调)
7.1.3类型定义规范[dcl.typedef]
2还可以通过别名声明引入typedef名称。这个
using关键字后面的标识符将成为typedef名称和
标识后的可选属性说明顺序
那是我的名字它的语义与被引入时的语义相同
根据typedef规格。
@juanchopanza:举例?@juanchopanza:如果这就是例子,你误解了这个问题。问题是“可以使用替换typedef
?”而不是“可以typedef
替换使用?”。是的,使用在所有情况下都可以替换typedef
。@Nawaz你是对的,我搞错了。对不起,吵闹了。然而,如果是这样的话,为什么委员会没有重载typedef的语义而不是重载使用的语义呢?@Angew你是对的,撤回。在任何情况下,新关键字的动机应该在原始提案草案中的某个地方。其基本原理可以在n1489.pdf中找到: 然而,它也显示了一些缺点,其中包括在别名不指定类型而指定模板的上下文中使用已知关键字为类型名引入别名的混淆;Vec不是类型的别名,不应作为typedef名称。名称Vec是std::vector系列的名称。因此,我们不建议使用typedef语法。
@JesseGood tnx,这是正确的引用。模板别名添加了两个功能:模板泛化和从左到右。在typedef
中添加任何一个都会让人困惑。您最初的陈述可能是正确的,但您的报价不能证明这一点。