模板模板参数不在范围内

时间:2014-11-28 23:05:51

标签: c++ templates scope

在这段代码中......

template<template <unsigned int R,class T,class...Args> class F,typename...G>
class testclass{
protected:
    F<R,T,Args...> f;
};

g ++坚持RTArgs...未在成员变量f的范围内声明。 什么是正确的语法?

谢谢!

1 个答案:

答案 0 :(得分:3)

您只能将模板模板参数的参数命名为形式,您无法在任何地方实际使用它们。但是,您可以通过专门化您的类来访问参数:

template <class F, typename... G>
class testclass;

template <template <unsigned int, class...> class F, unsigned int R, class T,
          class... Args, class... G>
class testclass<F<R, T, Args...>, G...>
{
protected:
    F<R, T, Args...> f;
};

T实际上可以替换为Args...,除非您特别需要它。