お世話になります。
functionとvectorと範囲ベースforループを使ったコードを書こうと思っていたのですが、エラーが解決しません。以下簡潔にしたコードです。

enum eTEST {
 a = 0,
 b
};

int main()
{
   struct testList
   {
     eTEST para;
     std::function<int> func;
   };
   std::vector<testList> list
   {
     { a, [&]() {return 1; } },
     { b, [&]() {return 2; } }
   };

   for (auto para : list)
   {
     std::cout << para.func() << std::endl;
   }

   return 0;
}

vector と function の使い方が両方正しくないようで、
vector では コンストラクター "std::vector<_Ty, _Alloc>::vector [代入_Ty=testList, _Alloc=std::allocator<testList>]" のインスタンスが引数リストと一致しません というエラーが出ており、function でもいろいろエラーが出ています。
複数エラーが出てしまっているので、エラー一覧を画像で添付します。
どこか使い方を勘違いしているだけだとは思うのですが、しばらく調べても解決しなかったのでこちらで質問させていただきます。よろしくお願いします。

エラー一覧

検索用に文字列でも書いておきます。

* E0289: コンストラクター "std::vector<_Ty, _Alloc>::vector [代入_Ty=testList, _Alloc=std::allocator<testList>]" のインスタンスが引数リストと一致しません
* E0980: pointer-to-function 型に対する適切な operator() または変換関数のないクラス型のオブジェクトの呼び出しです
* C2027: 認識できない型 'std::_Get_function_impl<_Fty>' が使われています。
* C2504: 'type': 定義されていない基底クラスが宣言されています。
* C2027: 認識できない型 'std::_Get_function_impl<_Fty>' が使われています。
* C3646: '_Mybase': 不明なオーバーライド指定子です
* C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を規定値としてサポートしていません
* C2440: '初期化中': 'initializer list' から 'std::vector<main::testList,std::allocator<_Ty> >' に変換できません。
* C2064: 0 引数を取り込む関数には評価されません。