为什么我不能将类的类型成员作为模板参数传递?

xiv*_*r77 8 c++ c++11

我无法将类的类型成员作为模板参数传递.例如,在以下代码中:

std::array<int, 1> a;
std::array<typename a::value_type, 1> a2;
Run Code Online (Sandbox Code Playgroud)

不会编译.

这是什么原因?有解决方法吗?

Que*_*tin 23

a不是一种类型,因此你不能适用::它.您可以使用decltype检索a的类型:

std::array<int, 1> a;
std::array<decltype(a)::value_type, 1> a2;
Run Code Online (Sandbox Code Playgroud)