У меня есть еще один вопрос, связанный с идиомой safe bool:
typedef void (Testable::*bool_type)() const; // const necessary?
void this_type_does_not_support_comparisons() const {} // const necessary?
operator bool_type() const
{
return ok_ ? &Testable::this_type_does_not_support_comparisons : 0;
}
Почему bool_type
(typedef) и this_type_does_not_support_comparisons
являются const
?
В любом случае никто не должен вызывать функцию-член через указатель возврата, верно?
Нужен ли здесь const
? Будет ли operator bool_type
(функция-член) в противном случае нарушать константную корректность?