c++ - 如何使用内部模板构建模板化函数?
问题描述
我正在尝试创建一个模板化函数,该函数接受任何类型的对象,这些对象本身也是模板化的。一个例子是:
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<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) {
}
推荐阅读
- jquery - 发送两个参数以通过 ajax 加载数据表
- sql-server - 根据截止日期将事务记录从事务表移动到存档表 - SQL Server
- python - kivy lang中的条件表达式
- mongodb - Mongo/Mongoose - 如何编辑嵌套结构
- git - 为什么要在命令行上为 `git pull` 指定一个分支?
- wordpress - Wordpress REST API 从自定义表创建自定义 GET 端点
- r - 在 R 中查找具有相同列类别的数据框中的上一个日期
- c++ - 使用身份进行减法取模
- python - Pandas 基于闰年的时间序列分解
- c++ - this* 在 make_unique 中的用法