C++ C++';typedef';与';使用…=';

C++ C++';typedef';与';使用…=';,c++,c++11,typedef,using-directives,C++,C++11,Typedef,Using Directives,可能重复: 下面的代码编译并运行。我的问题是,重命名模板专门化的“typedef”和“using”方法有什么区别 template<typename T> struct myTempl{ T val; }; int main (int, char const *[]) { using templ_i = myTempl<int>; templ_i i; i.val=4; typedef myTempl<float>

可能重复:

下面的代码编译并运行。我的问题是,重命名模板专门化的“typedef”和“using”方法有什么区别

template<typename T>
struct myTempl{
    T val;
};

int main (int, char const *[])
{
    using templ_i = myTempl<int>;
    templ_i i;
    i.val=4;

    typedef myTempl<float> templ_f;
    templ_f f;
    f.val=5.3;

    return 0;
}
模板
结构myTempl{
T值;
};
int main(int,char const*[])
{
使用templ_i=myTempl;
坦普尔一世;
i、 val=4;
类型定义myTempl templ_f;
坦普尔夫;
f、 val=5.3;
返回0;
}
编辑:
如果没有区别,您更喜欢哪一个为什么使用…=。。。推出的版本?

它们是相同的。

引用C++11标准(或具体的草案):

typedef名称也可以通过别名声明引入。使用关键字的后面的标识符 成为一个typedef名称,并在与该名称相关的标识符后添加可选属性说明符seq typedef名称。它的语义与由typedef说明符引入的语义相同。特别是 不定义新类型,且不应出现在类型id中


我认为“与typedef说明符的语义相同”就说明了一切。

A
使用非模板的
并不是真正的用例。确切地说:@Andrew你说得对,我就是找不到。@Simon:谷歌的第一个链接:你有没有注意到C++11到处都在使用从左到右的声明方式?使用
编写类型别名更符合新的C++11风格。这个短语来自赫伯·萨特