typedefing非类型模板参数

Ben*_*ler 4 c++ templates

我想访问类之外的模板参数.我通常这样做如下:

template <class T>
class A
{
  typedef typename T T;
}

A<int>::T;
Run Code Online (Sandbox Code Playgroud)

我希望能够对非类型模板参数执行相同的操作.这不起作用:

template <int T>
class A
{
  typedef typename T T;
}

A<3>::T;
Run Code Online (Sandbox Code Playgroud)

我将澄清为什么我需要这个.我想定义第二个类如下:

template <class C>
class B
{
  static int func() {return C::T;}
}

B<A<3> >::func();
Run Code Online (Sandbox Code Playgroud)

这样做的正确方法是什么?非常感谢你.

Jos*_*eld 5

那是因为T不是类型名称,你不能typedef.它是一个int值,如果要将其作为类的静态成员访问,则需要一个静态成员int.看起来你真正想要的是这个:

template <int T>
class A
{
  public:
    static const int x = T;
};

doSomething(A<5>::x);
Run Code Online (Sandbox Code Playgroud)