如何解决为什么Clang在参数包错误中缺少默认参数?
当我使用clang(10.0.1)进行编译时:
if StartingPrompt == "l":
username_2 = input("Enter your username: ")
password = input("Enter your password: ") #you can t go down because your if statement isn't over
else: #else statement of a given if statment is at the same level of the if statement
print("Please only enter 's' or 'l' ")
我得到:
#include <iostream>
template <typename ...Args>
void f( int a = 4,Args&&... aArgs )
{
std::cout << a << std::endl;
}
int main( int argc,char *argv[] )
{
f( 1,2 );
return 0;
}
但是关于default arguments的标准说法是:
在函数声明中,带有默认参数的参数之后, 所有后续参数必须具有同一范围的此声明或先前声明中提供的默认参数 (自c ++ 11起)...除非从参数包扩展了参数 或作为功能参数包。
是叮当声的虫子吗?
提示:我在gcc上尝试了并且效果很好
解决方法
是的,这是一个错误:https://bugs.llvm.org/show_bug.cgi?id=23029。
它在clang 11中已修复:https://reviews.llvm.org/rGb5f2c4e45b8d54063051e6955cef0bbb7b6ab0f8
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。