Учитывая, что вы, вероятно, также хотите принимать указатели функций и функциональные объекты в дополнение к лямбдам, вы, вероятно, захотите использовать шаблоны для принятия любого аргумента с operator()
. Это то, что делают std-функции, такие как find. Это будет выглядеть так:
template<typename Func>
void LambdaTest(Func f) {
f(10);
}
Обратите внимание, что в этом определении не используются никакие функции c ++ 0x, поэтому оно полностью обратно совместимо. Это только вызов функции с использованием лямбда-выражений, специфичный для c ++ 0x.