В идеале, при попытке... «Эффективное использование C++. 55 верных советов улучшить структуру и код ваших программ»
В идеале, при попытке использовать интерфейс так, что пользователь не получит ожидаемого результата, код не должен компилироваться. А если компилируется, то должен делать то, что имел в виду пользователь.