Лямбды в значениях аргументов шаблона - PullRequest
2 голосов
/ 27 января 2012

Разрешено ли использовать лямбда-функцию в качестве значения по умолчанию для аргумента шаблона?Фрагмент кода, о котором идет речь, будет:

template <typename K, typename E, typename C = [](const K& l, const K& r) { return (l < r); }>
class FooBar
{
    typedef C compare_fn;
};

Если это не так, то почему, и что может быть наиболее приемлемой альтернативой, кроме указателей на функции?ТИА.

1 Ответ

4 голосов
/ 27 января 2012

Нет. Лямбда - это объект, а не тип.

Один из способов исправить это - использовать именованный класс, как в

template<typename K, typename E, typename C = std::less<K>>
class FooBar
{
    typedef C compare_fn;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...