我知道在C ++ 11中,我们现在可以using
用来编写类型别名,例如typedef
s:
typedef int MyInt;
据我了解,相当于:
using MyInt = int;
并且这种新语法是通过努力表达“ template typedef
” 的方式而出现的:
template< class T > using MyType = AnotherType< T, MyAllocatorType >;
但是,对于前两个非模板示例,标准中是否还有其他细微差别?例如,typedef
s以“弱”方式进行别名。也就是说,它不会创建新类型,而只会创建一个新名称(这些名称之间的转换是隐式的)。
与它相同using
还是会生成新类型?有什么区别吗?
typedef void MyFunc(int,int);
(实际上看起来还不错),或者using MyFunc = void(&)(int,int);
using MyFunc = void(&)(int,int);
?它是指MyFunc
对功能的引用吗?如果您省略&怎么办?
typedef void (&MyFunc)(int,int);
。如果您忽略&
它,则相当于typedef void MyFunc(int,int);
typedef void (&MyFunc)(int,int);
还是using MyFunc = void(int,int);
?