c++ - 如何使用内部模板构造模板化函数?

标签 c++ templates

我正在尝试创建一个模板化函数,该函数接受任何类型的对象,这些对象本身也已被模板化。一个例子是:

ObjA<int, string> o;
ObjB<float, int> o2;
我想做一个函数,可以接受任何类型的对象,但是不确定如何构造模板。这是我的错误尝试:
template<typename T, typename U, typename V>
    void Add(std::shared_ptr<V<T, U>> inst) {
    
    }

最佳答案

您需要将V转换为template template parameter:

template<typename T, typename U, template<typename, typename> typename V>
void Add(std::shared_ptr<V<T, U>> inst) {

}
请注意,这将V限制为具有两个模板参数。创建“接受任何类型的对象的模板化函数,而对象本身也是模板化”的目标没有指定该限制;要允许V具有任意数量的模板参数,您可以执行以下操作:
template<template<typename...> typename V, typename... Ts>
void Add(std::shared_ptr<V<Ts...>> inst) {

}

关于c++ - 如何使用内部模板构造模板化函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62543004/

相关文章:

c++ - 尽管链接到库,但未定义对函数的引用

C++ 在 `)' token 之前期望 ';' 在 ')' token 之前期望主表达式

javascript - 我怎样才能在另一个html中包含一个模板?

templates - Go 模板 : How do I access array item (arr[2]) in templates?

c++ - 值初始化聚合

c++ - 为什么我的线程永远不会结束

c++ - Freetype 和 OpenGL 的问题

c++ - 我可以专门化运算符<<吗?

所有模板实例的 C++ 单一函数指针

c++ - 如何禁用某些模板类型的类成员函数