typedef和C ++ 11类型别名之间的区别

这个问题在这里已经有了答案:

  • 在C ++ 11中'typedef'和'using'有什么区别? 4个答案

  • 两者绝对没有区别。

    如果你看看这个标准:

    7.1.3 typedef规范[dcl.typedef]

    typedef名称也可以通过别名声明引入。 using关键字后面的标识符成为typedef名称。 它具有与typedef说明符所引入的相同的语义。 特别是它没有定义一个新的类型,它不会出现在type-id中。

    7.3.3使用声明[namespace.udecl]

    如果using-declaration使用关键字typename并指定依赖名称(14.6.2),则using-declaration引入的名称将被视为typedef-name。


    但是从此页面:http://en.cppreference.com/w/cpp/language/type_alias

    据说 :

    类型别名与类型定义相似, 但是具有使用模板的优点。

    这似乎是:

    // template type alias
    template<class T> using ptr = T*;
    // the name 'ptr<T>' is now an alias for pointer to T
    ptr<int> x;
    

    只有using指令才有可能。


    别忘了这是一个C ++ 11功能。 一些编译器还不支持它。


    没有区别。

    typedef为该类型提供别名。

    链接地址: http://www.djcxy.com/p/78639.html

    上一篇: Difference between typedef and C++11 type alias

    下一篇: Return type of '?:' (ternary conditional operator)