【发布时间】:2015-07-07 13:46:02
【问题描述】:
希望 stackoverflow 社区可以帮助我解决这个问题。我想要类似下面的编译
template <typename A>
void VARIADIC_TEMPLATE_FUNCTION(A* tptr)
{
//Do nothing
}
template <typename A, typename B, typename... C>
void VARIADIC_TEMPLATE_FUNCTION(A* tptr)
{
// Do stuff here with typename B and tptr (not included)
VARIADIC_TEMPLATE_FUNCTION<A,C...>(tptr);
}
显然这不起作用,两个函数的签名冲突。
我一直试图通过传递一些可变参数来解决这个问题,但似乎没有任何效果。我不反对传递“假”变量——但不反对。
调用者会做类似的事情(例如):
ClassP* ptr;
VARIADIC_TEMPLATE_FUNCTION<ClassP, ClassA, ClassB, ClassC, ClassD>(ptr);
【问题讨论】:
-
你现在有什么问题?对于您显示的函数调用,应(递归)调用第二个重载 4 次,然后调用第一个重载一次。
-
完美编译和运行
-
也许您必须启用 C++11 支持。你用的是什么编译器?
-
投票结束,因为 OP 不包括发生的具体问题(除了“显然这不起作用”)。
-
呃,我不明白为什么我之前遇到过这个问题 - 它确实工作得很好。我应该在中午之前停止喝啤酒。
标签: c++ c++11 recursion variadic-templates c++14