c++ - 如何替换给定类型的模板参数?
问题描述
鉴于称为模板参数B
的类型(在实例化时) ,C<D>
我该如何构造?C<A>
B
这是我的代码的最小化摘录:
template<typename A>
class foo {
template<typename B> // B is guaranteed to always be of the form C<D>
// How to write a function here with return type C<A>?
}
解决方案
您可以通过模板模板参数的模板特化来做到这一点
template<typename, typename>
struct meta {};
template<typename A, template<typename> typename C, typename B>
struct meta<A, C<B>> {
using type = C<A>;
};
meta<A, C<B>>::type
将会C<A>
如果您想在基本情况下处理默认参数
template<typename...>
struct meta {};
template<typename A, template<typename...> typename C, typename B, typename ... Ts>
struct meta<A, C<B, Ts...>> {
using type = C<A, Ts...>;
};
推荐阅读
- hibernate - HQL - Hibernate:如何获取 endDate 的日期等于今天的所有记录
- wordpress - 如何在 Woocommerce 中复制优惠券分类术语?
- python - 使用 python 在 JSON 对象中添加新列表
- r - 如何在反应导航 6 中添加渐变背景颜色?
- abap - Reuse RP_PROVIDE_FROM_LAST macro for several info-types?
- azure-devops - 如何在 Azure DevOps 中添加从市场安装的免费任务
- javascript - AlpineJs 从 select[option] 中提取特定值
- python - 提取数据缺失的日期范围
- docusignapi - DocuSign restapi c#,webapi中信封的事件通知
- r - ggforest 错误 - 选择了未定义的列