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