analizer 30.05.2011 20:36 talkonaut-iphone_5.88_67b1c873

пстач, а как ты относишься к тому чтобы в паттерне PImpl все методы класса-обёртки делать константными. Это ок?

1. jtootf 30.05.2011 20:47

зачем? если класс иммутабельный, то отношения к pimpl вопрос не имеет; если мутабельный, то это сокрытие возможных ошибок и дыра в системе типов

2. analizerjtootf /1 30.05.2011 20:49 talkonaut-iphone_5.88_67b1c873

так-то оно конечно сокрытие ошибок... только ж мне религия не позволяет не сделать метод константным, если его можно сделать константным.

3. jtootfanalizer /2 30.05.2011 20:50

а в чём профит?

4. analizerjtootf /3 30.05.2011 20:55 talkonaut-iphone_5.88_67b1c873

В том что, можно понавставлять констов там где этот объект используется. Люблю минимальную свободу системы. Больше констов — меньше свободы. Меньше свободы — меньше пространства для ошибок

5. jtootfanalizer /4 30.05.2011 21:01

опять же, в чём профит, если эти const'ы ничего не гарантируют? с тем же успехом можно писать их в комментариях перед методом

6. DZhon 30.05.2011 21:06 Psi+

Как верно заметили, _все_ методы могут и не обладать константным смыслом. Каждое поле с ключевым словом mutable должно <s>даваться потом и кровью</s> появляться после размышлений о том, не нарушается ли логическая константность.

7. analizerDZhon /6 30.05.2011 21:07 talkonaut-iphone_5.88_67b1c873

кто сказал mutable?

8. jtootfanalizer /7 30.05.2011 21:10

а изобрази пример, пожалуйста. минимальный

9. DZhonanalizer /7 30.05.2011 21:14 Psi+

http://pastebin.com/9Mv3tzrP так хочешь ? Так это вырывание костылей самому себе.

10. analizerjtootf /8 30.05.2011 21:15 talkonaut-iphone_5.88_67b1c873

pastebin.com/Yz9RN1LM

11. DZhonanalizer /10 30.05.2011 21:16 Psi+

оукей, то есть константный интерфейс вносит изменения в реализацию, противоречие не видишь ? %) Pimpl какбе говорит "реализован посредством".

12. analizerDZhon /11 30.05.2011 21:18 talkonaut-iphone_5.88_67b1c873

противоречие — это то что не компилируется. а я всего лишь горожу костыли и хотел узнать степень их неприятия широкой общественностью

13. jtootfanalizer /10 30.05.2011 21:18

поскольку TImpl::Do неконстантный, это не более чем собственноручный отстрел ноги. я не вижу преимуществ, во всяком случае

14. jtootfanalizer /12 30.05.2011 21:19

то, что это компилируется — недостаток системы типов C++, и демонстрация слабости гарантий, предоставляемых ключевым словом const. не более того

15. DZhonanalizer /12 30.05.2011 21:20 Psi+

Это, увы, проблема недостаточно въедливого компилятора (насколько я понимаю). Которой нагло пользуются.

16. analizerDZhon /15 30.05.2011 21:22 talkonaut-iphone_5.88_67b1c873

ты недооцениваешь его въедливость. См. #sfoff/4

Do you really want to delete ?