【发布时间】:2015-06-04 10:49:56
【问题描述】:
我尝试了以下方法:
using Idx = int;
array<Value, N> arr;
for(Idx i = 0; i < N; i ++){
arr[i].doSomething();
}
我预计当我尝试使用Idx 时编译器会发出警告或错误,就好像它是int 一样。但事实并非如此。
那么,当我使用using 或typedef 将A 类型别名为B 时,B 类型的变量是否仍然是A 类型,反之亦然?因此,当类型看起来相同但含义不同时,重命名类型无法实现类型安全。
(这与我最近问的以下问题有关:How to make types for indexing)
【问题讨论】:
-
这里的关键字是"alias"这个词,意思是
Idx(在你的情况下)只是int的另一个名字。