В том что, можно понавставлять констов там где этот объект используется. Люблю минимальную свободу системы. Больше констов — меньше свободы. Меньше свободы — меньше пространства для ошибок
Как верно заметили, _все_ методы могут и не обладать константным смыслом. Каждое поле с ключевым словом mutable должно <s>даваться потом и кровью</s> появляться после размышлений о том, не нарушается ли логическая константность.
зачем? если класс иммутабельный, то отношения к pimpl вопрос не имеет; если мутабельный, то это сокрытие возможных ошибок и дыра в системе типов
так-то оно конечно сокрытие ошибок... только ж мне религия не позволяет не сделать метод константным, если его можно сделать константным.
а в чём профит?
В том что, можно понавставлять констов там где этот объект используется. Люблю минимальную свободу системы. Больше констов — меньше свободы. Меньше свободы — меньше пространства для ошибок
опять же, в чём профит, если эти const'ы ничего не гарантируют? с тем же успехом можно писать их в комментариях перед методом
Как верно заметили, _все_ методы могут и не обладать константным смыслом. Каждое поле с ключевым словом mutable должно <s>даваться потом и кровью</s> появляться после размышлений о том, не нарушается ли логическая константность.
кто сказал mutable?
а изобрази пример, пожалуйста. минимальный
http://pastebin.com/9Mv3tzrP так хочешь ? Так это вырывание костылей самому себе.
pastebin.com/Yz9RN1LM
оукей, то есть константный интерфейс вносит изменения в реализацию, противоречие не видишь ? %) Pimpl какбе говорит "реализован посредством".
противоречие — это то что не компилируется. а я всего лишь горожу костыли и хотел узнать степень их неприятия широкой общественностью
поскольку TImpl::Do неконстантный, это не более чем собственноручный отстрел ноги. я не вижу преимуществ, во всяком случае
то, что это компилируется — недостаток системы типов C++, и демонстрация слабости гарантий, предоставляемых ключевым словом const. не более того
Это, увы, проблема недостаточно въедливого компилятора (насколько я понимаю). Которой нагло пользуются.
ты недооцениваешь его въедливость. См. #sfoff/4