Извините, если раньше об этом спрашивали, но я не смог его найти.
Поэтому я пытаюсь узнать о шаблонах и новых возможностях C ++ 11 (в основном лямбда-выражения, что мне всегда нравилось вдругие языки).
Но в своих тестах я пришел к чему-то, что я понятия не имел, что это работает, и я пытаюсь понять, как это работает, но не могу понять это ..
Следующееcode:
template <class Func>
void Test( Func callback ) {
callback( 3 );
}
void Callback( int i ) {
std::cout << i << std::endl;
}
int main( int argc, char** argv ) {
Test( &Callback ); // this I was expecting to work, compiler will see its a pointer to a function
Test( Callback ); // this also works, but how?!
return 0;
}
Если я понимаю, как работают шаблоны, то в основном это схема для компилятора, чтобы знать, что собирать, поэтому первый вызов Test( &Callback );
Я ожидал, что сработает, потому что компилятор увидитшаблон получает адрес функции и предполагает, что аргументы должны быть указателями.
Но что за второй вызов?Что это за шаблон, если он есть?Копия функции (если это вообще имеет смысл)?