When I use clang (10.0.1) to compile that:
#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;
}
I get:
main.cpp:4:30: error: missing default argument on parameter 'aArgs'
But standard say about default arguments:
In a function declaration, after a parameter with a default argument,
all subsequent parameters must have a default argument supplied in this or a previous declaration from the same scope
(since c++11) ...unless the parameter was expanded from a parameter pack
or be a function parameter pack.
It is a clang bug?
hint: I try it on gcc and works fine
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…