可变参数模板运算符
Variadic templates operator
有人可以解释一下这些说法吗?
这些运算符(例如:、+ ...)在这里做什么?
1:参数总和
template <typename... Args>
int function(Args... args)
{
return (args + ...);
}
2:逗号运算符
template <typename... Args>
int function(Args... args)
{
((std::cout << args),...);
}
3:一般情况
template <typename... Args>
int function(Args... args)
{
otherfunction(args...);
}
我知道哪种情况会产生什么样的结果,但我实际上想知道它是如何工作的。
提前致谢❤️
(args + ...)
扩展为 (args#0 + args#1 + args#2 + .....args#n)
((std::cout << args),...)
扩展为 (((std::cout << args#0),std::cout << args#1) std::cout << args#n)
otherfunction(args...)
args 是扩展参数,如 (args#0, args#1,...)
有人可以解释一下这些说法吗? 这些运算符(例如:、+ ...)在这里做什么?
1:参数总和
template <typename... Args>
int function(Args... args)
{
return (args + ...);
}
2:逗号运算符
template <typename... Args>
int function(Args... args)
{
((std::cout << args),...);
}
3:一般情况
template <typename... Args>
int function(Args... args)
{
otherfunction(args...);
}
我知道哪种情况会产生什么样的结果,但我实际上想知道它是如何工作的。 提前致谢❤️
(args + ...)
扩展为(args#0 + args#1 + args#2 + .....args#n)
((std::cout << args),...)
扩展为(((std::cout << args#0),std::cout << args#1) std::cout << args#n)
otherfunction(args...)
args 是扩展参数,如(args#0, args#1,...)