о, парни, вроде работает :)
stream& operator << (stream& out, const base& obj) {
std::cout << "object was " << std::endl;
return out;
}
template<class T>
typename enable_if_not<std::is_base_of<base,T>::value,stream>::type& operator << (stream& out, const T& o) {
std::cout << "some other: " << o << std::endl;
return out;
}
то же работает и при встроенных операторах
блин! ночью страдал. утро вечера.. так сказать..
а может кто знает, как это же сделать, только что бы не городить свой тип, enable_if_not?