在C+11中,类型胡枝子和使用有什么区别?我知道在C+11中我们现在可以使用using写入类型别名,如typedefs:typedef int MyInt;据我所知,相当于:using MyInt = int;这种新的语法来源于一种表达方式。“template typedef":template< class T > using MyType = AnotherType< T, MyAllocatorType >;但是,对于前两个非模板的例子,在标准中还有其他细微的差别吗?例如,typedefIt‘s以“弱”的方式进行混叠。也就是说,它不创建新类型,而只创建新名称(在这些名称之间隐式转换)。是不是和using或者它会产生一种新的类型?有什么不同吗?
3 回答
心有法竹
TA贡献1866条经验 获得超5个赞
template <typename T> struct whatever {};template <typename T> struct rebind{ typedef whatever<T> type; // to make it possible to substitue the whatever in future.};rebind<int>::type variable;template <typename U> struct bar { typename rebind<U>::type _var_member; }
template <typename T> using my_type = whatever<T>;my_type<int> variable;template <typename U> struct baz { my_type<U> _var_member; }
慕沐林林
TA贡献2016条经验 获得超9个赞
using
alias templates
namespace std { template<typename T> using add_const_t = typename add_const<T>::type;}
std::add_const_t<T>
typename std::add_const<T>::type
呼啦一阵风
TA贡献1802条经验 获得超6个赞
还可以通过别名声明引入tydurif名称。Using关键字后面的标识符变成tyduif-name,而标识符后面的可选属性-说明符-seq属于该ty胡枝子名。 它具有相同的语义,就好像它是由tyHuif说明符引入的一样。特别是,它不定义新类型,并且它不应出现在类型id中。
- 3 回答
- 0 关注
- 415 浏览
添加回答
举报
0/150
提交
取消