繁体   English   中英

默认参数格式良好后是可变参数吗?

[英]Are variadic arguments after a defaulted parameter well-formed?

template <typename... Args>
void bark( int = 0, Args&&... args ) {}

int main() {
     bark();
     bark(1);
     bark(1, 2);
}

这段代码是否符合C ++标准?

建议的副本不包含相同的函数调用。

由于CWG 777 ,声明有效:

在给定的函数声明中, 具有默认参数的参数之后的所有每个参数都应具有在此声明先前声明中提供的默认参数, 或者应为函数参数包

在所有三种情况下,演绎应该成功,因为默认参数对演绎的性质没有影响:如果没有提供pack参数args ,则通过[temp.arg.explicit] / 3推导出空包,否则[temp.deduct.call] / 1中的通常规则适用(因为包明显不在非推导的上下文中)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM