换句话说,当函数像这样声明时,“T”是某种类型别名:
T (...)
会有用吗?
如果你不知道这样的声明指定了一个参数数量未知的函数。 C++ 标准允许它,但它没有为我们提供访问传递参数的标准方法。有 <cstdarg>
库,但它需要省略号之前的命名参数才能工作。它看起来像这样(另一个类型别名名为“T1”):
T (T1, ...)
通常 T1
类型为 int
并指定可变参数的数量。
然而,省略号可以是唯一的函数参数这一事实意味着这种结构有一些用途,我很好奇它是什么?
此类函数的实际示例如下所示:
void func(...)
{
}
最佳答案
一个例子是元编程技巧,它利用了 ...
始终是可行的重载但最不受欢迎这一事实。例如,此类型特征检查特定成员 (foo
) 是否存在:
template <typename T>
struct has_foo {
template <typename U>
static std::true_type test( decltype(U::foo)* );
template <typename U>
static std::false_type test( ... );
using type = decltype(test<T>(0));
};
关于c++ - 只有未指定数量的参数的函数的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29717740/