只有未指定数量的参数的函数的目的是什么?
What's the purpose of function with only unspecified number of parameters?
换句话说,当函数像这样声明时,"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++chrono函数是什么
- 具有相同特征的两个对象是否只在内存中存储一次?无论定义它们的函数是什么,都是不同的
- 这里的字符串函数是什么意思
- 这个函数是什么意思(我的英语sry)
- C++ 中的 use 函数是什么?
- C++中的编译时函数是什么?
- 使用 DnsQuery 或 getaddrinfo 的正确函数是什么?
- Lua 中看起来像表的函数是什么?
- "AfxIsValidAddress"函数的等效标准函数是什么?
- 子类的构造函数后跟冒号后的基类构造函数是什么意思?
- MFC 用于计算控件的高光、阴影等的算法或函数是什么?
- 具有多个非可选参数的转换构造函数是什么样子的?为什么它有意义
- 不确定 c++ 中的常量函数是什么
- 指针的最快散列函数是什么
- 注册用于提升io_service的每个对象的回调函数是什么?
- 在 g++ 中生成 "-L" 和 -rpath 标志的等效函数是什么
- Boost.Python中的dispatch函数和forwarding函数是什么意思
- 给定情况下的良好哈希函数是什么
- C++ 中的"导出函数"是什么意思?
- C++ std::unordered_map 中使用的默认哈希函数是什么