递归地将模板传递给模板模板函数
Recursively Pass Template Template To a Template Template Function
在我看来,既然在C++我们可以传递模板模板,那么接受模板模板的函数应该能够将(它的(模板传递到自身中。然而,情况似乎并非如此。
template< typename PREVIOUS_TYPE_T, typename TYPE_T >
struct Node
{
typedef TYPE_T TYPE;
typedef PREVIOUS_TYPE_T PREVIOUS_TYPE;
PREVIOUS_TYPE_T* previous;
template< template< typename... > typename FUNCTOR_T, typename... CURRENT_ARGUMENTS_T >
void DoCall() {
previous->DoCall< FUNCTOR_T, TYPE_T, CURRENT_ARGUMENTS_T... >();
}
};
有没有办法通过上面的FUNCTOR_T
,或者有什么解决方法?
不能使用ARGUMENTS_T
。该名称不起作用。
当您传递模板模板时,它仍然是一个没有传递给它的参数的模板。没有模板参数可以从std::plus
中提取,而不是std::plus<int>
。
请改用CURRENT_ARGUMENTS_T
,这是您要转发的内容。
此外,您previous
是依赖类型。您必须消除模板的歧义:
previous->template DoCall< FUNCTOR_T, TYPE_T, CURRENT_ARGUMENTS_T... >();
相关文章:
- 递归函数计算序列中的平方和(并输出过程)
- 递归模板化函数不能分配给具有常量限定类型"const tt &"的变量"state"
- 如何在Elixir中调用递归函数并行
- 递归函数有效,但无法记忆
- 字符串化递归的"std::vector<std::vector<...>>"而不使用部分模板函数专用化
- 为什么我的递归函数按降序打印,然后按升序打印?
- 为什么递归函数的最终输出是 5?
- 有没有办法使用递归函数找到数组中最小值的 INDEX?C++
- 如何将记忆应用于此递归函数?
- 如何从递归函数中完全返回,该函数给出了每个函数结果的累积相加?
- 无穷大而循环时具有递归函数
- 即使没有调用这个递归函数,它是如何工作的?
- 如何使此递归函数从给定的起始位置返回最小的整数?
- 复制构造函数中的递归调用
- 为什么编译器将其解析为函数指针而不是递归调用?
- 此递归函数的每次迭代的值存储在哪里?
- 在 C++14 中使用通用 lambda 函数递归
- 大量函数递归-C++
- 用内部类函数递归地添加数组数
- 函数递归 C++ 的最大数量