Указание лямбда-функции в качестве аргумента по умолчанию

Как мне назначить лямбду в качестве аргумента по умолчанию? Я бы хотел сделать это:

int foo(int i, std::function<int(int)> f = [](int x) -> int { return x / 2; })
{
    return f(i);
}

, но мой компилятор (g ++ 4.6 в Mac OS X) жалуется:

error: local variable 'x' may not appear in this context

EDIT : Действительно, это была ошибка компилятора. Приведенный выше код отлично работает с последней версией gcc (4.7-20120225).

33
задан mavam 5 March 2012 в 23:27
поделиться