Итак, у меня есть следующий пример:
заголовочный файл:
class mymapclass
{
std::multimap<int, int> mymap;
auto get_mymap_value_range(int key_val) -> decltype(mymap.equal_range(key_val))
{
return mymap->equal_range(key_val);
}
};
В файле cpp:
int main()
{
mymapclass m;
auto test = m.get_mymap_value_range(1);
return 0;
}
Но если я хочу переместить реализациюget_mymap_value_range () в файл cpp Я получаю ошибку компилятора (MSVS2012 - не полностью c ++ 11, но, кажется, поддерживает эту функцию): C2228 слева от equal_range должен иметь класс / struct / union ...
Если я оставлю реализацию в шапке, это похоже на работу.Когда я переместил реализацию в файл cpp, он выглядел следующим образом:
header:
auto get_mymap_value_range(int key_val) -> decltype(mymap.equal_range(key_val));
cpp:
auto mymapclass::get_mymap_value_range(int key_val) -> decltype(mymap.equal_range(key_val))
{
return mymap->equal_range(key_val);
}