在嵌套函数模板中使用模板typename

时间:2017-09-22 12:27:28

标签: c++ templates c++98

好吧,我在模板上挣扎。在我学到的this问题中,根本无法将类型说明符传递给函数,因此我的下一个方法是将类型传递给<>

想象一个函数模板foo<U>(),它是模板类A的成员函数。因此,如果我创建了一个对象A<T> a,我可以使用任何类型调用a.foo<U>()

我如何编写等效的函数模板,以便传递aU之类的wrappedFoo<U>(a)

重要需要符合C ++ 98

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

    request.put({
    url: url + db + id,
    json: ' { "user": "Tom", "message": "Document 2" }'
}, function(){request(url + db + id, function(err, res, body) {
        console.log(typeof (body));
        console.log(body);
        console.log(body.user + ' : ' + body.message);
    })
});

难的部分是没有C ++ 11的template <typename U, typename T> XXXX /* See below */ WrappedFoo(/*const*/ A<T>& a) { return a.template foo<U>(); } 的返回类型。

因此,如果返回类型确实取决于参数类型,则可以创建一个特征,如:

decltype

然后将template <typename U, typename T> struct Ret { typedef U type; }; template <typename T> struct Ret<T, A<T> > struct Ret { typedef bool type; }; 替换为XXXX