Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Can";使用;完全取代;typedef";在所有情况下?_C++_C++11_Types_Typedef_Using - Fatal编程技术网

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
中添加任何一个都会让人困惑。您最初的陈述可能是正确的,但您的报价不能证明这一点。