Я портирую некоторый шаблонный код из Windows, и у меня возникают некоторые различия компилятора на iPhone 3.2 SDK.
Исходный код внутри функции-члена шаблона класса:
return BinarySearch<uint32, CSimpleKey<T> >(key);
где BinarySearch - метод, унаследованный от другого шаблона.
Это приводит к следующей ошибке:
csimplekeytable.h:131: error: no matching function for call to 'BinarySearch(NEngine::uint32&)'
Компилятор Visual Studio, похоже, отлично подходит к иерархии шаблонов, но gcc требуется, чтобы я полностью определил, откуда взялась функция (я убедился в этом, исправив те же проблемы с переменными-членами шаблона).
Так что теперь мне нужно изменить это на:
return CSimpleTable<CSimpleKey<T> >::BinarySearch<uint32, CSimpleKey<T> >(key);
Который сейчас выдает следующую ошибку:
csimplekeytable.h:132: error: expected primary-expression before ',' token
csimplekeytable.h:132: error: expected primary-expression before '>' token
После некоторого расчесывания головы, я думаю, что здесь происходит то, что по какой-то причине он пытается преобразовать '<' перед BinarySearch как оператор "Меньше чем". </p>
Итак, два вопроса:
- Я на правильном пути с моей интерпретацией ошибки?
- Как мне это исправить?
-Д