Предположим, что у меня есть функция functionProxy, которая принимает общий параметр function и вызывает его operator():
template< typename Function > void functionProxy( Function function ) {
function();
}
Объект, переданный ему, может быть:
-
функтор:
struct Functor { void operator()() const { std::cout << "functor!" << std::endl; } }; -
функция:
void function( ) { std::cout << "function!" << std::endl; } -
a (С++ 0x) лямбда-функция:
[](){ std::cout << "lambda!" << std::endl; }
int main( )
{
functionProxy( Functor() );
functionProxy( function );
functionProxy( [](){ std::cout << "lambda!" << std::endl; } );
return 0;
}
Будет ли компилятор иметь встроенный function внутри functionProxy во всех вышеперечисленных случаях?