ошибка: шаблон объявления авто функции - PullRequest
1 голос
/ 06 февраля 2012

При определении следующей лямбда-функции

// file prog.hpp
template<typename T>
auto function = [](T& v){ return (v+= 2); }

я получаю сообщение об ошибке: ошибка: объявление шаблона автофункции

Пожалуйста, скажите исправление, что я должен сделать

Я использую g ++ - 4.6.1 -std = c ++ 0x -c prog.hpp

1 Ответ

3 голосов
/ 06 февраля 2012

У вас не может быть шаблонных выражений или закрытий lamdba.Вы можете создать шаблонную традиционную функцию или лямбда-фабрику (но последняя дороже):

template <typename T> T & TheFunction(T & v) { return v += 2; }

Или:

template <typename T> std::function<T&(T&)> MakeLambda() 
{
    return [](T & v) { return v+= 2; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...