Множ. наследование и шаблонная функция
От: Kluev  
Дата: 05.07.08 07:28
Оценка:
Суть в следующем, имеется класс производный от нескольких шаблонных классов
template <class Tag>
struct ID
{
    int        id;
};

struct Test : ID<void>, ID<int>
{
};


так же есть функция
template <class Tag>
int get_id(const ID<Tag> &id)
{
    return id.id;
}


вопреки моим ожиданиям компилятор (VC2008) спокойно переваривает передачу обьекта Test в get_id без явной специализации шаблона.
при это выбирается первый ID<void> в цепочке наследования.
Test t;
get_id(t); // вызывается get_id<void>


это баг или фича? мне казалось что в случае множественного наследования компилятор выдаст ошибку и предложит спциализировать get_id явно. т.е get_id<int> или get_id<void>
Re: Множ. наследование и шаблонная функция
От: alexeiz  
Дата: 05.07.08 07:39
Оценка:
Здравствуйте, Kluev, Вы писали:

K>это баг или фича? мне казалось что в случае множественного наследования компилятор выдаст ошибку и предложит спциализировать get_id явно. т.е get_id<int> или get_id<void>


g++4 и comeau отказались компилировать.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.