【发布时间】:2020-10-21 11:19:34
【问题描述】:
当我使用 clang (10.0.1) 编译时:
#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;
}
我明白了:
main.cpp:4:30: error: missing default argument on parameter 'aArgs'
但标准的说法是default arguments:
在函数声明中,在带有默认参数的参数之后, 所有后续参数都必须在此声明或同一范围的先前声明中提供默认参数 (c++11 起) ...除非参数是从参数包中扩展的 或者是一个函数参数包。
这是一个clang错误?
提示:我在 gcc 上试了一下,效果很好
【问题讨论】:
-
我认为stackoverflow.com/questions/57309103/… 上的错误相同,但简化了情况