Привет всем
Обнаружил инетерсную особенность. Компилятор VC6 не ругется на отсутствие return-ов в перегруженных операторах классов:
class A
{
operator BOOL() {} // Ok
int operator ->() {} // Ok
A& operator =(const A&) {} // Ok
int a() {} // Error, как и полагается
};
Почему так? Можно ли использовать это как фичу, или это всё же баг?
P.S.
Если фича, то её удобно использовать в таких ситуциях:
enum Tag {};
class A
{
operator Tag() {} // чтобы Return не вырисовывать каждый раз...
};
BOOL IsTagged(...) { return FALSE; }
BOOL IsTagged(Tag) { return TRUE; }
// IsTagged(A()) == TRUE, для др. - FALSE
Только нужно быть уверенным, что оно всегда будет компилироваться
Chez, ICQ# 161095094