자동 반환 유형 템플릿을 사용하려고했지만 문제가 있습니다. STL 맵을 허용하고 맵의 인덱스에 대한 참조를 리턴하는 함수를 작성하려고합니다. 이 코드를 올바르게 컴파일하기 위해 누락 된 부분은 무엇입니까?템플릿 함수에서 auto 및 decltype 사용
(참고 :. 내가지도를 있으리라 믿고있어하는 것은 나중에 올바르게 사용되는 확인하기 위해 내가 가능성이 부스트 개념 검사를 추가합니다 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++;
어떤 컴파일 오류가 발생합니까? 또한 여기에'decltype'을 사용하거나 늦게 지정한 리턴 타입을 사용할 필요가 없습니다. 그냥 평소와 같이 왼쪽에 넣으십시오. –
"STL"을 정말로 말합니까? 아니면 "C++ 03 표준 라이브러리"를 의미합니까? 또는 태그에 "C++ 11 표준 라이브러리"가 있습니까? 제발 하나 사주세요. –