Zauważyłem dość dziwne zachowanie z mojej perspektywy: argumenty domyślne funkcji nie mogą być przekazywane w kodzie poniżej.Dlaczego domyślne parametry funkcji nie mogą być przekazywane dalej w C++?
void Test(int test = int{}) {}
template<typename F, typename ...Args>
void Foo(F&& f, Args&&... args)
{
std::forward<F>(f)(std::forward<Args>(args)...);
}
int main()
{
Foo(Test, 0); // This compiles
Foo(Test); // This doesn't compile
}
Clang donosi: błąd: zbyt mało argumentów w wywołaniu funkcji, oczekuje 1, mają 0 GCC i raportów VC same błędy.
Czy ktoś może to wyjaśnić?
Code jest tutaj: http://rextester.com/live/JOCY22484
Krótszy testowy przypadek: 'auto f = Test; f(); ' – 0x499602D2