【发布时间】:2015-04-20 06:42:01
【问题描述】:
#include <iostream>
struct cls {
using type = double; //case 1
// typedef double type; //case 2
};
template<typename T>
void foo(typename T::type) {
std::cout<<"T::type\n";
}
int main() {
foo<cls>(22.2);
}
我相信using 并被用来代替typedef。
在上面的代码中,case 1 出现错误,case 2 却没有。
error: expected nested-name-specifier before 'type'
有人能解释一下为什么吗?
【问题讨论】:
-
它确实有效:ideone.com/x4HHHc
-
我无法重现:ideone.com/4gD45z 你使用什么编译器版本和标志?
-
我用的是GCC4.9,但是没有提到-std==c++11