2012-02-05 2 views
1

При определении следующей функции лямбдыошибка: шаблон декларация автоматической функции

// 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

Вы не можете иметь шаблонные выражения или замыкания 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; } 
} 
+0

Спасибо за ответ. –