Ich fand ziemlich seltsames Verhalten aus meiner Sicht: Funktion Standardargumente können nicht im Code unten weitergeleitet werden.Warum Funktion Standardparameter können nicht perferct in C++ weitergeleitet werden?
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 berichtet: Fehler: Zu wenig Argumente Funktionsaufruf erwartet 1, haben 0 GCC und VC-Bericht gleiche Fehler.
Kann jemand es erklären?
-Code ist hier: http://rextester.com/live/JOCY22484
Kürzere Testfall: 'auto f = Test; f(); ' – 0x499602D2