Предположим, что у меня есть функция 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
во всех вышеперечисленных случаях?