最近我在代码中遇到了以下构造:
typedef sometype sometype;
请注意“sometype”代表完全相同的类型,没有任何添加,如“struct”等.
我想知道它有什么用处?
UPD:这仅适用于用户定义的类型.
UPD2:实际代码在模板上下文中,如下所示:
template <class T> struct E { typedef T T; ... }
解决方法
如何使模板参数对外部实体可见?
template <class Foo> struct Bar { typedef Foo Foo; }; int main() { Bar<int>::Foo foo = 4; }
注意:这在标准C中实际上是不允许的,但是特定于MSVC.看评论.