Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Глючок?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
Непомнящий Евгений
Следующий код при компиляции выдает ошибку
Error[Pe304]: no instance of function "funcA" matches the argument list
argument types are: (int *)
detected during instantiation of "void funcT(T &) [with T=int]"

Код
static void funcA(void *p) {}

template<class T>
void funcT(T &t)
{
  funcA(&t);
}

void test()
{
  int t;
  funcT(t);
}


Если убрать квалификатор static у funcA либо вызвать ее напрямую из test, либо сделать funcT не шаблонной, либо просто явно привести тип указателя к void* - все ок.

И Visual C и GCC компилят нормально.
Непомнящий Евгений
Iar-овцы говорят, что так и должно быть по стандарту.
"This is how it should behave if you are as strict as we are in regards to
the standard."

И предложили еще один путь обхода:
Код
template<class T>
void funcT(T &t)
{
  ::funcA(&t);
}
meister
Цитата(Непомнящий Евгений @ Jul 1 2008, 09:04) *
Iar-овцы говорят, что так и должно быть по стандарту.
"This is how it should behave if you are as strict as we are in regards to
the standard."


Надо было привести этот пункт стандарта smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.