这与我之前的帖子有关。我想知道为什么一个尝试的解决方案不起作用。
template <typename... T> /* A */
size_t num_args ();
template <>
size_t num_args <> ()
{
return 0;
}
template <typename H, typename... T> /* B */
size_t num_args ()
{
return 1 + num_args <T...> ();
}
例如,如果我尝试调用,num_args<int,float>()
那么错误是函数调用不明确:
- A 与 T={int,float}
- B 与 H=int, T={float}
我不明白这是怎么模棱两可的——A是一个声明,B是A声明的函数的定义。对吧?
我正在尝试使这个示例有效,而对我之前的问题的回答似乎声称它永远不会有效。
如果是这样,可变参数自由函数的意义何在?他们能做什么?