允许将左值和右值都绑定到可变模板类参数中,可以使用引用折叠技术来实现。在模板类参数传递时,使用“&&”运算符形式的模板参数,并在参数列表中使用引用折叠技术将左值和右值引用进行折叠。
示例代码如下:
#include
template
class Example
{
public:
void Print()
{
std::cout << "Size of parameter pack: " << sizeof...(Types) << std::endl;
}
};
template
void foo(Args&&... args)
{
Example ex; // 使用“&&”运算符形式的模板参数
ex.Print(std::forward(args)...); // 引用折叠技术
}
int main()
{
int x = 10;
const int y = 20;
foo(x, 1, y, 2, 3);
return 0;
}
输出结果为:Size of parameter pack: 5
上一篇:BIND表达式中的字符被丢弃