【问题标题】:Template Template argument not in scope模板模板参数不在范围内
【发布时间】:2014-11-28 23:05:50
【问题描述】:

在这段代码中...

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

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

谢谢!

【问题讨论】:

  • 呃,你想做什么? RTArgs...testclass 被实例化时不会给出。
  • testclass 是模板类,带有一个模板参数F。我正在尝试定义与 F 相同的 instantiated 类型的成员变量 f
  • F 不是类型,而是模板。它不代表testclass 实例化时的具体类型;参数只是告诉你F 期望
  • 我有 Stroustrup 的第 4 版。但没有看到任何地方提到模板模板参数无法访问。有什么好的互联网链接吗?

标签: c++ templates scope


【解决方案1】:

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

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...,除非您特别需要。

【讨论】:

    猜你喜欢
    • 2020-03-23
    • 1970-01-01
    • 2016-11-06
    • 2020-09-07
    • 1970-01-01
    • 1970-01-01
    • 2021-02-28
    • 1970-01-01
    • 2011-08-24
    相关资源
    最近更新 更多