只有未指定数量的参数的函数的目的是什么?

What's the purpose of function with only unspecified number of parameters?

本文关键字:函数 是什么 参数 未指定      更新时间:2023-10-16

换句话说,当函数像这样声明时,"T"是某种类型别名:

T (...)

会永远有用吗?

如果您不知道,这样的声明会指定一个参数数量未知的函数。这是C++标准允许的,但它没有为我们提供访问传递参数的标准方式。有<cstdarg>库,但它需要在省略号之前命名参数才能工作。它看起来像这样(另一个名为"T1"的类型别名):

T (T1, ...)

通常T1int类型,并区分可变参数的数量。

然而,省略号可以是唯一的函数参数这一事实意味着这种结构有一些目的,我很好奇它是什么?

此类函数的实际示例如下所示:

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));
};