代码之家  ›  专栏  ›  技术社区  ›  pythonic metaphor

使用模板参数作为模板参数

  •  2
  • pythonic metaphor  · 技术社区  · 16 年前

    为什么下列代码无效?

    template <typename S, typename T>
    struct B{
        void f(T t, S s) {t.f<S>(s); }
    };
    

    gcc 4.3.4抱怨它“在'>'之前需要一级表达式”“token”,即“S”不是有效的主表达式。

    2 回复  |  直到 16 年前
        1
  •  12
  •   Konrad Rudolph    16 年前

    你需要具体说明 f

    void f(T t, S s) {
        t.template f<S>(s);
    }
    

    C++不知道这个(在这一点上) f s类型取决于模板参数的类型 T . 此外,以下语法可能不明确:does < 是指模板列表的开头还是小于运算符?为了帮助C++计算出来,您需要指定 f 解析自身 取决于 T .

        2
  •  1
  •   Chris Pitman    16 年前