自動返品タイプのテンプレートを使用しようとしていますが、問題が発生しています。STLマップを受け入れ、マップ内のインデックスへの参照を返す関数を作成したいと思います。正しくコンパイルするために、このコードには何が欠けていますか?
(注:マップは0の整数割り当てで初期化できると想定しています。後で、ブーストコンセプトチェックを追加して、正しく使用されていることを確認します。)
template <typename MapType>
// The next line causes the error: "expected initializer"
auto FindOrInitialize(GroupNumber_t Group, int SymbolRate, int FecRate, MapType Map) -> MapType::mapped_type&
{
CollectionKey Key(Group, SymbolRate, FecRate);
auto It = Map.find(Key);
if(It == Map.end())
Map[Key] = 0;
return Map[Key];
}
この関数を呼び出すコードの例は次のとおりです。
auto Entry = FindOrInitialize(Group, SymbolRate, FecRate, StreamBursts);
Entry++;