- 论坛徽章:
- 2
|
下面几行:
- typedef map<int,int*> mi;
- typename mi::mapped_type pType;//GCC OK,VC不通过。不能写typedef typename mi::mapped_type pType
- typedef decltype(*pType) iType;
- typedef int* pt;
- typedef decltype(*pt) it;//编译不过
复制代码 在GCC4.7里面第二行没有问题,VC2015的话,typedef decltype(*pType) iType;这句有问题,提示Code Error C2275 'pType': illegal use of this type as an expression
1. 这个是VC的问题吗,不支持decltype里面使用typename定义出来的类型?
2. 如果我把第二句程序的typename改成typedef typename,GCC也编译不过了。
很奇怪,STL源代码里面定义iterator的地方,大量使用了typedef typename.为什么我的例子里面typedef typename还不如只有一个typename呢?
3. 为什么第5行编译不过呢? 感觉和第三行类似啊
|
|