2012-02-05 17 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

答えをありがとう。 –