Cześć, szukam i nie mogę znaleźć czegoś takiego.
Mam funkcję:
template<class itemClass>
void foo(itemClass & item)
{
bool is_class_a = boost::is_same<itemClass, ClassA>::value; //sprawdzam, czy itemClass to klasa ClassA
if(is_class_a) item.bar2();
item.bar();
}
I teraz tak. Wszystkie klasy, jakie przekazuję w templacie mają metodę bar(), ale tylko jedna(ClassA) ma bar2(). Niestety nie chce mi to przejść kompilacji. Błąd jest taki, że nie ma metody bar2().
Czyli rodzi się pytanie: Jak podczas kompilacji sprawdzić typ przekazanej klasy?