|
Po voprosu:
Opredelyaete basovy class
class Base{
protected:
static const int my_class_id = 1;
}
i dva shablona
//1
template(.typename T.) bool is_my_class(...) {return false;} -
//eto budet instanciirovat'sya dlya vseh tipov
//2
template(.typename T.) bool is_my_class(typename T::my_class_id const* ) {return true;}
//i dlya vseh "svoih" classov derived from Base
Dlya "svoih" classov budet instanciirovat'sya vtoroy shablon. Eto rabotaet princip SFINAE.
A voobsche posmotite knizhku - tam pro eto est'. Ona na halyavu v seti vilozhena. Tam bolee elegantnyi podhod (ideya ta zhe)