Передача шаблона typedef в качестве аргумента в шаблон функции
Я пытаюсь передать шаблон typedef в качестве аргумента в шаблон функции. Однако я получаю следующие ошибки:
TestTemplates.cpp: 11: ошибка: ожидаемый неквалифицированный идентификатор перед токеном &
TestTemplates.cpp: 11: ошибка: ожидаемый неквалифицированный идентификатор перед токеном &
TestTemplates.cpp: 11: ошибка: ожидаемый инициализатор перед токеном &
TestTemplates.cpp:25: ошибка: 'func' не был объявлен в этой области
#include <iostream>
#include <vector>
template<class T>
struct MyVector
{
typedef std::vector<T> Type;
};
template<class T>
void func( const MyVector<T>::Type& myVec )
{
for( MyVector<T>::Type::const_iterator p = myVec.begin(); p != myVec.end(); p++)
{
std::cout<<*p<<"\t";
}
}
int main()
{
MyVector<int>::Type myVec;
myVec.push_back( 10 );
myVec.push_back( 20 );
func( myVec );
}
Может кто-нибудь указать, как исправить эту ошибку. Я посмотрел на некоторые сообщения, но не могу найти решение. Спасибо
1 ответ
Решение
Вы должны сообщить компилятору, что это имя типа
void func( const typename MyVector<T>::Type& myVec )
Затем вам нужно явно помочь компилятору определить тип функции:
func<int>( myVec );
Кстати, вопрос называется " двухэтапный поиск"