提问人:Simon 提问时间:6/27/2012 最后编辑:CommunitySimon 更新时间:6/27/2012 访问量:38116
C++ 'typedef' 与 'using ... = ...'[复制]
C++ 'typedef' vs. 'using ... = ...' [duplicate]
问:
编译并运行以下代码。我的问题是重命名模板专业化的“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;
}
编辑:
如果没有区别,你更喜欢哪一个?/ 为什么要使用 ... = ...引入的版本?
答:
38赞
daramarak
6/27/2012
#1
他们是一样的。
引用 C++11 标准(或具体草案):
typedef-name 也可以由 alias-declaration 引入。using 关键字后面的标识符 成为 typedef-name,标识符后面的可选 attribute-specifier-seq 适用于该 typedef-name。它具有相同的语义,就好像它是由 typedef 说明符引入的一样。特别是,它 不定义新类型,并且不应出现在 type-id 中。
我认为“与 typedef 说明符相同的语义”说明了一切。
评论
using
using