我一直在尝试使用自动返回类型模板并且遇到了麻烦。我想创建一个接受 STL 映射并返回对映射中索引的引用的函数。我从这段代码中遗漏了什么以使其正确编译?
(注意:我假设地图可以用 0 的整数赋值来初始化。我可能会在稍后添加一个 boost 概念检查以确保它被正确使用。)
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++;