元功能处理模板列表
Metafunction to process a list of templates
在有问题的元函数中获取模板列表的第一个模板 @vittorio-romeo给出了编写元函数以获取模板列表的第一个模板的答案。现在,我想编写一个接受模板(作为元功能)和要处理的模板列表的meta-funtion:
template<template<typename> typename F,
template<template<typename> typename...> typename TL> struct transform_T;
template<template<typename> typename F,
template<template<typename> typename...> typename TL,
template<typename> typename... I>
struct transform_T<F, TL<I...>> {
};
但是这个定义不会编译:https://wandbox.org/permlink/cny2dogbaqw4evq4
编辑:下面的更改起作用。这里是一个完整的示例:
#include <cstdint>
#include <cstddef>
template<typename... T>
struct List {};
template<template<typename> typename... TT>
struct TList {};
template<template<template<typename> typename> typename F,
typename TL> struct transform_T;
template<template<template<typename> typename> typename F,
template<template<typename> typename...> typename TL,
template<typename> typename... I>
struct transform_T<F, TL<I...>> {
typedef List<typename F<I>::type...> type;
};
template<typename>
struct A {};
template<typename>
struct B {};
using l1 = TList<A, B>;
template<template<typename> typename X>
struct F {
typedef X<int> type;
};
using l2 = typename transform_T<F, l1>::type;
l2::_; // List<A<int>, B<int>>
int main() {
}
我的问题仍然是,我们是否必须在/primary/template?
typename TL
您的主要模板定义应与专业参数匹配:
template<template<typename> typename F1,typename TL> struct transform_T;
这是否是您真正想要的,取决于您要执行的"处理"类型。
我的问题仍然是,我们是否必须在/primary/template?
中仅编写typename tl?
主模板声明给定模板名称的模板参数,也就是说,它告诉编译器某些名称是一个模板,并且其参数是您指定的类别(键入,非类型,非类型,模板模板模板参数。..)。
部分专业化声明了一组新的模板参数,该参数通过类型扣除键匹配。显然,他们的种类必须匹配。
在您的原始代码中,您将TL<I...>
(即类型)传递给模板网板类(template<template<typename> typename...> typename TL
)的参数。
相关文章:
- 有人能帮我处理这个链接列表吗?C++
- 处理从列表中删除指向对象的指针的"healthy"方法是什么?
- 处理程序的模块列表中有一个错误的模块"WebSocketModule"
- 为什么调用单例类 Qt 消息处理程序成员函数会出现错误:缺少参数列表
- 元功能处理模板列表
- QML 列表视图和密钥导航 - 处理单个密钥事件
- 如何在变量函数参数列表中检测给定类型的参数的可用性,并在处理完所有参数后采取行动
- 如何使用同一链接列表一次处理各种类型的节点
- 实现对象列表时,如何处理动态分配
- 如何处理列表控制标头中的右键单击事件
- 使用C 中的链接列表的文件处理
- RCPP:处理包含列表的列表
- 如何处理R到RCPP中的列表
- C++列表处理:将最小值初始化为列表的第一个值
- 用于处理 3 个整数列表的数据结构
- 在SFML 2.0中使用迭代器处理列表之间的冲突
- 如何在c++中处理包含列表的嵌套数据结构
- 如何将QActions列表添加到QMenu并用单个插槽处理它们
- 变量参数列表如何在C++中处理重载对象
- 列表处理在Prolog中使用的c++接口